Jump to content


Popular Content

Showing most liked content on 09/13/2017 in all areas

  1. 4 points
    Hello Everyone, We are very excited to announce our latest workshop "Mastering Pyro FX In Houdini" This trailer summarizes the content of the workshop. Please feel free to email as us contact@rebelway if you have any questions. Link: https://rebelway.net/mastering-pyro-fx-in-houdini/ Regards Saber
  2. 2 points
    From my personal understanding: 1. HScript is a shell-like language, the old scripting core of Houdini, mostly replaced with Python this days. Example: # Node geometryvopglobal1 (Vop/geometryvopglobal) opadd -n geometryvopglobal geometryvopglobal1 oplocate -x 1.90579 -y 1.97631 geometryvopglobal1 opspareds "" geometryvopglobal1 opparm geometryvopglobal1 chlock geometryvopglobal1 -* chautoscope geometryvopglobal1 -* opset -d on -r on -h off -f off -y off -t off -l off -s off -u off -e on -b off -L off -M off -H on geometryvopglobal1 opexprlanguage -s hscript geometryvopglobal1 Scripts typically look like sequences of commands. We still may find such scripts in old shelf tools, menu scripts, etc. Summarizing: npoints(): unavailable. Expression function can be used inside backticks. @numpt: unavailable. Where to use: in scripts and shelf tools, but better use HOM. 2. HScript Expressions is a special part of HScript used inside `backticks` to substitute contents with result of some computation. In parameter fields we use them without backticks (assumed that everything is expression), in string parameter fields we need to use backticks to evaluate contents and substitute with resulting values. # Typical expression. if(npoints(0)==0, $F, $FEND - $F) # Typical string. $HIP/render/explosion_`$F-1`.png # We can use "vex-like" @Frame instead of $F. # There is no "vex-like" equivalent for $FEND. if(npoints(0)==0, @Frame, $FEND - @Frame) When we type "@foo" in parameter field, we don't use VEX. It's like an alternate way to access something stored in "$FOO". It is not guaranteed to work for every variable that can be accessed with dollar sign. Example: before H16 Group SOP stored number of input points in variable $NPT. After @-syntax was introduced in H15, we expected logical "vex-like" equivalent with same meaning to exist: @numpt. There is no such variable, however. The feature still not implemented fully, and pretty much undocumented. New Group SOP node dropped the local var. npoints() is an expression function we can use anywhere in parameters. This is what we can use in new Group SOP to get number of input points. It accepts string path. It specially treats numbers provided as arguments (by automatically calling "opinputpath(".", number)" I guess). There is many expression functions which has no such convenient handling and will fail if we provide just 0 to them. opinputpath(".", 0) can be used instead. Expressions are widely used in Houdini. They have nice and compact syntax convenient to use inside parameters. Python is used too, but for more advanced tasks. Summarizing: npoints(): available as expression function. @numpt: unavailable. Other vex-like implicit variables may work, e.g. @Frame. $NPT: available as local variables defined on some old nodes. Where to use: in numeric parameters, in string parameters inside backticks. 3. VEX is a C-like programming language for shading and geometry processing tasks. Typical VEX program defines some context function operating over inputs and writing (exporting) some results. Sample VEX program defining SOP context function: sop restpos(export vector rest={0,0,0}) { rest = P; } There is no "@numpt"-like syntax in VEX. If we need to access some attribute, we need to use functions like attrib(). We need to compute non-attribute variable like @numpt using corresponding VEX function npoints(). Summarizing: npoints(): available as VEX function. @numpt: unavailable. Where to use: in standalone .vfl and .h files. 4. Wrangles, Snippets, VEXpressions . It is VEX extended with extra features, implemented via Snippet VOP and Attribute VOP SOP. @-style attribute bindings is one of them. Also, as we type the code inside string parameter, we can also incorporate some HScript Expressions using backticks. Typical Wrangle: @rest = @P; This will be wrapped into CVEX context function and expanded into normal VEX program automatically: void wrangle(vector rest; vector P) { rest = P; } cvex f(export vector rest={0,0,0}; export vector P={0,0,0}) { wrangle(rest, P); } @numpt is an implicit variable defined in Attribute VOP SOP and containing number of points of first input. Whenever you use VEXpressions (Snippet VOP, Wrangle SOPs, Attribute Expression SOP, Group Expression SOP, etc.), you can use @numpt. npoints() VEX function is also available, obviously. Summarizing: npoints(): available as VEX function. Also, expression function can be used inside backticks. @numpt: available. Where to use: in VEXpression parameters. 5. Grouping patterns mini-language. Specifically, an ad-hoc groups where @ also used for attribute access. You can pass a string like "@P.x<0.5" to the group parameter in many nodes, or as group argument in VEX functions. It will be processed by Houdini automatically. As we enter the group parameter string, we can use HScript Expressions inside backticks. Summarizing: npoints(): unavailable. Expression function can be used inside backticks. @numpt: unavailable. Where to use: in group parameters, in group string arguments in VEX.
  3. 1 point
    Here is a working version. You should be using rbdpackobject instead. It will be way faster than the old system. Then on the passive grp and promote to points because the active attribute is point attrb. Then in wrangle Im just giving an active to all pieces then just checking for the grp name passive if is equal to 1 to make them non active. There is other way as well to do this, like for example doing in in DOPs inside a Sop Solver. activevalue_FIX.hipnc
  4. 1 point
    Just wanted to let everyone know that there is another new course on Pluralsight today. This time it's all about the solver SOP. Below is a bit of information. Hope you all enjoy! Exploring Houdini's SOP Solver by Kolt Wilson https://www.pluralsight.com/courses/houdini-exploring-sop-solver Course Description Houdini's SOP Solver is the industry standard procedural modeling tool. In this course, Exploring Houdini's SOP Solver, you'll learn how to create points, primitives, and vertices using vex. First, you'll explore some basic vector maths to allow you to have the knowledge and skills needed to create a wire growth solver. Next, you'll dive into using the Solver SOP and have the chance to learn several techniques via practical examples. Finally, you'll discover a setup that is built and has many applications. When you're finished with this course, you'll have developed several timeless, practical Houdini skills, and have the necessary knowledge to utilize those skills in practice. Software required: Houdini 16. About the Author Kolt Wilson is a designer and technical director freelancing in the northwest of the UK. Kolt began his career as a designer and 3D artist, where he focused on graphic and experiential design before making his way into commercials and film. Kolt has worked in the creative and motion/VFX industries for over 13 years and has been using Houdini, Cinema 4D, and Zbrush in recent years.
  5. 1 point
    I tried Acey195 wrangle in mine and it works straightaway...with my setup I have a referenced copy so that there's one with and one without 'holes'...naturally the one with holes you use for scatter as you don't want the points in there...the other one without holes, you use for Unrolling...this method you don't get points disappearing where the joints are... So the ref'ed one should be exactly the same as the other in all aspects except for the 'holiness'... DeleteNearBorder_Acey.hipnc
  6. 1 point
    I think primuvconvert function will be helpful for intrinsic uv attribute. An example of code to get relative distance between the vertices. // Run Over -> Points int prim; vector uv; xyzdist(0, @P, prim, uv); int mode = 4; // PRIMUV_UNIT_TO_UNITLEN u@uv_profile = primuvconvert(@OpInput1, set(uv.x, 0.0), prim, mode);
  7. 1 point
    export to ass file and bake with Maya or there is python script that will work without maya using Kick only. i was not able to make it work though https://bitbucket.org/ryanheniser/rentotx
  8. 1 point
    What about progress bar of cooking somewhere under timeline ?
  9. 1 point
    Yeah - houdini is becoming more and more artist friendly so knowing the maths is useful but not absolutely necessary. Anything you don't know can always be googled Python is not necessary at all but again, any additional skill is useful. If I were to invest in my future from scratch I would do it with SideFX not Autodesk for sure. They are considerably more customer-centric, they listen to their user-base and you can get their software free to learn with the PLE version. There's tonnes of learning content out there with Peter Quint, entagma, Rohan Dalvi, Go Procedural, sidefx.com and here on odForce. The community is really helpful and can always get you out of a pickle. I'm an XSI convert but I'm glad autodesk canned it as it gave me the push towards this sensational piece of software.
  10. 1 point
    I finally got around to cleaning up the hip file and have attached it. If you end up using this, please let me know how it's going and share a pointer to your work. The major challenge with writing this in VEX was that VEX does not offer any of the canonical data structures one would use to efficiently implement this. For me, the simulation ends up running out of memory around a 1000 frames. As I am novice to Houdini, I would also appreciate any feedback and comments you might have if you end up taking a look. Enjoy? :-) MorphogensisInVex.hiplc
  11. 1 point
  12. 1 point
    Hi bonassus, create a line with say 50 points and attach a point wrangle, e.g. @P.y = chramp('shift', @P.y); or float shift = chf('shift'); @P.y = pow(@P.y, shift); and click on the little icon appearing on the right of your code. line_density.hipnc
  13. 1 point
    Anything I can do in Houdini is thanks to the great community of people helping and sharing their knowledge. Thank you everybody, you guys rock! This is my first job done fully in Houdini (+AE) and my client let me share the source files (attached in this post). Rendered animation is here on vimeo The included network is quite simple and I hope it can help beginners to learn Houdini. I have tried to avoid slow for each loops and copy stamping, so you can find few small tricks in there. It was rendered in one afternoon on Redshift and two 1070s (cca 1.8K pixels res). And also warning: some of the effects and glows are done in AE. Used VEX if, vertexindex, smooth, rotate (matrix), setpointattrib addprim, addpoint, addvertex, removepoint user-defined functions Used CHOPs lag, math, spring, geometry, envelope, area, trigger jiggle (even for single channel) chop() expression Used VOPs dot product (to control the linear falloff), cross product primuv, volume samples VDB vdb activate, custom masked advection (clouds) nearpoint (to sample the mask advection offset) SOPs uv texture(rows&columns) to control the ramp (color&pscale) along u attribute interpolate, attribute transfer, solver polyextrude (with local controls) RedShift volume shader, light instancing point and vertex attributes odforce - project - v1.zip
  14. 1 point
    I found the largest challenge to be cell splitting for which I needed to implement in-order neighbor traversal: https://gist.github.com/provos/4e88a9f13fb7354fa680c7b1d4c907b2 (this may not be the latest code) Let me think about sharing the HIP file. It was a fair bit of work but ultimately nothing particularly special.
  15. 1 point
    create static pieces instead of active. Put /obj/geo1/OUT_box as second input into popwrangle1 and change the code to this one: vector Cd = point(@OpInput1, "Cd", @ptnum); //activate piece and start active counter at each substep if(i@active==0&∫(Cd.x)!=0){ i@active = 1; i@act = 1; } //force vel more than one frame if(i@act>0&&i@act<=4){ vector vel = point(@OpInput2, "v", @ptnum); v@v += vel; i@act++; } Cheers!
  16. 1 point
    Scaling geometry and such is usually fine and painless, the big issue is directly scaling the camera inside Houdini. I can't quite remember but you usually scale down things coming from Maya by 0.1 or 0.01. For the camera for things to render properly, what you want to do is to scale the transform, but not the camera itself. Like this (it's a gif, click it!): So we bring in the camera transform with an Alembic Xform, which we scale with the null. Then we apply that transformation, but not the scale, to a new fresh camera. I've used this a lot in production and it seems to be the only way that works every time.