Jump to content

All Activity

This stream auto-updates     

  1. Today
  2. you're right, this is a terrible place and you should probably leave
  3. See what I mean with this forum?
  4. Raining Fuel (No Clustering)

    Interesting, when the particle impacts; how did you do the impact ?
  5. visualize groups

    How can I visualize groups ? And how can I loop over all groups and rename each group; I probably can do the latter in python but wondering about the vex method ?
  6. Raining Fuel (No Clustering)

    Here is a modification where the impact particle is set to slide. A trail sop is used to generate a line length, for the sliding particle, which is turned into a tapered polywire. The sliding polywire becomes the fuel source. ap_raining_fuel_trails_111819.hiplc
  7. UV cubic map procedurally

    I'd like to bookmark posts, is that not possible ?
  8. Hey Pavel, Thanks so much for taking the time. This info will really help me a lot. I've never encountered the Empty Data and Enable Solver nodes before, but I think I understand. It seems like the Enable Solver tells Geometry Wrangles which objects to apply to by entering the names set by the Empty Data node.. And I'm not sure how the names will come into play, but hope to remember that tip when I get into constraints. Thanks a ton!!
  9. Permission issue

    Thank you gui, much appreciated
  10. What can I do with SideFX Web API?

    Hi, unfortunately this is an infrastructure allowing (typically large) studios to download and license Houdini programmatically via https. It has nothing to do with Houdini itself or creating geometry.
  11. Objilla - Advanced obj and mtl importer for Houdini™

    Hi AtomicNixon, Thanks for contacting me. I am happy that you find Objilla useful. When you visit the gumroad page there are two more videos that showcase how to install and how to use the product. https://www.youtube.com/watch?v=1rmiw3vJhWs https://www.youtube.com/watch?v=6tfOsYjPia0 I hope that my pronunciation-grammar in the videos makes sense, I am not too fluent in English, let me know if you encounter any problems or if you have any questions. Perhaps you would like to suggest some of the features that you would find useful in the next update here in the forum? Or, if you prefer to address me privately, you can use my email ippobour@gmail.com. Kind regards, Ippokratis.
  12. UV cubic map procedurally

    Ok, it's been a while, but let's try it one by one: 1. Scaling world coordinates to unit size vector bbox = relbbox(0, @P); vector size = getbbox_size(0); vector ratio = size / max(size); vector scale = bbox * ratio; relbbox() creates linear gradients along each axis of the object from 0.0 to 1.0. Those can be spread out in UV space later. getbbox_size() returns the absolute dimensions of the object. While we don't care about the actual size, we need to factor in how those dimensions relate to one another: size / max(size) Dividing all dimensions by the biggest one effectively scales them to unit size while keeping the proportions. This is the aspect ratio for X, Y and Z. bbox * ratio combines the gradients on all mesh points with the overall aspect ratio. All projections fit proportionally onto the UV grid now, we only need to split them up and lay them out. 2. Splitting up projection sides vector side = sign(v@N); vector nml = abs(v@N); if (nml.x == max(nml)) { ... } else if (nml.y == max(nml)) { ... } else { ... } sign(v@N) decides towards which side the normals point to. Its either left or right, top or bottom, front or back. Later this will compensate for.. abs(v@N) setting all normals to positive values. So we can easily compare which direction they are mainly facing, using: if (nml.x == max(nml)) for X, else if (nml.y == max(nml)) for Y and else for Z. By comparing each absolute component with the normals' maximum, we split the geometry into UV islands. 3. Laying out UV coordinates if (nml.x == max(nml)) { @uv = set(scale.y * side.x, scale.z, 0); } else if (nml.y == max(nml)) { @uv = set(scale.x * side.y, scale.z, 0); @uv.y += 1; } else { @uv = set(scale.x * side.z, scale.y, 0); @uv.y += 2; } @uv *= 0.3333; @uv.x += 0.5; set(scale.x * side.y, scale.z, 0); Depending on which side has won, the UV coordinates are composed of either top or side views (first component) and front or side views (second component). Setting the scale variables negative can be used to sort out direction issues. *side.x, *side.y and *side.z are simply flipping directions in case the normal directions have been negative. Thus getting their own islands on the left side. @uv.y += 1; and @uv.y += 2; are moving the UV islands upwards, so they are not landing on top of each other. @uv *= 0.3333; Currently UV coordinates span across six unit spaces, so we scale them down to fit into one. @uv.x += 0.5; Because of flipping the sides we also have to move all our coordinates to the right by half. Alright, I hope things got less confusing now.
  13. Yesterday
  14. Hi everyone, I was interested in creating a web service that would be capable of creating 3D geometries, and while reading Houdini docs I discovered about SideFX Web API. Unfortunately, it doesn't say much about what you can actually do with it and there's just one basic example, but in the Constructing API Requests section it says I can pass to the request: Does it refer to the HOM API? Meaning I can pass something like hou.node('/obj/geo1').createNode('box') Or I'm completely wrong? If so, what can I do with this Web API? Thanks in advance for any help.
  15. UV cubic map procedurally

    I'm not proud !!! I'm reading your code over and over and still got NFI !!!
  16. Anyone using .sim files?

    The .sim files are written out on the cache tab of the dopnet. Enable Save Checkpoints and specify your checkpoint location with $SF instead of $FF as the incrementer. We use $SF to stand for simulation frame. This will correspond with whatever the first frame of your simulation is, so be aware of that. Then change the checkpoint trail length to the length of the sim, so that the entire sim is accounted for. Next, make sure the checkpoint interval is set to 1, so that you get every frame taken care of. Now, when you play the simulation, you will automatically write out .sim files. Just be aware that if you suspend the simulation on a partial frame, your simulation will break. In that case you need to delete the last incomplete frame, ctrl+click the little brain icon, and your cache will re-set to the last complete frame.
  17. Assuming you're using Alembic to get your primitives out of Maya and back into Houdini, you need to get the "packedfulltransform" intrinsic of each packed Alembic. In VEX you can use the "primintrinsic" function to get this matrix. However, points don't have primitive intrinsics, and so when you delete your primitives you're going to lose all your transform information except for @P. You'll want to keep the primitives loaded, unless you're manually converting the primitive intrinsic transforms to template point attributes. To manually get an orient attribute from a packed Alembic: matrix m = primintrinsic(0, "packedfulltransform", @primnum); matrix3 m3 = matrix3(m); p@orient = quaternion(m3); To get the pivot: vector3 pivot = primintrinsic(0, "pivot", @primnum); v@pivot = pivot; If you want to try the easy route, MOPs has built-in tools to handle this. Use MOPs Extract Attributes on your Alembic primitives, and it'll automatically pull an `orient` and `pivot` attribute out of your primitives (make sure to enable Extract Full Transform). You can then use Transform Pieces, or use MOPs Apply Attributes if your source and destination primitives have either the same sorting order or matching i@id attributes.
  18. error in /physarum-slime-mold

    Salute @flcc Entagma and mxsage
  19. Packed Primitives Intrinsics

    Hey guys, I know I'm really late but whatever. If you want to update the collision geometry you have to set the packedprim point id attribute to -1. This way bullet will think it's a new geometry and so recomputes the collision geo according to it's intrinsic transforms. Props to the Entagma guys for this one. Cheers
  20. Problem with foreach (Anastasia Opara Lake house)

    You should connect locate node to find_closed_balc now you have wrong connection
  21. Hey, I simulated low res RBD pieces and am using a transform Pieces node to apply the position / rotation back onto the highres geo. To get the orientation / pivot for the template points input of the transform pieces node I used a "dop import" node which is set to create points to represent objects. But I had to bake out the RBD objects and animate on top of em in Maya and brought em back to houdini. I made sure the name attribute is exactly the same as on the highres geo again and packed it and currently just using an attribute wrangle to delete all prims so I only have points left. But those only come with P and name. How can I get the correct orientation / pivot back to align my highres geo correctly using the Transform Pieces node? Thanks guys!
  22. Check this: sample_03_simple.hipnc First of all - before making a rbd sim make sure that all of your objects have proper names. I know you don't use constraints, but lets keep it consistent! No need for a sop solver, use Geometry wrangle - much faster and cleaner. Also it is a good practice to update the velocity when moving the position. Oh, and make the caps regular Static Object - you are gonna manipulate them manually inside the DOPS.
  23. External Text or Python File Set HDA Parameters

    Short answer: yes. Long answer: There are 2 ways you could do it. depending on what you want to do. 1) Use an external python script to open Houdini in the background, place a HDA and set parms. (required the loading of the Hou library into your python script) 2) normally use Houdini and use a python node/python shell. In both cases you would Load and read text file (if running Houdini in background create HDA) Store Node refrence to placed HDA Set parameters based on read data. Main class to have a look at is hou.Parm
  24. Objilla - Advanced obj and mtl importer for Houdini™

    And I tossed you a fiver for the pleasure of checking it out. Quite useful, but could this be just the start? There's a lot more that could be added.
  25. Toms "Learning Houdini" Gallery

    "Rumis Field" "Out beyond ideas of wrongdoing and rightdoing there is a field. I'll meet you there." Rumi One of my favourite quotes ever... And an organics version: Both created with a custom solver in Houdini 17.5 & rendered in Redshift for High-Rez printing at 18000x12000 (https://www.artstation.com/thomashelzle/prints). Cheers, Tom
  26. Raining Fuel (No Clustering)

    Here is an update with obstacles, sliding fuel sources, randomized fuel shape and strong prevailing winds. ap_raining_fuel_111819.hiplc
  1. Load more activity