Character setup with multiple mesh resolutions

   1205   13   7
User Avatar
Member
57 posts
Joined: March 2014
Online
Hi,
I'm very new to APEX and I'm not even a rigger. I'm the pipeline guy trying to figure out how we are going to export the animation bakes properly for our USD pipe.

I'm trying to setup a character that has two resolutions. A hiand a lo. The idea here is to have a more complex deformation on the hishape like wrinkles etc. And we want to export both resolutions when we are done with the animation so lighters can view the loin the viewport and the hiin the render. Instead of packing a folder with the basic `Base.shp`, I did it this way.


Then I added a simple_fk auto rig component, and then a bonedeform for each shape, like this.


I also added this character twice in a scene so I can test with multiple characters. I can see both characters in the Scene Animate node, but I only see the lomeshes.

Then I added a Scene Invoke node like this.


And finally I added two Unpack Folder nodes to extract the loand hiof one character. I want to export them as separate usdc files. The problem is that both nodes export the same data: the loonly.


So the question is: how to setup a character with multiple mesh resolutions, how to choose which one to see in the Scene Animate node, and how to extract them separately for export?

Thanks!
Edited by flord - Aug. 16, 2024 11:44:08

Attachments:
20240816-111832.png (8.8 KB)
20240816-112616.png (66.6 KB)
20240816-113343.png (46.1 KB)
20240816-113835.png (10.2 KB)

User Avatar
Member
57 posts
Joined: March 2014
Online
I can create a hi.rig and a lo.rig, but then when I animate one, the other does not follow.
User Avatar
Member
72 posts
Joined: Aug. 2017
Offline
Couldn‘t you just go through apex with the low res version and do a post animation step with bineform and wrinkles on the highres one?
User Avatar
Staff
50 posts
Joined: Oct. 2023
Offline
It might be simpler to add groups or a path attribute to the hi and lo mesh and then combine them in one Base.shp mesh. You can use the visibility node to hide the lo res mesh. Now you can deform all the meshes at the same time.

This will also remove the need for using another bonedeform node.
User Avatar
Member
72 posts
Joined: Aug. 2017
Offline
would this setup evaluate the invisible mesh (bonedeform etc.)?
User Avatar
Staff
50 posts
Joined: Oct. 2023
Offline
Yes it should
User Avatar
Member
72 posts
Joined: Aug. 2017
Offline
sorry, what I actually meant was: will this evaluate the invisilbe mesh when animating hence slowing down interaction. So say I have the lowres mesh visible because it is faster to work with, will this still evaluate the highres mesh as well(even though it is not showing) in the animation state.
User Avatar
Staff
50 posts
Joined: Oct. 2023
Offline
yes it will still evaluate the hidden geo, so things might get slow if you have a very heavy mesh.

Another thing you can do, is to only add the proxy mesh to the Base.shp folder while you are animating. When you are done you can add the hi rez to the Base.shp
User Avatar
Staff
50 posts
Joined: Oct. 2023
Offline
here is a simple example of how you can add the proxy mesh and then change the graph to read in the proxy instead of the base mesh

Attachments:
proxy_switch.gif (352.4 KB)
proxy_switch.hip (293.5 KB)

User Avatar
Member
72 posts
Joined: Aug. 2017
Offline
Thanks, interesting solution.
User Avatar
Member
57 posts
Joined: March 2014
Online
I successfully solved part of my problem by adding a prefix to the bonedeformcomponents. This way, the two nodes are independant in the APEX graph. I had to move the wrinkle component after the first bonedeform for everything to work properly.

The only thing that is missing now would be for the Scene Animate node to allow hiding shapes we don't want to see/evaluate.
I can export the hi and the lo of each character independently, but looking at the time it takes to export both, it looks like Houdini is evaluating the whole graph. I was expecting it to be much quicker when exporting the lo since it doens, have the wrinkle node. Of course, the Scene Animate node is slow to interact with for the same reasons. I hope we can hide some shapes directly from within the Scene animate node in the future so animators can choose what to see while working without having to leave the node. But Houdini will have to be smarter and evaluate juste the parts of the graph that are needed then.

I tested the proxy switch solution and figured that I could change the bool parm for an int. This way I can use more than just two resolutions. This could be useful for muscles and such. I don't quite like the fact that I need to go back up the grah and change the switch after each export but it is a workaround I can live with. I will explore solutions around it in more detail.

Thanks!

F
Edited by flord - Aug. 23, 2024 14:10:55

Attachments:
20240819-143034.png (160.9 KB)

User Avatar
Member
7864 posts
Joined: July 2005
Offline
I think that should be doable if you had an abstract controller that then drove which bone deform gets used. In this case, the idea is to make sure that you only output one .shp and not both.
User Avatar
Member
1 posts
Joined: Feb. 2023
Offline
Hi flord,

Here is my attempt at having an apex rig offering multiple geometry LODs selectable at animation time while still having them all invokable at anim_publish time. The stratagy is basically to have an "animation rig" outputing only one shp driven by a switch node to select the LOD that will be visible in the viewport and an "anim_publishing rig" that outputs all the LOD shp.

See the attached files for an explanation video and a hipnc file.

Please let me know if I understood the initial problem correctly and if that strategy could work in your use case

Attachments:
lod_switch_rig_001.hipnc (1.2 MB)
apex_LOD_char_001_2x.mp4 (13.2 MB)

User Avatar
Member
57 posts
Joined: March 2014
Online
Hi Control_Vertex_B,

This looks like a very elegant solution to the problem! The animator can easily choose which resolution to display and the pipeline can independently output all resolutions (and other stuff like muscles) at the same time. It requires a little mode coding than I was expecting but once it's done, it can be reused. The whole green backdrop in your scene could be incorporated inside our animation publishing HDA (which still needs to be built) and we should be good to go!

If someone at SideFX is watching this, I think this is a workflow that could be made easier and streamlined in future versions of Houdini.

Thanks!

F
Edited by flord - today 20:22:46
  • Quick Links