Leaderboard
Popular Content
Showing most liked content since 01/25/2021 in all areas
-
7 pointsTwo rather short tutorials showing a simple approach on covering mesh surfaces with scales: Houdini file and discussion here:
-
6 pointsWith this work I tried to do a metalic monster with a inverse pipeline..the model exist from the rig, on this case a single line... that is completly procedural.
-
5 pointsHi gang ! Here is my latest vellum file, I played around with noises and constraints. My goal was to emulate a membrane tearing, much like a burning film: You can download the hipfile and play around with it tearing_share.hip
-
5 pointsOne of the things I have loved about odforce for years is how very generous so many talented artists are on here, but this thread really underscores the downside of that when people abuse that spirit. I'm amazed that multiple artists who have generously and repeatedly provided advice and source files for various methods are simply being given repeated requests for additional free work as thanks for their time. Presumably you are being paid for your work generated with such specific requirements, yet at no point in this entire thread have you indicated any thanks or gratitude to those who have posted solutions to help you, simply demanded more work from theim for free in a rude manner. Perhaps consider making an effort with some of the various methods already offered, and post a .hip file showing you've put any work whatsoever into resolving your request rather than continuing to demand that others simply hand you fully-formed solutions for you to profit off of.
-
5 points
-
4 pointsHello, great work! Seem it is the FLAM fever again as so many people recently implementing it! I just finished an implementation of The Fractal Flame Algorithm too! Not sure how you did yours but I did mine entirely in CVEX. If anyone is curious you can check the results and download the tool here: FLAM3 for SideFX Houdini Its free and the HDA is unlocked so you can extend it if you like. ( the CVEX code is pre compiled tho because it was so much code that was the only way to keep it manageable ) The 3D version of the variations ar what they are, some work better than other and some are really hard to port into 3D so the 3D option is really there just for fun but consider it a 2D tool and you should use it that way. Cheers, Alessandro
-
4 pointsYou could look into displacing a high-resolution mesh with voronoise in a point VOP. For the time being, here is a way to populate a surface with real scales. scales.hiplc
-
3 pointsSometimes Support is a bit tricky to be convinced that something is a bug. In this case you are both wrong - this has nothing to do with the constraints - in fact if you remove the constraints from the emission you'll still see the same problem. At the same time it cannot be considered as a bug, as the object is not set up correctly. Vellum sometimes need specific attributes to behave like expected. So the solution here is to add mass attribute and you are good to go. Just change Mass from "Unchanged" to "Set Uniform" for example and it should work.
-
3 pointsI wrote a custom render engine in COPs today. While 'engine' is probably a bit far fetched, it's a little ray tracer experimentally supporting: Meshes with UV coordinates Shading on diffuse textures Multiple point lights (including color, intensity, size) Area shadows and light attenuation Ambient occlusion Specular highlights Reflections with varying roughness The snippet basically transforms the pixel canvas to the camera position and shoots rays around using VEX functions like intersect() and primuv(). The rendering process only takes a few seconds. I still have to figure the licensing fees, though COP_render.hipnc
-
3 pointsyes .. here it is a 10-years-old thread usage description there sounds long but usage is easy . just drop the otl . turn on points .. helpThatCurve_001_py.otl should be easy . hope that helps .cheers
-
3 points
-
3 points
-
3 pointsMake beautify patterns with arrays int dim = chi("dim"); int prim; int pt; int npt = chi("npt")*dim; int pts[]; int randn; int randpt; for(int i;i<dim;i++){ addprim(0,"polyline"); } vector2 uniform_num; for(int i;i<npt;i++){ uniform_num = set(i%dim,i/dim); pt = addpoint(0,uniform_num); prim = uniform_num.x;; addvertex(0,prim,pt); if(prim == 0){ pts = array(i+1,i+1+dim,i+1-dim); }else if (prim == dim-1){ pts =array(i-1,i-1+dim,i-1-dim); }else if (uniform_num.y==0){ pts = array(i+dim,i+dim+1,i+dim-1); }else if (uniform_num.y == chi("npp")-1){ pts = array(i-dim,i-dim+1,i-dim-1); }else{ pts =array(i-1,i+1,i+dim+1,i+dim-1,i-dim+1,i-dim+1); } if(i == 0){ pts =array(i+dim,i+1,i+dim+1); } if (i == dim-1){ pts = array ( i+dim,i-1,i+dim-1); } if (i == npt -dim){ pts = array ( i-dim,i+1,i-dim+1); } if (i == npt -1){ pts = array ( i-dim,i-1,i-dim-1); } int pts_no[]; foreach(int ptn;pts){ if(ptn<i){ append(pts_no,ptn); } } setpointattrib(0,"pts",pt,pts); setpointattrib(0,"pts_no",pt,pts_no); randn = floor(len(pts_no)*rand(i)); randpt = pts_no[randn]; setpointattrib(0,"randpt",i,randpt); }
-
2 pointsHello Guys! I´m having a little trouble with a scene and was hoping you guys could help me figure it out. I´m trying to recreate this tire burnout effect. not the classical, lots of smoke everywhere, but this simple and detailed smoke. https://therealmarky.onfabrik.com/portfolio/audi-r8-spin at the moment I´m emitting some particles at the tire contact with the ground, and using them as an emitter for the smoke. The real problem comes with the slow motion. I´ve tried retiming the sim, but it wont match the animated car. I´ve tried doing the sim at the origin. smoke looks better, but its noticeable how it is moving across the scene. I´ve tried taking the time scale down to 0.5, 0.1, 0.05, 0.025. the sim slows down, but it obviously looses all the details from the microsolvers. My question is, how would you guys attack this kind of slow-motion shots? am I in the right track with the pops and timescale? Thanks a lot in advance!
-
2 pointsyou can do something like this for example: import toolutils as tu view = tu.sceneViewer().curViewport() view_xform = view.viewTransform() view_position = view_xform.extractTranslates()
-
2 pointsThanks for your response I think I figured out a great solution: - Dropping a partition sop - find the attribute name you want, which in my case is named "agentshapesname" - for the rule say `@agentshapesname' and boom groups. thank you for helping!
-
2 pointsYou can try to combinate some nodes like polyextrude, fuse, polyreduce and subdivide on a voronoi pattern. Here is a simple example ... voronoi_scales_simple.hipnc
-
2 pointsThis we gonna use For CNC tooling on Balsa and making "Schablone" for Wood Components . Donne
-
2 pointsIn case you need an example for the Houdini wrapper...
-
2 pointsMaybe this will help https://www.toadstorm.com/blog/?p=722 P.S. It might be much easier to write a wrapper script for launching Houdini, instead of struggling with .env and packages
-
2 pointsfor alembic: - copy any packed prim to your points (you can also assign path attribute per prim if you are building hierarchy from path, but even without it you will get object per packed prim) - on the ROP alembic output node change Geometry/Packed Transform to Transform Geometry - and you can uncheck Create Shape nodes if you don't care about the geo, just want locators with transform data USD may also be an option
-
2 pointsJust eat the same thing every morning, and it'll be a tdous breakfast.
-
2 pointsIn your case you can make all much simply cogs_automation_problem_fix.hipnc
-
2 pointsHi Matt, I can relate to that. The only way to even top this, might be finding your own postings really interesting and new after a few years ; )
-
2 pointsHi Librarian, Not...I just used Lines, VOps, Wrangles creating and admnistrating attributes to manipulate PolyWires, Polyextrudes, Carves parameters etc This model looks complex, but it´s quite simple.
-
2 pointsA more elaborate example for cutting roads through height fields: Identifies flat areas for settling locations Connects them to a road network Bends and resamples paths into avoiding slopes Smoothes out height variations and blends them into the terrain. heightfield_roads.hiplc
-
2 pointsHi, for these kind of tasks you can use attributes, which can be stored in the geometry. The sort sop has the option "primitive sort" -> "by attribute". The result strongly depends on the attributes you set. In your case you can probably combine two attributes. The prim distance to the center prim (by point and not edge incidence) and the direction from the center. Here is an example using two different methods, to get the distance from the center (probably there are better ways), the other attribute uses the xyzdist() function to a circle. Once you have the attributes you can combine them by just adding them. Since the direction ist between 0 and 1, the distance attribute which is a count (0,1,2,...) will dominate. prim_sort_spiral.hipnc
-
2 pointsWhy not use Bifrost, don't you like Maya? Seriously though, SideFX adds so many amazing features in every half release that I would excuse them for not spending much time on an MPM solver. From the little I know about MPM, it's very slow. Also, most FX tasks are not snow or gooey simulations that would require MPM.
-
2 pointsyou can use Find Shortest Path SOP and make it prioritize convex curvature areas since it's a bit ambiguous where should the ridges start and end you will need to provide a hint like start and end positions here is an example of specifying start and end positions using simple curves and it will try to find the best path following ridges, if it doesn't you can always define long paths by multiple shorter ones ts_mountain_find_ridges.hip
-
2 points
-
2 pointsThe simplest answer I can think of is to rebuild the input curve and turn it into a single curve node (very easy to do with python). From there, do whatever you want. node = hou.node('/obj/geo1/alembic_curves_unpacked') parent = node.parent() pos = node.position() geo = node.geometry() prims = geo.prims() for prim in prims : crvnode = parent.createNode("curve") pts = prim.points() tmppos = "" for pt in pts : tmppos += ",".join([str(x) for x in pt.position()]) + " " crvnode.parm("coords").set(tmppos) crvnode.setPosition(pos) crvnode.move([0,-1]) pos = crvnode.position()
-
2 pointsIn houdini.env: HOUDINI_PATH=$HFS/houdini:/path/to/my_tools where my_tools is a directory that has a structure which houdini recognises (i.e otls, scripts folders etc )
-
2 pointsAnother option can be the 3d skeleton extraction tool from labs. sample_skeleton_orientation.hipnc
-
2 points@yujiyuji Play with this setup , in resample SOP ,adjust only steps that You Like ,or I think its Best to Just Explain in Words What Type of Effect or Installation (model) You planning to do. Houdini have million approaches to handle some "problems" I think . Have Fun sampleFix.hiplc
-
2 pointsHi, in Mantra you can sidestep the problem with stylesheets and cvex for primitives. E.g.: Data Binding to intrinsic:indexorder In this example, I'm targeting packed primitives themselves. If I would add subtarget: Primitive I could target individual polygons on a rubber toy. You can find some examples in the crowd section of the documentation. packed_target.hipnc
-
2 pointshere’s another one without relying on an iterative approach geo_along_curve.hipnc
-
2 points- animation Mixer/Sequencer a la XSI/Maya - camera Mixer/Sequencer a la XSI/Maya - parallel rig evaluation like in Maya https://download.autodesk.com/us/company/files/UsingParallelMaya/2020/UsingParallelMaya.pdf - better outliner like in Blender/Maya , with ability to parent, organize, sort, rename all elements in your scene in a Hierarchical way without using the node tree. - nodal context to create GLSL viewport shaders from nodes + glsl wrangle like maya shaderfx or babylon.js editor - ability to export GLSL shading trees to UE/Unity - 2d post process in the OpenGL viewport [ bloom, grain, vignet, CC ] - reflection/light probe + screen space reflection for viewport - ROP openGL that actually work as expected with 100% viewport fidelity - MOPS kind of OTL integrated by default a la gamedevtool , but in the idea to have mographdevtool - COPS on steroid - CHOPS on steroid - do not force USD workflow by default let the choice to use it or not, small boutique might not need USD
-
2 points
-
2 pointsHere are a few more links relates to tires. https://www.sidefx.com/forum/topic/67731/?page=1#post-287800
-
2 pointslook inside of Vellum Object DOP/guides node and then all the nodes between CONSTRAINTS node and switch12 node, those are responsible to compute the data on your constraint geometry, so you can get them from there and include in your setup
-
1 pointLibrarian By the way, the first example was to make a curve follow a ray. It doesn't work well on curves. An alternative might be to match the curve to the polygon deformation. For example, Lattice Deformation But anyway, I'm glad that Soft Selection has become easier. FallOff_SoftSelectionCurveRAY_v001.001.hipnc
-
1 pointMaybe you can reference the incoming point's position in the pivot parameter
-
1 point
-
1 pointCan't you just port Java snippet to VEX or Python/C++ and free yourself from the burden of inter-process communication? I know tinkering is fun, but can be very frustrating when involves real-time... anything. If that's not possible 1) I would start from asking if those chunks single process will be occupied with have to communicate with each other? Do they have boundary condition set by their in-progress neighbors? Because if not, you can avoid distributed computing all together by slashing Java array into chunks and pipe it down to many Houdini's independent sessions (concurrent, not parallel, which is easier). If that's not possible 2) I would consider trying Houdini's distributed simulation mechanics first. If you setup distributed FLIP, you'll notice that most tricky business is handled with two nodes called: Gas Net (Field) Slice Exchange, and afaik they will happily exchange any given point attribute or volume over the network's attached chunks. They don't ask what sort of computation is taking place, so you could distribute any VEX snippet or C++ operating on points/volumes over nodes (by just distributing something like a POP sim). If that's not possible 3) I would look into Houdini Engine, which is built around Apache Thrift. In the easiest scenario you can run Python process (with hapi module) and connect it with any number of other python sessions. And those will have entire Houdini inside them running. If you insist on using Java as a data server, you could use Thrift on its side to communicate with Houdini Engine. Using Thrift just spares you time as it's already in Houdini. If that's not possible 4) I would consider using one of Houdini's headers like UT_NetMessage or UT_NetStream for raw data transfer. You can even see the example of how the former one is used in VDB slice exchange. In such case you would have to marshal data for network transfer, there are number of options out there, including FlatBuffers, which is funny, because... FlatBuffers has a builtin support for gRPC, so you get both at once, but gRPC, as name implies, was built for Remote Procedure Calls, not transferring loads of data, so it might not operate as good as you wish with many gigabytes of it. Low level network in nice package (like mentioned HDK headers) may work better (or not)... Also something designed entirely to deal with terabytes over the wires like Arrow might be waiting for your call. hope this helps, skk. ps frankly speaking if you would have been really badass, you would stick to OpenMPI
-
1 pointAmin, you can also dive inside and see, what exactly happens before pre-solve, after post-solve, and between them. I have attached a picture. For example, you can see, when the @pprevious attribute gets written, it is in between the Pre-Solve and Post-Solve inputs (in the node named "stash_current_pos"). So, if a new particle is sourced in the current timestep (usually in the post-solve input), its "has_pprevious" attribute is 0.
-
1 pointJust need to find Adjust and with Chops and Colors endless patterns absolutely Strange What waves Do..
-
1 pointvector pos_tex = set(X, Y, 0.0); vector geo_clr = uvsample(geo, 'Cd', 'uv', pos_tex); assign(R, G, B, geo_color); konstantin magnus thanks a bunch!
-
1 pointHi Davide, for strings and arrays, you can use the array[start:stop:step] syntax: a[start:stop] // items start through stop-1 a[start:] // items start through the rest of the array a[:stop] // items from the beginning through stop-1 a[:] // a copy of the whole array For your case, this is the syntax: int coord = 6; // I changed the coord from 5 to 6 string s = "0123456789"; s@s_1 = s[:coord]; // "012345" s@s_5 = s[coord:]; // "6789" More examples and explanation here: https://stackoverflow.com/questions/509211/understanding-slice-notation a[-1] // last item in the array a[-2:] // last two items in the array a[:-2] // everything except the last two items //There is also the step value, which can be used with any of the above: a[start:stop:step] // start through not past stop, by step
-
1 pointthis sorta thing? scatter_density_relax_pscale.hip
-
1 pointor volumesample() on a vdb sdf. maybe not the most straight forward solution, but one that is pretty handy. and I believe faster on high point counts.