FIRE-35161: Export more joints to BVH
That's most of them. Refactor BVH writing a tiny bit.master
parent
257a1d3bd4
commit
c3a66a2f2d
|
|
@ -1192,6 +1192,8 @@ LLSD FSFloaterPoser::createRowForJoint(const std::string& jointName, bool isHead
|
|||
std::string parameterName = (isHeaderRow ? XML_LIST_HEADER_STRING_PREFIX : XML_LIST_TITLE_STRING_PREFIX) + jointName;
|
||||
if (hasString(parameterName))
|
||||
jointValue = getString(parameterName);
|
||||
else
|
||||
return NULL;
|
||||
|
||||
LLSD row;
|
||||
row["columns"][COL_ICON]["column"] = "icon";
|
||||
|
|
@ -2403,17 +2405,18 @@ bool FSFloaterPoser::writePoseAsBvh(llofstream* fileStream, LLVOAvatar* avatar)
|
|||
*fileStream << "MOTION" << std::endl;
|
||||
*fileStream << "Frames: 2" << std::endl;
|
||||
*fileStream << "Frame Time: 1" << std::endl;
|
||||
*fileStream << "0.000000 0.000000 0.000000 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0" << std::endl;
|
||||
writeFirstFrameOfBvhMotion(fileStream, startingJoint);
|
||||
*fileStream << std::endl;
|
||||
writeBvhMotion(fileStream, avatar, startingJoint);
|
||||
*fileStream << std::endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FSFloaterPoser::writeBvhFragment(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint, S32 tabStops)
|
||||
void FSFloaterPoser::writeBvhFragment(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint, S32 tabStops)
|
||||
{
|
||||
if (!joint)
|
||||
return false;
|
||||
return;
|
||||
|
||||
auto position = mPoserAnimator.getJointPosition(avatar, *joint);
|
||||
auto saveAxis = getBvhJointTranslation(joint->jointName());
|
||||
|
|
@ -2475,32 +2478,44 @@ bool FSFloaterPoser::writeBvhFragment(llofstream* fileStream, LLVOAvatar* avatar
|
|||
}
|
||||
else
|
||||
{
|
||||
// append the End Site offset
|
||||
*fileStream << getTabs(tabStops + 1) + "End Site" << std::endl;
|
||||
*fileStream << getTabs(tabStops + 1) + "{" << std::endl;
|
||||
|
||||
// append the 'end knot' magic number
|
||||
if (strstr(joint->jointName().c_str(), "mHead"))
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET 0.000000 3.148289 0.000000" << std::endl;
|
||||
if (strstr(joint->jointName().c_str(), "mWristLeft"))
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET 4.106464 0.000000 0.000000" << std::endl;
|
||||
if (strstr(joint->jointName().c_str(), "mWristRight"))
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET -4.106464 0.000000 0.000000" << std::endl;
|
||||
if (strstr(joint->jointName().c_str(), "mAnkleLeft"))
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET 0.000000 -2.463878 4.653993" << std::endl;
|
||||
if (strstr(joint->jointName().c_str(), "mAnkleRight"))
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET 0.000000 -2.463878 4.653993" << std::endl;
|
||||
|
||||
*fileStream << getTabs(tabStops + 2) + "OFFSET " + joint->bvhEndSite() << std::endl;
|
||||
*fileStream << getTabs(tabStops + 1) + "}" << std::endl;
|
||||
}
|
||||
|
||||
*fileStream << getTabs(tabStops) + "}" << std::endl;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool FSFloaterPoser::writeBvhMotion(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint)
|
||||
void FSFloaterPoser::writeFirstFrameOfBvhMotion(llofstream* fileStream, const FSPoserAnimator::FSPoserJoint* joint)
|
||||
{
|
||||
if (!joint)
|
||||
return false;
|
||||
return;
|
||||
|
||||
switch (joint->boneType())
|
||||
{
|
||||
case WHOLEAVATAR:
|
||||
*fileStream << "0.000000 0.000000 0.000000 0.0 0.0 0.0";
|
||||
break;
|
||||
|
||||
default:
|
||||
*fileStream << " 0.0 0.0 0.0";
|
||||
break;
|
||||
}
|
||||
|
||||
size_t numberOfBvhChildNodes = joint->bvhChildren().size();
|
||||
for (size_t index = 0; index != numberOfBvhChildNodes; ++index)
|
||||
{
|
||||
auto nextJoint = mPoserAnimator.getPoserJointByName(joint->bvhChildren()[index]);
|
||||
writeFirstFrameOfBvhMotion(fileStream, nextJoint);
|
||||
}
|
||||
}
|
||||
|
||||
void FSFloaterPoser::writeBvhMotion(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint)
|
||||
{
|
||||
if (!joint)
|
||||
return;
|
||||
|
||||
auto rotation = mPoserAnimator.getJointRotation(avatar, *joint, SWAP_NOTHING, NEGATE_NOTHING);
|
||||
auto position = mPoserAnimator.getJointPosition(avatar, *joint);
|
||||
|
|
@ -2522,8 +2537,6 @@ bool FSFloaterPoser::writeBvhMotion(llofstream* fileStream, LLVOAvatar* avatar,
|
|||
auto nextJoint = mPoserAnimator.getPoserJointByName(joint->bvhChildren()[index]);
|
||||
writeBvhMotion(fileStream, avatar, nextJoint);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
std::string FSFloaterPoser::vec3ToXYZString(const LLVector3& val)
|
||||
|
|
|
|||
|
|
@ -386,8 +386,7 @@ class FSFloaterPoser : public LLFloater
|
|||
/// <param name="avatar">The avatar owning the supplied joint.</param>
|
||||
/// <param name="joint">The joint whose fragment should be written, and whose child(ren) will also be written.</param>
|
||||
/// <param name="tabStops">The number of tab-stops to include for formatting purpose.</param>
|
||||
/// <returns>True if the fragment wrote successfully, otherwise false.</returns>
|
||||
bool writeBvhFragment(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint, S32 tabStops);
|
||||
void writeBvhFragment(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint, S32 tabStops);
|
||||
|
||||
/// <summary>
|
||||
/// Writes a fragment of the 'single line' representing an animation frame within the BVH file respresenting the positions and/or
|
||||
|
|
@ -396,8 +395,15 @@ class FSFloaterPoser : public LLFloater
|
|||
/// <param name="fileStream">The stream to write the position and/or rotation to.</param>
|
||||
/// <param name="avatar">The avatar owning the supplied joint.</param>
|
||||
/// <param name="joint">The joint whose position and/or rotation should be written.</param>
|
||||
/// <returns></returns>
|
||||
bool writeBvhMotion(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint);
|
||||
void writeBvhMotion(llofstream* fileStream, LLVOAvatar* avatar, const FSPoserAnimator::FSPoserJoint* joint);
|
||||
|
||||
/// <summary>
|
||||
/// Writes a fragment of the 'single line' representing the first animation frame within the BVH file respresenting the positions and/or
|
||||
/// rotations.
|
||||
/// </summary>
|
||||
/// <param name="fileStream">The stream to write the position and/or rotation to.</param>
|
||||
/// <param name="joint">The joint whose position and/or rotation should be written.</param>
|
||||
void writeFirstFrameOfBvhMotion(llofstream* fileStream, const FSPoserAnimator::FSPoserJoint* joint);
|
||||
|
||||
/// <summary>
|
||||
/// Generates a string with the supplied number of tab-chars.
|
||||
|
|
|
|||
|
|
@ -118,7 +118,8 @@ public:
|
|||
std::string mMirrorJointName;
|
||||
E_BoneTypes mBoneList;
|
||||
std::vector<std::string> mBvhChildren;
|
||||
std::string bvhOffsetMagicNumber;
|
||||
std::string bvhOffsetValue;
|
||||
std::string bvhEndSiteOffset;
|
||||
bool mDontFlipOnMirror = false;
|
||||
|
||||
public:
|
||||
|
|
@ -148,9 +149,17 @@ public:
|
|||
std::vector<std::string> bvhChildren() const { return mBvhChildren; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the bvh offset magic number for this joint.
|
||||
/// Gets the bvh offset value for this joint.
|
||||
/// </summary>
|
||||
std::string bvhOffset() const { return bvhOffsetMagicNumber; }
|
||||
/// <remarks>
|
||||
/// These values are derived from \newview\character\avatar_skeleton.xml
|
||||
/// </remarks>
|
||||
std::string bvhOffset() const { return bvhOffsetValue; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the bvh end site offset magic number for this joint.
|
||||
/// </summary>
|
||||
std::string bvhEndSite() const { return bvhEndSiteOffset; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new instance of a PoserJoint.
|
||||
|
|
@ -165,14 +174,16 @@ public:
|
|||
/// <param name="bhv_children">The optional array of joints, needed for BVH saving, which are the direct decendent(s) of this joint.</param>
|
||||
/// <param name="dont_flip_on_mirror">The option for whether this joint should rotation-flip it counterpart when mirroring the pose of the entire body.</param>
|
||||
FSPoserJoint(std::string joint_name, std::string mirror_joint_name, E_BoneTypes bone_list,
|
||||
std::vector<std::string> bhv_children = {}, std::string bvhOffset = "", bool dont_flip_on_mirror = false)
|
||||
std::vector<std::string> bhv_children = {}, std::string bvhOffset = "", std::string bvhEndSiteValue = "",
|
||||
bool dont_flip_on_mirror = false)
|
||||
{
|
||||
mJointName = joint_name;
|
||||
mMirrorJointName = mirror_joint_name;
|
||||
mBoneList = bone_list;
|
||||
mBvhChildren = bhv_children;
|
||||
bvhOffsetMagicNumber = bvhOffset;
|
||||
bvhOffsetValue = bvhOffset;
|
||||
mDontFlipOnMirror = dont_flip_on_mirror;
|
||||
bvhEndSiteOffset = bvhEndSiteValue;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -186,136 +197,155 @@ public:
|
|||
/// </remarks>
|
||||
const std::vector<FSPoserJoint> PoserJoints{
|
||||
// head, torso, legs
|
||||
{ "mHead", "", BODY, {}, "0.000000 3.148285 0.000000" },
|
||||
{ "mNeck", "", BODY, { "mHead" }, "0.000000 10.266162 -0.273764" },
|
||||
{ "mPelvis", "", WHOLEAVATAR, { "mTorso", "mHipLeft", "mHipRight" }, "0.000000 0.000000 0.000000" },
|
||||
{ "mChest", "", BODY, { "mNeck", "mCollarLeft", "mCollarRight" }, "0.000000 8.486693 -0.684411" },
|
||||
{ "mTorso", "", BODY, { "mChest" }, "0.000000 3.422050 0.000000" },
|
||||
{ "mCollarLeft", "mCollarRight", BODY, { "mShoulderLeft" }, "3.422053 6.707223 -0.821293" },
|
||||
{ "mShoulderLeft", "mShoulderRight", BODY, { "mElbowLeft" }, "3.285171 0.000000 0.000000" },
|
||||
{ "mElbowLeft", "mElbowRight", BODY, { "mWristLeft" }, "10.129278 0.000000 0.000000" },
|
||||
{ "mWristLeft", "mWristRight", BODY, {}, "8.486692 0.000000 0.000000" },
|
||||
{ "mCollarRight", "mCollarLeft", BODY, { "mShoulderRight" }, "-3.558935 6.707223 -0.821293", true },
|
||||
{ "mShoulderRight", "mShoulderLeft", BODY, { "mElbowRight" }, "-3.148289 0.000000 0.000000", true },
|
||||
{ "mElbowRight", "mElbowLeft", BODY, { "mWristRight" }, "-10.266159 0.000000 0.000000", true },
|
||||
{ "mWristRight", "mWristLeft", BODY, {}, "-8.349810 0.000000 0.000000", true },
|
||||
{ "mHipLeft", "mHipRight", BODY, { "mKneeLeft" }, "5.338403 -1.642589 1.368821" },
|
||||
{ "mKneeLeft", "mKneeRight", BODY, { "mAnkleLeft" }, "-2.053232 -20.121670 0.000000" },
|
||||
{ "mAnkleLeft", "mAnkleRight", BODY, {}, "0.000000 -19.300380 -1.231939" },
|
||||
{ "mHipRight", "mHipLeft", BODY, { "mKneeRight" }, "-5.338403 -1.642589 1.368821", true },
|
||||
{ "mKneeRight", "mKneeLeft", BODY, { "mAnkleRight" }, "2.053232 -20.121670 0.000000", true },
|
||||
{ "mAnkleRight", "mAnkleLeft", BODY, {}, "0.000000 -19.300380 -1.231939", true },
|
||||
{ "mHead", "", BODY, { "mEyeLeft", "mEyeRight", "mFaceRoot" }, "0.000 0.076 0.000" },
|
||||
{ "mNeck", "", BODY, { "mHead" }, "0.000 0.251 -0.010" },
|
||||
{ "mPelvis", "", WHOLEAVATAR, { "mTorso", "mHipLeft", "mHipRight", "mTail1", "mGroin", "mHindLimbsRoot" }, "0.000000 0.000000 0.000000" },
|
||||
{ "mChest", "", BODY, { "mNeck", "mCollarLeft", "mCollarRight", "mWingsRoot" }, "0.000 0.205 -0.015" },
|
||||
{ "mTorso", "", BODY, { "mChest" }, "0.000 0.084 0.000" },
|
||||
{ "mCollarLeft", "mCollarRight", BODY, { "mShoulderLeft" }, "0.085 0.165 -0.021" },
|
||||
{ "mShoulderLeft", "mShoulderRight", BODY, { "mElbowLeft" }, "0.079 0.000 0.000" },
|
||||
{ "mElbowLeft", "mElbowRight", BODY, { "mWristLeft" }, "0.248 0.000 0.000" },
|
||||
{ "mWristLeft", "mWristRight", BODY, { "mHandThumb1Left", "mHandIndex1Left", "mHandMiddle1Left", "mHandRing1Left", "mHandPinky1Left" }, "0.205 0.000 0.000" },
|
||||
{ "mCollarRight", "mCollarLeft", BODY, { "mShoulderRight" }, "-0.085 0.165 -0.021", "", true },
|
||||
{ "mShoulderRight", "mShoulderLeft", BODY, { "mElbowRight" }, "-0.079 0.000 0.000", "", true },
|
||||
{ "mElbowRight", "mElbowLeft", BODY, { "mWristRight" }, "-0.248 0.000 0.000", "", true },
|
||||
{ "mWristRight", "mWristLeft", BODY, { "mHandThumb1Right", "mHandIndex1Right", "mHandMiddle1Right", "mHandRing1Right", "mHandPinky1Right" }, "-0.205 0.000 0.000", "", true },
|
||||
{ "mHipLeft", "mHipRight", BODY, { "mKneeLeft" }, "0.127 -0.041 0.034" },
|
||||
{ "mKneeLeft", "mKneeRight", BODY, { "mAnkleLeft" }, "-0.046 -0.491 -0.001" },
|
||||
{ "mAnkleLeft", "mAnkleRight", BODY, {}, "0.001 -0.468 -0.029", "0.000 -0.061 0.112" },
|
||||
{ "mHipRight", "mHipLeft", BODY, { "mKneeRight" }, "-0.129 -0.041 0.034", "0.000 -0.061 0.112", true },
|
||||
{ "mKneeRight", "mKneeLeft", BODY, { "mAnkleRight" }, "0.049 -0.491 -0.001", "", true },
|
||||
{ "mAnkleRight", "mAnkleLeft", BODY, {}, "0.000 -0.468 -0.029", "0.000 -0.061 0.112", true },
|
||||
|
||||
// face
|
||||
{ "mFaceForeheadLeft", "mFaceForeheadRight", FACE },
|
||||
{ "mFaceForeheadCenter", "", FACE },
|
||||
{ "mFaceForeheadRight", "mFaceForeheadLeft", FACE, {}, "", true },
|
||||
{ "mFaceEyebrowOuterLeft", "mFaceEyebrowOuterRight", FACE },
|
||||
{ "mFaceEyebrowCenterLeft", "mFaceEyebrowCenterRight", FACE },
|
||||
{ "mFaceEyebrowInnerLeft", "mFaceEyebrowInnerRight", FACE },
|
||||
{ "mFaceEyebrowOuterRight", "mFaceEyebrowOuterLeft", FACE, {}, "", true },
|
||||
{ "mFaceEyebrowCenterRight", "mFaceEyebrowCenterLeft", FACE, {}, "", true },
|
||||
{ "mFaceEyebrowInnerRight", "mFaceEyebrowInnerLeft", FACE, {}, "", true },
|
||||
{ "mFaceRoot",
|
||||
"",
|
||||
FACE,
|
||||
{
|
||||
"mFaceForeheadLeft", "mFaceForeheadCenter", "mFaceForeheadRight",
|
||||
"mFaceEyebrowOuterLeft", "mFaceEyebrowCenterLeft", "mFaceEyebrowInnerLeft",
|
||||
"mFaceEyebrowOuterRight", "mFaceEyebrowCenterRight", "mFaceEyebrowInnerRight",
|
||||
"mFaceEyeLidUpperLeft", "mFaceEyeLidLowerLeft",
|
||||
"mFaceEyeLidUpperRight", "mFaceEyeLidLowerRight",
|
||||
"mFaceEar1Left", "mFaceEar1Right",
|
||||
"mFaceNoseLeft", "mFaceNoseCenter", "mFaceNoseRight",
|
||||
"mFaceCheekUpperLeft", "mFaceCheekLowerLeft",
|
||||
"mFaceCheekUpperRight", "mFaceCheekLowerRight",
|
||||
"mFaceJaw", "mFaceTeethUpper"
|
||||
},
|
||||
"0.000 0.045 0.025" },
|
||||
{ "mFaceForeheadLeft", "mFaceForeheadRight", FACE, {}, "0.035 0.083 0.061", "0.004 0.018 0.024" },
|
||||
{ "mFaceForeheadCenter", "", FACE, {}, "0.000 0.065 0.069", "0.000 0.000 0.036" },
|
||||
{ "mFaceForeheadRight", "mFaceForeheadLeft", FACE, {}, "-0.035 0.083 0.061", "-0.004 0.018 0.024", true },
|
||||
{ "mFaceEyebrowOuterLeft", "mFaceEyebrowOuterRight", FACE, {}, "0.051 0.048 0.064", "0.013 0.000 0.023" },
|
||||
{ "mFaceEyebrowCenterLeft", "mFaceEyebrowCenterRight", FACE, {}, "0.043 0.056 0.070", "0.000 0.000 0.027" },
|
||||
{ "mFaceEyebrowInnerLeft", "mFaceEyebrowInnerRight", FACE, {}, "0.022 0.051 0.075", "0.000 0.000 0.026" },
|
||||
{ "mFaceEyebrowOuterRight", "mFaceEyebrowOuterLeft", FACE, {}, "-0.051 0.048 0.064", "-0.013 0.000 0.023", true },
|
||||
{ "mFaceEyebrowCenterRight", "mFaceEyebrowCenterLeft", FACE, {}, "-0.043 0.056 0.070", "0.000 0.000 0.027", true },
|
||||
{ "mFaceEyebrowInnerRight", "mFaceEyebrowInnerLeft", FACE, {}, "-0.022 0.051 0.075", "0.000 0.000 0.026", true },
|
||||
|
||||
{ "mEyeLeft", "mEyeRight", FACE },
|
||||
{ "mEyeRight", "mEyeLeft", FACE, {}, "", true },
|
||||
{ "mFaceEyeLidUpperLeft", "mFaceEyeLidUpperRight", FACE },
|
||||
{ "mFaceEyeLidLowerLeft", "mFaceEyeLidLowerRight", FACE },
|
||||
{ "mFaceEyeLidUpperRight", "mFaceEyeLidUpperLeft", FACE, {}, "", true },
|
||||
{ "mFaceEyeLidLowerRight", "mFaceEyeLidLowerLeft", FACE, {}, "", true },
|
||||
{ "mEyeLeft", "mEyeRight", FACE, {}, "-0.036 0.079 0.098", "0.000 0.000 0.025" },
|
||||
{ "mEyeRight", "mEyeLeft", FACE, {}, "0.036 0.079 0.098", "0.000 0.000 0.025", true },
|
||||
{ "mFaceEyeLidUpperLeft", "mFaceEyeLidUpperRight", FACE, {}, "0.036 0.034 0.073", "0.000 0.005 0.027" },
|
||||
{ "mFaceEyeLidLowerLeft", "mFaceEyeLidLowerRight", FACE, {}, "0.036 0.034 0.073", "0.000 -0.007 0.024" },
|
||||
{ "mFaceEyeLidUpperRight", "mFaceEyeLidUpperLeft", FACE, {}, "-0.036 0.034 0.073", "0.000 0.005 0.027", true },
|
||||
{ "mFaceEyeLidLowerRight", "mFaceEyeLidLowerLeft", FACE, {}, "-0.036 0.034 0.073", "0.000 -0.007 0.024", true },
|
||||
|
||||
{ "mFaceEar1Left", "mFaceEar1Right", FACE },
|
||||
{ "mFaceEar2Left", "mFaceEar2Right", FACE },
|
||||
{ "mFaceEar1Right", "mFaceEar1Left", FACE, {}, "", true },
|
||||
{ "mFaceEar2Right", "mFaceEar2Left", FACE, {}, "", true },
|
||||
{ "mFaceNoseLeft", "mFaceNoseRight", FACE },
|
||||
{ "mFaceNoseCenter", "", FACE },
|
||||
{ "mFaceNoseRight", "mFaceNoseLeft", FACE, {}, "", true },
|
||||
{ "mFaceEar1Left", "mFaceEar1Right", FACE, { "mFaceEar2Left" }, "0.080 0.002 0.000", "" },
|
||||
{ "mFaceEar2Left", "mFaceEar2Right", FACE, {}, "0.018 0.025 -0.019", "0.000 0.033 0.000" },
|
||||
{ "mFaceEar1Right", "mFaceEar1Left", FACE, { "mFaceEar2Right" }, "-0.080 0.002 0.000", "", true },
|
||||
{ "mFaceEar2Right", "mFaceEar2Left", FACE, {}, "-0.018 0.025 -0.019", "0.000 0.033 0.000", true },
|
||||
{ "mFaceNoseLeft", "mFaceNoseRight", FACE, {}, "0.015 -0.004 0.086", "0.004 0.000 0.015" },
|
||||
{ "mFaceNoseCenter", "", FACE, {}, "0.000 0.000 0.102", "0.000 0.000 0.025" },
|
||||
{ "mFaceNoseRight", "mFaceNoseLeft", FACE, {}, "-0.015 -0.004 0.086", "-0.004 0.000 0.015", true },
|
||||
|
||||
{ "mFaceCheekUpperLeft", "mFaceCheekUpperRight", FACE },
|
||||
{ "mFaceCheekLowerLeft", "mFaceCheekLowerRight", FACE },
|
||||
{ "mFaceCheekUpperRight", "mFaceCheekUpperLeft", FACE, {}, "", true },
|
||||
{ "mFaceCheekLowerRight", "mFaceCheekLowerLeft", FACE, {}, "", true },
|
||||
{ "mFaceLipUpperLeft", "mFaceLipUpperRight", FACE },
|
||||
{ "mFaceLipUpperCenter", "", FACE },
|
||||
{ "mFaceLipUpperRight", "mFaceLipUpperLeft", FACE, {}, "", true },
|
||||
{ "mFaceLipCornerLeft", "mFaceLipCornerRight", FACE },
|
||||
{ "mFaceLipCornerRight", "mFaceLipCornerLeft", FACE, {}, "", true },
|
||||
{ "mFaceTongueBase", "", FACE },
|
||||
{ "mFaceTongueTip", "", FACE, {}, "", true },
|
||||
{ "mFaceLipLowerLeft", "mFaceLipLowerRight", FACE },
|
||||
{ "mFaceLipLowerCenter", "", FACE },
|
||||
{ "mFaceLipLowerRight", "mFaceLipLowerLeft", FACE, {}, "", true },
|
||||
{ "mFaceJaw", "", FACE },
|
||||
{ "mFaceCheekUpperLeft", "mFaceCheekUpperRight", FACE, {}, "0.034 -0.005 0.070", "0.015 0.000 0.022" },
|
||||
{ "mFaceCheekLowerLeft", "mFaceCheekLowerRight", FACE, {}, "0.034 -0.031 0.050", "0.030 0.000 0.013" },
|
||||
{ "mFaceCheekUpperRight", "mFaceCheekUpperLeft", FACE, {}, "-0.034 -0.005 0.070", "-0.015 0.000 0.022", true },
|
||||
{ "mFaceCheekLowerRight", "mFaceCheekLowerLeft", FACE, {}, "-0.034 -0.031 0.050", "-0.030 0.000 0.013", true },
|
||||
{ "mFaceLipUpperLeft", "mFaceLipUpperRight", FACE, {}, "0.000 -0.003 0.045", "0.015 0.000 0.041" },
|
||||
{ "mFaceLipUpperCenter", "", FACE, {}, "0.000 -0.003 0.045", "0.000 0.002 0.043" },
|
||||
{ "mFaceLipUpperRight", "mFaceLipUpperLeft", FACE, {}, "0.000 -0.003 0.045", "-0.015 0.000 0.041", true },
|
||||
{ "mFaceLipCornerLeft", "mFaceLipCornerRight", FACE, {}, "-0.019 -0.010 0.028", "0.051 0.000 0.045" },
|
||||
{ "mFaceLipCornerRight", "mFaceLipCornerLeft", FACE, {}, "0.019 -0.010 0.028", "-0.051 0.000 0.045", true },
|
||||
{ "mFaceTeethUpper", "", FACE, { "mFaceLipUpperLeft","mFaceLipUpperCenter", "mFaceLipUpperRight", "mFaceLipCornerLeft", "mFaceLipCornerRight" }, "0.000 -0.030 0.020" },
|
||||
{ "mFaceTeethLower", "", FACE, { "mFaceLipLowerLeft", "mFaceLipLowerCenter", "mFaceLipLowerRight", "mFaceTongueBase" }, "0.000 -0.039 0.021" },
|
||||
{ "mFaceTongueBase", "", FACE, { "mFaceTongueTip" }, "0.000 0.005 0.039" },
|
||||
{ "mFaceTongueTip", "", FACE, {}, "0.000 0.007 0.022", "0.000 0.000 0.010", true },
|
||||
{ "mFaceLipLowerLeft", "mFaceLipLowerRight", FACE, {}, "0.000 0.000 0.045", "0.017 0.005 0.034" },
|
||||
{ "mFaceLipLowerCenter", "", FACE, {}, "0.000 0.000 0.045", "0.000 0.002 0.040" },
|
||||
{ "mFaceLipLowerRight", "mFaceLipLowerLeft", FACE, {}, "0.000 0.000 0.045", "-0.017 0.005 0.034", true },
|
||||
{ "mFaceJaw", "", FACE, { "mFaceChin", "mFaceTeethLower" }, "0.000 -0.015 -0.001", "" },
|
||||
{ "mFaceChin", "", FACE, {}, "0.000 -0.015 -0.001", "0.000 -0.018 0.021" },
|
||||
|
||||
// left hand
|
||||
{ "mHandThumb1Left", "mHandThumb1Right", HANDS },
|
||||
{ "mHandThumb2Left", "mHandThumb2Right", HANDS },
|
||||
{ "mHandThumb3Left", "mHandThumb3Right", HANDS },
|
||||
{ "mHandIndex1Left", "mHandIndex1Right", HANDS },
|
||||
{ "mHandIndex2Left", "mHandIndex2Right", HANDS },
|
||||
{ "mHandIndex3Left", "mHandIndex3Right", HANDS },
|
||||
{ "mHandMiddle1Left", "mHandMiddle1Right", HANDS },
|
||||
{ "mHandMiddle2Left", "mHandMiddle2Right", HANDS },
|
||||
{ "mHandMiddle3Left", "mHandMiddle3Right", HANDS },
|
||||
{ "mHandRing1Left", "mHandRing1Right", HANDS },
|
||||
{ "mHandRing2Left", "mHandRing2Right", HANDS },
|
||||
{ "mHandRing3Left", "mHandRing3Right", HANDS },
|
||||
{ "mHandPinky1Left", "mHandPinky1Right", HANDS },
|
||||
{ "mHandPinky2Left", "mHandPinky2Right", HANDS },
|
||||
{ "mHandPinky3Left", "mHandPinky3Right", HANDS },
|
||||
{ "mHandThumb1Left", "mHandThumb1Right", HANDS, { "mHandThumb2Left" }, "0.026 0.004 0.031" },
|
||||
{ "mHandThumb2Left", "mHandThumb2Right", HANDS, { "mHandThumb3Left" }, "0.032 -0.001 0.028" },
|
||||
{ "mHandThumb3Left", "mHandThumb3Right", HANDS, {}, "0.031 -0.001 0.023", "0.025 0.000 0.015" },
|
||||
{ "mHandIndex1Left", "mHandIndex1Right", HANDS, { "mHandIndex2Left" }, "0.097 0.015 0.038" },
|
||||
{ "mHandIndex2Left", "mHandIndex2Right", HANDS, { "mHandIndex3Left" }, "0.036 -0.006 0.017" },
|
||||
{ "mHandIndex3Left", "mHandIndex3Right", HANDS, {}, "0.032 -0.006 0.014", "0.025 -0.004 0.011" },
|
||||
{ "mHandMiddle1Left", "mHandMiddle1Right", HANDS, { "mHandMiddle2Left" }, "0.101 0.015 0.013" },
|
||||
{ "mHandMiddle2Left", "mHandMiddle2Right", HANDS, { "mHandMiddle3Left" }, "0.040 -0.006 -0.001" },
|
||||
{ "mHandMiddle3Left", "mHandMiddle3Right", HANDS, {}, "0.049 -0.008 -0.001", "0.033 -0.006 -0.002" },
|
||||
{ "mHandRing1Left", "mHandRing1Right", HANDS, { "mHandRing2Left" }, "0.099 0.009 -0.010" },
|
||||
{ "mHandRing2Left", "mHandRing2Right", HANDS, { "mHandRing3Left" }, "0.038 -0.008 -0.013" },
|
||||
{ "mHandRing3Left", "mHandRing3Right", HANDS, {}, "0.040 -0.009 -0.013", "0.028 -0.006 -0.010" },
|
||||
{ "mHandPinky1Left", "mHandPinky1Right", HANDS, { "mHandPinky2Left" }, "0.095 0.003 -0.031" },
|
||||
{ "mHandPinky2Left", "mHandPinky2Right", HANDS, { "mHandPinky3Left" }, "0.025 -0.006 -0.024" },
|
||||
{ "mHandPinky3Left", "mHandPinky3Right", HANDS, {}, "0.018 -0.004 -0.015", "0.016 -0.004 -0.013" },
|
||||
|
||||
// right hand
|
||||
{ "mHandThumb1Right", "mHandThumb1Left", HANDS, {}, "", true },
|
||||
{ "mHandThumb2Right", "mHandThumb2Left", HANDS, {}, "", true },
|
||||
{ "mHandThumb3Right", "mHandThumb3Left", HANDS, {}, "", true },
|
||||
{ "mHandIndex1Right", "mHandIndex1Left", HANDS, {}, "", true },
|
||||
{ "mHandIndex2Right", "mHandIndex2Left", HANDS, {}, "", true },
|
||||
{ "mHandIndex3Right", "mHandIndex3Left", HANDS, {}, "", true },
|
||||
{ "mHandMiddle1Right", "mHandMiddle1Left", HANDS, {}, "", true },
|
||||
{ "mHandMiddle2Right", "mHandMiddle2Left", HANDS, {}, "", true },
|
||||
{ "mHandMiddle3Right", "mHandMiddle3Left", HANDS, {}, "", true },
|
||||
{ "mHandRing1Right", "mHandRing1Left", HANDS, {}, "", true },
|
||||
{ "mHandRing2Right", "mHandRing2Left", HANDS, {}, "", true },
|
||||
{ "mHandRing3Right", "mHandRing3Left", HANDS, {}, "", true },
|
||||
{ "mHandPinky1Right", "mHandPinky1Left", HANDS, {}, "", true },
|
||||
{ "mHandPinky2Right", "mHandPinky2Left", HANDS, {}, "", true },
|
||||
{ "mHandPinky3Right", "mHandPinky3Left", HANDS, {}, "", true },
|
||||
{ "mHandThumb1Right", "mHandThumb1Left", HANDS, { "mHandThumb2Right" }, "-0.026 0.004 0.031", "", true },
|
||||
{ "mHandThumb2Right", "mHandThumb2Left", HANDS, { "mHandThumb3Right" }, "-0.032 -0.001 0.028", "", true },
|
||||
{ "mHandThumb3Right", "mHandThumb3Left", HANDS, {}, "-0.031 -0.001 0.023", "-0.025 0.000 0.015", true },
|
||||
{ "mHandIndex1Right", "mHandIndex1Left", HANDS, { "mHandIndex2Right" }, "-0.097 0.015 0.038", "", true },
|
||||
{ "mHandIndex2Right", "mHandIndex2Left", HANDS, { "mHandIndex3Right" }, "-0.036 -0.006 0.017", "", true },
|
||||
{ "mHandIndex3Right", "mHandIndex3Left", HANDS, {}, "-0.032 -0.006 0.014", "-0.025 -0.004 0.011", true },
|
||||
{ "mHandMiddle1Right", "mHandMiddle1Left", HANDS, { "mHandMiddle2Right" }, "-0.101 0.015 0.013", "", true },
|
||||
{ "mHandMiddle2Right", "mHandMiddle2Left", HANDS, { "mHandMiddle3Right" }, "-0.040 -0.006 -0.001", "", true },
|
||||
{ "mHandMiddle3Right", "mHandMiddle3Left", HANDS, {}, "-0.049 -0.008 -0.001", "-0.033 -0.006 -0.002", true },
|
||||
{ "mHandRing1Right", "mHandRing1Left", HANDS, { "mHandRing2Right" }, "-0.099 0.009 -0.010", "", true },
|
||||
{ "mHandRing2Right", "mHandRing2Left", HANDS, { "mHandRing3Right" }, "-0.038 -0.008 -0.013", "", true },
|
||||
{ "mHandRing3Right", "mHandRing3Left", HANDS, {}, "-0.040 -0.009 -0.013", "-0.028 -0.006 -0.010", true },
|
||||
{ "mHandPinky1Right", "mHandPinky1Left", HANDS, { "mHandPinky2Right" }, "-0.095 0.003 -0.031", "", true },
|
||||
{ "mHandPinky2Right", "mHandPinky2Left", HANDS, { "mHandPinky3Right" }, "-0.025 -0.006 -0.024", "", true },
|
||||
{ "mHandPinky3Right", "mHandPinky3Left", HANDS, {}, "-0.018 -0.004 -0.015", "-0.016 -0.004 -0.013", true },
|
||||
|
||||
// tail and hind limbs
|
||||
{ "mTail1", "", MISC },
|
||||
{ "mTail2", "", MISC },
|
||||
{ "mTail3", "", MISC },
|
||||
{ "mTail4", "", MISC },
|
||||
{ "mTail5", "", MISC },
|
||||
{ "mTail6", "", MISC },
|
||||
{ "mGroin", "", MISC },
|
||||
{ "mHindLimbsRoot", "", MISC },
|
||||
{ "mHindLimb1Left", "mHindLimb1Right", MISC },
|
||||
{ "mHindLimb2Left", "mHindLimb2Right", MISC },
|
||||
{ "mHindLimb3Left", "mHindLimb3Right", MISC },
|
||||
{ "mHindLimb4Left", "mHindLimb4Right", MISC },
|
||||
{ "mHindLimb1Right", "mHindLimb1Left", MISC, {}, "", true },
|
||||
{ "mHindLimb2Right", "mHindLimb2Left", MISC, {}, "", true },
|
||||
{ "mHindLimb3Right", "mHindLimb3Left", MISC, {}, "", true },
|
||||
{ "mHindLimb4Right", "mHindLimb4Left", MISC, {}, "", true },
|
||||
{ "mTail1", "", MISC, { "mTail2" }, "0.000 0.047 -0.116" },
|
||||
{ "mTail2", "", MISC, { "mTail3" }, "0.000 0.000 -0.197" },
|
||||
{ "mTail3", "", MISC, { "mTail4" }, "0.000 0.000 -0.168" },
|
||||
{ "mTail4", "", MISC, { "mTail5" }, "0.000 0.000 -0.142" },
|
||||
{ "mTail5", "", MISC, { "mTail6" }, "0.000 0.000 -0.112" },
|
||||
{ "mTail6", "", MISC, {}, "0.000 0.000 -0.094", "0.000 0.000 -0.089" },
|
||||
{ "mGroin", "", MISC, {}, "0.000 -0.097 0.064", "0.000 -0.066 0.004" },
|
||||
{ "mHindLimbsRoot", "", MISC, { "mHindLimb1Left", "mHindLimb1Right" }, "0.000 0.084 -0.200" },
|
||||
{ "mHindLimb1Left", "mHindLimb1Right", MISC, { "mHindLimb2Left" }, "0.129 -0.125 -0.204" },
|
||||
{ "mHindLimb2Left", "mHindLimb2Right", MISC, { "mHindLimb3Left" }, "-0.046 -0.491 0.002" },
|
||||
{ "mHindLimb3Left", "mHindLimb3Right", MISC, { "mHindLimb4Left" }, "-0.003 -0.468 -0.030" },
|
||||
{ "mHindLimb4Left", "mHindLimb4Right", MISC, {}, "0.000 -0.061 0.112", "0.008 0.000 0.105" },
|
||||
{ "mHindLimb1Right", "mHindLimb1Left", MISC, { "mHindLimb2Right" }, "-0.129 -0.125 -0.204", "", true },
|
||||
{ "mHindLimb2Right", "mHindLimb2Left", MISC, { "mHindLimb3Right" }, "0.046 -0.491 0.002", "", true },
|
||||
{ "mHindLimb3Right", "mHindLimb3Left", MISC, { "mHindLimb4Right" }, "0.003 -0.468 -0.030", "", true },
|
||||
{ "mHindLimb4Right", "mHindLimb4Left", MISC, {}, "0.000 -0.061 0.112", "-0.008 0.000 0.105", true },
|
||||
|
||||
// wings
|
||||
{ "mWingsRoot", "", MISC },
|
||||
{ "mWing1Left", "mWing1Right", MISC },
|
||||
{ "mWing2Left", "mWing2Right", MISC },
|
||||
{ "mWing3Left", "mWing3Right", MISC },
|
||||
{ "mWing4Left", "mWing4Right", MISC },
|
||||
{ "mWing4FanLeft", "mWing4FanRight", MISC },
|
||||
{ "mWing1Right", "mWing1Left", MISC, {}, "", true },
|
||||
{ "mWing2Right", "mWing2Left", MISC, {}, "", true },
|
||||
{ "mWing3Right", "mWing3Left", MISC, {}, "", true },
|
||||
{ "mWing4Right", "mWing4Left", MISC, {}, "", true },
|
||||
{ "mWing4FanRight", "mWing4FanLeft", MISC, {}, "", true },
|
||||
{ "mWingsRoot", "", MISC, { "mWing1Left", "mWing1Right" }, "0.000 0.000 -0.014" },
|
||||
{ "mWing1Left", "mWing1Right", MISC, { "mWing2Left" }, "0.105 0.181 -0.099" },
|
||||
{ "mWing2Left", "mWing2Right", MISC, { "mWing3Left" }, "0.169 0.067 -0.168" },
|
||||
{ "mWing3Left", "mWing3Right", MISC, { "mWing4Left", "mWing4FanLeft" }, "0.183 0.000 -0.181" },
|
||||
{ "mWing4Left", "mWing4Right", MISC, {}, "0.173 0.000 -0.171", "0.132 0.000 -0.146" },
|
||||
{ "mWing4FanLeft", "mWing4FanRight", MISC, {}, "0.173 0.000 -0.171", "0.062 -0.159 -0.068" },
|
||||
{ "mWing1Right", "mWing1Left", MISC, { "mWing2Right" }, "-0.105 0.181 -0.099", "", true },
|
||||
{ "mWing2Right", "mWing2Left", MISC, { "mWing3Right" }, "-0.169 0.067 -0.168", "", true },
|
||||
{ "mWing3Right", "mWing3Left", MISC, { "mWing4Right", "mWing4FanRight" }, "-0.183 0.000 -0.181", "", true },
|
||||
{ "mWing4Right", "mWing4Left", MISC, {}, "-0.173 0.000 -0.171", "-0.132 0.000 -0.146", true },
|
||||
{ "mWing4FanRight", "mWing4FanLeft", MISC, {}, "-0.173 0.000 -0.171", "-0.062 -0.159 -0.068", true },
|
||||
|
||||
// Collision Volumes
|
||||
{ "LEFT_PEC", "RIGHT_PEC", COL_VOLUMES },
|
||||
{ "RIGHT_PEC", "LEFT_PEC", COL_VOLUMES, {}, "", true },
|
||||
{ "RIGHT_PEC", "LEFT_PEC", COL_VOLUMES, {}, "", "", true },
|
||||
{ "BELLY", "", COL_VOLUMES },
|
||||
{ "BUTT", "", COL_VOLUMES },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -38,6 +38,8 @@ width="403">
|
|||
<string name="joint_transform_mHipRight" translate="false">NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mKneeRight" translate="false">NEGATE_PITCH NEGATE_ROLL</string>
|
||||
<string name="joint_transform_mAnkleRight" translate="false">NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mFaceTeethLower" translate="false">SWAP_YAW_AND_ROLL NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mFaceTeethUpper" translate="false">SWAP_YAW_AND_ROLL NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mFaceLipCornerRight" translate="false">SWAP_YAW_AND_ROLL NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mFaceLipCornerLeft" translate="false">SWAP_YAW_AND_ROLL NEGATE_PITCH</string>
|
||||
<string name="joint_transform_mFaceLipUpperLeft" translate="false">SWAP_YAW_AND_ROLL NEGATE_PITCH</string>
|
||||
|
|
@ -139,7 +141,8 @@ width="403">
|
|||
<string name="header_mWingsRoot">Wings</string>
|
||||
<string name="header_mFaceEar1Left">Ears/Nose</string>
|
||||
|
||||
<!-- These are names to appear on the UI for the joints/bones/thingos -->
|
||||
<!-- These are names to appear on the UI for the joints -->
|
||||
<!-- If a name is not here, it does not appear -->
|
||||
<string name="title_mPelvis">Whole Avatar</string>
|
||||
<string name="title_mTorso">Torso</string>
|
||||
<string name="title_mChest">Chest</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue