Jump to content

vellum: simulate with proxies


nicoladanese

Recommended Posts

Hi!

I'm simulating a few hundreds soft bodies (all identical) with vellum, and what I'm looking for is a way of simming with a low poly proxy of the objects and then transfer the sim baked into the hi res geos. I see there's a cloth capture / cloth deform process that seems to do exactly what I'm looking for, but in my case the soft bodies are emitted frame by frame, so the output is from a dop network. in the past I did something similar where I used point deform but in this case I'm not sure it's going to work as I don't have a rest position...here's an example just to clarify what I'm doing...

softbodies_proxy.hip

Link to comment
Share on other sites

those spheres are just an example, I'm doing this with cars ;) , I'll try what you told me, but can't do it straight into the solver because in my case objects will intersect at some point, I guess I can bake the sim ang get infos about the birth frame, and then with a loop iterate and point deform...

Link to comment
Share on other sites

I meant a sop solver, not in your dop network :)

Nevertheless, here's one way to do it (slow but stable), merging the points with a sop solver,
copying lowres and highres on those points and then using a foreach to go
through each single geo to point deform. Pretty sure, there's a more elegant and faster way to do it
but it works.

image.thumb.png.b1d7f464cf52820b64a82d0cb6f3b7f8.png

softbodies_proxy_yader02.hiplc

GIF_25_02.2020_12-11-01.gif

Link to comment
Share on other sites

okay so now I'm having two issues, well, I would say inefficiencies because it works great but... :D

I have the sim sorted out and transferred to the high poly mesh, I think there's room to optimize time and disk space:

at the peak of the sim I have 500 cars, and the for each loop with point deform took 1 hour to loop through all the 500 cars and move them in the right spot for just one frame! and that produced an alembic file that is quite big. So I was reading that the for each isn't multithreaded so is not very efficient, one solution is to compile the block, but I'm getting an error, I was also thinking about using pdg for this kind of task, so I can query each car on a separate task and merge them later. Also another solution could be to split in group of cars, say 50 cars at a time and getting 10 alembics which is also more manageable later on in render...

any other idea? 

 

Edited by nicoladanese
Link to comment
Share on other sites

9 hours ago, nicoladanese said:

okay so now I'm having two issues, well, I would say inefficiencies because it works great but... :D

I have the sim sorted out and transferred to the high poly mesh, I think there's room to optimize time and disk space:

at the peak of the sim I have 500 cars, and the for each loop with point deform took 1 hour to loop through all the 500 cars and move them in the right spot for just one frame! and that produced an alembic file that is quite big. So I was reading that the for each isn't multithreaded so is not very efficient, one solution is to compile the block, but I'm getting an error, I was also thinking about using pdg for this kind of task, so I can query each car on a separate task and merge them later. Also another solution could be to split in group of cars, say 50 cars at a time and getting 10 alembics which is also more manageable later on in render...

any other idea? 

 

What exactly is the error, when you use compile block? 

Link to comment
Share on other sites

I was looking at this page

https://www.sidefx.com/docs/houdini/model/compile

so I tried to apply it to your setup just to test if it works, but I'm getting this error

/obj/sim/compile_begin1 : Violation of strict nesting of blocks. Incompatible Compile Block Begin /obj/sim/compile_begin1 encountered while processing Block End /obj/sim/foreach_end1. A Block Begin in Fetch Input mode may be needed.

 

Capture.PNG

Link to comment
Share on other sites

Here's an easier method, which avoids a costly for each loop:

If you have QLib installed, it has a really handy point deform
capture sop which let's you define an attribute to partition your incoming geo, (this should be part of the regular point deform sop)
so the capture weights and points are generated accordingly. Just use a regular
point deform afterwards and set it to deform only.

image.thumb.png.9b1271c6b63f064f1db94ef5e63f9e42.png

 

Edited by Yader
  • Like 2
Link to comment
Share on other sites

On 28/2/2020 at 9:47 PM, Yader said:

Here's an easier method, which avoids a costly for each loop:

If you have QLib installed, it has a really handy point deform
capture sop which let's you define an attribute to partition your incoming geo, (this should be part of the regular point deform sop)
so the capture weights and points are generated accordingly. Just use a regular
point deform afterwards and set it to deform only.

 

will try asap! thanks!!

Link to comment
Share on other sites

  • 1 year later...

@Yader

@nicoladanese

Hello everybody. I am trying to figure out this setup but i am a bit confused. What does specifically the solver sop and ql version of the pointdeform do? How come is the solver sop acting as a rest by simpling merging it with duplicate 0 input which are scattered points? Why is rest position needed here in the first place? :)

Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...