USD: understanding changing the animated character caches
4767 8 4- Mark Wallman
- Member
- 700 posts
- Joined: Aug. 2013
- Offline
Hi All.
I know quite a few SideFX talks talk about using Solaris to change the animated cache version of characters by only bringing in a point cache of the character and layering it below the reference of the mesh primitive.
I am a bit stuck on how to do this. My pic should explain what I am trying to do. From what I understand I can somehow save out only the animated point data as a usd file to bring in and sublayer below the geo rest pose. Therefore saving disk space with animated point revisions.
Have I got any of this correct? And if I have how do you save out usd animated point data while ignoring the polys/faces of a character?
Thanks in advance and sorry if I have got this completely wrong. Best Mark
I know quite a few SideFX talks talk about using Solaris to change the animated cache version of characters by only bringing in a point cache of the character and layering it below the reference of the mesh primitive.
I am a bit stuck on how to do this. My pic should explain what I am trying to do. From what I understand I can somehow save out only the animated point data as a usd file to bring in and sublayer below the geo rest pose. Therefore saving disk space with animated point revisions.
Have I got any of this correct? And if I have how do you save out usd animated point data while ignoring the polys/faces of a character?
Thanks in advance and sorry if I have got this completely wrong. Best Mark
- Kym Watts
- Member
- 37 posts
- Joined: Sept. 2014
- Offline
Hey Mark,
Hopefully this example helps, took me a bit to wrap my head around it too.
Essentially you are overriding a portion of the prim path with an new opinion of the geometry.
In my green subnet, i have grabbed the rubber toy and reorganized him so that all his geometry lives under:
/asset/geo
And his materials under:
/asset/materials
In my purple subnet i have also reorganized the rubber toy to have the geometry in the same prim path, but i have broken all the surfacing, so that we are only saving out a usd with a prim path of:
/geo
So above give me 2 usd files, one my surfacing asset, the second file is geometry.
In my grey box, Im essentially making a shot layer/stage. I have tried to break this down simply, i would usually use a stagemanager to bring in all the assets and setup there asset prim path, in this case node "surfacing_in", i have referenced in my surfacing file, i have also brought it into a asset or namespace primpath of:
/my_awesome_asset
if i do not give it a prim path when i bring it in, it will default back to /asset , which is good if i only have one rubber toy in my scene and bad if i have more than one.
so in order to bring our surfaced asset asset and our animated geometry in we need to layer the geometry in as a higher opinion, we do this by having another reference node "updated_geometry", in this node, im providing the usd path to the animated geometry and im bringing it into the prim path of:
/my_awesome_asset/geo
By doing this im changing just the opinion of what the geometry will be in this layer.
Doing this keeps the material bindings that exist in the surfacing asset.
I have provided the hip so that you can see how these layer together.
Hope this helps.
Kym
Edit: updated the hipfile so the mesh is saved out with animation....
Hopefully this example helps, took me a bit to wrap my head around it too.
Essentially you are overriding a portion of the prim path with an new opinion of the geometry.
In my green subnet, i have grabbed the rubber toy and reorganized him so that all his geometry lives under:
/asset/geo
And his materials under:
/asset/materials
In my purple subnet i have also reorganized the rubber toy to have the geometry in the same prim path, but i have broken all the surfacing, so that we are only saving out a usd with a prim path of:
/geo
So above give me 2 usd files, one my surfacing asset, the second file is geometry.
In my grey box, Im essentially making a shot layer/stage. I have tried to break this down simply, i would usually use a stagemanager to bring in all the assets and setup there asset prim path, in this case node "surfacing_in", i have referenced in my surfacing file, i have also brought it into a asset or namespace primpath of:
/my_awesome_asset
if i do not give it a prim path when i bring it in, it will default back to /asset , which is good if i only have one rubber toy in my scene and bad if i have more than one.
so in order to bring our surfaced asset asset and our animated geometry in we need to layer the geometry in as a higher opinion, we do this by having another reference node "updated_geometry", in this node, im providing the usd path to the animated geometry and im bringing it into the prim path of:
/my_awesome_asset/geo
By doing this im changing just the opinion of what the geometry will be in this layer.
Doing this keeps the material bindings that exist in the surfacing asset.
I have provided the hip so that you can see how these layer together.
Hope this helps.
Kym
Edit: updated the hipfile so the mesh is saved out with animation....
Edited by Kym Watts - May 17, 2021 17:30:03
- Mark Wallman
- Member
- 700 posts
- Joined: Aug. 2013
- Offline
- Andy_23
- Member
- 918 posts
- Joined: March 2014
- Offline
Thanks Kym, this is really helpful.
Regarding writing the animated geo… What is the correct way to write out the USD? I remember reading that USD only writes out the transforms of the meshes points. Is this done automatically or are there special options on the USD ROP to look out for?
Thank you for any insights.
Regarding writing the animated geo… What is the correct way to write out the USD? I remember reading that USD only writes out the transforms of the meshes points. Is this done automatically or are there special options on the USD ROP to look out for?
Thank you for any insights.
- jsmack
- Member
- 8043 posts
- Joined: Sept. 2011
- Offline
Andy_23
Thanks Kym, this is really helpful.
Regarding writing the animated geo… What is the correct way to write out the USD? I remember reading that USD only writes out the transforms of the meshes points. Is this done automatically or are there special options on the USD ROP to look out for?
Thank you for any insights.
The sop import node and usdconfigure sop control how sops is translated to usd, including whether or not animation is created. The ROP only controls the frame range to execute and how the layers are saved.
The sop import emits static/animated or no topology information, controls which attributes record default values vs time samples, including which attributes are imported at all. These options allow for importing animation from sops to save as a minimal layer limited to a points array timesamples and/or transform timesamples.
Edited by jsmack - Oct. 2, 2021 20:32:57
- Andy_23
- Member
- 918 posts
- Joined: March 2014
- Offline
jsmack
These options allow for importing animation from sops to save as a minimal layer limited to a points array timesamples and/or transform timesamples.
Hey jsmack,
I really appreciate you taking time answering to my many Solaris questions — Thank You.
If I understand correctly, I'd write out the PointCache with minimal data such as @P and igrnore everything else. If the PointCache USD only contains @P data, how are Normals updated/recomputed during layering?
- Mark Wallman
- Member
- 700 posts
- Joined: Aug. 2013
- Offline
- tamte
- Member
- 8832 posts
- Joined: July 2007
- Offline
Andy_23should be as straightforward as in SOPs
If I understand correctly, I'd write out the PointCache with minimal data such as @P and igrnore everything else. If the PointCache USD only contains @P data, how are Normals updated/recomputed during layering?
so if the original layer has normals property, it will be unchanged
if it doesn't then normals argonna be computed implicitly
so if your original layer has normals and you want to recompute them either include recomputed normals in your animation layer along with points property
or author an override that blocks normals property and therefore when sublayered over original it will remove normals values
Edited by tamte - Oct. 3, 2021 14:04:24
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- Andy_23
- Member
- 918 posts
- Joined: March 2014
- Offline
-
- Quick Links