FB24108671
I have multiple animation files and characters that all share the same skeleton definition. This is required in order for the animations to be visible in the animation library. However, you can accidentally delete the import that contains the skeleton definition, this will break every animation that depends on that shared skeleton. This is silent until you attempt to play or inspect one of the remaining animations.
To my knowledge, there is no indication as to which Import contains a skeleton definition nor is there a way to lock the file so that I cannot delete it.
Repro Steps:
Create a new RCP3 project and save the project.
Import a USD file that contains a skeletal animation.
Import one or more additional USD files that contains also contain skeletal animations.
Note: The skeletons must match exactly between the imported USD files or they will not be available in RCP3.
Verify that all imported animations have a valid target Skeleton. This is visible by clicking on an Import and expanding the Animation Settings section in the inspector. Select the skeletal animation and view the Target Skeleton field.
Optional: Import a USD file that contains a character with a matching and valid skeleton. Create a new entity and reference the imported character. Add a new Animation Library and confirm that the skeletal animations appear in the list of available animations. Select one of the animations to auto play and hit the play button to simulate the animation. The animation should play.
Open terminal and navigate to your saved RCP3 project.
In the root of the project run the find command to locate the skeletal definition
NullTruthDeletedAnimation.realitycomposerpro % find . -name '*.tm_skeleton_definition'
./animations/Running_B.import/skeletons/root_skeldef.tm_skeleton_definition
Back in RCP3
delete the Import that contains the skeleton definition. In the above case, this would mean deleting RunningB.import.
Save the RCP3 project.
All animations that were assigned to the same Target Skeleton will now have an empty entry in the Animation Settings section of the inspector.
If you created an entity earlier that referenced the animations then none of the animations that referenced the delete skeleton will play. In the console you will see an error reporting a missing timeline.
❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton
If you assigned the deleted animation to this entity then it will still have an entry in the animation library but its value will be empty.
After saving the project, close and reopen the RCP project.
If you created an entity earlier, then open the created entity and simulate the scene. You may see the following errors.
❌ GEN RESOURCE: tm_timeline_skeletal_clip object id: 00002dab0000024c - Resource generation failed. Error: Animation Timeline is missing a target skeleton (2)
❌ error: Trying to lookup property of NULL truth object
❌ GEN RESOURCE: tm_timeline object id: 000023a700000248 - Resource generation failed. Error: Sampled USD anim - missing TM_TT_TYPE__ANIMATION dependency
The GEN RESOURCE: tm_timeline_skeletal_clip object id error appears to be due to the broken animation library entry for the deleted animation.
The error: Trying to lookup property of NULL truth object error appears to be the animation referencing the deleted skeleton.
If you did not create an entity then you can see the errors by doing the following:
Select one of the imported animations that referenced the now deleted skeleton. In the Inspector, expand the Animation Settings section.
Select the skeletal animation, you will now see the following error repeating in the console.
❌ error: Trying to lookup property of NULL truth object
❌ (previous error repeated 59 times)
❌ error: Trying to lookup property of NULL truth object
❌ (previous error repeated 53 times)
❌ error: Trying to lookup property of NULL truth object
❌ (previous error repeated 59 times)
You can fix this by importing a new animation with a valid and matching skeleton or reimporting the deleted animation. However, you MUST manually assign the Target Skeleton on each broken skeletal animation. You will also need to manually remove any animation library entries for deleted animations.
Topic:
Spatial Computing
SubTopic:
Reality Composer Pro
0
0
25