Error when tried to record avatar on marketplace chair with sit script


#1

I tried recording an avatar sitting on the “Chair with intelligent sit script” from the marketplace but the logs say:

[08/25 12:50:56] [DEBUG] script:print()<< I’m the master. I want to start recording
[08/25 12:51:01] [WARNING] animation contains joint = “Armature” which is not in the skeleton, url = “http://mpassets.highfidelity.com/875bcd3b-7b7d-45a1-a429-c0c6eefad95d-v1/sit_idle_talk_inplace.fbx
[08/25 12:51:04] [DEBUG] script:print()<< I want to stop recording
[08/25 12:51:04] [DEBUG] script:print()<< PERFORMANCE FILE EMPTY

I can’t find where joint = “Armature” is set.


#2

I used FBXconverter to explore the file sit_idle_talk_inplace.fbx and compare it with the idle.fbx animation file that comes with hifi. These are the differences I’ve observed with respect to “Armature”.

sit_idle_talk_inplace.fbx
creator is Blender (Stable FBX IO) 2.77 (Sub 0)-3.7-1

Model 0
string Model;;Armature
string Null

NodeAttribute 0
string NodeAttribute:: Armature
string: Null
typeflag: Null

Model 1 and NodeAtribute 1 is hips

idle.fbx from hifi
creator FBX SDK/FBX Plugin version 2016.0

Model 0
string Model;;Hips
string LimbNode

NodeAttribute 0
string NodeAttribute;;
string LimbNode
typeflags string Skeleton

For the animation fbx from hifi model 0 is hips.

I tried to import and export idle.fbx with Blender 2.77a and it turned Model 0 to Armature.

The warning about an “Armature” joint appears to come from the ff. function from AnimClip.cpp

void AnimClip::copyFromNetworkAnim() {
assert(_networkAnim && _networkAnim->isLoaded() && _skeleton);
_anim.clear();

// build a mapping from animation joint indices to skeleton joint indices.
// by matching joints with the same name.
const FBXGeometry& geom = _networkAnim->getGeometry();
AnimSkeleton animSkeleton(geom);
const auto animJointCount = animSkeleton.getNumJoints();
const auto skeletonJointCount = _skeleton->getNumJoints();
std::vector<int> jointMap;
jointMap.reserve(animJointCount);
for (int i = 0; i < animJointCount; i++) {
    int skeletonJoint = _skeleton->nameToJointIndex(animSkeleton.getJointName(i));
    if (skeletonJoint == -1) {
        qCWarning(animation) << "animation contains joint =" << animSkeleton.getJointName(i) << " which is not in the skeleton, url =" << _url;
    }
    jointMap.push_back(skeletonJoint);
}

That’s all I got so far as I don’t know how the function reads joint indices from blender fbx.


#3

Really sorry, I’ve only just noticed this post after being bumped.
You are correct, there is an extra joint by mistake, I was unaware this might cause any issue beyond issuing warnings.
Are you sure the recording is halted due to the extra bone? If so I will fix the files.


#4

Thanks for the reply. I can only rely on the logs. I repeated the recording over again with other seat anim e.g. idle without talking etc. and the logs would throw up the warning about extra bone. I’m sorry I have no other way to test and the logs doesn’t say anything else.

Btw. Recording is successfull if I’m not seated, which I assume uses the default animations that come with hifi installer.

In addition I tried importing and exporting the default anims (the animations that come with the hifi installer) in blender and they ended up the same with Model 0 “Armature”. I followed the export settings from other posts and don’t know if there other settings that would result in a similar fbx file as the default animations. I’m hoping this is not a problem with blender exported fbx animations in general.


#5

@Triplelexx, please ignore my report. I’ve tried it again today and now its recording. It does not seem to be related to extra joint warning. I’ve also tested a clap animation with blender fbx and original fbx and they recorded as well.

I am unable to playback the recorded file yet but that’s another issue. I’m basically trying to record an avatar with its animation overriden by custom fbx anim. I guess I bit off more than I can chew. Sorry for the bother.


#6

No problem, glad to know the extra joint is not the issue.