Esther Trilsch
esttri
About Me
Esther Trilsch is a Senior Character TD at SideFX. She started her career as a character TD apprentice at Walt Disney Animation Studios working on Zootopia, and worked at RiseFX as a Character Supervisor and Pipeline TD. Combining her focus for both the creative side of anatomy and deformation, as w... more
Esther Trilsch is a Senior Character TD at SideFX. She started her career as a character TD apprentice at Walt Disney Animation Studios working on Zootopia, and worked at RiseFX as a Character Supervisor and Pipeline TD. Combining her focus for both the creative side of anatomy and deformation, as well as the technical side of RnD, she found her sweet spot in the building of innovative structures and tools for character workflows. less
専門知識
Developer
Connect
LOCATION
Berlin,
Germany
ウェブサイト
Houdini Engine
ADVANCED
キャラクタ & アニメーション | Animation
Availability
Not Specified
My Badges
SideFX Staff
Since 5月 2021
My Houdini Content
Recent Forum Posts
not very clear the difference between autorig and rigscript 2024年11月13日9:07
check out the spider example in the content library. that showcases a the usage of the rigscript.
https://www.sidefx.com/contentlibrary/spider-rig/ [www.sidefx.com]
https://www.sidefx.com/contentlibrary/spider-rig/ [www.sidefx.com]
APEX dog leg / multiple IKs 2024年11月12日11:54
The idea of generating components based on 'blueprint' template graphs is on our todo list, but some other features might need to get priority first.
You get already very far though by using the graph::Template node! That can already make your life a lot easier now!
You can copy the important bits from your manually built template graph into the dive target section of the graph::Template node. The output of that graph::Template node is the content of the subnet as a graph itself. now you can add those contents using graph::AddSubnet(yourTemplateGraphResult, 'myFancySubnet') OR simply graph merge to your existing rig. This is a lot easier than recreating the same setup using AddNode, AddNode, connectNode over and over again to replicate the same setup.
The bit that is left is then connect the new nodes or nodes properly in, into your existing graph.
check out the section about Graph templates here:
https://www.sidefx.com/docs/houdini/character/kinefx/apexscriptgraphs.html [www.sidefx.com]
Here we use apex script but the effect is exactly the same whether you do it with the script language or manually with nodes.
You get already very far though by using the graph::Template node! That can already make your life a lot easier now!
You can copy the important bits from your manually built template graph into the dive target section of the graph::Template node. The output of that graph::Template node is the content of the subnet as a graph itself. now you can add those contents using graph::AddSubnet(yourTemplateGraphResult, 'myFancySubnet') OR simply graph merge to your existing rig. This is a lot easier than recreating the same setup using AddNode, AddNode, connectNode over and over again to replicate the same setup.
The bit that is left is then connect the new nodes or nodes properly in, into your existing graph.
check out the section about Graph templates here:
https://www.sidefx.com/docs/houdini/character/kinefx/apexscriptgraphs.html [www.sidefx.com]
Here we use apex script but the effect is exactly the same whether you do it with the script language or manually with nodes.
APEX extract a static xform from a generated live xform ? 2024年11月12日5:42
ah we actually have an example of exactly that setup in the addGroom autorig component.
Theoretically the most generic answer would be an invokation of the graph itself. But in most cases you can avoid that. It can also have a performance impact if you constantly need to run you whole rig just to get an xform value out. Luckily we usually all the data needed to get that rest info directly at your disposal when you build your component.
And in your cases its very convenient you can simply use a prim constraint IN you component script on your rest shape to quickly generate the rest for you. Its a very easy trick to get rests for those kinds of setups.
I added a small snippet to your example where exactly that is happening. And i marked the important section. The rest is nothing but a small apex script version of what you where doing in the graphs
In the picture you can also see the important bits as nodes: You get your rest shape. You generate a prim constraint in the component script and then you multiply the inverted primconstraint_xform with the the xform from your guide.
Theoretically the most generic answer would be an invokation of the graph itself. But in most cases you can avoid that. It can also have a performance impact if you constantly need to run you whole rig just to get an xform value out. Luckily we usually all the data needed to get that rest info directly at your disposal when you build your component.
And in your cases its very convenient you can simply use a prim constraint IN you component script on your rest shape to quickly generate the rest for you. Its a very easy trick to get rests for those kinds of setups.
I added a small snippet to your example where exactly that is happening. And i marked the important section. The rest is nothing but a small apex script version of what you where doing in the graphs
In the picture you can also see the important bits as nodes: You get your rest shape. You generate a prim constraint in the component script and then you multiply the inverted primconstraint_xform with the the xform from your guide.