Hi,
take a look at the great cgwiki from Matt Estela :
http://www.tokeru.com/cgwiki/index.php?title=Houdini#Unfolding_polys [www.tokeru.com]
you'll find some example file and maybe some hints
Maybe it's possible to do it with CHOPS, but I don't have enough experience with it.
Found 52 posts.
Search results Show results as topic list.
Technical Discussion » My question about growth animation...
- c0y
- 52 posts
- Offline
Technical Discussion » Voronoi on deforming and scaling mesh
- c0y
- 52 posts
- Offline
Hi,
I'm currently working on a growth animation system with the possibilty to break the geometry.
I have problem with the fragments on a deforming and scaling mesh.
I have several curves (I just put a simple example file to better understand) : each curve has a growth effect with a scaling radius.
I want to fragment each of these curves and keep the animation.
So I have 3 solutions :
1) the first one, is to freeze the animation at the last frame, create my voronoi in a loop (for each curve), and use a point deform on the overall mesh to get the animation back. But the result is not good because of the growing and scaling effect. Another problem comes from the radius of the point deform : if 2 curves are to close, the point deform doesn't interpolate correctly the positions.
2) So the second solution is to do this point deform inside the loop. But I still have the problem of the growing and the scaling effect on the mesh… plus : the loop is calculated on each frame, which is really longer ! (I plan to use this on large amount of curves, such as a tree, for example).
3) A third solution is to store the animation before the loop, apply the voronoi and get the animation back to points. The result is better because the voronoi automatically calculates the values of the ‘stored animation’ and we get a better transitions, even if there are still some problems… But like n°2, the loop is calculated on each frame… so very long !
My questions :
1) Is there a proper way to fracture my animated mesh ?
2) Is there a way to avoid calculation of the loop on each frame ?
Thanks !
I'm currently working on a growth animation system with the possibilty to break the geometry.
I have problem with the fragments on a deforming and scaling mesh.
I have several curves (I just put a simple example file to better understand) : each curve has a growth effect with a scaling radius.
I want to fragment each of these curves and keep the animation.
So I have 3 solutions :
1) the first one, is to freeze the animation at the last frame, create my voronoi in a loop (for each curve), and use a point deform on the overall mesh to get the animation back. But the result is not good because of the growing and scaling effect. Another problem comes from the radius of the point deform : if 2 curves are to close, the point deform doesn't interpolate correctly the positions.
2) So the second solution is to do this point deform inside the loop. But I still have the problem of the growing and the scaling effect on the mesh… plus : the loop is calculated on each frame, which is really longer ! (I plan to use this on large amount of curves, such as a tree, for example).
3) A third solution is to store the animation before the loop, apply the voronoi and get the animation back to points. The result is better because the voronoi automatically calculates the values of the ‘stored animation’ and we get a better transitions, even if there are still some problems… But like n°2, the loop is calculated on each frame… so very long !
My questions :
1) Is there a proper way to fracture my animated mesh ?
2) Is there a way to avoid calculation of the loop on each frame ?
Thanks !
Technical Discussion » RBD packed No collision
- c0y
- 52 posts
- Offline
excellent, thank you very much !
Just to understand your wrangle inside the SOP solver :
You merge object from outside, then feed the DOP at each frame. The findattribval will check if the “name” attribute exists in the DOP objects (findattribval return -1 if nothing is found), and you delete it because they are already in the simulation, otherwise it's going to add the piece another time, right ?
Just to understand your wrangle inside the SOP solver :
int index = findattribval(1, "point", "name", @name); if(index != -1) removepoint(0, @ptnum);
You merge object from outside, then feed the DOP at each frame. The findattribval will check if the “name” attribute exists in the DOP objects (findattribval return -1 if nothing is found), and you delete it because they are already in the simulation, otherwise it's going to add the piece another time, right ?
Technical Discussion » How remove letters from end of a string ?
- c0y
- 52 posts
- Offline
It's a bit tricky, I don't know if there's another way or if it's working for all cases, but the idea is here : transform your name to a string array, remove the values your don't need, and write it back to a string.
Technical Discussion » RBD packed No collision
- c0y
- 52 posts
- Offline
Great, thank you !
Another question though : is it possible to do the 2 rbdpackedobjects without the timeshift ? Let say I have a big simulation before on 1000frames, and I don't want to wait to reach the last frame to simulate my collisions. Can we import dynamically the pieces into the rbdpackedobject ? I tried with a sop solver without any success… maybe there's a trick to add pieces over time
Another question though : is it possible to do the 2 rbdpackedobjects without the timeshift ? Let say I have a big simulation before on 1000frames, and I don't want to wait to reach the last frame to simulate my collisions. Can we import dynamically the pieces into the rbdpackedobject ? I tried with a sop solver without any success… maybe there's a trick to add pieces over time
Technical Discussion » RBD packed No collision
- c0y
- 52 posts
- Offline
Hi,
I want to do a simple thing with RBD packed object, but it seems that it's not that obvious…
I don't want the green pieces to collide with the red ones, but the green pieces have to collide together…
With RBD packed objects, we only have “one” object containing all the pieces, so the NoCollider node doesn't work…
So I tried several things :
1) Make groups active/inactive from the ‘rbdpackedobject1’, but I can't find a way to do it.
2) Load only the active pieces into the ‘rbdpackedobject1’, but I don't know how to dynamically import the active pieces in time… it seems that the rbd takes the pieces when simulation starts.
3) Edit attributes available for the RBD packed object (http://www.sidefx.com/docs/houdini/nodes/dop/rbdpackedobject.html) such as ‘bullet_georep’ to change collision type, bullet_primS, bullet_radius, bullet_collision_margin for the collision shape… but it doesn't work as expected.
Same as above, the ‘collisiongroup’ and ‘collisionignore’ needs several rbd objects, so it's not for rbdpacked…
So is there a way to do it ? or do I need to come back to RBD fractured object and unpack my geometry ?
Thanks !
I want to do a simple thing with RBD packed object, but it seems that it's not that obvious…
I don't want the green pieces to collide with the red ones, but the green pieces have to collide together…
With RBD packed objects, we only have “one” object containing all the pieces, so the NoCollider node doesn't work…
So I tried several things :
1) Make groups active/inactive from the ‘rbdpackedobject1’, but I can't find a way to do it.
2) Load only the active pieces into the ‘rbdpackedobject1’, but I don't know how to dynamically import the active pieces in time… it seems that the rbd takes the pieces when simulation starts.
3) Edit attributes available for the RBD packed object (http://www.sidefx.com/docs/houdini/nodes/dop/rbdpackedobject.html) such as ‘bullet_georep’ to change collision type, bullet_primS, bullet_radius, bullet_collision_margin for the collision shape… but it doesn't work as expected.
Same as above, the ‘collisiongroup’ and ‘collisionignore’ needs several rbd objects, so it's not for rbdpacked…
So is there a way to do it ? or do I need to come back to RBD fractured object and unpack my geometry ?
Thanks !
Technical Discussion » Dynamic constraint network on deforming mesh
- c0y
- 52 posts
- Offline
Hi,
I'm trying to make a dynamic procedural constraint network for rbd packed object on a deforming mesh.
I'm importing an animated object I fracture, and copy the animation.
Then I'm creating some activation groups at different time.
This scene is just a simple example just to understand the process, but the activation groups could be anything else (like an angle threshold, a color threshold, etc.) and could happen at other time.
Things need to stay procedural !
Then I'm building the constraints network, which is animated.
My problem starts at this point :
The next step is to create a solver that triggers the frame of the activation groups and gives a name to it. (for example, if group_A enters at frame 25, then the name is “block25”). The solver also records the position of the constraints at that frame and keeps it static for the rest of the animation.
Then, i'm applying the final static constraints position when the fragments get active and i'm deleting the connections that are shared with another group.
I'm using that constraint network for the simulation.
But my problem is this one :
- I have to use an animated constraint network so I put the “overwrite with SOP” to 1 in order to update each frame. But I want to be able to break the constraints group afterwards, force example with a threshold on the @force or @angle, or any other parameters from constraints. And I don't know how to do it with the “overwrite with SOP” to one : when the primitive is broken, if the value of the attribute goes back below the threshold on the next frame, the primivite is re-created, and the fragments are still connected !
So I tried to make a setup with the “overwrite with SOP” to $SF==1, but I have issues when I want to update to constraints position in a SOP solver… maybe because I try to update point position that has been already deleted.
If someone can help, it would be very nice ! I don't know if this is the right way to do that kind of effects.
Thnks !
I'm trying to make a dynamic procedural constraint network for rbd packed object on a deforming mesh.
I'm importing an animated object I fracture, and copy the animation.
Then I'm creating some activation groups at different time.
This scene is just a simple example just to understand the process, but the activation groups could be anything else (like an angle threshold, a color threshold, etc.) and could happen at other time.
Things need to stay procedural !
Then I'm building the constraints network, which is animated.
My problem starts at this point :
The next step is to create a solver that triggers the frame of the activation groups and gives a name to it. (for example, if group_A enters at frame 25, then the name is “block25”). The solver also records the position of the constraints at that frame and keeps it static for the rest of the animation.
Then, i'm applying the final static constraints position when the fragments get active and i'm deleting the connections that are shared with another group.
I'm using that constraint network for the simulation.
But my problem is this one :
- I have to use an animated constraint network so I put the “overwrite with SOP” to 1 in order to update each frame. But I want to be able to break the constraints group afterwards, force example with a threshold on the @force or @angle, or any other parameters from constraints. And I don't know how to do it with the “overwrite with SOP” to one : when the primitive is broken, if the value of the attribute goes back below the threshold on the next frame, the primivite is re-created, and the fragments are still connected !
So I tried to make a setup with the “overwrite with SOP” to $SF==1, but I have issues when I want to update to constraints position in a SOP solver… maybe because I try to update point position that has been already deleted.
If someone can help, it would be very nice ! I don't know if this is the right way to do that kind of effects.
Thnks !
Technical Discussion » parenting / stick object inside SOP
- c0y
- 52 posts
- Offline
Well, I finally got it !!
I needed to create a rotation matrix of the parent point to get the orientation (in the copy SOP). The offset was corrected with the invert matrix of the parent point at the first frame (with a TimeShift).
So now, my sticking effect is working.
I provide the file if someone is interested.
By the way, I just ask : I'm using a polyframe to create the orthogonal axis, but it seems that the polyframe SOP doesn't work well on a straight line. It doesn't create the 3 orthogonal vectors.
Do anybody know how to create a “polyframe-like” on straight curve ? in VOP or VEX ?
And another question :
When I create a Line (Up vector, {0,1,0}), when I add a Wrangle node with :
if I put a transform node with random rotation, the vectors don't stay orthogonal, as if vectors were created in World Space. Should I create another matrix before ? or is there another way ?
Thanks !
I needed to create a rotation matrix of the parent point to get the orientation (in the copy SOP). The offset was corrected with the invert matrix of the parent point at the first frame (with a TimeShift).
So now, my sticking effect is working.
I provide the file if someone is interested.
By the way, I just ask : I'm using a polyframe to create the orthogonal axis, but it seems that the polyframe SOP doesn't work well on a straight line. It doesn't create the 3 orthogonal vectors.
Do anybody know how to create a “polyframe-like” on straight curve ? in VOP or VEX ?
And another question :
When I create a Line (Up vector, {0,1,0}), when I add a Wrangle node with :
v@x = {1,0,0};
v@y = {0,1,0};
v@z = {0,0,1};
if I put a transform node with random rotation, the vectors don't stay orthogonal, as if vectors were created in World Space. Should I create another matrix before ? or is there another way ?
Thanks !
Technical Discussion » parenting / stick object inside SOP
- c0y
- 52 posts
- Offline
Hi, i'm still working on it, but I've found a post that could help :
http://forums.odforce.net/topic/19482-orient-rot-n-up-v-etc-instance-rotation-question/ [forums.odforce.net]
So I tried to do the same process, but at the end, I have an offset, and I can't figure out how to fix it so that my branch stays at the exact same position.
If someone as the solution, it would be nice
thx
http://forums.odforce.net/topic/19482-orient-rot-n-up-v-etc-instance-rotation-question/ [forums.odforce.net]
So I tried to do the same process, but at the end, I have an offset, and I can't figure out how to fix it so that my branch stays at the exact same position.
If someone as the solution, it would be nice
thx
Technical Discussion » parenting / stick object inside SOP
- c0y
- 52 posts
- Offline
Hi, thank you Sadjad for your answer.
I tried the Point Deform SOP, but this solution doesn't work with a single point.
I watched the tutorial you linked (thx by the way !), but I still don't understand the steps…
1) I have my animated trunk (transformation, or deformation like a noise, for example). I put a polyframe to get 3 vectors.
2) My 1st branch is on point 9; it has also polyframe.
3) I isolate my point 9 (from parent), create a matrix4 from the 3 vectors and the pivot point 9.
4) Then I move it to the origin ?
5) How do I apply the rotation to my branch ? Do I need to move it to the origin as well ?
I'm completly lost
I tried the Point Deform SOP, but this solution doesn't work with a single point.
I watched the tutorial you linked (thx by the way !), but I still don't understand the steps…
1) I have my animated trunk (transformation, or deformation like a noise, for example). I put a polyframe to get 3 vectors.
2) My 1st branch is on point 9; it has also polyframe.
3) I isolate my point 9 (from parent), create a matrix4 from the 3 vectors and the pivot point 9.
4) Then I move it to the origin ?
5) How do I apply the rotation to my branch ? Do I need to move it to the origin as well ?
I'm completly lost
Technical Discussion » parenting / stick object inside SOP
- c0y
- 52 posts
- Offline
Hi,
I'm looking for a way to attach several curves onto a parent one so that if i'm deforming the parent, the other curves moves with their parent point.
In a second time, I'd like to add a parameter to change to orientation of the curves aligned to the up vector of its parent.
I tried several things with matrices, but I don't have a good comprehension enough to make it work properly…
I've found this post https://www.sidefx.com/forum/topic/43131/?page=1#post-193704 [www.sidefx.com] to align my curves to their parent's point (up vector), but when I do some transformations, I get a small difference between what I got and what I should get…
Well, if someone can help me with this, it would be appreciated
Note : this is a simpler example file, but I can't use a copy sop and work with @orient, because I already have a big structure exported, so I need to achieve this inside the same SOP in vex of vops!
Thx !
I'm looking for a way to attach several curves onto a parent one so that if i'm deforming the parent, the other curves moves with their parent point.
In a second time, I'd like to add a parameter to change to orientation of the curves aligned to the up vector of its parent.
I tried several things with matrices, but I don't have a good comprehension enough to make it work properly…
I've found this post https://www.sidefx.com/forum/topic/43131/?page=1#post-193704 [www.sidefx.com] to align my curves to their parent's point (up vector), but when I do some transformations, I get a small difference between what I got and what I should get…
Well, if someone can help me with this, it would be appreciated
Note : this is a simpler example file, but I can't use a copy sop and work with @orient, because I already have a big structure exported, so I need to achieve this inside the same SOP in vex of vops!
Thx !
Technical Discussion » Houdini doesn't use all 80 cores on dual xeon e5-2698 v4
- c0y
- 52 posts
- Offline
Hi,
I'm working on a new workstation with
Dual Xeon E5-2698 v4 @ 2Ghz with 40 cores each (80 cores total).
64GB DDR4 ram
Suprisingly, when I tried to do a Mantra rendering, it only uses 40 threads, even if I selected “use all processors” in the rendering panel.
So my question is simple : is there a core limitation in houdini ? Is there a command line (in *.ini file) to fix this problem ? Because, after all, Houdini uses only 1 CPU instead of using 2 ! That's a huge loss.
I've found this thread without any answer :
https://www.sidefx.com/forum/topic/44634/ [sidefx.com]
And when I go to Help > About Houdini > Show Details, I got :
I tried to put these lines in the INI file but without success…
HOUDINI_MAXTHREADS = 80
NUMBER_OF_PROCESSORS = 80
I'm working on a new workstation with
Dual Xeon E5-2698 v4 @ 2Ghz with 40 cores each (80 cores total).
64GB DDR4 ram
Suprisingly, when I tried to do a Mantra rendering, it only uses 40 threads, even if I selected “use all processors” in the rendering panel.
So my question is simple : is there a core limitation in houdini ? Is there a command line (in *.ini file) to fix this problem ? Because, after all, Houdini uses only 1 CPU instead of using 2 ! That's a huge loss.
I've found this thread without any answer :
https://www.sidefx.com/forum/topic/44634/ [sidefx.com]
Let me elaborate on the matter - Houdini 14, for example, can see up to 64 threads without clustering CPUs into groups. Above 64 threads, it'd divide 2 CPUs into two groups and utilizing only one - translated to the case of DUAL Intel Xeon 2698 v4 configuration, Houdini 14 sees “only” 40 threads (one group = one CPU), rendering the other CPU useless.
And when I go to Help > About Houdini > Show Details, I got :
Houdini FX Version 15.0.244.16
Platform: windows-x86_64-cl17
Operating System: Windows 10 Pro x64 (6.2.9200)
Number of Cores: 40
Physical Memory: 63.89 GB
Number of Screens: 2
Screen 0: 1920 x 1080 at -1920,0
Work Area 0: 1920 x 1080 at -1920,0
Screen 1: 1920 x 1080 at 0,0
Work Area 1: 1920 x 1040 at 0,40
OpenGL Vendor: NVIDIA Corporation
OpenGL Renderer: GeForce GTX 980/PCIe/SSE2
OpenGL Version: 4.5.0 NVIDIA 368.69
OpenGL Shading Language: 4.50 NVIDIA
Detected: NVidia Consumer
4096 MB
368.69.0.0
Environment:
HOUDINI_MAXTHREADS 40
NUMBER_OF_PROCESSORS 40
I tried to put these lines in the INI file but without success…
HOUDINI_MAXTHREADS = 80
NUMBER_OF_PROCESSORS = 80
-
- Quick Links