diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/llcharacter/llheadrotmotion.cpp | 201 | ||||
-rw-r--r-- | indra/llcharacter/llheadrotmotion.h | 4 | ||||
-rw-r--r-- | indra/newview/character/avatar_lad.xml | 450 | ||||
-rw-r--r-- | indra/newview/character/avatar_skeleton.xml | 10 |
4 files changed, 429 insertions, 236 deletions
diff --git a/indra/llcharacter/llheadrotmotion.cpp b/indra/llcharacter/llheadrotmotion.cpp index 812c4201af..e91de7a11d 100644 --- a/indra/llcharacter/llheadrotmotion.cpp +++ b/indra/llcharacter/llheadrotmotion.cpp @@ -285,7 +285,10 @@ LLEyeMotion::LLEyeMotion(const LLUUID &id) : LLMotion(id) mName = "eye_rot"; mLeftEyeState = new LLJointState; + mAltLeftEyeState = new LLJointState; + mRightEyeState = new LLJointState; + mAltRightEyeState = new LLJointState; } @@ -318,18 +321,38 @@ LLMotion::LLMotionInitStatus LLEyeMotion::onInitialize(LLCharacter *character) return STATUS_FAILURE; } + mAltLeftEyeState->setJoint( character->getJoint("mFaceEyeAltLeft") ); + if ( ! mAltLeftEyeState->getJoint() ) + { + LL_INFOS() << getName() << ": Can't get alt left eyeball joint." << LL_ENDL; + return STATUS_FAILURE; + } + mRightEyeState->setJoint( character->getJoint("mEyeRight") ); if ( ! mRightEyeState->getJoint() ) { - LL_INFOS() << getName() << ": Can't get Right eyeball joint." << LL_ENDL; + LL_INFOS() << getName() << ": Can't get right eyeball joint." << LL_ENDL; + return STATUS_FAILURE; + } + + mAltRightEyeState->setJoint( character->getJoint("mFaceEyeAltRight") ); + if ( ! mAltRightEyeState->getJoint() ) + { + LL_INFOS() << getName() << ": Can't get alt right eyeball joint." << LL_ENDL; return STATUS_FAILURE; } mLeftEyeState->setUsage(LLJointState::ROT); + mAltLeftEyeState->setUsage(LLJointState::ROT); + mRightEyeState->setUsage(LLJointState::ROT); + mAltRightEyeState->setUsage(LLJointState::ROT); addJointState( mLeftEyeState ); + addJointState( mAltLeftEyeState ); + addJointState( mRightEyeState ); + addJointState( mAltRightEyeState ); return STATUS_SUCCESS; } @@ -343,17 +366,98 @@ BOOL LLEyeMotion::onActivate() return TRUE; } - //----------------------------------------------------------------------------- -// LLEyeMotion::onUpdate() +// LLEyeMotion::adjustEyeTarget() //----------------------------------------------------------------------------- -BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) +void LLEyeMotion::adjustEyeTarget(LLVector3* targetPos, LLJointState& left_eye_state, LLJointState& right_eye_state) { // Compute eye rotation. + BOOL has_eye_target = FALSE; LLQuaternion target_eye_rot; LLVector3 eye_look_at; F32 vergence; + if (targetPos) + { + LLVector3 skyward(0.f, 0.f, 1.f); + LLVector3 left; + LLVector3 up; + + eye_look_at = *targetPos; + has_eye_target = TRUE; + F32 lookAtDistance = eye_look_at.normVec(); + + left.setVec(skyward % eye_look_at); + up.setVec(eye_look_at % left); + + target_eye_rot = LLQuaternion(eye_look_at, left, up); + // convert target rotation to head-local coordinates + target_eye_rot *= ~mHeadJoint->getWorldRotation(); + // eliminate any Euler roll - we're lucky that roll is applied last. + F32 roll, pitch, yaw; + target_eye_rot.getEulerAngles(&roll, &pitch, &yaw); + target_eye_rot.setQuat(0.0f, pitch, yaw); + // constrain target orientation to be in front of avatar's face + target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE); + + // calculate vergence + F32 interocular_dist = (left_eye_state.getJoint()->getWorldPosition() - right_eye_state.getJoint()->getWorldPosition()).magVec(); + vergence = -atan2((interocular_dist / 2.f), lookAtDistance); + llclamp(vergence, -F_PI_BY_TWO, 0.f); + } + else + { + target_eye_rot = LLQuaternion::DEFAULT; + vergence = 0.f; + } + + //RN: subtract 4 degrees to account for foveal angular offset relative to pupil + vergence += 4.f * DEG_TO_RAD; + + // calculate eye jitter + LLQuaternion eye_jitter_rot; + + // vergence not too high... + if (vergence > -0.05f) + { + //...go ahead and jitter + eye_jitter_rot.setQuat(0.f, mEyeJitterPitch + mEyeLookAwayPitch, mEyeJitterYaw + mEyeLookAwayYaw); + } + else + { + //...or don't + eye_jitter_rot.loadIdentity(); + } + + // calculate vergence of eyes as an object gets closer to the avatar's head + LLQuaternion vergence_quat; + + if (has_eye_target) + { + vergence_quat.setQuat(vergence, LLVector3(0.f, 0.f, 1.f)); + } + else + { + vergence_quat.loadIdentity(); + } + + // calculate eye rotations + LLQuaternion left_eye_rot = target_eye_rot; + left_eye_rot = vergence_quat * eye_jitter_rot * left_eye_rot; + + LLQuaternion right_eye_rot = target_eye_rot; + vergence_quat.transQuat(); + right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot; + + left_eye_state.setRotation( left_eye_rot ); + right_eye_state.setRotation( right_eye_rot ); +} + +//----------------------------------------------------------------------------- +// LLEyeMotion::onUpdate() +//----------------------------------------------------------------------------- +BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) +{ //calculate jitter if (mEyeJitterTimer.getElapsedTimeF32() > mEyeJitterTime) { @@ -426,83 +530,10 @@ BOOL LLEyeMotion::onUpdate(F32 time, U8* joint_mask) } } - BOOL has_eye_target = FALSE; LLVector3* targetPos = (LLVector3*)mCharacter->getAnimationData("LookAtPoint"); - if (targetPos) - { - LLVector3 skyward(0.f, 0.f, 1.f); - LLVector3 left; - LLVector3 up; - - eye_look_at = *targetPos; - has_eye_target = TRUE; - F32 lookAtDistance = eye_look_at.normVec(); - - left.setVec(skyward % eye_look_at); - up.setVec(eye_look_at % left); - - target_eye_rot = LLQuaternion(eye_look_at, left, up); - // convert target rotation to head-local coordinates - target_eye_rot *= ~mHeadJoint->getWorldRotation(); - // eliminate any Euler roll - we're lucky that roll is applied last. - F32 roll, pitch, yaw; - target_eye_rot.getEulerAngles(&roll, &pitch, &yaw); - target_eye_rot.setQuat(0.0f, pitch, yaw); - // constrain target orientation to be in front of avatar's face - target_eye_rot.constrain(EYE_ROT_LIMIT_ANGLE); - - // calculate vergence - F32 interocular_dist = (mLeftEyeState->getJoint()->getWorldPosition() - mRightEyeState->getJoint()->getWorldPosition()).magVec(); - vergence = -atan2((interocular_dist / 2.f), lookAtDistance); - llclamp(vergence, -F_PI_BY_TWO, 0.f); - } - else - { - target_eye_rot = LLQuaternion::DEFAULT; - vergence = 0.f; - } - - //RN: subtract 4 degrees to account for foveal angular offset relative to pupil - vergence += 4.f * DEG_TO_RAD; - - // calculate eye jitter - LLQuaternion eye_jitter_rot; - - // vergence not too high... - if (vergence > -0.05f) - { - //...go ahead and jitter - eye_jitter_rot.setQuat(0.f, mEyeJitterPitch + mEyeLookAwayPitch, mEyeJitterYaw + mEyeLookAwayYaw); - } - else - { - //...or don't - eye_jitter_rot.loadIdentity(); - } - - // calculate vergence of eyes as an object gets closer to the avatar's head - LLQuaternion vergence_quat; - - if (has_eye_target) - { - vergence_quat.setQuat(vergence, LLVector3(0.f, 0.f, 1.f)); - } - else - { - vergence_quat.loadIdentity(); - } - - // calculate eye rotations - LLQuaternion left_eye_rot = target_eye_rot; - left_eye_rot = vergence_quat * eye_jitter_rot * left_eye_rot; - - LLQuaternion right_eye_rot = target_eye_rot; - vergence_quat.transQuat(); - right_eye_rot = vergence_quat * eye_jitter_rot * right_eye_rot; - - mLeftEyeState->setRotation( left_eye_rot ); - mRightEyeState->setRotation( right_eye_rot ); + adjustEyeTarget(targetPos, *mLeftEyeState, *mRightEyeState); + adjustEyeTarget(targetPos, *mAltLeftEyeState, *mAltRightEyeState); return TRUE; } @@ -519,11 +550,23 @@ void LLEyeMotion::onDeactivate() joint->setRotation(LLQuaternion::DEFAULT); } + joint = mAltLeftEyeState->getJoint(); + if (joint) + { + joint->setRotation(LLQuaternion::DEFAULT); + } + joint = mRightEyeState->getJoint(); if (joint) { joint->setRotation(LLQuaternion::DEFAULT); } + + joint = mAltRightEyeState->getJoint(); + if (joint) + { + joint->setRotation(LLQuaternion::DEFAULT); + } } // End diff --git a/indra/llcharacter/llheadrotmotion.h b/indra/llcharacter/llheadrotmotion.h index 569dbef2dd..53ae1813bc 100644 --- a/indra/llcharacter/llheadrotmotion.h +++ b/indra/llcharacter/llheadrotmotion.h @@ -176,6 +176,8 @@ public: // it will be deactivated virtual BOOL onActivate(); + void adjustEyeTarget(LLVector3* targetPos, LLJointState& left_eye_state, LLJointState& right_eye_state); + // called per time step // must return TRUE while it is active, and // must return FALSE when the motion is completed. @@ -193,6 +195,8 @@ public: LLJoint *mHeadJoint; LLPointer<LLJointState> mLeftEyeState; LLPointer<LLJointState> mRightEyeState; + LLPointer<LLJointState> mAltLeftEyeState; + LLPointer<LLJointState> mAltRightEyeState; LLFrameTimer mEyeJitterTimer; F32 mEyeJitterTime; diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 76a603db06..e9ce4725e5 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -807,6 +807,39 @@ <bone name="mHindLimb2Right" scale="0 0 0.1" /> + + <bone + name="mWing1Left" + offset="0 0 0" /> + <bone + name="mWing2Left" + offset="-0.015 0.015 0" /> + <bone + name="mWing3Left" + offset="-0.025 0.025 0" /> + <bone + name="mWing4Left" + offset="-0.03 0.03 0" /> + <bone + name="mWing4FanLeft" + offset="-0.03 0.03 0" /> + + <bone + name="mWing1Right" + offset="0 0 0" /> + <bone + name="mWing2Right" + offset="-0.015 -0.015 0" /> + <bone + name="mWing3Right" + offset="-0.025 -0.025 0" /> + <bone + name="mWing4Right" + offset="-0.03 -0.03 0" /> + <bone + name="mWing4FanRight" + offset="-0.03 -0.03 0" /> + </param_skeleton> </param> @@ -1163,56 +1196,57 @@ name="mEyeRight" scale="0 0 0" offset="0 -.009 0" /> - - <bone + + <bone name="mFaceEyeAltLeft" scale="0 0 0 " - offset="0 .009 0" /> + offset="0 .0090 0" /> <bone name="mFaceEyeAltRight" scale="0 0 0 " - offset="0 -.009 0" /> - + offset="0 -.0090 0" /> + <bone name="mFaceEyeLidLowerLeft" scale="0 0 0 " - offset="0 .00930 0" /> + offset="0 .0090 0" /> <bone name="mFaceEyeLidLowerRight" scale="0 0 0 " - offset="0 -.00930 0" /> + offset="0 -.0090 0" /> + <bone name="mFaceEyeLidUpperLeft" scale="0 0 0 " - offset="0 .00930 0" /> + offset="0 .0090 0" /> <bone name="mFaceEyeLidUpperRight" scale="0 0 0 " - offset="0 -.00930 0" /> + offset="0 -.0090 0" /> <bone name="mFaceEyebrowInnerLeft" scale="0 0 0 " - offset="0 .00930 0" /> + offset="0 .0090 0" /> <bone name="mFaceEyebrowInnerRight" scale="0 0 0 " - offset="0 -.00930 0" /> + offset="0 -.0090 0" /> <bone name="mFaceEyebrowCenterLeft" scale="0 0 0 " - offset="0 .00930 0" /> + offset="0 .0090 0" /> <bone name="mFaceEyebrowCenterRight" scale="0 0 0 " - offset="0 -.00930 0" /> + offset="0 -.0090 0" /> <bone name="mFaceEyebrowOuterLeft" @@ -1257,16 +1291,16 @@ name="mEyeRight" scale="0 0 0" offset="0 0 -.004" /> - - <bone + + <bone name="mFaceEyeAltLeft" scale="0 0 0" offset="0 0 .004" /> - <bone + <bone name="mFaceEyeAltRight" scale="0 0 0" - offset="0 0 -.004" /> + offset="0 0 -.004" /> <bone name="mFaceNoseRight" @@ -1421,11 +1455,6 @@ value_min="-1" value_max="1"> <param_skeleton> - <bone - name="mFaceRoot" - scale="0.25 0 0" - offset="0 0 0" /> - <bone name="mEyeLeft" scale="0 0 0" @@ -1436,131 +1465,6 @@ scale="0 0 0" offset=".016 0 0" /> - <bone - name="mFaceEyeAltLeft" - scale="0 0 0" - offset=".016 0 0" /> - - <bone - name="mFaceEyeAltRight" - scale="0 0 0" - offset=".016 0 0" /> - - <bone - name="mFaceEyeLidUpperLeft" - scale="0 0 0" - offset="-0.0038 0 0" /> - - <bone - name="mFaceEyeLidUpperRight" - scale="0 0 0" - offset="-0.0038 0 0" /> - - <bone - name="mFaceEyeLidLowerLeft" - scale="0 0 0" - offset="-0.0038 0 0" /> - - <bone - name="mFaceEyeLidLowerRight" - scale="0 0 0" - offset="-0.0038 0 0" /> - - <bone - name="mFaceNoseCenter" - scale="0 0 0" - offset=".01 0 0" /> - - <bone - name="mFaceNoseRight" - scale="0 0 0" - offset=".005 0 0" /> - - <bone - name="mFaceNoseLeft" - scale="0 0 0" - offset=".005 0 0" /> - - <bone - name="mFaceNoseBase" - scale="0 0 0" - offset=".005 0 0" /> - - <bone - name="mFaceLipUpperLeft" - scale="0 0 0" - offset="0.005 0 0" /> - - <bone - name="mFaceLipUpperCenter" - scale="0 0 0" - offset="0.005 0 0" /> - - <bone - name="mFaceLipUpperRight" - scale="0 0 0" - offset="0.005 0 0" /> - - <bone - name="mFaceLipCornerRight" - scale="0 0 0" - offset="0.005 0 0" /> - - <bone - name="mFaceLipCornerLeft" - scale="0 0 0" - offset="0.005 0 0" /> - - <bone - name="mFaceLipLowerLeft" - scale="0 0 0" - offset="0.01 0 0" /> - - <bone - name="mFaceLipLowerCenter" - scale="0 0 0" - offset="0.01 0 0" /> - - <bone - name="mFaceLipLowerRight" - scale="0 0 0" - offset="0.01 0 0" /> - - - <bone - name="mFaceCheekLowerLeft" - scale="0 0 0" - offset="0.007 0 0" /> - - <bone - name="mFaceCheekLowerRight" - scale="0 0 0" - offset="0.007 0 0" /> - - <bone - name="mFaceChin" - scale="0 0 0" - offset="0.014 0 0" /> - - <bone - name="mFaceTeethUpper" - scale="0.28 0 0" - offset="0 0 0" /> - <bone - name="mFaceTeethLower" - scale="0.28 0 0" - offset="0 0 0" /> - - <bone - name="mFaceTongueBase" - scale="0.3 0 0" - offset="0 0 0" /> - - <bone - name="mFaceTongueTip" - scale="0 0 0" - offset="0.004 0 0" /> - </param_skeleton> </param> @@ -1584,6 +1488,7 @@ name="mEyeRight" scale="0 0 0" offset=".005 0 0" /> + <bone name="mFaceEyeAltLeft" scale="0 0 0" @@ -1593,7 +1498,7 @@ name="mFaceEyeAltRight" scale="0 0 0" offset=".005 0 0" /> - + <bone name="mFaceEyeLidLowerLeft" scale="0 0 0 " @@ -1727,17 +1632,17 @@ name="mEyeRight" scale="1 1 1" offset="0 0 0" /> - + <bone name="mFaceEyeAltLeft" scale="1 1 1" - offset="0 0 0" /> + offset="0 0 -0.001" /> <bone name="mFaceEyeAltRight" scale="1 1 1" - offset="0 0 0" /> - + offset="0 0 -0.001" /> + <bone name="mFaceForeheadLeft" scale="1 1 1" @@ -2087,6 +1992,16 @@ offset=" 0 0 0" /> <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0 0 0" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0 0 0" /> + + <bone name="mFaceEyeLidUpperRight" scale="0 0.3 0.7" offset=" 0 0 0" /> @@ -3173,6 +3088,16 @@ name="mFaceEyeLidUpperLeft" scale="0 0.1 0.2" offset=" 0 0 0" /> + + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0 0 0" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0 0 0" /> </param_skeleton> </param> @@ -3351,6 +3276,16 @@ name="mFaceEyebrowInnerLeft" scale="0 0 0" offset="0 0.00225 -0.0048" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0 -0.0042 -0.0035" /> + + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0 0.0042 -0.0035" /> <bone name="mFaceEyeLidUpperRight" @@ -3756,6 +3691,16 @@ scale="0 0 0" offset="0 0 -.006" /> + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0 0 -.006" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0 0 -.006" /> + </param_skeleton> </param> @@ -3929,6 +3874,16 @@ offset = "0.015 0.00 0.005" scale = "0.0 0.0 0.0" /> + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0 -0.0033 0.0025" /> + + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0 0.0033 0.0025" /> + <bone name="mFaceEyeLidLowerRight" scale="0 0 0" @@ -4098,9 +4053,183 @@ name="mFaceEyeAltRight" scale="0.3195 0.3280 0.3280" offset="-0.005 0 0" /> + + </param_skeleton> + </param> + + <param + id="30772" + group="1" + name="EyeBone_Head_Elongate" + value_min="-1" + value_max="1"> + <param_skeleton> + + <bone + name="mFaceRoot" + scale="0.25 0 0" + offset="0 0 0" /> + + <bone + name="mFaceEyeLidUpperLeft" + scale="0 0 0" + offset="-0.0038 0 0" /> + + <bone + name="mFaceEyeLidUpperRight" + scale="0 0 0" + offset="-0.0038 0 0" /> + <bone + name="mFaceEyeLidLowerLeft" + scale="0 0 0" + offset="-0.0038 0 0" /> + + <bone + name="mFaceEyeLidLowerRight" + scale="0 0 0" + offset="-0.0038 0 0" /> + + <bone + name="mFaceNoseCenter" + scale="0 0 0" + offset=".01 0 0" /> + + <bone + name="mFaceNoseRight" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mFaceNoseLeft" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mFaceNoseBase" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mFaceLipUpperLeft" + scale="0 0 0" + offset="0.005 0 0" /> + + <bone + name="mFaceLipUpperCenter" + scale="0 0 0" + offset="0.005 0 0" /> + + <bone + name="mFaceLipUpperRight" + scale="0 0 0" + offset="0.005 0 0" /> + + <bone + name="mFaceLipCornerRight" + scale="0 0 0" + offset="0.005 0 0" /> + + <bone + name="mFaceLipCornerLeft" + scale="0 0 0" + offset="0.005 0 0" /> + + <bone + name="mFaceLipLowerLeft" + scale="0 0 0" + offset="0.01 0 0" /> + + <bone + name="mFaceLipLowerCenter" + scale="0 0 0" + offset="0.01 0 0" /> + + <bone + name="mFaceLipLowerRight" + scale="0 0 0" + offset="0.01 0 0" /> + + + <bone + name="mFaceCheekLowerLeft" + scale="0 0 0" + offset="0.007 0 0" /> + + <bone + name="mFaceCheekLowerRight" + scale="0 0 0" + offset="0.007 0 0" /> + + <bone + name="mFaceChin" + scale="0 0 0" + offset="0.014 0 0" /> + + <bone + name="mFaceTeethUpper" + scale="0.28 0 0" + offset="0 0 0" /> + <bone + name="mFaceTeethLower" + scale="0.28 0 0" + offset="0 0 0" /> + + <bone + name="mFaceTongueBase" + scale="0.3 0 0" + offset="0 0 0" /> + + <bone + name="mFaceTongueTip" + scale="0 0 0" + offset="0.004 0 0" /> + </param_skeleton> </param> + + <param + id="31772" + group="1" + name="EyeBone_Head_Elongate" + value_min="0" + value_max="1"> + <param_skeleton> + + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="0.0058 0 0" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="0.0058 0 0" /> + + </param_skeleton> + </param> + + <param + id="32772" + group="1" + name="EyeBone_Head_Elongate" + value_min="0" + value_max="1"> + <param_skeleton> + + <bone + name="mFaceEyeAltLeft" + scale="0 0 0" + offset="-0.0032 0 0" /> + + <bone + name="mFaceEyeAltRight" + scale="0 0 0" + offset="-0.0032 0 0" /> + + </param_skeleton> + </param> + <!-- Eye Brow sliders --> @@ -14577,6 +14706,23 @@ render_pass="bump"> <driven id="772" /> + + <driven + id="30772" /> + + <driven + min1="0" + max1="0" + max2="0" + min2="0.45" + id="31772" /> + + <driven + min1="0.5" + max1="1" + max2="1" + min2="1" + id="32772" /> </param_driver> </param> diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml index 2c63b8092d..2241a12545 100644 --- a/indra/newview/character/avatar_skeleton.xml +++ b/indra/newview/character/avatar_skeleton.xml @@ -21,11 +21,11 @@ <bone aliases="head avatar_mHead" connected="true" end="0.000 0.000 0.079" group="Torso" name="mHead" pivot="0.000000 -0.000000 0.075630" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" support="base"> <collision_volume end="0.000 0.000 0.100" group="Collision" name="HEAD" pos="0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12" support="base"/> <bone aliases="figureHair avatar_mSkull" connected="false" end="0.000 0.000 0.033" group="Extra" name="mSkull" pivot="0.000000 0.000000 0.079000" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" support="base"/> - <bone aliases="avatar_mEyeRight" connected="false" end="0.100 0.000 0.000" group="Extra" name="mEyeRight" pivot="0.098466 -0.036000 0.079000" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" support="base"/> - <bone aliases="avatar_mEyeLeft" connected="false" end="0.100 0.000 0.000" group="Extra" name="mEyeLeft" pivot="0.098461 0.036000 0.079000" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" support="base"/> - <bone connected="false" end="0.022 0.000 0.000" group="Face" name="mFaceEyeAltRight" pivot="0.098466 -0.036000 0.079000" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 0.000000" scale="1.00 1.00 1.00" support="extended"/> - <bone connected="false" end="0.022 0.000 0.000" group="Face" name="mFaceEyeAltLeft" pivot="0.098461 0.036000 0.079000" pos="0.098 0.036 0.079" rot="0.000000 0.000000 0.000000" scale="1.00 1.00 1.00" support="extended"/> - <bone connected="false" end="0.020 0.000 0.000" group="Face" name="mFaceRoot" pivot="0.025 0.000 0.045" pos="0.025 0.000 0.045" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"> + <bone aliases="avatar_mEyeRight" connected="false" end="0.025 0.000 0.000" group="Extra" name="mEyeRight" pivot="0.098466 -0.036000 0.079000" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" support="base"/> + <bone aliases="avatar_mEyeLeft" connected="false" end="0.025 0.000 0.000" group="Extra" name="mEyeLeft" pivot="0.098461 0.036000 0.079000" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" support="base"/> + <bone connected="false" end="0.020 0.000 0.000" group="Face" name="mFaceRoot" pivot="0.025000 0.000000 0.045000" pos="0.025 0.000 0.045" rot="0.000000 0.000000 0.000000" scale="1.00 1.00 1.00" support="extended"> + <bone connected="false" end="0.025 0.000 0.000" group="Face" name="mFaceEyeAltRight" pivot="0.073466 -0.036000 0.0339300" pos="0.073 -0.036 0.034" rot="0.000000 0.000000 0.000000" scale="1.00 1.00 1.00" support="extended"/> + <bone connected="false" end="0.025 0.000 0.000" group="Face" name="mFaceEyeAltLeft" pivot="0.073461 0.036000 0.0339300" pos="0.073 0.036 0.034" rot="0.000000 0.000000 0.000000" scale="1.00 1.00 1.00" support="extended"/> <bone connected="false" end="0.024 0.004 0.018" group="Face" name="mFaceForeheadLeft" pivot="0.061 0.035 0.083" pos="0.061 0.035 0.083" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/> <bone connected="false" end="0.024 -0.004 0.018" group="Face" name="mFaceForeheadRight" pivot="0.061 -0.035 0.083" pos="0.061 -0.035 0.083" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/> <bone connected="false" end="0.023 0.013 0.000" group="Eyes" name="mFaceEyebrowOuterLeft" pivot="0.064 0.051 0.048" pos="0.064 0.051 0.048" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/> |