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
EXPERTISE
Developer
Connect
LOCATION
Berlin,
Germany
WEBSITE
Houdini Skills
ADVANCED
Character Rigging | Animation
Availability
Not Specified
My Badges
SideFX Staff
Since May 2021
My Houdini Content
Recent Forum Posts
Apex Script:Component: How to use subnets Dec. 21, 2025, 4:41 p.m.
in the given example you are mixing the graph api and functions. These are 2 very different concept and can simply semantically not be combined like that. If you want the node as an object you assing to a varialbe then you need to do
my_node = graph.adNode('TransformObject')...
my_node.xform_out.connect(my_othernode.xform_out)
if you want to use a function then you can only call it.
xform: Matrix4 = TransformObject()
this can NOT be combined, within the same call. Its really and either or case because both syntax options work entirely differently. Nothing stops you though from creating a new graph in a seperate function and if you want to mix directly building graphs and working with code then the custom fuse graph example from the given example gives some options as well.
my_node = graph.adNode('TransformObject')...
my_node.xform_out.connect(my_othernode.xform_out)
if you want to use a function then you can only call it.
xform: Matrix4 = TransformObject()
this can NOT be combined, within the same call. Its really and either or case because both syntax options work entirely differently. Nothing stops you though from creating a new graph in a seperate function and if you want to mix directly building graphs and working with code then the custom fuse graph example from the given example gives some options as well.
Apex Abstract Control : how to customize Nov. 28, 2025, 8:45 a.m.
valid options are:
- __color__ - gadget that makes it easier to set colors the rest is simply a normal vector3
- __channel__ --> this is does not give you an actual control to select but simply an entry in the channelwidget for control groups. it needs to be combined with value_type ! otherwise it does not know if you are after an Int, Bool, Float or a String. also very important: the arg 'animatable' needs to be set to False if you want to use strings! strings cant be keyed!
- __toggle__
- __numbermenu__ - gives you gadget to set integer values
- __menu__ - this also sets up an int menu but the entries can be shown in the channel widget and the gadget as string values, you will need menu_entries for the menu icons for this one and menu_labels for the label names for the icons for it
- __btn__ - this does not give you a parm but simply a button control that can be used to trigger python callbacks the first entry in menu entries can be used to customize the shape of the btn
H21 AutoRigBuilder Issues Oct. 27, 2025, 5:16 p.m.
could you share your input skeleton? that will make it easier to see whats going wrong. You might want to also check out the new production build since we made a lot of bug fixes since the initial release.
I do have one initial suspicion though. The autorig builder expects a default skeleton scale of 1.0 it can very well be that you fbx import added a scale factor of 0.01 to your skeleton. you can get rid of that with a small vex snippet
before packing your character.
Another that is expected for twist is that they are not in a chain with the arm joints. this is actually important!
here are 2 legit options to parent your pre existing twists
upperarm
--> upper_twist_01
--> upper_twist_02
--> upper_twist_03
--> lowerarm
--> lower_twist_01
--|--> lower_twist_02
--|--> lower_twist_03
--|--> hand
upperarm
--> upper_twist_01
--|--> upper_twist_02
--|--|-->upper_twist_03
--> lowerarm
--|--> lower_twist_01
--|--|--> lower_twist_02
--|--|--|--> lower_twist_03
--|--> hand
I do have one initial suspicion though. The autorig builder expects a default skeleton scale of 1.0 it can very well be that you fbx import added a scale factor of 0.01 to your skeleton. you can get rid of that with a small vex snippet
3@transform = polardecomp(3@transform);
before packing your character.
Another that is expected for twist is that they are not in a chain with the arm joints. this is actually important!
here are 2 legit options to parent your pre existing twists
upperarm
--> upper_twist_01
--> upper_twist_02
--> upper_twist_03
--> lowerarm
--> lower_twist_01
--|--> lower_twist_02
--|--> lower_twist_03
--|--> hand
upperarm
--> upper_twist_01
--|--> upper_twist_02
--|--|-->upper_twist_03
--> lowerarm
--|--> lower_twist_01
--|--|--> lower_twist_02
--|--|--|--> lower_twist_03
--|--> hand