Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

Everything posted by kiryha

  1. Polywire shape adjustments

    Thanks, Thomas! The file is working fine, I just wish to clearly understand how it's working in-depth and replicate it by myself. I examine the point animation along curve part (skipping orientations) and have some questions and probably I will have even more questions later, so yes, when you will have time you can check that topic.
  2. Polywire shape adjustments

    Correct, my bad. I still examining how you rebuild my setup to move objects along the curve, as I understood, the high-level idea is to use primitive wrangle instead of Foor Loop. That gives me a hint that it could be applied in this case as well, cos wrangle muuuuuuch more fast than Foor Loop.
  3. Polywire shape adjustments

    Yes, that's works! Thanks, Thomas! i[]@primPts = primpoints(0, @primnum); foreach (int i; int currentPoint; @primPts){ float ramp_index = fit(i, 0, len(@primPts)-1, 0,1); f@widthPrim = chramp("shape", ramp_index)/20; setpointattrib(0, "width", currentPoint, @widthPrim, "set"); } scalePolywire_loop.hipnc
  4. Hello, I realize how vast this topic is but never the less, I wish to understand how all stages of full SG project creation should be organized in Houdini at a very high level first. Also, we may skip compositing setup and color management and focus on 3D production only. We assume that we do everything in Houdini, no other software required. I have a more or less clear understanding of how a project could be done in Maya: - Each asset (character or environment) has a separate modeling scene. - Each animated asset has a separate rigging scene. - Each shot has a separate animation scene with referenced: 1) rigs of animated assets, 2) geometry of non-animated assets. - Each shot has a separate rendering scene with a referenced geometry of all assets. - You create an animation in animation scene and export assets animation as caches. - You render shots from rendering scenes, where you import and apply pre-built materials, import animation, create lights. It is extremely simplified workflow, but it works nicely on a real animation film project, especially within very limited resources. For Houdini, I aim to build the same system. I know it might be a wrong way trying to replicate Maya workflow in Houdini, but I am not trying to do so, I just wish to replicate the logic of data storage and exchange withing common VFX workflow (Modelling > Rigging > Lighting, Shading and Rendering > Compositing) and data structure I use to (assets, shots etc). My assumption about Houdini workflow: 1) Project setup: define Houdini environment with variables (and/or 123.py etc) individually for each project with a wrapper. There are some good tutorials and topics around this stage, so currently I am fine with this part. 2) Asset creation (modeling): let's skip for now. 3) Rigging and Animation. 4) Shading, Lighting and Rendering. Questions. 3) Rigging and Animation. Since Houdini does not have referencing mechanism I suppose the Digital Assets and versioning of them (along with geometry and volume cashes) is a way to exchange data between stages (departments). How should I create (and modify) rigged character asset and use it in animation (and rendering) scene? Say I have a model of my character in Alembic format (exported/cashed after modeling stage). I assume: - Create a scene for rigging process, bring alembic inside, rig, export OTL from this scene. - Create a scene for the shot animation, create character asset from OTL there, animate, export geometry (or animation data?) - When changes to rig have been made, export OTL with next version, update character asset in animation scene with a new version, re-export data if necessary. 4) Shading, Lighting and Rendering. In Maya, while dealing with rendering scene, my goal was to avoid any unnecessary data (like characters with rigs and animation curves etc) so I assemble scenes from pure clean geometry and apply animation by importing alembic caches. How should I assemble rendering scenes in Houdini? How should I bring assets, animation and materials there? How to update data when changes to models, rigs or animation have been made? With Maya, I develop a common material library (metal, wood, glass etc) and import this library in rendering scene so plenty of miscellaneous assets could share the same shader. It dramatically reduces the number of materials in rendering scene and makes material tweaking more simple. Let's skip dealing with lookdev and materials in depth for now, but I wonder if its a common way to encapsulate materials with assets before rendering stage so each asset has its own shader or there are some other techniques to deal with materials on numerous assets. Any suggestions and links are welcome.
  5. Polywire shape adjustments

    Trying to substitute Foor Loop with a primitive wrangle in @Atom setup. It works only for the first primitive. I thought wrangle is a loop, e.g. the code inside VEX expression window should be executed for each primitive (at the same time, in parallel) but probably I miss something. There should be printf() instead of sprintf() ap_curve on object.hipnc
  6. I use curves as paths to animate objects along this curves — cars on the roads. Some curves give me the right count clockwise direction of object movements and some of them not. At some point, if I change the curve orientation ("reverse" checkbox on curve_# object in LAND container) I got it fixed. But now reversing each curve do not necessarily change motion direction and I am not able to find the reason of issue or the way how else I can change individual orientations. Animation flipbook Scene file: GEO_CITY_008_reverse_001.hipnc PS. This is next stage of the topic I started earlier.
  7. Reverse curve direction not working

    @acey195 Thanks, Twan, nice hint! @ThomasPara Wow, that's really fast setup! Despite I just start to examine this setup and do not understand how it works, I have several questions already: 1) I am trying to copy random alembic models on points instead of proxy cubes (with set_time_and_variation node) but it does not work. The path to alembic file is correct and different for each point (check @DISP attribute). Have no clue what is wrong! Here is a scene GEO_CITY_008_reverse_003_fix.hipnc (and alembics: CAR_B_01.abc and CAR_A_01.abc) The only way I was able to handle it - with one more nested for loop, as you could saw in initial setup (i delete other models to keep the scene clean there). 2) What the purpose of the carve1 node? Turning it off seems does not change anything, but the setup works much faster with it. 3) What happens with point numbers if I would not divide a time by perimeter (u += @Time/@perimeter;)? The points still move along the path but numeration of points jumps if I use only time (u += @Time;).
  8. Reverse curve direction not working

    Great! I can create a group and add primitives (curves) manually to this group for selective reverse. Works, fixed! But I wonder... how can I control it procedurally if I will have a LOT of curves? How to determine a curve orientation, if its clockwise or opposite?
  9. Detail wrangler to primitive ?

    Probably with setdetailattrib. Here is an example of setting point attribute in detail mode.
  10. Primitive selection pattern

    I have group expression which selects 7 primitives in stripe and skips one. How can I modify the amount of skipped primitives (if I need select 7, skip 2, for example)? primSelectionPattern_001.hipnc
  11. Primitive selection pattern

    That's fantastic! You can write the group name in Output Selection Group field of Bindings tab to highlight the group in wrangle.
  12. Primitive selection pattern

    Exactly what I was looking for! Long way of learning nodes in Houdini through the attempts to solve everything with VEX. Thanks again
  13. Primitive selection pattern

    Have a sophisticated solution which is working but not elegant at all... Still thinking how it could be done with pure expression. primSelectionPattern_002.hipnc
  14. Great! Let it be the Sweep! On curves which were build in Houdini that way works fine. On the curves reconstructed from Maya polygons - no, but this is not an issue. Here is the scene if anybody will need it: - Attach several cars to follow any number of input paths - Normalise cars speed for different paths length - Randomize car location on paths - Control cars orientation with VEX ROADS_007.hipnc
  15. How to set PROFILE length individual for each curve? Using custom @stripWidth attribute for example? PARAMETER_001.hipnc
  16. Is it possible to get a path for traffic with poliexpand2D if the source curve is not flattened but bent (like a bridge)? Or I have to do it in the flattened curve and deform it after? bridge_001.hipnc
  17. I am using modulus to add each 10th point to a group: @group_targetPoints = 1; if (@ptnum%10){ i@group_targetPoints = 0; } So I get evenly distributed points: 0, 10, 20, 30, ... etc. I wish to add or subtract a small number from each point number (like int(rand(@ptnum)*3)) to randomize distribution a bit. Have no idea how to solve this in this case. Adding a small random number to a modulus argument ( 10+int(rand(@ptnum)*3) breaks even pattern dramatically. VEX_groupSelectRandomize_001.hipnc
  18. Immersive Linear Algebra

    I use Houdini to understand math basics for myself and VEX is a very handy tool for that: you are able to build 3D elements with math on the fly.
  19. It could be any object, not necessary alembic. I substitute ABC with platonic, although it's hard to see they are not aligned to the path, that's why wired scale applied. ROADS_OD_007.hipnc
  20. Instead of Alembic, I use Carve + Sort to animate cars along paths within for loop . Works well. But then I tried to randomize vehicle models with one more loop and switch node — I lost my car orientations along the path (from up_vector node). I know that is because of attributes lost but can't wrap my head how to fix it. If you bypass FEB_VARIATIONS and FEE_VARIATIONS nodes it will work with orientations. ROADS_OD_006.hipnc
  21. Hi, Vusta! That solution with resampling and smooth also come to my mind and it works well. So now I need to clone a bunch of cars along a bunch of paths... but this question is far away from the original topic...
  22. Thanks, Victor! With polyexpand2d I build paths for the vehicle's motion. Now I am thinking how to clone cars with time shift and the only way I know is export car animation to Alembic and clone it with a time shift (as Tomas described here) This technique works perfect but I am not sure if its a best solution for this task.
  23. Still not able to get polyExpand2D working. Is it because Offset parameter required another then primitive type of the attribute? I try to use point attribute with an expression point('../attribpromote2',0, "rWidth", 0), it works, but all curves have the same amount of offset... ROADS_004.hipnc
  24. How to decide when use point attributes, and when primitive? At previous example we used primitive, now switch back to points...