Hallo,
Ich habe versucht ein SJoint mit seinen weights in ein anderes ISkinnedMesh zu kopieren.
Das Kopieren der entsprechenden vertices und indices war erfolgreich (wurden auch korrekt dargestellt)
aber wenn ich versucht habe ein neues SJoint zu erstellen und den ganzen Kram von dem alten
zum neuen Joint zu kopieren hats nicht geklappt: Als ich versucht habe das IBoneSceneNode
(nach dem Hinzufügen des IAnimatedMeshSceneNodes natürlich) über node->getJointNode("Joint23")
zu bekommen hats nicht funktioniert und das IBoneSceneNode ist immer noch Null.
Warum???
Code:
m->createJoint(parentjoint);
m->getAllJoints().getLast()->Animatedposition=joint->Animatedposition;
m->getAllJoints().getLast()->Animatedrotation=joint->Animatedrotation;
m->getAllJoints().getLast()->Animatedscale=joint->Animatedscale;
m->getAllJoints().getLast()->GlobalAnimatedMatrix=joint->GlobalAnimatedMatrix;
m->getAllJoints().getLast()->GlobalInversedMatrix=joint->GlobalInversedMatrix;
m->getAllJoints().getLast()->GlobalMatrix=joint->GlobalMatrix;
m->getAllJoints().getLast()->LocalAnimatedMatrix=joint->LocalAnimatedMatrix;
m->getAllJoints().getLast()->LocalMatrix=joint->LocalMatrix;
m->getAllJoints().getLast()->Name=joint->Name;
int i;
for(i=0;i<joint->PositionKeys.size();i++){
m->createPositionKey(m->getAllJoints().getLast());
m->getAllJoints().getLast()->PositionKeys.getLast().frame=joint->PositionKeys[i].frame;
m->getAllJoints().getLast()->PositionKeys.getLast().position=joint->PositionKeys[i].position;
}
for(i=0;i<joint->RotationKeys.size();i++){
m->createRotationKey(m->getAllJoints().getLast());
m->getAllJoints().getLast()->RotationKeys.getLast().frame=joint->RotationKeys[i].frame;
m->getAllJoints().getLast()->RotationKeys.getLast().rotation=joint->RotationKeys[i].rotation;
}
for(i=0;i<joint->ScaleKeys.size();i++){
m->createScaleKey(m->getAllJoints().getLast());
m->getAllJoints().getLast()->ScaleKeys.getLast().frame=joint->ScaleKeys[i].frame;
m->getAllJoints().getLast()->ScaleKeys.getLast().scale=joint->ScaleKeys[i].scale;
}
m->getAllJoints().getLast()->Weights=joint->Weights;
for(i=0;i<joint->Weights.size();i++){
m->getAllJoints().getLast()->Weights[i].buffer_id=0;//all vertices are in m->getMeshBuffers()[0]
m->getAllJoints().getLast()->Weights[i].vertex_id=verticesbefore+i;//add all new vertices to the weigths
}
m->finalize();