nicoladanese Posted February 24, 2020 Share Posted February 24, 2020 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 Quote Link to comment Share on other sites More sharing options...
Yader Posted February 24, 2020 Share Posted February 24, 2020 You can generate rest geometry with a sop solver, by accumulating your emission points and copying your lowres spheres onto those points. By the way, are those spheres placeholders or your real geo? Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted February 25, 2020 Author Share Posted February 25, 2020 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... Quote Link to comment Share on other sites More sharing options...
Yader Posted February 25, 2020 Share Posted February 25, 2020 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. softbodies_proxy_yader02.hiplc Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted February 25, 2020 Author Share Posted February 25, 2020 oh man! I was doing the same but having two issue, isolating each instance for point deforming one at a time and feeding rest position was giving me weird result when the instance was not there yet...you solved both! 1 Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted February 27, 2020 Author Share Posted February 27, 2020 (edited) okay so now I'm having two issues, well, I would say inefficiencies because it works great but... 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 February 27, 2020 by nicoladanese Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted February 27, 2020 Author Share Posted February 27, 2020 update: I think I can live with the file size, I just discovered I can do sequence of alembic and vray proxy should load them fine. still would be good to optimize the point deform time Quote Link to comment Share on other sites More sharing options...
Yader Posted February 27, 2020 Share Posted February 27, 2020 9 hours ago, nicoladanese said: okay so now I'm having two issues, well, I would say inefficiencies because it works great but... 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? Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted February 28, 2020 Author Share Posted February 28, 2020 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. Quote Link to comment Share on other sites More sharing options...
Ultraman Posted February 28, 2020 Share Posted February 28, 2020 (edited) hi Nicola ...;/ Is that's it you want ?? maybe useful don't know .. [ loop is incomplete ] softbodies_proxy.hip Edited February 28, 2020 by Milad Savar l Quote Link to comment Share on other sites More sharing options...
Yader Posted February 28, 2020 Share Posted February 28, 2020 (edited) 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. Edited February 28, 2020 by Yader 2 Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted March 2, 2020 Author Share Posted March 2, 2020 On 28/2/2020 at 6:52 PM, Milad Savar said: hi Nicola ...;/ Is that's it you want ?? maybe useful don't know .. [ loop is incomplete ] softbodies_proxy.hip hey Milad, thanks! Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted March 2, 2020 Author Share Posted March 2, 2020 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!! Quote Link to comment Share on other sites More sharing options...
nicoladanese Posted March 2, 2020 Author Share Posted March 2, 2020 wow! there's a huge gain in performance, it took around 50 minutes (!!!) to deform 500 cars with the for each loop, now it takes 45 seconds! 3 Quote Link to comment Share on other sites More sharing options...
6ril Posted March 2, 2020 Share Posted March 2, 2020 45 sec ! Wow indeed ! 1 1 Quote Link to comment Share on other sites More sharing options...
Xtro Posted April 21, 2021 Share Posted April 21, 2021 @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? Quote Link to comment Share on other sites More sharing options...
Xtro Posted April 30, 2021 Share Posted April 30, 2021 Anyone? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.