diff options
Diffstat (limited to 'indra')
117 files changed, 39996 insertions, 408 deletions
diff --git a/indra/llappearance/llavatarappearance.cpp b/indra/llappearance/llavatarappearance.cpp index d1eb389013..f2cd2768d8 100755 --- a/indra/llappearance/llavatarappearance.cpp +++ b/indra/llappearance/llavatarappearance.cpp @@ -323,20 +323,33 @@ LLAvatarAppearance::~LLAvatarAppearance() //static void LLAvatarAppearance::initClass() { - std::string xmlFile; + initClass("",""); +} - xmlFile = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,AVATAR_DEFAULT_CHAR) + "_lad.xml"; - BOOL success = sXMLTree.parseFile( xmlFile, FALSE ); +//static +void LLAvatarAppearance::initClass(const std::string& avatar_file_name_arg, const std::string& skeleton_file_name_arg) +{ + std::string avatar_file_name; + + if (!avatar_file_name_arg.empty()) + { + avatar_file_name = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,avatar_file_name_arg); + } + else + { + avatar_file_name = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,AVATAR_DEFAULT_CHAR + "_lad.xml"); + } + BOOL success = sXMLTree.parseFile( avatar_file_name, FALSE ); if (!success) { - LL_ERRS() << "Problem reading avatar configuration file:" << xmlFile << LL_ENDL; + LL_ERRS() << "Problem reading avatar configuration file:" << avatar_file_name << LL_ENDL; } // now sanity check xml file LLXmlTreeNode* root = sXMLTree.getRoot(); if (!root) { - LL_ERRS() << "No root node found in avatar configuration file: " << xmlFile << LL_ENDL; + LL_ERRS() << "No root node found in avatar configuration file: " << avatar_file_name << LL_ENDL; return; } @@ -345,14 +358,14 @@ void LLAvatarAppearance::initClass() //------------------------------------------------------------------------- if( !root->hasName( "linden_avatar" ) ) { - LL_ERRS() << "Invalid avatar file header: " << xmlFile << LL_ENDL; + LL_ERRS() << "Invalid avatar file header: " << avatar_file_name << LL_ENDL; } std::string version; static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version"); if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") ) { - LL_ERRS() << "Invalid avatar file version: " << version << " in file: " << xmlFile << LL_ENDL; + LL_ERRS() << "Invalid avatar file version: " << version << " in file: " << avatar_file_name << LL_ENDL; } S32 wearable_def_version = 1; @@ -365,16 +378,19 @@ void LLAvatarAppearance::initClass() LLXmlTreeNode* skeleton_node = root->getChildByName( "skeleton" ); if (!skeleton_node) { - LL_ERRS() << "No skeleton in avatar configuration file: " << xmlFile << LL_ENDL; + LL_ERRS() << "No skeleton in avatar configuration file: " << avatar_file_name << LL_ENDL; return; } - - std::string skeleton_file_name; - static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name"); - if (!skeleton_node->getFastAttributeString(file_name_string, skeleton_file_name)) - { - LL_ERRS() << "No file name in skeleton node in avatar config file: " << xmlFile << LL_ENDL; - } + + std::string skeleton_file_name = skeleton_file_name_arg; + if (skeleton_file_name.empty()) + { + static LLStdStringHandle file_name_string = LLXmlTree::addAttributeString("file_name"); + if (!skeleton_node->getFastAttributeString(file_name_string, skeleton_file_name)) + { + LL_ERRS() << "No file name in skeleton node in avatar config file: " << avatar_file_name << LL_ENDL; + } + } std::string skeleton_path; skeleton_path = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,skeleton_file_name); @@ -552,6 +568,12 @@ BOOL LLAvatarAppearance::setupBone(const LLAvatarBoneInfo* info, LLJoint* parent { LLJoint* joint = NULL; + LL_DEBUGS("BVH") << "bone info: name " << info->mName + << " isJoint " << info->mIsJoint + << " volume_num " << volume_num + << " joint_num " << joint_num + << LL_ENDL; + if (info->mIsJoint) { joint = getCharacterJoint(joint_num); @@ -615,10 +637,7 @@ BOOL LLAvatarAppearance::allocateCharacterJoints( U32 num ) { clearSkeleton(); - for(S32 joint_num = 0; joint_num < (S32)num; joint_num++) - { - mSkeleton.push_back(createAvatarJoint(joint_num)); - } + mSkeleton = avatar_joint_list_t(num,NULL); return TRUE; } @@ -629,6 +648,7 @@ BOOL LLAvatarAppearance::allocateCharacterJoints( U32 num ) //----------------------------------------------------------------------------- BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info) { + LL_DEBUGS("BVH") << "numBones " << info->mNumBones << " numCollisionVolumes " << info->mNumCollisionVolumes << LL_ENDL; //------------------------------------------------------------------------- // allocate joints //------------------------------------------------------------------------- @@ -655,8 +675,8 @@ BOOL LLAvatarAppearance::buildSkeleton(const LLAvatarSkeletonInfo *info) LLAvatarSkeletonInfo::bone_info_list_t::const_iterator iter; for (iter = info->mBoneInfoList.begin(); iter != info->mBoneInfoList.end(); ++iter) { - LLAvatarBoneInfo *info = *iter; - if (!setupBone(info, NULL, current_volume_num, current_joint_num)) + LLAvatarBoneInfo *bone_info = *iter; + if (!setupBone(bone_info, NULL, current_volume_num, current_joint_num)) { LL_ERRS() << "Error parsing bone in skeleton file" << LL_ENDL; return FALSE; @@ -1240,6 +1260,10 @@ LLJoint *LLAvatarAppearance::getCharacterJoint( U32 num ) { return NULL; } + if (!mSkeleton[num]) + { + mSkeleton[num] = createAvatarJoint(num); + } return mSkeleton[num]; } diff --git a/indra/llappearance/llavatarappearance.h b/indra/llappearance/llavatarappearance.h index a0ef49b7cb..43a5274840 100755 --- a/indra/llappearance/llavatarappearance.h +++ b/indra/llappearance/llavatarappearance.h @@ -66,7 +66,8 @@ public: LLAvatarAppearance(LLWearableData* wearable_data); virtual ~LLAvatarAppearance(); - static void initClass(); // initializes static members + static void initClass(const std::string& avatar_file_name, const std::string& skeleton_file_name); // initializes static members + static void initClass(); static void cleanupClass(); // Cleanup data that's only init'd once per class. virtual void initInstance(); // Called after construction to initialize the instance. virtual BOOL loadSkeletonNode(); @@ -138,6 +139,9 @@ public: void computeBodySize(); +public: + typedef std::vector<LLAvatarJoint*> avatar_joint_list_t; + const avatar_joint_list_t& getSkeleton() { return mSkeleton; } protected: static BOOL parseSkeletonFile(const std::string& filename); @@ -147,10 +151,9 @@ protected: BOOL setupBone(const LLAvatarBoneInfo* info, LLJoint* parent, S32 ¤t_volume_num, S32 ¤t_joint_num); BOOL allocateCharacterJoints(U32 num); BOOL buildSkeleton(const LLAvatarSkeletonInfo *info); -protected: + void clearSkeleton(); BOOL mIsBuilt; // state of deferred character building - typedef std::vector<LLAvatarJoint*> avatar_joint_list_t; avatar_joint_list_t mSkeleton; LLPosOverrideMap mPelvisFixups; diff --git a/indra/llcharacter/llbvhloader.cpp b/indra/llcharacter/llbvhloader.cpp index 0d558aeaa2..4dedeeab52 100755 --- a/indra/llcharacter/llbvhloader.cpp +++ b/indra/llcharacter/llbvhloader.cpp @@ -29,6 +29,7 @@ #include "llbvhloader.h" #include <boost/tokenizer.hpp> +#include <boost/lexical_cast.hpp> #include "lldatapacker.h" #include "lldir.h" @@ -163,10 +164,10 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error errorLine = 0; mStatus = loadTranslationTable("anim.ini"); loadStatus = mStatus; - LL_INFOS()<<"Load Status 00 : "<< loadStatus << LL_ENDL; + LL_INFOS("BVH") << "Load Status 00 : " << loadStatus << LL_ENDL; if (mStatus == E_ST_NO_XLT_FILE) { - //LL_WARNS() << "NOTE: No translation table found." << LL_ENDL; + LL_WARNS("BVH") << "NOTE: No translation table found." << LL_ENDL; loadStatus = mStatus; return; } @@ -174,7 +175,7 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error { if (mStatus != E_ST_OK) { - //LL_WARNS() << "ERROR: [line: " << getLineNumber() << "] " << mStatus << LL_ENDL; + LL_WARNS("BVH") << "ERROR: [line: " << getLineNumber() << "] " << mStatus << LL_ENDL; errorLine = getLineNumber(); loadStatus = mStatus; return; @@ -184,10 +185,14 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error char error_text[128]; /* Flawfinder: ignore */ S32 error_line; mStatus = loadBVHFile(buffer, error_text, error_line); + + LL_DEBUGS("BVH") << "============================================================" << LL_ENDL; + LL_DEBUGS("BVH") << "Raw data from file" << LL_ENDL; + dumpBVHInfo(); if (mStatus != E_ST_OK) { - //LL_WARNS() << "ERROR: [line: " << getLineNumber() << "] " << mStatus << LL_ENDL; + LL_WARNS("BVH") << "ERROR: [line: " << getLineNumber() << "] " << mStatus << LL_ENDL; loadStatus = mStatus; errorLine = getLineNumber(); return; @@ -196,6 +201,10 @@ LLBVHLoader::LLBVHLoader(const char* buffer, ELoadStatus &loadStatus, S32 &error applyTranslations(); optimize(); + LL_DEBUGS("BVH") << "============================================================" << LL_ENDL; + LL_DEBUGS("BVH") << "After translations and optimize" << LL_ENDL; + dumpBVHInfo(); + mInitialized = TRUE; } @@ -226,7 +235,7 @@ ELoadStatus LLBVHLoader::loadTranslationTable(const char *fileName) if (!fp) return E_ST_NO_XLT_FILE; - LL_INFOS() << "NOTE: Loading translation table: " << fileName << LL_ENDL; + LL_INFOS("BVH") << "NOTE: Loading translation table: " << fileName << LL_ENDL; //-------------------------------------------------------------------- // register file to be closed on function exit @@ -666,6 +675,33 @@ ELoadStatus LLBVHLoader::loadTranslationTable(const char *fileName) return E_ST_OK; } +void LLBVHLoader::dumpBVHInfo() +{ + for (U32 j=0; j<mJoints.size(); j++) + { + Joint *joint = mJoints[j]; + LL_DEBUGS("BVH") << joint->mName << LL_ENDL; + for (S32 i=0; i<mNumFrames; i++) + { + Key &prevkey = joint->mKeys[llmax(i-1,0)]; + Key &key = joint->mKeys[i]; + if ((i==0) || + (key.mPos[0] != prevkey.mPos[0]) || + (key.mPos[1] != prevkey.mPos[1]) || + (key.mPos[2] != prevkey.mPos[2]) || + (key.mRot[0] != prevkey.mRot[0]) || + (key.mRot[1] != prevkey.mRot[1]) || + (key.mRot[2] != prevkey.mRot[2]) + ) + { + LL_DEBUGS("BVH") << "FRAME " << i + << " POS " << key.mPos[0] << "," << key.mPos[1] << "," << key.mPos[2] + << " ROT " << key.mRot[0] << "," << key.mRot[1] << "," << key.mRot[2] << LL_ENDL; + } + } + } + +} //------------------------------------------------------------------------ // LLBVHLoader::loadBVHFile() @@ -746,6 +782,7 @@ ELoadStatus LLBVHLoader::loadBVHFile(const char *buffer, char* error_text, S32 & { iter++; // { iter++; // OFFSET + iter++; // } S32 depth = 0; for (S32 j = (S32)parent_joints.size() - 1; j >= 0; j--) { @@ -790,11 +827,14 @@ ELoadStatus LLBVHLoader::loadBVHFile(const char *buffer, char* error_text, S32 & //---------------------------------------------------------------- mJoints.push_back( new Joint( jointName ) ); Joint *joint = mJoints.back(); + LL_DEBUGS("BVH") << "Created joint " << jointName << LL_ENDL; + LL_DEBUGS("BVH") << "- index " << mJoints.size()-1 << LL_ENDL; S32 depth = 1; for (S32 j = (S32)parent_joints.size() - 1; j >= 0; j--) { Joint *pjoint = mJoints[parent_joints[j]]; + LL_DEBUGS("BVH") << "- ancestor " << pjoint->mName << LL_ENDL; if (depth > pjoint->mChildTreeMaxDepth) { pjoint->mChildTreeMaxDepth = depth; @@ -863,6 +903,22 @@ ELoadStatus LLBVHLoader::loadBVHFile(const char *buffer, char* error_text, S32 & return E_ST_NO_CHANNELS; } + // FIXME BENTO do we want to open up motion of non-hip joints or + // not? Already effectively allowed via .anim upload. + int res = sscanf(line.c_str(), " CHANNELS %d", &joint->mNumChannels); + if ( res != 1 ) + { + // Assume default if not otherwise specified. + if (mJoints.size()==1) + { + joint->mNumChannels = 6; + } + else + { + joint->mNumChannels = 3; + } + } + //---------------------------------------------------------------- // get rotation order //---------------------------------------------------------------- @@ -961,57 +1017,41 @@ ELoadStatus LLBVHLoader::loadBVHFile(const char *buffer, char* error_text, S32 & line = (*(iter++)); err_line++; - // read and store values - const char *p = line.c_str(); + // Split line into a collection of floats. + std::deque<F32> floats; + boost::char_separator<char> whitespace_sep("\t "); + tokenizer float_tokens(line, whitespace_sep); + tokenizer::iterator float_token_iter = float_tokens.begin(); + while (float_token_iter != float_tokens.end()) + { + F32 val = boost::lexical_cast<float>(*float_token_iter); + floats.push_back(val); + float_token_iter++; + } + LL_DEBUGS("BVH") << "Got " << floats.size() << " floats " << LL_ENDL; for (U32 j=0; j<mJoints.size(); j++) { Joint *joint = mJoints[j]; joint->mKeys.push_back( Key() ); Key &key = joint->mKeys.back(); - // get 3 pos values for root joint only - if (j==0) + if (floats.size() < joint->mNumChannels) { - if ( sscanf(p, "%f %f %f", key.mPos, key.mPos+1, key.mPos+2) != 3 ) - { - strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ - return E_ST_NO_POS; - } + strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ + return E_ST_NO_POS; } - // skip to next 3 values in the line - p = find_next_whitespace(p); - if (!p) - { - strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ - return E_ST_NO_ROT; - } - p = find_next_whitespace(++p); - if (!p) + // assume either numChannels == 6, in which case we have pos + rot, + // or numChannels == 3, in which case we have only rot. + if (joint->mNumChannels == 6) { - strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ - return E_ST_NO_ROT; + key.mPos[0] = floats.front(); floats.pop_front(); + key.mPos[1] = floats.front(); floats.pop_front(); + key.mPos[2] = floats.front(); floats.pop_front(); } - p = find_next_whitespace(++p); - if (!p) - { - strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ - return E_ST_NO_ROT; - } - - // get 3 rot values for joint - F32 rot[3]; - if ( sscanf(p, " %f %f %f", rot, rot+1, rot+2) != 3 ) - { - strncpy(error_text, line.c_str(), 127); /*Flawfinder: ignore*/ - return E_ST_NO_ROT; - } - - p++; - - key.mRot[ joint->mOrder[0]-'X' ] = rot[0]; - key.mRot[ joint->mOrder[1]-'X' ] = rot[1]; - key.mRot[ joint->mOrder[2]-'X' ] = rot[2]; + key.mRot[ joint->mOrder[0]-'X' ] = floats.front(); floats.pop_front(); + key.mRot[ joint->mOrder[1]-'X' ] = floats.front(); floats.pop_front(); + key.mRot[ joint->mOrder[2]-'X' ] = floats.front(); floats.pop_front(); } } diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h index f816b76277..033d8714a9 100755 --- a/indra/llcharacter/llbvhloader.h +++ b/indra/llcharacter/llbvhloader.h @@ -102,6 +102,7 @@ struct Joint mNumRotKeys = 0; mChildTreeMaxDepth = 0; mPriority = 0; + mNumChannels = 3; } // Include aligned members first @@ -123,6 +124,7 @@ struct Joint S32 mNumRotKeys; S32 mChildTreeMaxDepth; S32 mPriority; + S32 mNumChannels; }; @@ -272,6 +274,8 @@ public: // Returns status code. ELoadStatus loadBVHFile(const char *buffer, char *error_text, S32 &error_line); + void dumpBVHInfo(); + // Applies translations to BVH data loaded. void applyTranslations(); diff --git a/indra/llcharacter/lljoint.h b/indra/llcharacter/lljoint.h index 2abe1d6db1..28109f682a 100755 --- a/indra/llcharacter/lljoint.h +++ b/indra/llcharacter/lljoint.h @@ -40,9 +40,11 @@ #include "xform.h" const S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15; -const U32 LL_CHARACTER_MAX_JOINTS = 32; // must be divisible by 4! -const U32 LL_HAND_JOINT_NUM = 31; -const U32 LL_FACE_JOINT_NUM = 30; +const U32 LL_CHARACTER_MAX_JOINTS = 152; // must be divisible by 4! +// FIXME BENTO - these should be higher than the joint_num of any +// other joint, to avoid conflicts in updateMotionsByType() +const U32 LL_HAND_JOINT_NUM = (LL_CHARACTER_MAX_JOINTS-1); +const U32 LL_FACE_JOINT_NUM = (LL_CHARACTER_MAX_JOINTS-2); const S32 LL_CHARACTER_MAX_PRIORITY = 7; const F32 LL_MAX_PELVIS_OFFSET = 5.f; diff --git a/indra/llcharacter/llkeyframemotion.cpp b/indra/llcharacter/llkeyframemotion.cpp index cd201a65b4..c227c3f8e9 100755 --- a/indra/llcharacter/llkeyframemotion.cpp +++ b/indra/llcharacter/llkeyframemotion.cpp @@ -1868,6 +1868,8 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const { BOOL success = TRUE; + LL_DEBUGS("BVH") << "serializing" << LL_ENDL; + success &= dp.packU16(KEYFRAME_MOTION_VERSION, "version"); success &= dp.packU16(KEYFRAME_MOTION_SUBVERSION, "sub_version"); success &= dp.packS32(mJointMotionList->mBasePriority, "base_priority"); @@ -1881,6 +1883,19 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const success &= dp.packU32(mJointMotionList->mHandPose, "hand_pose"); success &= dp.packU32(mJointMotionList->getNumJointMotions(), "num_joints"); + LL_DEBUGS("BVH") << "version " << KEYFRAME_MOTION_VERSION << LL_ENDL; + LL_DEBUGS("BVH") << "sub_version " << KEYFRAME_MOTION_SUBVERSION << LL_ENDL; + LL_DEBUGS("BVH") << "base_priority " << mJointMotionList->mBasePriority << LL_ENDL; + LL_DEBUGS("BVH") << "duration " << mJointMotionList->mDuration << LL_ENDL; + LL_DEBUGS("BVH") << "emote_name " << mJointMotionList->mEmoteName << LL_ENDL; + LL_DEBUGS("BVH") << "loop_in_point " << mJointMotionList->mLoopInPoint << LL_ENDL; + LL_DEBUGS("BVH") << "loop_out_point " << mJointMotionList->mLoopOutPoint << LL_ENDL; + LL_DEBUGS("BVH") << "loop " << mJointMotionList->mLoop << LL_ENDL; + LL_DEBUGS("BVH") << "ease_in_duration " << mJointMotionList->mEaseInDuration << LL_ENDL; + LL_DEBUGS("BVH") << "ease_out_duration " << mJointMotionList->mEaseOutDuration << LL_ENDL; + LL_DEBUGS("BVH") << "hand_pose " << mJointMotionList->mHandPose << LL_ENDL; + LL_DEBUGS("BVH") << "num_joints " << mJointMotionList->getNumJointMotions() << LL_ENDL; + for (U32 i = 0; i < mJointMotionList->getNumJointMotions(); i++) { JointMotion* joint_motionp = mJointMotionList->getJointMotion(i); @@ -1888,6 +1903,7 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const success &= dp.packS32(joint_motionp->mPriority, "joint_priority"); success &= dp.packS32(joint_motionp->mRotationCurve.mNumKeys, "num_rot_keys"); + LL_DEBUGS("BVH") << "Joint " << joint_motionp->mJointName << LL_ENDL; for (RotationCurve::key_map_t::iterator iter = joint_motionp->mRotationCurve.mKeys.begin(); iter != joint_motionp->mRotationCurve.mKeys.end(); ++iter) { @@ -1905,6 +1921,8 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const success &= dp.packU16(x, "rot_angle_x"); success &= dp.packU16(y, "rot_angle_y"); success &= dp.packU16(z, "rot_angle_z"); + + LL_DEBUGS("BVH") << " rot: t " << rot_key.mTime << " angles " << rot_angles.mV[VX] <<","<< rot_angles.mV[VY] <<","<< rot_angles.mV[VZ] << LL_ENDL; } success &= dp.packS32(joint_motionp->mPositionCurve.mNumKeys, "num_pos_keys"); @@ -1923,37 +1941,54 @@ BOOL LLKeyframeMotion::serialize(LLDataPacker& dp) const success &= dp.packU16(x, "pos_x"); success &= dp.packU16(y, "pos_y"); success &= dp.packU16(z, "pos_z"); + + LL_DEBUGS("BVH") << " pos: t " << pos_key.mTime << " pos " << pos_key.mPosition.mV[VX] <<","<< pos_key.mPosition.mV[VY] <<","<< pos_key.mPosition.mV[VZ] << LL_ENDL; } } success &= dp.packS32(mJointMotionList->mConstraints.size(), "num_constraints"); + LL_DEBUGS("BVH") << "num_constraints " << mJointMotionList->mConstraints.size() << LL_ENDL; for (JointMotionList::constraint_list_t::const_iterator iter = mJointMotionList->mConstraints.begin(); iter != mJointMotionList->mConstraints.end(); ++iter) { JointConstraintSharedData* shared_constraintp = *iter; success &= dp.packU8(shared_constraintp->mChainLength, "chain_length"); success &= dp.packU8(shared_constraintp->mConstraintType, "constraint_type"); - char volume_name[16]; /* Flawfinder: ignore */ - snprintf(volume_name, sizeof(volume_name), "%s", /* Flawfinder: ignore */ + char source_volume[16]; /* Flawfinder: ignore */ + snprintf(source_volume, sizeof(source_volume), "%s", /* Flawfinder: ignore */ mCharacter->findCollisionVolume(shared_constraintp->mSourceConstraintVolume)->getName().c_str()); - success &= dp.packBinaryDataFixed((U8*)volume_name, 16, "source_volume"); + + success &= dp.packBinaryDataFixed((U8*)source_volume, 16, "source_volume"); success &= dp.packVector3(shared_constraintp->mSourceConstraintOffset, "source_offset"); + char target_volume[16]; /* Flawfinder: ignore */ if (shared_constraintp->mConstraintTargetType == CONSTRAINT_TARGET_TYPE_GROUND) { - snprintf(volume_name,sizeof(volume_name), "%s", "GROUND"); /* Flawfinder: ignore */ + snprintf(target_volume,sizeof(target_volume), "%s", "GROUND"); /* Flawfinder: ignore */ } else { - snprintf(volume_name, sizeof(volume_name),"%s", /* Flawfinder: ignore */ + snprintf(target_volume, sizeof(target_volume),"%s", /* Flawfinder: ignore */ mCharacter->findCollisionVolume(shared_constraintp->mTargetConstraintVolume)->getName().c_str()); } - success &= dp.packBinaryDataFixed((U8*)volume_name, 16, "target_volume"); + success &= dp.packBinaryDataFixed((U8*)target_volume, 16, "target_volume"); success &= dp.packVector3(shared_constraintp->mTargetConstraintOffset, "target_offset"); success &= dp.packVector3(shared_constraintp->mTargetConstraintDir, "target_dir"); success &= dp.packF32(shared_constraintp->mEaseInStartTime, "ease_in_start"); success &= dp.packF32(shared_constraintp->mEaseInStopTime, "ease_in_stop"); success &= dp.packF32(shared_constraintp->mEaseOutStartTime, "ease_out_start"); success &= dp.packF32(shared_constraintp->mEaseOutStopTime, "ease_out_stop"); + + LL_DEBUGS("BVH") << " chain_length " << shared_constraintp->mChainLength << LL_ENDL; + LL_DEBUGS("BVH") << " constraint_type " << (S32)shared_constraintp->mConstraintType << LL_ENDL; + LL_DEBUGS("BVH") << " source_volume " << source_volume << LL_ENDL; + LL_DEBUGS("BVH") << " source_offset " << shared_constraintp->mSourceConstraintOffset << LL_ENDL; + LL_DEBUGS("BVH") << " target_volume " << target_volume << LL_ENDL; + LL_DEBUGS("BVH") << " target_offset " << shared_constraintp->mTargetConstraintOffset << LL_ENDL; + LL_DEBUGS("BVH") << " target_dir " << shared_constraintp->mTargetConstraintDir << LL_ENDL; + LL_DEBUGS("BVH") << " ease_in_start " << shared_constraintp->mEaseInStartTime << LL_ENDL; + LL_DEBUGS("BVH") << " ease_in_stop " << shared_constraintp->mEaseInStopTime << LL_ENDL; + LL_DEBUGS("BVH") << " ease_out_start " << shared_constraintp->mEaseOutStartTime << LL_ENDL; + LL_DEBUGS("BVH") << " ease_out_stop " << shared_constraintp->mEaseOutStopTime << LL_ENDL; } return success; @@ -1972,6 +2007,52 @@ U32 LLKeyframeMotion::getFileSize() } //----------------------------------------------------------------------------- +// FIXME BENTO TEMP +// dumpToFile() +//----------------------------------------------------------------------------- +void LLKeyframeMotion::dumpToFile(const std::string& name) +{ + if (isLoaded()) + { + std::string outfile_base; + if (!name.empty()) + { + outfile_base = name; + } + else if (!getName().empty()) + { + outfile_base = getName(); + } + else + { + const LLUUID& id = getID(); + outfile_base = id.asString(); + } + std::string outfilename = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,outfile_base + ".anim"); + if (LLFile::isfile(outfilename)) + { + return; + } + + S32 file_size = getFileSize(); + U8* buffer = new U8[file_size]; + + LL_DEBUGS("BVH") << "Dumping " << outfilename << LL_ENDL; + LLDataPackerBinaryBuffer dp(buffer, file_size); + if (serialize(dp)) + { + LLAPRFile outfile; + outfile.open(outfilename, LL_APR_WPB); + if (outfile.getFileHandle()) + { + outfile.write(buffer, file_size); + } + } + delete [] buffer; + } +} + +//----------------------------------------------------------------------------- // getPelvisBBox() //----------------------------------------------------------------------------- const LLBBoxLocal &LLKeyframeMotion::getPelvisBBox() @@ -2171,6 +2252,9 @@ void LLKeyframeMotion::onLoadComplete(LLVFS *vfs, if (motionp->deserialize(dp)) { motionp->mAssetStatus = ASSET_LOADED; + // FIXME BENTO TEMP + //motionp->dumpToFile(""); + } else { diff --git a/indra/llcharacter/llkeyframemotion.h b/indra/llcharacter/llkeyframemotion.h index b1422b2b90..f1fa56d731 100755 --- a/indra/llcharacter/llkeyframemotion.h +++ b/indra/llcharacter/llkeyframemotion.h @@ -153,6 +153,7 @@ public: BOOL serialize(LLDataPacker& dp) const; BOOL deserialize(LLDataPacker& dp); BOOL isLoaded() { return mJointMotionList != NULL; } + void dumpToFile(const std::string& name); // setters for modifying a keyframe animation diff --git a/indra/llcharacter/llmotion.cpp b/indra/llcharacter/llmotion.cpp index 4803f855de..2d646b4ed2 100755 --- a/indra/llcharacter/llmotion.cpp +++ b/indra/llcharacter/llmotion.cpp @@ -111,9 +111,14 @@ void LLMotion::addJointState(const LLPointer<LLJointState>& jointState) U32 usage = jointState->getUsage(); // for now, usage is everything - mJointSignature[0][jointState->getJoint()->getJointNum()] = (usage & LLJointState::POS) ? (0xff >> (7 - priority)) : 0; - mJointSignature[1][jointState->getJoint()->getJointNum()] = (usage & LLJointState::ROT) ? (0xff >> (7 - priority)) : 0; - mJointSignature[2][jointState->getJoint()->getJointNum()] = (usage & LLJointState::SCALE) ? (0xff >> (7 - priority)) : 0; + S32 joint_num = jointState->getJoint()->getJointNum(); + if ((joint_num >= (S32)LL_CHARACTER_MAX_JOINTS) || (joint_num < 0)) + { + LL_WARNS() << "joint_num " << joint_num << " is outside of legal range [0-" << LL_CHARACTER_MAX_JOINTS << ")" << LL_ENDL; + } + mJointSignature[0][joint_num] = (usage & LLJointState::POS) ? (0xff >> (7 - priority)) : 0; + mJointSignature[1][joint_num] = (usage & LLJointState::ROT) ? (0xff >> (7 - priority)) : 0; + mJointSignature[2][joint_num] = (usage & LLJointState::SCALE) ? (0xff >> (7 - priority)) : 0; } void LLMotion::setDeactivateCallback( void (*cb)(void *), void* userdata ) diff --git a/indra/llcharacter/llmotioncontroller.cpp b/indra/llcharacter/llmotioncontroller.cpp index e02b139608..a3532f9f9c 100755 --- a/indra/llcharacter/llmotioncontroller.cpp +++ b/indra/llcharacter/llmotioncontroller.cpp @@ -377,6 +377,14 @@ LLMotion* LLMotionController::createMotion( const LLUUID &id ) case LLMotion::STATUS_SUCCESS: // add motion to our list mLoadedMotions.insert(motion); + // BENTO TEMP + { + LLKeyframeMotion *km = dynamic_cast<LLKeyframeMotion*>(motion); + if (km) + { + //km->dumpToFile(""); + } + } break; default: LL_ERRS() << "Invalid initialization status" << LL_ENDL; @@ -577,6 +585,7 @@ void LLMotionController::updateMotionsByType(LLMotion::LLMotionBlendType anim_ty else { // NUM_JOINT_SIGNATURE_STRIDES should be multiple of 4 + // FIXME BENTO - think it's just the number of joints that needs to be a multiple of 4, not the number of strides. for (S32 i = 0; i < NUM_JOINT_SIGNATURE_STRIDES; i++) { U32 *current_signature = (U32*)&(mJointSignature[0][i * 4]); @@ -780,6 +789,14 @@ void LLMotionController::updateLoadingMotions() mLoadingMotions.erase(curiter); // add motion to our loaded motion list mLoadedMotions.insert(motionp); + // FIXME SO MUCH DUMP + { + LLKeyframeMotion *km = dynamic_cast<LLKeyframeMotion*>(motionp); + if (km) + { + km->dumpToFile(""); + } + } // this motion should be playing if (!motionp->isStopped()) { diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 16df27bb8e..08462c7834 100755 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -40,6 +40,545 @@ #include "llimagedxt.h" #include "llmemory.h" +#include <boost/preprocessor.hpp> + +//.................................................................................. +//.................................................................................. +// Helper macrose's for generate cycle unwrap templates +//.................................................................................. +#define _UNROL_GEN_TPL_arg_0(arg) +#define _UNROL_GEN_TPL_arg_1(arg) arg + +#define _UNROL_GEN_TPL_comma_0 +#define _UNROL_GEN_TPL_comma_1 BOOST_PP_COMMA() +//.................................................................................. +#define _UNROL_GEN_TPL_ARGS_macro(z,n,seq) \ + BOOST_PP_CAT(_UNROL_GEN_TPL_arg_, BOOST_PP_MOD(n, 2))(BOOST_PP_SEQ_ELEM(n, seq)) BOOST_PP_CAT(_UNROL_GEN_TPL_comma_, BOOST_PP_AND(BOOST_PP_MOD(n, 2), BOOST_PP_NOT_EQUAL(BOOST_PP_INC(n), BOOST_PP_SEQ_SIZE(seq)))) + +#define _UNROL_GEN_TPL_ARGS(seq) \ + BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(seq), _UNROL_GEN_TPL_ARGS_macro, seq) +//.................................................................................. + +#define _UNROL_GEN_TPL_TYPE_ARGS_macro(z,n,seq) \ + BOOST_PP_SEQ_ELEM(n, seq) BOOST_PP_CAT(_UNROL_GEN_TPL_comma_, BOOST_PP_AND(BOOST_PP_MOD(n, 2), BOOST_PP_NOT_EQUAL(BOOST_PP_INC(n), BOOST_PP_SEQ_SIZE(seq)))) + +#define _UNROL_GEN_TPL_TYPE_ARGS(seq) \ + BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(seq), _UNROL_GEN_TPL_TYPE_ARGS_macro, seq) +//.................................................................................. +#define _UNROLL_GEN_TPL_foreach_ee(z, n, seq) \ + executor<n>(_UNROL_GEN_TPL_ARGS(seq)); + +#define _UNROLL_GEN_TPL(name, args_seq, operation, spec) \ + template<> struct name<spec> { \ + private: \ + template<S32 _idx> inline void executor(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { \ + BOOST_PP_SEQ_ENUM(operation) ; \ + } \ + public: \ + inline void operator()(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { \ + BOOST_PP_REPEAT(spec, _UNROLL_GEN_TPL_foreach_ee, args_seq) \ + } \ +}; +//.................................................................................. +#define _UNROLL_GEN_TPL_foreach_seq_macro(r, data, elem) \ + _UNROLL_GEN_TPL(BOOST_PP_SEQ_ELEM(0, data), BOOST_PP_SEQ_ELEM(1, data), BOOST_PP_SEQ_ELEM(2, data), elem) + +#define UNROLL_GEN_TPL(name, args_seq, operation, spec_seq) \ + /*general specialization - should not be implemented!*/ \ + template<U8> struct name { inline void operator()(_UNROL_GEN_TPL_TYPE_ARGS(args_seq)) { /*static_assert(!"Should not be instantiated.");*/ } }; \ + BOOST_PP_SEQ_FOR_EACH(_UNROLL_GEN_TPL_foreach_seq_macro, (name)(args_seq)(operation), spec_seq) +//.................................................................................. +//.................................................................................. + + +//.................................................................................. +// Generated unrolling loop templates with specializations +//.................................................................................. +//example: for(c = 0; c < ch; ++c) comp[c] = cx[0] = 0; +UNROLL_GEN_TPL(uroll_zeroze_cx_comp, (S32 *)(cx)(S32 *)(comp), (cx[_idx] = comp[_idx] = 0), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] >>= 4; +UNROLL_GEN_TPL(uroll_comp_rshftasgn_constval, (S32 *)(comp)(const S32)(cval), (comp[_idx] >>= cval), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = (cx[c] >> 5) * yap; +UNROLL_GEN_TPL(uroll_comp_asgn_cx_rshft_cval_all_mul_val, (S32 *)(comp)(S32 *)(cx)(const S32)(cval)(S32)(val), (comp[_idx] = (cx[_idx] >> cval) * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * Cy; +UNROLL_GEN_TPL(uroll_comp_plusasgn_cx_rshft_cval_all_mul_val, (S32 *)(comp)(S32 *)(cx)(const S32)(cval)(S32)(val), (comp[_idx] += (cx[_idx] >> cval) * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] += pix[c] * info.xapoints[x]; +UNROLL_GEN_TPL(uroll_inp_plusasgn_pix_mul_val, (S32 *)(comp)(const U8 *)(pix)(S32)(val), (comp[_idx] += pix[_idx] * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) cx[c] = pix[c] * info.xapoints[x]; +UNROLL_GEN_TPL(uroll_inp_asgn_pix_mul_val, (S32 *)(comp)(const U8 *)(pix)(S32)(val), (comp[_idx] = pix[_idx] * val), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = ((cx[c] * info.yapoints[y]) + (comp[c] * (256 - info.yapoints[y]))) >> 16; +UNROLL_GEN_TPL(uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r, (S32 *)(comp)(S32 *)(cx)(S32)(apoint), (comp[_idx] = ((cx[_idx] * apoint) + (comp[_idx] * (256 - apoint))) >> 16), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = (comp[c] + pix[c] * info.yapoints[y]) >> 8; +UNROLL_GEN_TPL(uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r, (S32 *)(comp)(const U8 *)(pix)(S32)(apoint), (comp[_idx] = (comp[_idx] + pix[_idx] * apoint) >> 8), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) comp[c] = ((comp[c]*(256 - info.xapoints[x])) + ((cx[c] * info.xapoints[x]))) >> 12; +UNROLL_GEN_TPL(uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r, (S32 *)(comp)(S32)(apoint)(S32 *)(cx), (comp[_idx] = ((comp[_idx] * (256-apoint)) + (cx[_idx] * apoint)) >> 12), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = comp[c]&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_comp_and_ff, (U8 *&)(dptr)(S32 *)(comp), (*dptr++ = comp[_idx]&0xff), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = (sptr[info.xpoints[x]*ch + c])&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff, (U8 *&)(dptr)(const U8 *)(sptr)(S32)(apoint), (*dptr++ = sptr[apoint + _idx]&0xff), (1)(3)(4)); +//example: for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; +UNROLL_GEN_TPL(uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff, (U8 *&)(dptr)(S32 *)(comp)(const S32)(cval), (*dptr++ = (comp[_idx]>>cval)&0xff), (1)(3)(4)); +//.................................................................................. + + +template<U8 ch> +struct scale_info +{ +public: + std::vector<S32> xpoints; + std::vector<const U8*> ystrides; + std::vector<S32> xapoints, yapoints; + S32 xup_yup; + +public: + //unrolling loop types declaration + typedef uroll_zeroze_cx_comp<ch> uroll_zeroze_cx_comp_t; + typedef uroll_comp_rshftasgn_constval<ch> uroll_comp_rshftasgn_constval_t; + typedef uroll_comp_asgn_cx_rshft_cval_all_mul_val<ch> uroll_comp_asgn_cx_rshft_cval_all_mul_val_t; + typedef uroll_comp_plusasgn_cx_rshft_cval_all_mul_val<ch> uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t; + typedef uroll_inp_plusasgn_pix_mul_val<ch> uroll_inp_plusasgn_pix_mul_val_t; + typedef uroll_inp_asgn_pix_mul_val<ch> uroll_inp_asgn_pix_mul_val_t; + typedef uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r<ch> uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r_t; + typedef uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r<ch> uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t; + typedef uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r<ch> uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t; + typedef uroll_uref_dptr_inc_asgn_comp_and_ff<ch> uroll_uref_dptr_inc_asgn_comp_and_ff_t; + typedef uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff<ch> uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff_t; + typedef uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff<ch> uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t; + +public: + scale_info(const U8 *src, U32 srcW, U32 srcH, U32 dstW, U32 dstH, U32 srcStride) + : xup_yup((dstW >= srcW) + ((dstH >= srcH) << 1)) + { + calc_x_points(srcW, dstW); + calc_y_strides(src, srcStride, srcH, dstH); + calc_aa_points(srcW, dstW, xup_yup&1, xapoints); + calc_aa_points(srcH, dstH, xup_yup&2, yapoints); + } + +private: + //........................................................................................... + void calc_x_points(U32 srcW, U32 dstW) + { + xpoints.resize(dstW+1); + + S32 val = dstW >= srcW ? 0x8000 * srcW / dstW - 0x8000 : 0; + S32 inc = (srcW << 16) / dstW; + + for(U32 i = 0, j = 0; i < dstW; ++i, ++j, val += inc) + { + xpoints[j] = llmax(0, val >> 16); + } + } + //........................................................................................... + void calc_y_strides(const U8 *src, U32 srcStride, U32 srcH, U32 dstH) + { + ystrides.resize(dstH+1); + + S32 val = dstH >= srcH ? 0x8000 * srcH / dstH - 0x8000 : 0; + S32 inc = (srcH << 16) / dstH; + + for(U32 i = 0, j = 0; i < dstH; ++i, ++j, val += inc) + { + ystrides[j] = src + llmax(0, val >> 16) * srcStride; + } + } + //........................................................................................... + void calc_aa_points(U32 srcSz, U32 dstSz, bool scale_up, std::vector<S32> &vp) + { + vp.resize(dstSz); + + if(scale_up) + { + S32 val = 0x8000 * srcSz / dstSz - 0x8000; + S32 inc = (srcSz << 16) / dstSz; + U32 pos; + + for(U32 i = 0, j = 0; i < dstSz; ++i, ++j, val += inc) + { + pos = val >> 16; + + if (pos >= (srcSz - 1)) + vp[j] = 0; + else + vp[j] = (val >> 8) - ((val >> 8) & 0xffffff00); + } + } + else + { + S32 inc = (srcSz << 16) / dstSz; + S32 Cp = ((dstSz << 14) / srcSz) + 1; + S32 ap; + + for(U32 i = 0, j = 0, val = 0; i < dstSz; ++i, ++j, val += inc) + { + ap = ((0x100 - ((val >> 8) & 0xff)) * Cp) >> 8; + vp[j] = ap | (Cp << 16); + } + } + } +}; + + +template<U8 ch> +inline void bilinear_scale( + const U8 *src, U32 srcW, U32 srcH, U32 srcStride + , U8 *dst, U32 dstW, U32 dstH, U32 dstStride + ) +{ + typedef scale_info<ch> scale_info_t; + + scale_info_t info(src, srcW, srcH, dstW, dstH, srcStride); + + const U8 *sptr; + U8 *dptr; + U32 x, y; + const U8 *pix; + + S32 cx[ch], comp[ch]; + + + if(3 == info.xup_yup) + { //scale x/y - up + for(y = 0; y < dstH; ++y) + { + dptr = dst + (y * dstStride); + sptr = info.ystrides[y]; + + if(0 < info.yapoints[y]) + { + for(x = 0; x < dstW; ++x) + { + //for(c = 0; c < ch; ++c) cx[c] = comp[c] = 0; + typename scale_info_t::uroll_zeroze_cx_comp_t()(cx, comp); + + if(0 < info.xapoints[x]) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * (256 - info.xapoints[x]); + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256 - info.xapoints[x]); + + pix += ch; + + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * info.xapoints[x]; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, info.xapoints[x]); + + pix += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * info.xapoints[x]; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, info.xapoints[x]); + + pix -= ch; + + //for(c = 0; c < ch; ++c) { + // cx[c] += pix[c] * (256 - info.xapoints[x]); + // comp[c] = ((cx[c] * info.yapoints[y]) + (comp[c] * (256 - info.yapoints[y]))) >> 16; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, 256 - info.xapoints[x]); + typename scale_info_t::uroll_comp_asgn_cx_mul_apoint_plus_comp_mul_inv_apoint_allshifted_16_r_t()(comp, cx, info.yapoints[y]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + else + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * (256 - info.yapoints[y]); + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256-info.yapoints[y]); + + pix += srcStride; + + //for(c = 0; c < ch; ++c) { + // comp[c] = (comp[c] + pix[c] * info.yapoints[y]) >> 8; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t()(comp, pix, info.yapoints[y]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + } + } + else + { + for(x = 0; x < dstW; ++x) + { + if(0 < info.xapoints[x]) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) { + // comp[c] = pix[c] * (256 - info.xapoints[x]); + // comp[c] = (comp[c] + pix[c] * info.xapoints[x]) >> 8; + // *dptr++ = comp[c]&0xff; + //} + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, 256 - info.xapoints[x]); + typename scale_info_t::uroll_comp_asgn_comp_plus_pix_mul_apoint_allshifted_8_r_t()(comp, pix, info.xapoints[x]); + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_and_ff_t()(dptr, comp); + } + else + { + //for(c = 0; c < ch; ++c) *dptr++ = (sptr[info.xpoints[x]*ch + c])&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_sptr_apoint_plus_idx_alland_ff_t()(dptr, sptr, info.xpoints[x]*ch); + } + } + } + } + } + else if(info.xup_yup == 1) + { //scaling down vertically + S32 Cy, j; + S32 yap; + + for(y = 0; y < dstH; y++) + { + Cy = info.yapoints[y] >> 16; + yap = info.yapoints[y] & 0xffff; + + dptr = dst + (y * dstStride); + + for(x = 0; x < dstW; x++) + { + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * yap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, yap); + + pix += srcStride; + + for(j = (1 << 14) - yap; j > Cy; j -= Cy, pix += srcStride) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * Cy; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, Cy); + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, j); + } + + if(info.xapoints[x] > 0) + { + pix = info.ystrides[y] + info.xpoints[x]*ch + ch; + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * yap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, yap); + + pix += srcStride; + for(j = (1 << 14) - yap; j > Cy; j -= Cy) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cy; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cy); + pix += srcStride; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, j); + } + + //for(c = 0; c < ch; ++c) comp[c] = ((comp[c]*(256 - info.xapoints[x])) + ((cx[c] * info.xapoints[x]))) >> 12; + typename scale_info_t::uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t()(comp, info.xapoints[x], cx); + } + else + { + //for(c = 0; c < ch; ++c) comp[c] >>= 4; + typename scale_info_t::uroll_comp_rshftasgn_constval_t()(comp, 4); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 10); + } + } + } + else if(info.xup_yup == 2) + { // scaling down horizontally + S32 Cx, j; + S32 xap; + + for(y = 0; y < dstH; y++) + { + dptr = dst + (y * dstStride); + + for(x = 0; x < dstW; x++) + { + Cx = info.xapoints[x] >> 16; + xap = info.xapoints[x] & 0xffff; + + pix = info.ystrides[y] + info.xpoints[x] * ch; + + //for(c = 0; c < ch; ++c) comp[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(comp, pix, xap); + + pix+=ch; + for(j = (1 << 14) - xap; j > Cx; j -= Cx) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, Cx); + pix+=ch; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) comp[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(comp, pix, j); + } + + if(info.yapoints[y] > 0) + { + pix = info.ystrides[y] + info.xpoints[x]*ch + srcStride; + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(j = (1 << 14) - xap; j > Cx; j -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(j > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * j; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, j); + } + + //for(c = 0; c < ch; ++c) comp[c] = ((comp[c] * (256 - info.yapoints[y])) + ((cx[c] * info.yapoints[y]))) >> 12; + typename scale_info_t::uroll_comp_asgn_comp_mul_inv_apoint_plus_cx_mul_apoint_allshifted_12_r_t()(comp, info.yapoints[y], cx); + } + else + { + //for(c = 0; c < ch; ++c) comp[c] >>= 4; + typename scale_info_t::uroll_comp_rshftasgn_constval_t()(comp, 4); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>10)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 10); + } + } + } + else + { //scale x/y - down + S32 Cx, Cy, i, j; + S32 xap, yap; + + for(y = 0; y < dstH; y++) + { + Cy = info.yapoints[y] >> 16; + yap = info.yapoints[y] & 0xffff; + + dptr = dst + (y * dstStride); + for(x = 0; x < dstW; x++) + { + Cx = info.xapoints[x] >> 16; + xap = info.xapoints[x] & 0xffff; + + sptr = info.ystrides[y] + info.xpoints[x] * ch; + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] = (cx[c] >> 5) * yap; + typename scale_info_t::uroll_comp_asgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, yap); + + for(j = (1 << 14) - yap; j > Cy; j -= Cy) + { + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * Cy; + typename scale_info_t::uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, Cy); + } + + if(j > 0) + { + pix = sptr; + sptr += srcStride; + + //for(c = 0; c < ch; ++c) cx[c] = pix[c] * xap; + typename scale_info_t::uroll_inp_asgn_pix_mul_val_t()(cx, pix, xap); + + pix+=ch; + for(i = (1 << 14) - xap; i > Cx; i -= Cx) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * Cx; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, Cx); + pix+=ch; + } + + if(i > 0) + { + //for(c = 0; c < ch; ++c) cx[c] += pix[c] * i; + typename scale_info_t::uroll_inp_plusasgn_pix_mul_val_t()(cx, pix, i); + } + + //for(c = 0; c < ch; ++c) comp[c] += (cx[c] >> 5) * j; + typename scale_info_t::uroll_comp_plusasgn_cx_rshft_cval_all_mul_val_t()(comp, cx, 5, j); + } + + //for(c = 0; c < ch; ++c) *dptr++ = (comp[c]>>23)&0xff; + typename scale_info_t::uroll_uref_dptr_inc_asgn_comp_rshft_cval_and_ff_t()(dptr, comp, 23); + } + } + } //else +} + +//wrapper +static void bilinear_scale(const U8 *src, U32 srcW, U32 srcH, U32 srcCh, U32 srcStride, U8 *dst, U32 dstW, U32 dstH, U32 dstCh, U32 dstStride) +{ + llassert(srcCh == dstCh); + + switch(srcCh) + { + case 1: + bilinear_scale<1>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + case 3: + bilinear_scale<3>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + case 4: + bilinear_scale<4>(src, srcW, srcH, srcStride, dst, dstW, dstH, dstStride); + break; + default: + llassert(!"Implement if need"); + break; + } + +} + //--------------------------------------------------------------------------- // LLImage //--------------------------------------------------------------------------- @@ -559,6 +1098,7 @@ void LLImageRaw::composite( LLImageRaw* src ) } } + // Src and dst can be any size. Src has 4 components. Dst has 3 components. void LLImageRaw::compositeScaled4onto3(LLImageRaw* src) { @@ -589,21 +1129,6 @@ void LLImageRaw::compositeScaled4onto3(LLImageRaw* src) // Src and dst are same size. Src has 4 components. Dst has 3 components. void LLImageRaw::compositeUnscaled4onto3( LLImageRaw* src ) { - /* - //test fastFractionalMult() - { - U8 i = 255; - U8 j = 255; - do - { - do - { - llassert( fastFractionalMult(i, j) == (U8)(255*(i/255.f)*(j/255.f) + 0.5f) ); - } while( j-- ); - } while( i-- ); - } - */ - LLImageRaw* dst = this; // Just for clarity. llassert( (3 == src->getComponents()) || (4 == src->getComponents()) ); @@ -639,6 +1164,7 @@ void LLImageRaw::compositeUnscaled4onto3( LLImageRaw* src ) } } + void LLImageRaw::copyUnscaledAlphaMask( LLImageRaw* src, const LLColor4U& fill) { LLImageRaw* dst = this; // Just for clarity. @@ -846,6 +1372,12 @@ void LLImageRaw::copyScaled( LLImageRaw* src ) return; } + bilinear_scale( + src->getData(), src->getWidth(), src->getHeight(), src->getComponents(), src->getWidth()*src->getComponents() + , dst->getData(), dst->getWidth(), dst->getHeight(), dst->getComponents(), dst->getWidth()*dst->getComponents() + ); + + /* S32 temp_data_size = src->getWidth() * dst->getHeight() * getComponents(); llassert_always(temp_data_size > 0); std::vector<U8> temp_buffer(temp_data_size); @@ -861,6 +1393,7 @@ void LLImageRaw::copyScaled( LLImageRaw* src ) { copyLineScaled( &temp_buffer[0] + (getComponents() * src->getWidth() * row), dst->getData() + (getComponents() * dst->getWidth() * row), src->getWidth(), dst->getWidth(), 1, 1 ); } + */ } @@ -880,6 +1413,7 @@ BOOL LLImageRaw::scale( S32 new_width, S32 new_height, BOOL scale_image_data ) if (scale_image_data) { + /* S32 temp_data_size = old_width * new_height * getComponents(); llassert_always(temp_data_size > 0); std::vector<U8> temp_buffer(temp_data_size); @@ -899,6 +1433,19 @@ BOOL LLImageRaw::scale( S32 new_width, S32 new_height, BOOL scale_image_data ) { copyLineScaled( &temp_buffer[0] + (getComponents() * old_width * row), new_buffer + (getComponents() * new_width * row), old_width, new_width, 1, 1 ); } + */ + + S32 new_data_size = new_width * new_height * getComponents(); + llassert_always(new_data_size > 0); + + U8 *new_data = (U8*)ALLOCATE_MEM(LLImageBase::getPrivatePool(), new_data_size); + if(NULL == new_data) + { + return FALSE; + } + + bilinear_scale(getData(), old_width, old_height, getComponents(), old_width*getComponents(), new_data, new_width, new_height, getComponents(), new_width*getComponents()); + setDataAndSize(new_data, new_width, new_height, getComponents()); } else { diff --git a/indra/llmessage/llassetstorage.cpp b/indra/llmessage/llassetstorage.cpp index 8ba2535531..61663e1982 100755 --- a/indra/llmessage/llassetstorage.cpp +++ b/indra/llmessage/llassetstorage.cpp @@ -633,6 +633,10 @@ void LLAssetStorage::downloadCompleteCallback( vfile.remove(); } } + + // we will be deleting elements of mPendingDownloads which req might be part of, save id and type for reference + LLUUID callback_id = req->getUUID(); + LLAssetType::EType callback_type = req->getType(); // find and callback ALL pending requests for this UUID // SJB: We process the callbacks in reverse order, I do not know if this is important, @@ -660,7 +664,7 @@ void LLAssetStorage::downloadCompleteCallback( { add(sFailedDownloadCount, 1); } - tmp->mDownCallback(gAssetStorage->mVFS, req->getUUID(), req->getType(), tmp->mUserData, result, ext_status); + tmp->mDownCallback(gAssetStorage->mVFS, callback_id, callback_type, tmp->mUserData, result, ext_status); } delete tmp; } diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index 1571427d51..ed903146ef 100755 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -316,6 +316,14 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector<LLVolumeFace>& fa if (indices.size()%3 == 0 && verts.size() >= 65532) { + std::string material; + + if (tri->getMaterial()) + { + material = std::string(tri->getMaterial()); + } + + materials.push_back(material); face_list.push_back(face); face_list.rbegin()->fillFromLegacyData(verts, indices); LLVolumeFace& new_face = *face_list.rbegin(); @@ -587,6 +595,14 @@ LLModel::EModelStatus load_face_from_dom_polylist(std::vector<LLVolumeFace>& fac if (indices.size()%3 == 0 && indices.size() >= 65532) { + std::string material; + + if (poly->getMaterial()) + { + material = std::string(poly->getMaterial()); + } + + materials.push_back(material); face_list.push_back(face); face_list.rbegin()->fillFromLegacyData(verts, indices); LLVolumeFace& new_face = *face_list.rbegin(); diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 3ceed95248..f9f7d07c89 100755 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -722,10 +722,77 @@ BOOL LLGLSLShader::mapUniforms(const vector<LLStaticHashedString> * uniforms) GLint activeCount; glGetObjectParameterivARB(mProgramObject, GL_OBJECT_ACTIVE_UNIFORMS_ARB, &activeCount); + //........................................................................................................................................ + //........................................................................................ + + /* + EXPLANATION: + This is part of code is temporary because as the final result the mapUniform() should be rewrited. + But it's a huge a volume of work which is need to be a more carefully performed for avoid possible + regression's (i.e. it should be formalized a separate ticket in JIRA). + + RESON: + The reason of this code is that SL engine is very sensitive to fact that "diffuseMap" should be appear + first as uniform parameter which is should get 0-"texture channel" index (see mapUniformTextureChannel() and mActiveTextureChannels) + it influence to which is texture matrix will be updated during rendering. + + But, order of indexe's of uniform variables is not defined and GLSL compiler can change it as want + , even if the "diffuseMap" will be appear and use first in shader code. + + As example where this situation appear see: "Deferred Material Shader 28/29/30/31" + And tickets: MAINT-4165, MAINT-4839 + */ + + + S32 diffuseMap = glGetUniformLocationARB(mProgramObject, "diffuseMap"); + S32 bumpMap = glGetUniformLocationARB(mProgramObject, "bumpMap"); + + std::set<S32> skip_index; + + if(diffuseMap != -1 && bumpMap != -1) + { + GLenum type; + GLsizei length; + GLint size = -1; + char name[1024]; + + //diffuse map + for (S32 i = 0; i < activeCount; i++) + { + name[0] = 0; + + glGetActiveUniformARB(mProgramObject, i, 1024, &length, &size, &type, (GLcharARB *)name); + + if(std::string(name) == "diffuseMap") { + diffuseMap = i; + } + + if(std::string(name) == "bumpMap") { + bumpMap = i; + } + } + + if(bumpMap < diffuseMap) + { + mapUniform(diffuseMap, uniforms); + mapUniform(bumpMap, uniforms); + + skip_index.insert(diffuseMap); + skip_index.insert(bumpMap); + } + } + + //........................................................................................ + for (S32 i = 0; i < activeCount; i++) { + //........................................................................................ + if(skip_index.end() != skip_index.find(i)) continue; + //........................................................................................ + mapUniform(i, uniforms); } + //........................................................................................................................................ unbind(); diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 1ca6e99ecf..69420dd0bb 100755 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -104,10 +104,10 @@ LLTexUnit::LLTexUnit(S32 index) mCurrColorSrc1(TBS_TEX_COLOR), mCurrColorSrc2(TBS_PREV_COLOR), mCurrAlphaSrc1(TBS_TEX_ALPHA), mCurrAlphaSrc2(TBS_PREV_ALPHA), mCurrColorScale(1), mCurrAlphaScale(1), mCurrTexture(0), - mHasMipMaps(false) + mHasMipMaps(false), + mIndex(index) { llassert_always(index < (S32)LL_NUM_TEXTURE_LAYERS); - mIndex = index; } //static @@ -227,33 +227,34 @@ bool LLTexUnit::bind(LLTexture* texture, bool for_rendering, bool forceBind) stop_glerror(); if (mIndex >= 0) { - gGL.flush(); + gGL.flush(); + + LLImageGL* gl_tex = NULL ; - LLImageGL* gl_tex = NULL ; if (texture != NULL && (gl_tex = texture->getGLTexture())) - { - if (gl_tex->getTexName()) //if texture exists - { - //in audit, replace the selected texture by the default one. - if ((mCurrTexture != gl_tex->getTexName()) || forceBind) - { - activate(); - enable(gl_tex->getTarget()); - mCurrTexture = gl_tex->getTexName(); - glBindTexture(sGLTextureType[gl_tex->getTarget()], mCurrTexture); - if(gl_tex->updateBindStats(gl_tex->mTextureMemory)) - { - texture->setActive() ; - texture->updateBindStatsForTester() ; - } - mHasMipMaps = gl_tex->mHasMipMaps; - if (gl_tex->mTexOptionsDirty) { - gl_tex->mTexOptionsDirty = false; - setTextureAddressMode(gl_tex->mAddressMode); - setTextureFilteringOption(gl_tex->mFilterOption); - } - } + if (gl_tex->getTexName()) //if texture exists + { + //in audit, replace the selected texture by the default one. + if ((mCurrTexture != gl_tex->getTexName()) || forceBind) + { + activate(); + enable(gl_tex->getTarget()); + mCurrTexture = gl_tex->getTexName(); + glBindTexture(sGLTextureType[gl_tex->getTarget()], mCurrTexture); + if(gl_tex->updateBindStats(gl_tex->mTextureMemory)) + { + texture->setActive() ; + texture->updateBindStatsForTester() ; + } + mHasMipMaps = gl_tex->mHasMipMaps; + if (gl_tex->mTexOptionsDirty) + { + gl_tex->mTexOptionsDirty = false; + setTextureAddressMode(gl_tex->mAddressMode); + setTextureFilteringOption(gl_tex->mFilterOption); + } + } } else { diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 42b02a8159..a67fb8da52 100755 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -198,7 +198,7 @@ public: void setHasMipMaps(bool hasMips) { mHasMipMaps = hasMips; } protected: - S32 mIndex; + const S32 mIndex; U32 mCurrTexture; eTextureType mCurrTexType; eTextureBlendType mCurrBlendType; diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index b32aea5ffa..559895da1a 100755 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -443,6 +443,7 @@ void LLComboBox::onFocusLost() { mTextEntry->selectAll(); } + mButton->setForcePressedState(false); LLUICtrl::onFocusLost(); } diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 4b08798892..701a06a085 100755 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -1775,6 +1775,11 @@ void LLTabContainer::onNextBtn( const LLSD& data ) scrollNext(); } mScrolled = FALSE; + + if(mCurrentTabIdx < mTabList.size()-1) + { + selectNextTab(); + } } void LLTabContainer::onNextBtnHeld( const LLSD& data ) @@ -1783,6 +1788,11 @@ void LLTabContainer::onNextBtnHeld( const LLSD& data ) { mScrollTimer.reset(); scrollNext(); + + if(mCurrentTabIdx < mTabList.size()-1) + { + selectNextTab(); + } mScrolled = TRUE; } } @@ -1794,6 +1804,11 @@ void LLTabContainer::onPrevBtn( const LLSD& data ) scrollPrev(); } mScrolled = FALSE; + + if(mCurrentTabIdx > 0) + { + selectPrevTab(); + } } void LLTabContainer::onJumpFirstBtn( const LLSD& data ) @@ -1812,6 +1827,11 @@ void LLTabContainer::onPrevBtnHeld( const LLSD& data ) { mScrollTimer.reset(); scrollPrev(); + + if(mCurrentTabIdx > 0) + { + selectPrevTab(); + } mScrolled = TRUE; } } diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index cd2be87fad..7e0eb9cf31 100755 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -2292,6 +2292,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ sHandleLeftMouseUp = true; break; } + sHandleDoubleClick = true; //if (gDebugClicks) //{ diff --git a/indra/newview/VIEWER_VERSION.txt b/indra/newview/VIEWER_VERSION.txt index 269aa9c86d..ff313b8c21 100644 --- a/indra/newview/VIEWER_VERSION.txt +++ b/indra/newview/VIEWER_VERSION.txt @@ -1 +1 @@ -3.8.3 +3.8.4 diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index b4eb60c6a3..15766b1bba 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3459,6 +3459,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MinObjectsForUnlinkConfirm</key> + <map> + <key>Comment</key> + <string>Minimum amount of objects in linkset for showing confirmation dialog</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>6</integer> + </map> <key>EffectScriptChatParticles</key> <map> <key>Comment</key> @@ -10589,6 +10600,28 @@ <key>Value</key> <integer>0</integer> </map> + <key>SkeletonFileName</key> + <map> + <key>Comment</key> + <string>Alternative skeleton file name</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>avatar_skeleton.xml</string> + </map> + <key>AvatarFileName</key> + <map> + <key>Comment</key> + <string>Alternative avatar file name</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>avatar_lad.xml</string> + </map> <key>ShowAdvancedGraphicsSettings</key> <map> <key>Comment</key> @@ -14164,6 +14197,17 @@ <key>Value</key> <integer>-1</integer> </map> + <key>MaxFPS</key> + <map> + <key>Comment</key> + <string>Yield some time to the local host if we reach a threshold framerate.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>-1.0</real> + </map> <key>ForcePeriodicRenderingTime</key> <map> <key>Comment</key> diff --git a/indra/newview/app_settings/toolbars.xml b/indra/newview/app_settings/toolbars.xml index d61aee9a14..36e4eb91fd 100755 --- a/indra/newview/app_settings/toolbars.xml +++ b/indra/newview/app_settings/toolbars.xml @@ -23,4 +23,7 @@ <command name="snapshot"/> <command name="facebook"/> </left_toolbar> + <right_toolbar + button_display_mode="icons_only"> + </right_toolbar> </toolbars> diff --git a/indra/newview/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index 9ec6428ee6..ac0b8b5704 100755 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -413,6 +413,116 @@ rotation="0 0 0" visible_in_first_person="true" /> + <attachment_point + id="41" + group="6" + pie_slice="2" + name="L Wing Shoulder" + joint="mLeftWingShoulder" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="42" + group="6" + pie_slice="2" + name="L Wing Elbow" + joint="mLeftWingElbow" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="43" + group="6" + pie_slice="2" + name="L Wing Wrist" + joint="mLeftWingWrist" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="44" + group="6" + pie_slice="2" + name="L Wing Tip" + joint="mLeftWingTip" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="45" + group="6" + pie_slice="2" + name="R Wing Shoulder" + joint="mRightWingShoulder" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="46" + group="6" + pie_slice="2" + name="R Wing Elbow" + joint="mRightWingElbow" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="47" + group="6" + pie_slice="2" + name="R Wing Wrist" + joint="mRightWingWrist" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="48" + group="6" + pie_slice="2" + name="R Wing Tip" + joint="mRightWingTip" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="49" + group="6" + pie_slice="2" + name="Tail 1" + joint="mTail_1" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="50" + group="6" + pie_slice="2" + name="Tail 2" + joint="mTail_2" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="51" + group="6" + pie_slice="2" + name="Tail 3" + joint="mTail_3" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + <param id="32" group="1" diff --git a/indra/newview/character/avatar_lad_orig.xml b/indra/newview/character/avatar_lad_orig.xml new file mode 100644 index 0000000000..9ec6428ee6 --- /dev/null +++ b/indra/newview/character/avatar_lad_orig.xml @@ -0,0 +1,12505 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_avatar + version="1.0" wearable_definition_version="22"> + <!-- The wearable_definition_version is checked during asset upload. --> + <!-- If you increment it, check indra/lib/python/indra/assetutil.py. --> + <skeleton + file_name="avatar_skeleton.xml"> + <attachment_point + id="1" + group="6" + pie_slice="2" + name="Chest" + joint="mChest" + position="0.15 0 -0.1" + rotation="0 90 90" + visible_in_first_person="true" /> + + <attachment_point + id="2" + group="2" + pie_slice="2" + name="Skull" + joint="mHead" + position="0 0 0.15" + rotation="0 0 90" + visible_in_first_person="false" /> + + <attachment_point + id="3" + group="3" + pie_slice="3" + name="Left Shoulder" + joint="mCollarLeft" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="4" + group="1" + pie_slice="1" + name="Right Shoulder" + joint="mCollarRight" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="5" + group="4" + name="Left Hand" + joint="mWristLeft" + position="0 0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="6" + group="0" + name="Right Hand" + joint="mWristRight" + position="0 -0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="7" + group="5" + pie_slice="6" + name="Left Foot" + joint="mFootLeft" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="8" + group="7" + pie_slice="6" + name="Right Foot" + joint="mFootRight" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="9" + group="6" + pie_slice="7" + name="Spine" + joint="mChest" + position="-0.15 0 -0.1" + rotation="0 -90 90" + visible_in_first_person="true" /> + + <attachment_point + id="10" + group="6" + pie_slice="6" + name="Pelvis" + joint="mPelvis" + position="0 0 -0.15" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="11" + group="2" + pie_slice="6" + name="Mouth" + joint="mHead" + position="0.12 0 0.001" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="12" + group="2" + pie_slice="7" + name="Chin" + joint="mHead" + position="0.12 0 -0.04" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="13" + group="2" + pie_slice="4" + name="Left Ear" + joint="mHead" + position="0.015 0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="14" + group="2" + pie_slice="0" + name="Right Ear" + joint="mHead" + position="0.015 -0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="15" + group="2" + pie_slice="3" + name="Left Eyeball" + joint="mEyeLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="16" + group="2" + pie_slice="1" + name="Right Eyeball" + joint="mEyeRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="17" + group="2" + pie_slice="5" + name="Nose" + joint="mHead" + position="0.1 0 0.05" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="18" + group="1" + pie_slice="0" + name="R Upper Arm" + joint="mShoulderRight" + position="0.01 -0.13 0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="19" + group="1" + pie_slice="7" + name="R Forearm" + joint="mElbowRight" + position="0 -0.12 0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="20" + group="3" + pie_slice="4" + name="L Upper Arm" + joint="mShoulderLeft" + position="0.01 0.15 -0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="21" + group="3" + pie_slice="5" + name="L Forearm" + joint="mElbowLeft" + position="0 0.113 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="22" + group="7" + pie_slice="1" + name="Right Hip" + joint="mHipRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="23" + group="7" + pie_slice="0" + name="R Upper Leg" + joint="mHipRight" + position="-0.017 0.041 -0.310" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="24" + group="7" + pie_slice="7" + name="R Lower Leg" + joint="mKneeRight" + position="-0.044 -0.007 -0.262" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="25" + group="5" + pie_slice="3" + name="Left Hip" + joint="mHipLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="26" + group="5" + pie_slice="4" + name="L Upper Leg" + joint="mHipLeft" + position="-0.019 -0.034 -0.310" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="27" + group="5" + pie_slice="5" + name="L Lower Leg" + joint="mKneeLeft" + position="-0.044 -0.007 -0.261" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="28" + group="6" + pie_slice="5" + name="Stomach" + joint="mPelvis" + position="0.092 0.0 0.088" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="29" + group="6" + pie_slice="3" + name="Left Pec" + joint="mTorso" + position="0.104 0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="30" + group="6" + pie_slice="1" + name="Right Pec" + joint="mTorso" + position="0.104 -0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="31" + group="8" + name="Center 2" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="32" + group="8" + name="Top Right" + joint="mScreen" + position="0 -0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="33" + group="8" + name="Top" + joint="mScreen" + position="0 0 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="34" + group="8" + name="Top Left" + joint="mScreen" + position="0 0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="35" + group="8" + name="Center" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="36" + group="8" + name="Bottom Left" + joint="mScreen" + position="0 0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="37" + group="8" + name="Bottom" + joint="mScreen" + position="0 0 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="38" + group="8" + name="Bottom Right" + joint="mScreen" + position="0 -0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="39" + group="6" + pie_slice="1" + name="Neck" + joint="mNeck" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="40" + group="6" + pie_slice="2" + name="Avatar Center" + joint="mRoot" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <param + id="32" + group="1" + wearable="shape" + name="Male_Skeleton" + label_min="Female" + label_max="Male" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .2" /> + + <bone + name="mCollarLeft" + scale="0 .4 0" /> + + <bone + name="mCollarRight" + scale="0 .4 0" /> + + <bone + name="mShoulderLeft" + scale="0 .35 0" /> + + <bone + name="mShoulderRight" + scale="0 .35 0" /> + + <bone + name="mElbowLeft" + scale="0 .1 0" /> + + <bone + name="mElbowRight" + scale="0 .1 0" /> + + <bone + name="mChest" + scale=".05 .05 .05" /> + + <bone + name="mTorso" + scale="0 0 .05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale=".05 .05 0" /> + + <bone + name="mHipRight" + scale=".05 .05 0" /> + + <bone + name="mKneeLeft" + scale=".05 .05 .1" /> + + <bone + name="mKneeRight" + scale=".05 .05 .1" /> + </param_skeleton> + </param> + + <param + id="33" + group="0" + name="Height" + label="Height" + wearable="shape" + edit_group="shape_body" + edit_group_order="1" + label_min="Short" + label_max="Tall" + show_simple="true" + value_min="-2.3" + value_max="2" + camera_distance="2.2"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .02" /> + + <bone + name="mCollarLeft" + scale="0 0 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" /> + + <bone + name="mShoulderLeft" + scale="0 0.08 0" /> + + <bone + name="mShoulderRight" + scale="0 0.08 0" /> + + <bone + name="mElbowLeft" + scale="0 0.06 0" /> + + <bone + name="mElbowRight" + scale="0 0.06 0" /> + + <bone + name="mChest" + scale="0 0 0.05" /> + + <bone + name="mTorso" + scale="0 0 0.05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale="0 0 0.1" /> + + <bone + name="mHipRight" + scale="0 0 0.1" /> + + <bone + name="mKneeLeft" + scale="0 0 0.1" /> + + <bone + name="mKneeRight" + scale="0 0 0.1" /> + </param_skeleton> + </param> + + <param + id="34" + group="0" + name="Thickness" + label="Body Thickness" + wearable="shape" + edit_group="shape_body" + edit_group_order="2" + label_min="Body Thin" + label_max="Body Thick" + show_simple="true" + value_min="-0.7" + value_max="1.5" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mNeck" + scale="0.1 0.1 0" /> + + <bone + name="mCollarLeft" + scale="0 0.2 0" /> + + <bone + name="mCollarRight" + scale="0 0.2 0" /> + + <bone + name="mShoulderLeft" + scale="0.1 0 0.1" /> + + <bone + name="mShoulderRight" + scale="0.1 0 0.1" /> + + <bone + name="mElbowLeft" + scale="0.1 0 0.1" /> + + <bone + name="mElbowRight" + scale="0.1 0 0.1" /> + + <bone + name="mChest" + scale="0.1 0.1 0" /> + + <bone + name="mTorso" + scale="0.1 0.1 0" /> + + <bone + name="mPelvis" + scale="0.1 0.1 0" /> + + <bone + name="mHipLeft" + scale="0.13 0.13 0" /> + + <bone + name="mHipRight" + scale="0.13 0.13 0" /> + + <bone + name="mKneeLeft" + scale="0.12 0.12 0" /> + + <bone + name="mKneeRight" + scale="0.12 0.12 0" /> + </param_skeleton> + </param> + + <param + id="36" + group="0" + name="Shoulders" + label="Shoulders" + wearable="shape" + edit_group="shape_torso" + edit_group_order="4" + label_min="Narrow" + label_max="Broad" + show_simple="true" + value_min="-1.8" + value_max="1.4" + value_default="-0.5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_skeleton> + <bone + name="mNeck" + scale="0.01 0.03 0" /> + + <bone + name="mCollarLeft" + scale="0 0 0" + offset="0 .02 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" + offset="0 -.02 0" /> + + <bone + name="mChest" + scale="0.02 0.08 0" /> + </param_skeleton> + </param> + + <param + id="37" + group="0" + name="Hip Width" + label="Hip Width" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-3.2" + value_max="2.8" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0.1 0" /> + + <bone + name="mHipLeft" + scale="0 0 0" + offset="0 .004 0" /> + + <bone + name="mHipRight" + scale="0 0 0" + offset="0 -.004 0" /> + </param_skeleton> + </param> + + <param + id="842" + group="0" + name="Hip Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3.2" + label_min="Short hips" + label_max="Long Hips" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0 0.3" /> + </param_skeleton> + </param> + + <param + id="38" + group="0" + name="Torso Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="11" + label_min="Short Torso" + label_max="Long Torso" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mTorso" + scale="0 0 .3" /> + + <bone + name="mPelvis" + scale="0 0 .1" /> + + <bone + name="mHipLeft" + scale="0 0 -.1" /> + + <bone + name="mHipRight" + scale="0 0 -.1" /> + + <bone + name="mKneeRight" + scale="0 0 -.05" /> + + <bone + name="mKneeLeft" + scale="0 0 -.05" /> + </param_skeleton> + </param> + + <param + id="195" + group="1" + name="EyeBone_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 .009 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 -.009 0" /> + </param_skeleton> + </param> + + <param + id="661" + group="1" + name="EyeBone_Head_Shear" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Shear Left Up" + label_max="Eyes Shear Right Up" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 0 .004" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 0 -.004" /> + </param_skeleton> + </param> + + <param + id="772" + group="1" + name="EyeBone_Head_Elongate" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Short Head" + label_max="Eyes Long Head" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".016 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".016 0 0" /> + </param_skeleton> + </param> + + <param + id="768" + group="1" + name="EyeBone_Bug" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Sunken" + label_max="Eyes Bugged" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".005 0 0" /> + </param_skeleton> + </param> + + <param + id="655" + group="1" + name="Head Size" + label="Head Size" + wearable="shape" + edit_group="shape_head" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="-.25" + value_max=".10"> + <param_skeleton> + <bone + name="mSkull" + scale="1 1 1" + offset="0 0 0.1" /> + + <bone + name="mHead" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeLeft" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeRight" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="197" + group="1" + wearable="shoes" + name="Shoe_Heels" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.08" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.08" /> + </param_skeleton> + </param> + + <param + id="502" + group="1" + wearable="shoes" + name="Shoe_Platform" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.07" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.07" /> + </param_skeleton> + </param> + + <param + id="675" + group="0" + name="Hand Size" + wearable="shape" + edit_group="shape_torso" + edit_group_order="10" + label_min="Small Hands" + label_max="Large Hands" + value_min="-.3" + value_max=".3" + camera_elevation=".1" + camera_distance="1.4" + camera_angle="0"> + <param_skeleton> + <bone + name="mWristRight" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mWristLeft" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="683" + group="0" + name="Neck Thickness" + wearable="shape" + edit_group="shape_torso" + edit_group_order="2" + label_min="Skinny Neck" + label_max="Thick Neck" + value_min="-.4" + value_max=".2" + value_default="-.15" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="1 1 0" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="689" + group="1" + wearable="shape" + name="EyeBone_Big_Eyes" + edit_group="shape_eyes" + label_min="Eyes Back" + label_max="Eyes Forward" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="-.005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="-.005 0 0" /> + </param_skeleton> + </param> + + <param + id="692" + group="0" + name="Leg Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="2" + label_min="Short Legs" + label_max="Long Legs" + value_min="-1" + value_max="1" + camera_distance="2.5"> + <param_skeleton> + <bone + name="mHipLeft" + scale="0 0 .2" /> + + <bone + name="mHipRight" + scale="0 0 .2" /> + + <bone + name="mKneeRight" + scale="0 0 .2" /> + + <bone + name="mKneeLeft" + scale="0 0 .2" /> + </param_skeleton> + </param> + + <param + id="693" + group="0" + name="Arm Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="9" + label_min="Short Arms" + label_max="Long arms" + value_min="-1" + value_max="1" + value_default=".6" + camera_distance="1.5"> + <param_skeleton> + <bone + name="mShoulderLeft" + scale="0 .2 0" /> + + <bone + name="mShoulderRight" + scale="0 .2 0" /> + + <bone + name="mElbowRight" + scale="0 .3 0" /> + + <bone + name="mElbowLeft" + scale="0 .3 0" /> + </param_skeleton> + </param> + + <param + id="756" + group="0" + name="Neck Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="3" + label_min="Short Neck" + label_max="Long Neck" + value_min="-1" + value_max="1" + value_default="0" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .5" /> + </param_skeleton> + </param> + <param + id="11001" + group="0" + name="Hover" + wearable="shape" + edit_group="shape_body" + edit_group_order="4" + label_min="Lower" + label_max="Higher" + value_min="-2" + value_max="2" + value_default="0" + camera_distance="2.5"> + <param_skeleton /> + </param> + + </skeleton> + + <mesh + type="hairMesh" + lod="0" + file_name="avatar_hair.llm" + min_pixel_width="320"> + <!-- begin morph targets --> + <param + id="180" + group="1" + name="Hair_Volume" + label="Hair Volume" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="761" + group="1" + name="Hair_Volume_Small" + label="Hair Volume" + show_simple="true" + wearable="hair" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="181" + group="0" + name="Hair_Big_Front" + label="Big Hair Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.14" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="182" + group="0" + name="Hair_Big_Top" + label="Big Hair Top" + wearable="hair" + edit_group="hair_style" + edit_group_order="6" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="183" + group="0" + name="Hair_Big_Back" + clothing_morph="true" + label="Big Hair Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="7" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.05" + camera_elevation=".1" + camera_distance=".7" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="184" + group="0" + name="Hair_Spiked" + label="Spiked Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="15" + label_min="No Spikes" + label_max="Big Spikes" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="140" + group="0" + name="Hair_Part_Middle" + label="Middle Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="17" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="141" + group="0" + name="Hair_Part_Right" + label="Right Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="18" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="142" + group="0" + name="Hair_Part_Left" + label="Left Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="19" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="143" + group="0" + name="Hair_Sides_Full" + label="Full Hair Sides" + show_simple="true" + wearable="hair" + edit_group="hair_style" + edit_group_order="11" + label_min="Mowhawk" + label_max="Full Sides" + value_min="-4" + value_max="1.5" + value_default="0.125" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="144" + group="1" + name="Bangs_Front_Up" + label="Front Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="145" + group="1" + clothing_morph="true" + name="Bangs_Front_Down" + label="Front Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Down" + value_min="0" + value_max="5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="146" + group="1" + name="Bangs_Sides_Up" + label="Side Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="147" + group="1" + clothing_morph="true" + name="Bangs_Sides_Down" + label="Side Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="148" + group="1" + name="Bangs_Back_Up" + label="Back Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="149" + group="1" + name="Bangs_Back_Down" + label="Back Bangs Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="171" + group="1" + name="Hair_Front_Down" + label="Front Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="172" + group="1" + name="Hair_Front_Up" + label="Front Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="173" + group="1" + name="Hair_Sides_Down" + label="Sides Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="174" + group="1" + name="Hair_Sides_Up" + label="Sides Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="175" + group="1" + name="Hair_Back_Down" + label="Back Hair Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Down" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="176" + group="1" + name="Hair_Back_Up" + label="Back Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="177" + group="0" + name="Hair_Rumpled" + label="Rumpled Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="14.5" + label_min="Smooth Hair" + label_max="Rumpled Hair" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="178" + group="1" + name="Hair_Swept_Back" + label="Swept Back Hair" + wearable="hair" + edit_group="hair_style" + label_min="NotHair" + label_max="Swept Back" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="179" + group="1" + name="Hair_Swept_Forward" + label="Swept Forward Hair" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Swept Forward" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="190" + group="1" + name="Hair_Tilt_Right" + label="Hair Tilted Right" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Right" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="191" + group="1" + name="Hair_Tilt_Left" + label="Hair Tilted Left" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Left" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="192" + group="0" + name="Bangs_Part_Middle" + label="Part Bangs" + wearable="hair" + edit_group="hair_style" + edit_group_order="20" + label_min="No Part" + label_max="Part Bangs" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="640" + group="1" + name="Hair_Egg_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1.3" + value_max="1"> + <param_morph /> + </param> + + <param + id="641" + group="1" + name="Hair_Squash_Stretch_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-.5" + value_max="1"> + <param_morph /> + </param> + + <param + id="642" + group="1" + name="Hair_Square_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="643" + group="1" + name="Hair_Round_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="644" + group="1" + name="Hair_Forehead_Round" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="645" + group="1" + name="Hair_Forehead_Slant" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="774" + group="1" + name="Shear_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="771" + group="1" + name="Elongate_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + <param + id="674" + group="0" + name="Hair_Shear_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="12" + label="Shear Back" + label_min="Full Back" + label_max="Sheared Back" + value_min="-1" + value_max="2" + value_default="-0.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="100"> + <param_morph /> + </param> + + <param + id="762" + group="0" + name="Hair_Shear_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.8" + label="Shear Front" + show_simple="true" + label_min="Full Front" + label_max="Sheared Front" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="754" + group="0" + name="Hair_Taper_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="14" + label="Taper Back" + label_min="Wide Back" + label_max="Narrow Back" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_morph /> + </param> + + <param + id="755" + group="0" + name="Hair_Taper_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="13" + label="Taper Front" + label_min="Wide Front" + label_max="Narrow Front" + value_min="-1.5" + value_max="1.5" + value_default="0.05" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="782" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="783" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="790" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Medlong" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="784" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Long" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="786" + group="1" + name="Hair_Ponytail_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="787" + group="1" + name="Hair_Ponytail_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="788" + group="1" + name="Hair_Ponytail_Long" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- #end morph targets --> + </mesh> + + <mesh + type="hairMesh" + lod="1" + file_name="avatar_hair_1.llm" + min_pixel_width="160" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="2" + file_name="avatar_hair_2.llm" + min_pixel_width="80" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="3" + file_name="avatar_hair_3.llm" + min_pixel_width="40" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="4" + file_name="avatar_hair_4.llm" + min_pixel_width="20" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="5" + file_name="avatar_hair_5.llm" + min_pixel_width="0" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="headMesh" + lod="0" + file_name="avatar_head.llm" + min_pixel_width="320"> + <!-- + begin morph targets + ############# + tweakable morphs + ############# + --> + <param + id="1" + group="0" + name="Big_Brow" + label="Brow Size" + wearable="shape" + edit_group="shape_head" + edit_group_order="7" + label_min="Small" + label_max="Large" + value_min="-.3" + value_max="2" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="2" + group="0" + name="Nose_Big_Out" + label="Nose Size" + wearable="shape" + edit_group="shape_nose" + edit_group_order="1" + label_min="Small" + label_max="Large" + show_simple="true" + value_min="-0.8" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="50"> + <param_morph /> + </param> + + <param + id="4" + group="0" + name="Broad_Nostrils" + label="Nostril Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3" + label_min="Narrow" + label_max="Broad" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="759" + group="0" + name="Low_Septum_Nose" + label="Nostril Division" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3.5" + label_min="High" + label_max="Low" + value_min="-1" + value_max="1.5" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="517" + group="0" + name="Wide_Nose" + label="Nose Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="2" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="5" + group="0" + name="Cleft_Chin" + label="Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="6" + label_min="Round" + label_max="Cleft" + value_min="-.1" + value_max="1" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="6" + group="0" + name="Bulbous_Nose_Tip" + label="Nose Tip Shape" + wearable="shape" + edit_group="shape_nose" + edit_group_order="8" + label_min="Pointy" + label_max="Bulbous" + value_min="-.3" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="7" + group="0" + name="Weak_Chin" + label="Chin Angle" + wearable="shape" + edit_group="shape_chin" + edit_group_order="1" + label_min="Chin Out" + label_max="Chin In" + value_min="-.5" + value_max=".5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="8" + group="0" + name="Double_Chin" + label="Chin-Neck" + wearable="shape" + edit_group="shape_chin" + edit_group_order="8" + label_min="Tight Chin" + label_max="Double Chin" + value_min="-.5" + value_max="1.5" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="60"> + <param_morph /> + </param> + + <param + id="10" + group="0" + name="Sunken_Cheeks" + label="Lower Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="9" + label_min="Well-Fed" + label_max="Sunken" + show_simple="true" + value_min="-1.5" + value_max="3" + camera_elevation=".1" + camera_distance=".4" + camera_angle="5"> + <param_morph /> + </param> + + <param + id="11" + group="0" + name="Noble_Nose_Bridge" + label="Upper Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="758" + group="0" + name="Lower_Bridge_Nose" + label="Lower Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5.5" + label_min="Low" + label_max="High" + value_min="-1.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="12" + group="0" + name="Jowls" + wearable="shape" + edit_group="shape_chin" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="13" + group="0" + name="Cleft_Chin_Upper" + label="Upper Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="7" + label_min="Round" + label_max="Cleft" + value_min="0" + value_max="1.5" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="14" + group="0" + name="High_Cheek_Bones" + label="Cheek Bones" + wearable="shape" + edit_group="shape_head" + edit_group_order="10" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="15" + group="0" + name="Ears_Out" + label="Ear Angle" + wearable="shape" + edit_group="shape_ears" + edit_group_order="2" + label_min="In" + label_max="Out" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="870" + group="1" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="17" + group="0" + name="Square_Jaw" + label="Jaw Shape" + wearable="shape" + edit_group="shape_chin" + edit_group_order="2" + label_min="Pointy" + label_max="Square" + value_min="-.5" + value_max="1" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="18" + group="0" + name="Puffy_Upper_Cheeks" + label="Upper Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="8" + label_min="Thin" + label_max="Puffy" + value_min="-1.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="19" + group="0" + name="Upturned_Nose_Tip" + label="Nose Tip Angle" + wearable="shape" + edit_group="shape_nose" + edit_group_order="7" + label_min="Downturned" + label_max="Upturned" + value_min="-1.5" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="20" + group="0" + name="Bulbous_Nose" + label="Nose Thickness" + wearable="shape" + edit_group="shape_nose" + edit_group_order="4" + label_min="Thin Nose" + label_max="Bulbous Nose" + show_simple="true" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="5" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="22" + group="0" + name="Attached_Earlobes" + label="Attached Earlobes" + wearable="shape" + edit_group="shape_ears" + edit_group_order="3" + label_min="Unattached" + label_max="Attached" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="23" + group="0" + name="Baggy_Eyes" + label="Eye Bags" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6" + label_min="Smooth" + label_max="Baggy" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="765" + group="0" + name="Puffy_Lower_Lids" + label="Puffy Eyelids" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6.1" + label_min="Flat" + label_max="Puffy" + value_min="-.3" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1.1" + label_min="Narrow" + label_max="Wide" + value_min="-1.5" + value_max="2" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="25" + group="0" + name="Wide_Lip_Cleft" + label="Lip Cleft" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-.8" + value_max="1.5" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="764" + group="0" + name="Lip_Cleft_Deep" + label="Lip Cleft Depth" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5.8" + label_min="Shallow" + label_max="Deep" + value_min="-.5" + value_max="1.2" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="26" + group="1" + wearable="shape" + name="Lips_Thin" + edit_group="driven" + value_min="0" + value_max=".7"> + <param_morph /> + </param> + + <param + id="27" + group="0" + name="Wide_Nose_Bridge" + label="Bridge Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="28" + group="1" + name="Lips_Fat" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="29" + group="1" + name="Wide_Upper_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <param + id="30" + group="1" + name="Wide_Lower_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="872" + group="1" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="871" + group="1" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="35" + group="0" + name="Big_Ears" + label="Ear Size" + wearable="shape" + edit_group="shape_ears" + edit_group_order="1" + label_min="Small" + label_max="Large" + value_min="-1" + value_max="2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="796" + group="0" + name="Pointy_Ears" + label="Ear Tips" + wearable="shape" + edit_group="shape_ears" + edit_group_order="4" + label_min="Flat" + label_max="Pointy" + value_min="-.4" + value_max="3" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="185" + group="0" + name="Deep_Chin" + label="Chin Depth" + wearable="shape" + edit_group="shape_chin" + edit_group_order="3" + label_min="Shallow" + label_max="Deep" + value_min="-1" + value_max="1" + camera_elevation=".1" + camera_distance=".4" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph> + <volume_morph + name="HEAD" + scale="-0.008 -0.006 0.015"/> + </param_morph> + </param> + + <param + id="188" + group="1" + name="Square_Head" + wearable="shape" + label_min="Less Square" + label_max="More Square" + value_min="0" + value_max=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="189" + group="1" + wearable="shape" + name="Round_Head" + label_min="Less Round" + label_max="More Round" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="194" + group="1" + name="Eye_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="400" + sex="male" + group="1" + name="Displace_Hair_Facial" + label="Hair Thickess" + wearable="hair" + edit_group="hair_facial" + label_min="Cropped Hair" + label_max="Bushy Hair" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="506" + group="0" + name="Mouth_Height" + wearable="shape" + label="Mouth Position" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="4" + label_min="High" + label_max="Low" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="633" + group="1" + name="Fat_Head" + label="Fat Head" + wearable="shape" + edit_group="shape_body" + label_min="Skinny" + label_max="Fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph/> + </param> + + <param + id="630" + group="1" + name="Forehead_Round" + label="Round Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="631" + group="1" + name="Forehead_Slant" + label="Slanted Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + <param + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.2" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + + <param + id="653" + group="0" + name="Tall_Lips" + wearable="shape" + label="Lip Fullness" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="2" + label_min="Less Full" + label_max="More Full" + value_min="-1" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="656" + group="0" + name="Crooked_Nose" + wearable="shape" + label="Crooked Nose" + edit_group="shape_nose" + edit_group_order="9" + label_min="Nose Left" + label_max="Nose Right" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="657" + group="1" + name="Smile_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Up" + value_min="0" + value_max="1.4" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="658" + group="1" + name="Frown_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Down" + value_min="0" + value_max="1.2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="797" + group="1" + name="Fat_Upper_Lip" + wearable="shape" + label="Fat Upper Lip" + edit_group="shape_mouth" + label_min="Normal Upper" + label_max="Fat Upper" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="798" + group="1" + name="Fat_Lower_Lip" + wearable="shape" + label="Fat Lower Lip" + edit_group="shape_mouth" + label_min="Normal Lower" + label_max="Fat Lower" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph> + <volume_morph + name="HEAD" + scale="0.02 0.0 0.0"/> + </param_morph> + </param> + + <param + id="663" + group="0" + name="Shift_Mouth" + wearable="shape" + label="Shift Mouth" + edit_group="shape_mouth" + edit_group_order="7" + label_min="Shift Left" + label_max="Shift Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".35" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-1.3" + value_max="1.3" + value_default="0" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="760" + group="0" + name="Jaw_Angle" + wearable="shape" + label="Jaw Angle" + edit_group="shape_chin" + edit_group_order="3.5" + label_min="Low Jaw" + label_max="High Jaw" + value_min="-1.2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="665" + group="0" + name="Jaw_Jut" + wearable="shape" + label="Jaw Jut" + edit_group="shape_chin" + edit_group_order="4" + label_min="Overbite" + label_max="Underbite" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + show_simple="true" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <param + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + #Fat_Lips = Fat_Lips 34 1 0 1 + #Wide_Lips = Wide_Lips 35 1 0 1 + #Wide_Nose = Wide_Nose 36 1 0 1 + --> + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + id="300" + group="1" + name="Express_Closed_Mouth" + value_default="1" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="311" + group="1" + name="Express_Worry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="632" + group="1" + name="Express_Open_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # Lipsync morphs + ############## + --> + + <param + id="70" + group="1" + name="Lipsync_Aah" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="71" + group="1" + name="Lipsync_Ooh" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + id="40" + group="1" + name="Male_Head" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="51" + group="1" + name="Furrowed_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="53" + group="1" + name="Surprised_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="54" + group="1" + name="Worried_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="55" + group="1" + name="Frown_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="57" + group="1" + name="Smile_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + #end morph targets + --> + </mesh> + + <mesh + type="headMesh" + lod="1" + file_name="avatar_head_1.llm" + min_pixel_width="160" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="2" + file_name="avatar_head_2.llm" + min_pixel_width="80" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="3" + file_name="avatar_head_3.llm" + min_pixel_width="40" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="4" + file_name="avatar_head_4.llm" + min_pixel_width="0" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="eyelashMesh" + lod="0" + file_name="avatar_eyelashes.llm" + min_pixel_width="320"> + <param + shared="1" + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + shared="1" + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-1.5" + value_max="2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="194" + group="1" + name="Eye_Spread" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="518" + group="0" + name="Eyelashes_Long" + wearable="shape" + label="Eyelash Length" + edit_group="shape_eyes" + edit_group_order="7" + label_min="Short" + label_max="Long" + value_min="-.3" + value_max="1.5" + camera_elevation=".1" + camera_distance=".30" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + + <param + shared="1" + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="-2" + value_max="2" + show_simple="true" + value_default="0"> + <param_morph /> + </param> + + <param + shared="1" + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + shared="1" + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + shared="1" + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + shared="1" + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + </mesh> + + <!-- + #headMesh2 = + #headMesh3 = + --> + <mesh + type="upperBodyMesh" + lod="0" + file_name="avatar_upper_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="104" + group="1" + name="Big_Belly_Torso" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.07"/> + <volume_morph + name="PELVIS" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.02"/> + </param_morph> + </param> + + <param + id="626" + sex="female" + group="1" + name="Big_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 0.024 -0.016"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 -0.024 -0.016"/> + </param_morph> + </param> + + <param + id="627" + sex="female" + group="1" + name="Small_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Large" + label_max="Small" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + </param_morph> + </param> + + <param + id="843" + sex="female" + group="1" + name="No_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Some" + label_max="None" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + </param_morph> + </param> + + <param + id="106" + group="1" + name="Muscular_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Muscular" + value_min="0" + value_max="1.4" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + </param_morph> + </param> + + <param + id="648" + group="1" + sex="female" + name="Scrawny_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="677" + group="1" + sex="male" + name="Scrawny_Torso_Male" + label="Torso Scrawny" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.02 -0.02 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="634" + group="1" + name="Fat_Torso" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="PELVIS" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="UPPER_BACK" + scale="0.01 0.03 0.0" + pos="-0.03 0 0"/> + <volume_morph + name="LOWER_BACK" + scale="0.04 0.06 0.0" + pos="-0.06 0 0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.08 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.08 0.0"/> + <volume_morph + name="LEFT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 -0.005 -0.013"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 0.005 -0.013"/> + <volume_morph + name="BELLY" + scale="0.09 0.08 0.07" + pos="0 0 -0.05"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <param + id="507" + group="0" + sex="female" + name="Breast_Gravity" + label="Breast Buoyancy" + wearable="shape" + edit_group="shape_torso" + edit_group_order="7" + label_min="Less Gravity" + label_max="More Gravity" + value_default="0" + value_min="-1.5" + value_max="2" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="628" + group="1" + name="Displace_Loose_Upperbody" + label="Shirt Fit" + wearable="shirt" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="840" + group="0" + name="Shirtsleeve_flair" + label="Sleeve Looseness" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="6" + clothing_morph="true" + label_min="Tight Sleeves" + label_max="Loose Sleeves" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="855" + group="1" + name="Love_Handles" + wearable="shape" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LOWER_BACK" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.025 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.025 0.0"/> + </param_morph> + </param> + + <param + id="684" + group="0" + sex="female" + name="Breast_Female_Cleavage" + label="Breast Cleavage" + wearable="shape" + edit_group="shape_torso" + edit_group_order="8" + label_min="Separate" + label_max="Join" + value_default="0" + value_min="-.3" + value_max="1.3" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 0.0"/> + </param_morph> + </param> + + <param + id="685" + group="0" + sex="male" + name="Chest_Male_No_Pecs" + label="Pectorals" + wearable="shape" + edit_group="shape_torso" + edit_group_order="5" + label_min="Big Pectorals" + label_max="Sunken Chest" + value_default="0" + value_min="-0.5" + value_max="1.1" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 -0.024 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 0.024 -0.01"/> + </param_morph> + </param> + + <!-- ############# # + other morphs (not user controlled) + ############# --> + <param + id="100" + group="1" + name="Male_Torso" + wearable="shape" + edit_group="driven" + label_min="Male_Torso" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.03 0.04 0.02" + pos="-0.03 0 -0.01"/> + <volume_morph + name="BELLY" + scale="0.03 0.03 0.0" + pos="-0.03 0 0.02"/> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 -0.03 0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 0.03 0.01"/> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="101" + group="1" + name="Hands_Relaxed" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="102" + group="1" + name="Hands_Point" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="103" + group="1" + name="Hands_Fist" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="666" + group="1" + name="Hands_Relaxed_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="667" + group="1" + name="Hands_Point_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="668" + group="1" + name="Hands_Fist_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="669" + group="1" + name="Hands_Relaxed_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="670" + group="1" + name="Hands_Point_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="671" + group="1" + name="Hands_Fist_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="672" + group="1" + name="Hands_Typing" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="766" + group="1" + name="Hands_Salute_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="791" + group="1" + name="Hands_Peace_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="792" + group="1" + name="Hands_Spread_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1200" + group="1" + sex="female" + name="Breast_Physics_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-3" + value_max="3"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="1201" + group="1" + sex="female" + name="Breast_Physics_InOut_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1.25" + value_max="1.25"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 -0.0"/> + </param_morph> + </param> + + <param + id="1204" + group="1" + name="Belly_Physics_Torso_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.0 0.0" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1207" + group="1" + name="Breast_Physics_LeftRight_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-2" + value_max="2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="upperBodyMesh" + lod="1" + file_name="avatar_upper_body_1.llm" + min_pixel_width="160" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="2" + file_name="avatar_upper_body_2.llm" + min_pixel_width="80" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="3" + file_name="avatar_upper_body_3.llm" + min_pixel_width="40" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="4" + file_name="avatar_upper_body_4.llm" + min_pixel_width="0" + reference="avatar_upper_body.llm"> + </mesh> + + <!-- + #upperBodyMesh2 = + #upperBodyMesh3 = + --> + <mesh + type="lowerBodyMesh" + lod="0" + file_name="avatar_lower_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="156" + group="1" + name="Big_Belly_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + + <param + id="151" + group="1" + name="Big_Butt_Legs" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Large" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.0 0.02" + pos="-0.03 0 -0.025"/> + </param_morph> + </param> + + <param + id="794" + group="1" + name="Small_Butt" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Small" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="-0.01 0.0 0.0" + pos="0.01 0 0.0"/> + <volume_morph + name="BUTT" + scale="0.0 0.0886 0.0" + pos="0.03 0 0.0"/> + </param_morph> + </param> + + <param + id="152" + group="1" + name="Muscular_Legs" + label="Leg Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="More Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="651" + group="1" + name="Scrawny_Legs" + label="Scrawny Leg" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="Less Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="853" + group="1" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="L_LOWER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="R_UPPER_LEG" + pos="0.0 -0.03 0.0"/> + <volume_morph + name="R_LOWER_LEG" + pos="0.0 -0.03 0.0"/> + </param_morph> + </param> + + <param + id="500" + group="1" + name="Shoe_Heel_Height" + label="Heel Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="501" + group="1" + name="Shoe_Platform_Height" + label="Platform Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="508" + group="0" + name="Shoe_Platform_Width" + label="Platform Width" + wearable="shoes" + edit_group="shoes" + edit_group_order="7" + label_min="Narrow" + label_max="Wide" + value_min="-1" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="509" + group="1" + name="Shoe_Heel_Point" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Heels" + label_max="Pointy Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="510" + group="1" + name="Shoe_Heel_Thick" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="default Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="511" + group="1" + name="Shoe_Toe_Point" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Pointy Toe" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="512" + group="1" + name="Shoe_Toe_Square" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Square Toe" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="654" + group="0" + name="Shoe_Toe_Thick" + label="Toe Thickness" + wearable="shoes" + edit_group="shoes" + edit_group_order="5" + label_min="Flat Toe" + label_max="Thick Toe" + value_min="0" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="515" + group="0" + name="Foot_Size" + label="Foot Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="6" + label_min="Small" + label_max="Big" + value_min="-1" + value_max="3" + camera_angle="45" + camera_distance="1.1" + camera_elevation="-1"> + <param_morph> + <volume_morph + name="L_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + <volume_morph + name="R_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + </param_morph> + </param> + + <param + id="516" + group="1" + name="Displace_Loose_Lowerbody" + label="Pants Fit" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="625" + group="0" + name="Leg_Pantflair" + label="Cuff Flare" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="3" + clothing_morph="true" + label_min="Tight Cuffs" + label_max="Flared Cuffs" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="793" + group="1" + name="Leg_Longcuffs" + label="Longcuffs" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="3" + value_default="0"> + <param_morph /> + </param> + + <param + id="638" + group="0" + name="Low_Crotch" + label="Pants Crotch" + wearable="pants" + clothing_morph="true" + edit_group="pants" + edit_group_order="4" + label_min="High and Tight" + label_max="Low and Loose" + value_min="0" + value_max="1.3" + camera_distance="1.2" + camera_angle="-20" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="635" + group="1" + name="Fat_Legs" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.06 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 -0.02 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0"/> + <volume_morph + name="L_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 0.02 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0"/> + </param_morph> + </param> + + <param + id="854" + group="1" + name="Saddlebags" + wearable="shape" + edit_group="driven" + value_min="-.5" + value_max="3"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.0 0.025 0.0"/> + </param_morph> + + </param> + + <param + id="879" + group="0" + sex="male" + name="Male_Package" + label="Package" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4.6" + label_min="Coin Purse" + label_max="Duffle Bag" + value_default="0" + value_min="-.5" + value_max="2" + camera_angle="60" + camera_distance=".6"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="153" + group="1" + name="Male_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1202" + group="1" + name="Belly_Physics_Legs_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + + <param + id="1205" + group="1" + name="Butt_Physics_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1206" + group="1" + name="Butt_Physics_LeftRight_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.05 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="lowerBodyMesh" + lod="1" + file_name="avatar_lower_body_1.llm" + min_pixel_width="160" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="2" + file_name="avatar_lower_body_2.llm" + min_pixel_width="80" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="3" + file_name="avatar_lower_body_3.llm" + min_pixel_width="40" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="4" + file_name="avatar_lower_body_4.llm" + min_pixel_width="0" + reference="avatar_lower_body.llm"> + </mesh> + + <!-- + #lowerBodyMesh2 = + #lowerBodyMesh3 = + --> + <!-- + #eyeLidLeftMesh = + --> + <mesh + type="eyeBallLeftMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="679" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="687" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallLeftMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="694" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="695" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <!-- + #eyeLidRightMesh = + --> + <mesh + type="eyeBallRightMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="680" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="688" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallRightMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="681" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="691" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="skirtMesh" + lod="0" + file_name="avatar_skirt.llm" + min_pixel_width="320"> + <param + id="845" + group="1" + name="skirt_poofy" + label="poofy skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="less poofy" + label_max="more poofy" + value_min="0" + value_max="1.5"> + <param_morph /> + </param> + + <param + id="846" + group="1" + name="skirt_loose" + label="loose skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="866" + group="1" + name="skirt_tight" + label="tight skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="867" + group="1" + name="skirt_smallbutt" + label="tight skirt" + clothing_morph="false" + wearable="skirt" + edit_group="skirt" + cross_wearable="true" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="848" + group="0" + name="skirt_bustle" + label="bustle skirt" + clothing_morph="true" + wearable="skirt" + edit_group_order="3" + edit_group="skirt" + label_min="no bustle" + label_max="more bustle" + value_min="0" + value_max="2" + value_default=".2" + camera_angle="100" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="847" + group="1" + name="skirt_bowlegs" + label="legs skirt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="-1" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="852" + group="1" + name="skirt_bigbutt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="bigbutt skirt" + label_min="less" + label_max="more" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="849" + group="1" + name="skirt_belly" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="big belly skirt" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="850" + group="1" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + name="skirt_saddlebags" + value_min="-.5" + value_max="3"> + <param_morph /> + </param> + + <param + id="851" + group="1" + name="skirt_chubby" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="856" + group="1" + name="skirt_lovehandles" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="-1" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="857" + group="1" + name="skirt_male" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1203" + group="1" + name="Belly_Physics_Skirt_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + </mesh> + + <mesh + type="skirtMesh" + lod="1" + file_name="avatar_skirt_1.llm" + min_pixel_width="160" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="2" + file_name="avatar_skirt_2.llm" + min_pixel_width="80" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="3" + file_name="avatar_skirt_3.llm" + min_pixel_width="40" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="4" + file_name="avatar_skirt_4.llm" + min_pixel_width="0" + reference="avatar_skirt.llm"> + </mesh> + + <!-- =========================================================== --> + <global_color + name="skin_color"> + <param + id="111" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="1" + name="Pigment" + show_simple="true" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + value_default=".5"> + <param_color> + <value + color="252, 215, 200, 255" /> + + <value + color="240, 177, 112, 255" /> + + <value + color="90, 40, 16, 255" /> + + <value + color="29, 9, 6, 255" /> + </param_color> + </param> + + <param + id="110" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="2" + name="Red Skin" + label="Ruddiness" + label_min="Pale" + label_max="Ruddy" + value_min="0" + value_max="0.1"> + <param_color + operation="blend"> + <value + color="218, 41, 37, 255" /> + </param_color> + </param> + + <param + id="108" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="3" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="hair_color"> + <param + id="114" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="3" + name="Blonde Hair" + show_simple="true" + label_min="Black" + label_max="Blonde" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="22, 6, 6, 255" /> + + <value + color="29, 9, 6, 255" /> + + <value + color="45, 21, 11, 255" /> + + <value + color="78, 39, 11, 255" /> + + <value + color="90, 53, 16, 255" /> + + <value + color="136, 92, 21, 255" /> + + <value + color="150, 106, 33, 255" /> + + <value + color="198, 156, 74, 255" /> + + <value + color="233, 192, 103, 255" /> + + <value + color="238, 205, 136, 255" /> + </param_color> + </param> + + <param + id="113" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="4" + name="Red Hair" + show_simple="true" + label_min="No Red" + label_max="Very Red" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="118, 47, 19, 255" /> + </param_color> + </param> + + <param + id="115" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="1" + name="White Hair" + show_simple="true" + label_min="No White" + label_max="All White" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="112" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="2" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="eye_color"> + <param + id="99" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="1" + name="Eye Color" + show_simple="true" + label_min="Natural" + label_max="Unnatural" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <!-- default to natural brown eyes--> + <param_color> + <value + color="50, 25, 5, 255" /> + + <!-- natural dark brown eyes--> + <value + color="109, 55, 15, 255" /> + + <!-- natural brown eyes--> + <value + color="150, 93, 49, 255" /> + + <!-- natural light brown eyes--> + <value + color="152, 118, 25, 255" /> + + <!--natural hazel eyes--> + <value + color="95, 179, 107, 255" /> + + <!--natural green eyes--> + <value + color="87, 192, 191, 255" /> + + <!--natural aqua eyes--> + <value + color="95, 172, 179, 255" /> + + <!--natural blue eyes--> + <value + color="128, 128, 128, 255" /> + + <!--natural grey eyes--> + <value + color="0, 0, 0, 255" /> + + <!--black eyes--> + <value + color="255, 255, 0, 255" /> + + <!--bright yellow eyes--> + <value + color=" 0, 255, 0, 255" /> + + <!-- bright green eyes--> + <value + color=" 0, 255, 255, 255" /> + + <!-- bright cyan eyes--> + <value + color=" 0, 0, 255, 255" /> + + <!--bright blue eyes--> + <value + color="255, 0, 255, 255" /> + + <!-- bright violet eyes--> + <value + color="255, 0, 0, 255" /> + + <!--bright red eyes--> + </param_color> + </param> + + <param + id="98" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="2" + name="Eye Lightness" + show_simple="true" + label_min="Darker" + label_max="Lighter" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <layer_set + body_region="hair" + width="512" + height="512" + clear_alpha="false"> + <layer + name="base" + global_color="hair_color" + write_all_channels="true"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair texture alpha layer" + visibility_mask="TRUE"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair alpha" + visibility_mask="TRUE"> + <texture + local_texture="hair_alpha" /> + </layer> + + </layer_set> + <!-- =========================================================== --> + + <layer_set + body_region="head" + width="512" + height="512"> + <layer + name="head bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + + <layer + name="head bump definition" + render_pass="bump"> + + + <texture + tga_file="bump_head_base.tga" + file_is_mask="FALSE"/> + + <param + id="873" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="12" + name="Bump base" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="head_skingrain.tga" /> + </layer> + + <layer + name="headcolor"> + <texture + tga_file="head_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="head_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="158" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="head_highlights_alpha.tga" +file_is_mask="TRUE" /> + + + <param + id="159" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value +color="255, 255, 255, 0" /> + + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + <layer + name="rosyface"> + <texture + tga_file="rosyface_alpha.tga" + file_is_mask="true" /> + + <param + id="116" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="4" + name="Rosy Complexion" + label_min="Less Rosy" + label_max="More Rosy" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07"> + <param_color> + <value + color="198, 71, 71, 0" /> + + <value + color="198, 71, 71, 255" /> + </param_color> + </param> + </layer> + + <layer + name="lips"> + <texture + tga_file="lips_mask.tga" + file_is_mask="true" /> + + <param + id="117" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="5" + name="Lip Pinkness" + label_min="Darker" + label_max="Pinker" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_color> + <value + color="220, 115, 115, 0" /> + + <value + color="220, 115, 115, 128" /> + </param_color> + </param> + </layer> + + <layer + name="wrinkles_shading" + render_pass="bump" + fixed_color="0,0,0,100"> + <param + id="118" + group="1" + wearable="skin" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bump_face_wrinkles.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer> + + <!--<layer + name="wrinkles_highlights" + fixed_color="255,255,255,64"> + <param + id="128" + group="1" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="head_wrinkles_highlights_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer>--> + <layer + name="freckles" + fixed_color="120,47,20,128"> + <param + id="165" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="2" + name="Freckles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" +camera_elevation=".07"> + <param_alpha + tga_file="freckles_alpha.tga" + skip_if_zero="true" +domain="0.5" /> + </param> + </layer> + <layer +name="eyebrowsbump" +render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1000" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Size Bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1002" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density Bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="eyebrows" + global_color="hair_color"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1001" + group="1" + wearable="hair" + edit_group="hair_eyebrows" + name="Eyebrow Size" + show_simple="true" + value_min="0" + value_max="1" + value_default="0.5"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1003" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density" + value_min="0" + value_max="1"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="lipstick"> + <param + id="700" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="2" + name="Lipstick Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + value_default=".25" + camera_distance=".25"> + <param_color> + <value + color="245,161,177,200" /> + + <value + color="216,37,67,200" /> + + <value + color="178,48,76,200" /> + + <value + color="68,0,11,200" /> + + <value + color="252,207,184,200" /> + + <value + color="241,136,106,200" /> + + <value + color="208,110,85,200" /> + + <value + color="106,28,18,200" /> + + <value + color="58,26,49,200" /> + + <value + color="14,14,14,200" /> + </param_color> + </param> + + <param + id="701" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="1" + name="Lipstick" + label_min="No Lipstick" + label_max="More Lipstick" + value_min="0" + value_max=".9" + value_default="0.0" + camera_distance=".25"> + <param_alpha + tga_file="lipstick_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="lipgloss" + fixed_color="255,255,255,190"> + <param + id="702" + name="Lipgloss" + label_min="No Lipgloss" + label_max="Glossy" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="3" + group="0" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_alpha + tga_file="lipgloss_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="blush"> + <param + id="704" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="4" + name="Blush" + label_min="No Blush" + label_max="More Blush" + value_min="0" + value_max=".9" + value_default="0" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_alpha + tga_file="blush_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + + <param + id="705" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="5" + name="Blush Color" + label_min="Pink" + label_max="Orange" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color> + <value + color="253,162,193,200" /> + + <value + color="247,131,152,200" /> + + <value + color="213,122,140,200" /> + + <value + color="253,152,144,200" /> + + <value + color="236,138,103,200" /> + + <value + color="195,128,122,200" /> + + <value + color="148,103,100,200" /> + + <value + color="168,95,62,200" /> + </param_color> + </param> + + <param + id="711" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="6" + name="Blush Opacity" + label_min="Clear" + label_max="Opaque" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="Outer Eye Shadow"> + <param + id="708" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="11" + name="Out Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="706" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="12" + name="Out Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".6" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="707" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="10" + name="Outer Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_outer_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Inner Eye Shadow"> + <param + id="712" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="8" + name="In Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="713" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="9" + name="In Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="709" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="7" + name="Inner Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max="1" + value_default="0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_inner_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="eyeliner" + fixed_color="0,0,0,200"> + <param + id="703" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="13" + name="Eyeliner" + label_min="No Eyeliner" + label_max="Full Eyeliner" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeliner_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="714" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="14" + name="Eyeliner Color" + label_min="Dark Green" + label_max="Black" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="24,98,40,250" /> + + <!-- dark green --> + <value + color="9,100,127,250" /> + + <!-- lt.aqua blue --> + <value + color="61,93,134,250" /> + + <!-- aqua --> + <value + color="70,29,27,250" /> + + <!-- dark brown --> + <value + color="115,75,65,250" /> + + <!-- lt. brown blue --> + <value + color="100,100,100,250" /> + + <!-- grey --> + <value + color="91,80,74,250" /> + + <!-- grey/brown --> + <value + color="112,42,76,250" /> + + <!-- plum --> + <value + color="14,14,14,250" /> + + <!-- black --> + </param_color> + </param> + </layer> + + <layer + name="facialhair bump" + render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1004" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1006" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1008" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1010" + sex="male" + group="1" + edit_group="driven" + wearable="hair" + name="Chin Curtains bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="1012" + group="1" + sex="male" + wearable="hair" + edit_group="driven" + name="5 O'Clock Shadow bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,0" /> + </param_color> + </param> + </layer> + + <layer + name="facialhair" + global_color="hair_color"> + + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1005" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1007" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1009" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1011" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Chin Curtains" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="751" + group="1" + wearable="hair" + sex="male" + edit_group="hair_facial" + name="5 O'Clock Shadow" + label_min="Dense hair" + label_max="Shadow hair" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_color + operation="multiply"> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,30" /> + </param_color> + </param> + </layer> + + <layer + name="head_bodypaint"> + <texture + local_texture="head_bodypaint" /> + </layer> + <layer + name="eyelash alpha" + visibility_mask="TRUE"> + <texture + tga_file="head_alpha.tga" + file_is_mask="TRUE" /> + </layer> + <layer + name="head alpha" + visibility_mask="TRUE"> + <texture + local_texture="head_alpha" /> + </layer> + <layer + name="head_tattoo"> + <texture + local_texture="head_tattoo" /> + <param + id="1062" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1063" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1064" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="upper_body" + width="512" + height="512"> + <layer + name="base_upperbody bump" + render_pass="bump" + fixed_color="128,128,128,255"> + </layer> + <layer + name="upperbody bump definition" + render_pass="bump"> + <texture + tga_file="bump_upperbody_base.tga" + file_is_mask="FALSE"/> + + <param + id="874" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="nipples"> + <texture + tga_file="upperbody_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="upperbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="125" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="upperbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="126" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="upper_bodypaint"> + <texture + local_texture="upper_bodypaint" /> + </layer> + + <layer + name="freckles upper" + fixed_color="120,47,20,128"> + <param + id="776" + group="1" + name="freckles upper" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="upperbodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="upper_tattoo"> + <texture + local_texture="upper_tattoo" /> + + <param + id="1065" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1066" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1067" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + <layer + name="upper_undershirt bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_undershirt" + local_texture_alpha_only="true" /> + + <param + id="1043" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length bump" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1045" + group="1" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1047" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1049" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_undershirt"> + <texture + local_texture="upper_undershirt" /> + + <param + id="821" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="822" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="823" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1042" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1044" + group="1" + wearable="undershirt" + edit_group="driven" + name="Bottom" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1046" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1048" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Nail Polish"> + <param + id="710" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="15" + name="Nail Polish" + label_min="No Polish" + label_max="Painted Nails" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_alpha + tga_file="nailpolish_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="715" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="16" + name="Nail Polish Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_color> + <value + color="255,187,200,255" /> + + <value + color="194,102,127,255" /> + + <value + color="227,34,99,255" /> + + <value + color="168,41,60,255" /> + + <value + color="97,28,59,255" /> + + <value + color="234,115,93,255" /> + + <value + color="142,58,47,255" /> + + <value + color="114,30,46,255" /> + + <value + color="14,14,14,255" /> + </param_color> + </param> + </layer> + + <layer + name="upper_gloves bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_gloves" + local_texture_alpha_only="true" /> + + <param + id="1059" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length bump" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1061" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers bump" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_gloves"> + <texture + local_texture="upper_gloves" /> + + <param + id="827" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="829" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="830" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1058" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1060" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_clothes_shadow"> + <texture + local_texture="upper_shirt" /> + + <param + id="899" + group="1" + edit_group="driven" + wearable="shirt" + name="Upper Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="900" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Shadow" + value_min="0.02" + value_max=".87" + value_default="0.02"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="901" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Shadow Bottom" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="902" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + + <param + id="903" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + </layer> + + <layer + name="upper_shirt base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="1029" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1030" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1031" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1032" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="868" + group="3" + wearable="shirt" + edit_group="shirt" + edit_group_order="8" + name="Shirt Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1013" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1014" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1015" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1016" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes"> + <texture + local_texture="upper_shirt" /> + + <param + id="803" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="804" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="805" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="600" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85" + value_default=".7"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="601" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="602" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="778" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + <param + id="1039" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1040" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1041" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1037" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1038" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + + <param + id="875" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1019" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1021" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1023" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1025" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1026" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket"> + <texture + local_texture="upper_jacket" /> + + <param + id="831" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="832" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="833" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1020" + group="1" + edit_group="driven" + wearable="jacket" + name="jacket Sleeve Length" value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1022" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket Collar Front" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1024" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="jacket Collar Back" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="620" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length upper" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="622" + group="1" + wearable="jacket" + edit_group="jacket" + name="open upper" + label_min="closed" + label_max="open" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper alpha" + visibility_mask="TRUE"> + <texture + local_texture="upper_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="lower_body" + width="512" + height="512"> + <layer + name="lower body bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + <layer + name="base_lowerbody bump" + render_pass="bump"> + <texture + tga_file="bump_lowerbody_base.tga" + file_is_mask="FALSE" /> + + <param + id="878" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="lowerbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="160" + group="1" + name="Shading" + wearable="pants" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="lowerbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="161" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="toenails"> + <texture + tga_file="lowerbody_color.tga" /> + </layer> + + <layer + name="lower_bodypaint"> + <texture + local_texture="lower_bodypaint" /> + </layer> + + <layer + name="freckles lower" + fixed_color="120,47,20,128"> + <param + id="777" + group="1" + name="freckles lower" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="lower_tattoo"> + <texture + local_texture="lower_tattoo" /> + + <param + id="1068" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1069" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1070" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + <layer + name="lower_underpants bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_underpants" + local_texture_alpha_only="true" /> + + <param + id="1055" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1057" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_underpants"> + <texture + local_texture="lower_underpants" /> + + <param + id="824" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="825" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="826" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1054" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1056" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_socks bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_socks" + local_texture_alpha_only="true" /> + + <param + id="1051" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_socks"> + <texture + local_texture="lower_socks" /> + + <param + id="818" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="819" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="820" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1050" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_shoes" + local_texture_alpha_only="true" /> + + <param + id="1053" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height bump" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes"> + <texture + local_texture="lower_shoes" /> + + <param + id="812" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="813" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="817" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1052" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_clothes_shadow"> + <texture + local_texture="lower_pants" /> + + <param + id="913" + group="1" + edit_group="driven" + wearable="pants" + name="Lower Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="914" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + skip_if_zero="true" + domain="0.04" /> + </param> + + <param + id="915" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + </layer> + + <layer + name="lower_pants base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="1035" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1036" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="869" + group="3" + wearable="pants" + edit_group="pants" + edit_group_order="6" + name="Pants Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1017" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1018" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants"> + <texture + local_texture="lower_pants" /> + + <param + id="806" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="807" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="808" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="614" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="615" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + <param + id="1033" + group="1" + wearable="jacket" + edit_group="driven" + cross_wearable="true" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1034" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + + <param + id="876" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1027" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1028" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket"> + <texture + local_texture="lower_jacket" /> + + <param + id="809" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="810" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="811" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="621" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length lower" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="623" + group="1" + wearable="jacket" + edit_group="jacket" + name="open lower" + label_min="open" + label_max="closed" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower alpha" + visibility_mask="TRUE"> + <texture + local_texture="lower_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="eyes" + width="128" + height="128"> + <layer + name="whites"> + <texture + tga_file="eyewhite.tga" /> + </layer> + + <layer + name="iris" + global_color="eye_color"> + <texture + local_texture="eyes_iris" /> + </layer> + + <layer + name="eyes alpha" + visibility_mask="TRUE"> + <texture + local_texture="eyes_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="skirt" + width="512" + height="512" + clear_alpha="false"> + <layer + name="skirt_fabric" + write_all_channels="true"> + <texture + local_texture="skirt" /> + + <param + id="921" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="922" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="923" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + </layer> + + <layer + name="skirt_fabric_alpha"> + <param + id="858" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="1" + name="Skirt Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_length_alpha.tga" + domain="0" + multiply_blend="true" /> + </param> + + <param + id="859" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="4" + name="Slit Front" + label_min="Open Front" + label_max="Closed Front" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_front_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="860" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="5" + name="Slit Back" + label_min="Open Back" + label_max="Closed Back" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="160"> + <param_alpha + tga_file="skirt_slit_back_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="861" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="6" + name="Slit Left" + label_min="Open Left" + label_max="Closed Left" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_left_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="862" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="7" + name="Slit Right" + label_min="Open Right" + label_max="Closed Right" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="-30"> + <param_alpha + tga_file="skirt_slit_right_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <driver_parameters> + + <param + id="828" + group="0" + name="Loose Upper Clothing" + label="Shirt Fit" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="4" + label_min="Tight Shirt" + label_max="Loose Shirt" + value_min="0" + value_max="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="628" /> + + <driven + id="899" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="816" + group="0" + name="Loose Lower Clothing" + label="Pants Fit" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="2.5" + label_min="Tight Pants" + label_max="Loose Pants" + value_min="0" + value_max="1" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="516" /> + + <driven + id="913" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="814" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="2" + name="Waist Height" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="614" /> + + <driven + id="1017" /> + + <driven + id="1035" /> + + <driven + id="914" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="815" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="1" + name="Pants Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + simple_percent_min="20" + simple_percent_max="100" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="615" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1018" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1036" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="793" + min1=".9" + max1="1" + max2="1" + min2="1" /> + + <driven + id="915" + min1="0" + max1=".882" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="800" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="1" + name="Sleeve Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".89" + simple_percent_min="15" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="600" /> + + <driven + id="1013" /> + + <driven + id="1029" /> + + <driven + id="900" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="801" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="2" + name="Shirt Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="601" /> + + <driven + id="1014" /> + + <driven + id="1030" /> + + <driven + id="901" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="802" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3" + name="Collar Front" + show_simple="true" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="602" /> + + <driven + id="1015" /> + + <driven + id="1031" /> + + <driven + id="902" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="781" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3.1" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="778" /> + + <driven + id="1016" /> + + <driven + id="1032" /> + + <driven + id="903" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="150" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="125" /> + + <driven + id="126" /> + + <driven + id="160" /> + + <driven + id="161" /> + + <driven + id="874" /> + + <driven + id="878" /> + + </param_driver> + </param> + + <param + id="775" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Freckles" + label_min="Less Freckles" + label_max="More Freckles" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="776" /> + + <driven + id="777" /> + </param_driver> + </param> + + <param + id="162" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="1" + name="Facial Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <driven + id="158" /> + + <driven + id="159" /> + + <driven + id="873" /> + </param_driver> + </param> + + <param + id="163" + group="3" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="3" + name="Wrinkles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <!--<driven + id="128" />--> + <driven + id="118" /> + </param_driver> + </param> + + <param + id="505" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3" + name="Lip Thickness" + label_min="Thin Lips" + label_max="Fat Lips" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="26" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="28" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="799" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3.2" + name="Lip Ratio" + label="Lip Ratio" + show_simple="true" + label_min="More Upper Lip" + label_max="More Lower Lip" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="797" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="798" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="155" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="1" + name="Lip Width" + label="Lip Width" + label_min="Narrow Lips" + label_max="Wide Lips" + show_simple="true" + value_min="-0.9" + value_max="1.3" + camera_distance=".3" + camera_elevation=".04" + value_default="0"> + <param_driver> + <driven + id="29" /> + + <driven + id="30" /> + </param_driver> + </param> + + <param + id="196" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="2" + name="Eye Spacing" + label="Eye Spacing" + label_min="Close Set Eyes" + label_max="Far Set Eyes" + show_simple="true" + value_min="-2" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".35" + camera_angle="5"> + <param_driver> + <driven + id="194" /> + + <driven + id="195" /> + </param_driver> + </param> + + <param + id="769" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.5" + name="Eye Depth" + label_min="Sunken Eyes" + label_max="Bugged Eyes" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="75"> + <param_driver> + <driven + id="767" /> + + <driven + id="768" /> + </param_driver> + </param> + + <param + id="198" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="2" + name="Heel Height" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".8" + camera_elevation="-1"> + <param_driver> + <driven + id="197" /> + + <driven + id="500" /> + </param_driver> + </param> + + <param + id="513" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="3" + name="Heel Shape" + label_min="Pointy Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="45" + camera_distance="1.5" + camera_elevation="-1"> + <param_driver> + <driven + id="509" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="510" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="514" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="4" + name="Toe Shape" + label_min="Pointy" + label_max="Square" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="5" + camera_distance=".8" + camera_elevation="-.8"> + <param_driver> + <driven + id="511" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="512" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="503" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="6" + name="Platform Height" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".5" + camera_elevation="-1"> + <param_driver> + <driven + id="501" /> + + <driven + id="502" /> + </param_driver> + </param> + + <param + id="193" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="3" + name="Head Shape" + label="Head Shape" + label_min="More Square" + label_max="More Round" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="188" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="642" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="189" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="643" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="157" + group="0" + wearable="shape" + edit_group="shape_torso" + edit_group_order="13" + name="Belly Size" + label_min="Small" + label_max="Big" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="104" /> + + <driven + id="156" /> + + <driven + id="849" /> + </param_driver> + </param> + + <param + id="637" + group="0" + wearable="shape" + edit_group="shape_body" + edit_group_order="3" + name="Body Fat" + label_min="Less Body Fat" + label_max="More Body Fat" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.8"> + <param_driver> + <driven + id="633" /> + + <driven + id="634" /> + + <driven + id="635" /> + + <driven + id="851" /> + </param_driver> + </param> + + <param + id="130" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="8" + name="Front Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".45" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="144" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="145" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="131" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="9" + name="Side Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="146" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="147" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="132" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="10" + name="Back Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".39" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_driver> + <driven + id="148" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="149" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="133" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="2" + name="Hair Front" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".25" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="172" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="171" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="134" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="3" + name="Hair Sides" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="174" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="173" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="135" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="4" + name="Hair Back" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation="-.1" + camera_distance=".8" + camera_angle="160"> + <param_driver> + <driven + id="176" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="175" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="136" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.5" + name="Hair Sweep" + label_min="Sweep Forward" + label_max="Sweep Back" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="179" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="178" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="137" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="16" + name="Hair Tilt" + label_min="Left" + label_max="Right" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_driver> + <driven + id="190" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="191" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="608" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="2" + name="bottom length lower" + label="Jacket Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="620" /> + + <driven + id="1025" /> + + <driven + id="1037" /> + + <driven + id="621" /> + + <driven + id="1027" /> + + <driven + id="1033" /> + </param_driver> + </param> + + <param + id="609" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="4" + name="open jacket" + label="Open Front" + label_min="Open" + label_max="Closed" + value_min="0" + value_max="1" + value_default=".2" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="622" /> + + <driven + id="1026" /> + + <driven + id="1038" /> + + <driven + id="623" /> + + <driven + id="1028" /> + + <driven + id="1034" /> + </param_driver> + </param> + + <param + id="105" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="6" + name="Breast Size" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".3" + camera_distance="1.2" + camera_angle="30"> + <param_driver> + <driven + id="843" + min1="0" + max1="0" + max2="0" + min2=".01" /> + + <driven + id="627" + min1="0" + max1="0.01" + max2="0.01" + min2=".5" /> + + <driven + id="626" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="629" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="6" + name="Forehead Angle" + label_min="More Vertical" + label_max="More Sloped" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="70"> + <param_driver> + <driven + id="630" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="644" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="631" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="645" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="646" + group="0" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + edit_group_order="4" + label_min="Chin Heavy" + label_max="Forehead Heavy" + show_simple="true" + value_min="-1.3" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="640" /> + + <driven + id="186" /> + </param_driver> + </param> + + <param + id="647" + group="0" + name="Squash_Stretch_Head" + label="Head Stretch" + wearable="shape" + edit_group="shape_head" + edit_group_order="2" + show_simple="true" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-0.5" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="641" /> + + <driven + id="187" /> + </param_driver> + </param> + + <param + id="649" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1.1" + name="Torso Muscles" + label="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_driver> + <driven + id="648" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="678" + group="0" + sex="male" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1" + name="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_driver> + <driven + id="677" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="652" + group="0" + wearable="shape" + edit_group="shape_legs" + edit_group_order="1" + name="Leg Muscles" + label_min="Less Muscular" + label_max="More Muscular" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="15"> + <param_driver> + <driven + id="651" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="152" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="80" + name="male" + group="0" + edit_group="dummy" + wearable="shape" + value_min="0" + value_max="1"> + <param_driver> + <driven + id="32" /> + + <driven + id="153" /> + + <driven + id="40" /> + + <driven + id="100" /> + + <driven + id="857" /> + </param_driver> + </param> + + <param + id="659" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5" + name="Mouth Corner" + label_min="Corner Down" + label_max="Corner Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="658" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="657" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="662" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="5" + name="Face Shear" + label_min="Shear Right Up" + label_max="Shear Left Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="660" /> + + <driven + id="661" /> + + <driven + id="774" /> + </param_driver> + </param> + + <param + id="773" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="4.5" + name="Head Length" + label_min="Flat Head" + label_max="Long Head" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="75"> + <param_driver> + <driven + id="770" /> + + <driven + id="771" /> + + <driven + id="772" /> + </param_driver> + </param> + + <param + id="682" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="1" + name="Head Size" + label="Head Size" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="679" /> + + <driven + id="694" /> + + <driven + id="680" /> + + <driven + id="681" /> + + <driven + id="655" /> + </param_driver> + </param> + + <param + id="690" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1" + name="Eye Size" + label="Eye Size" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="0" + value_max="1" + value_default=".5" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_driver> + <driven + id="686" /> + + <driven + id="687" /> + + <driven + id="695" /> + + <driven + id="688" /> + + <driven + id="691" /> + + <driven + id="689" /> + </param_driver> + </param> + + <param + id="752" + group="0" + sex="male" + wearable="hair" + edit_group="hair_facial" + edit_group_order="1" + name="Hair Thickness" + label_min="5 O'Clock Shadow" + label_max="Bushy Hair" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="751" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="1012" + min1="0" + max1="0" + max2=".2" + min2=".6" /> + + <driven + id="400" + min1=".2" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="763" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="1" + name="Hair Volume" + show_simple="true" + label_min="Less Volume" + label_max="More Volume" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="761" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="180" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="834" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="809" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="831" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="835" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="810" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="832" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="836" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="811" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="833" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="785" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.6" + name="Pigtails" + show_simple="true" + label_min="Short Pigtails" + label_max="Long Pigtails" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="15"> + <param_driver> + <driven + id="782" + min1="0" + max1=".10" + max2=".10" + min2=".5" /> + + <driven + id="783" + min1=".10" + max1=".5" + max2=".5" + min2=".75" /> + + <driven + id="790" + min1=".5" + max1=".75" + max2=".75" + min2="1" /> + + <driven + id="784" + min1=".75" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="789" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.7" + name="Ponytail" + label_min="Short Ponytail" + label_max="Long Ponytail" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="180"> + <param_driver> + <driven + id="786" + min1="0" + max1=".10" + max2=".10" + min2=".66" /> + + <driven + id="787" + min1=".10" + max1=".66" + max2=".66" + min2="1" /> + + <driven + id="788" + min1=".66" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="795" + group="0" + name="Butt Size" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4" + label_min="Flat Butt" + label_max="Big Butt" + value_min="0" + value_max="1" + value_default=".25" + camera_angle="180" + camera_distance=".6"> + <param_driver> + <driven + id="867" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="794" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="151" + min1=".3" + max1="1" + max2="1" + min2="1" /> + + <driven + id="852" + min1=".3" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="841" + group="0" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + edit_group_order="5.5" + edit_group="shape_legs" + label_min="Knock Kneed" + label_max="Bow Legged" + value_min="-1" + value_max="1" + value_default="0" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="853" /> + + <driven + id="847" /> + </param_driver> + </param> + + <param + id="753" + group="0" + name="Saddlebags" + label="Saddle Bags" + wearable="shape" + edit_group="shape_legs" + edit_group_order="5" + label_min="Less Saddle" + label_max="More Saddle" + value_min="-0.5" + value_max="3" + value_default="0" + camera_angle="0" + camera_distance="1.2"> + <param_driver> + <driven + id="850" /> + + <driven + id="854" /> + </param_driver> + </param> + + <param + id="676" + group="0" + name="Love_Handles" + label="Love Handles" + wearable="shape" + edit_group="shape_torso" + edit_group_order="12" + label_min="Less Love" + label_max="More Love" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".3" + camera_distance=".9"> + <param_driver> + <driven + id="855" /> + + <driven + id="856" /> + </param_driver> + </param> + + <param + id="863" + group="0" + name="skirt_looseness" + label="Skirt Fit" + show_simple="true" + clothing_morph="true" + wearable="skirt" + edit_group_order="2" + edit_group="skirt" + label_min="Tight Skirt" + label_max="Poofy Skirt" + value_min="0" + value_max="1" + value_default=".333" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="866" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="846" + min1="0" + max1=".5" + max2=".5" + min2="1" /> + + <driven + id="845" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="119" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="1" + name="Eyebrow Size" + show_simple="true" + label_min="Thin Eyebrows" + label_max="Bushy Eyebrows" + value_min="0" + value_max="1" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1000" /> + + <driven + id="1001" /> + </param_driver> + </param> + + <param + id="750" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2" + name="Eyebrow Density" + label_min="Sparse" + label_max="Dense" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1002" /> + + <driven + id="1003" /> + </param_driver> + </param> + + <param + id="166" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="2" + name="Sideburns" + show_simple="true" + label_min="Short Sideburns" + label_max="Mutton Chops" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1004" /> + + <driven + id="1005" /> + </param_driver> + </param> + + <param + id="167" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="3" + name="Moustache" + show_simple="true" + label_min="Chaplin" + label_max="Handlebars" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1006" /> + + <driven + id="1007" /> + </param_driver> + </param> + + <param + id="168" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="5" + name="Soulpatch" + show_simple="true" + label_min="Less soul" + label_max="More soul" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="0"> + <param_driver> + <driven + id="1008" /> + + <driven + id="1009" /> + </param_driver> + </param> + + <param + id="169" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="4" + name="Chin Curtains" + show_simple="true" + label_min="Less Curtains" + label_max="More Curtains" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="45"> + <param_driver> + <driven + id="1010" /> + + <driven + id="1011" /> + </param_driver> + </param> + + <param + id="606" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1019" /> + + <driven + id="1039" /> + + <driven + id="1020" /> + </param_driver> + </param> + + <param + id="607" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1021" /> + + <driven + id="1040" /> + + <driven + id="1022" /> + </param_driver> + </param> + + <param + id="780" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3.5" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1023" /> + + <driven + id="1041" /> + + <driven + id="1024" /> + </param_driver> + </param> + + <param + id="603" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1042" /> + + <driven + id="1043" /> + </param_driver> + </param> + + <param + id="604" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".85" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1044" /> + + <driven + id="1045" /> + </param_driver> + </param> + + <param + id="605" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1046" /> + + <driven + id="1047" /> + </param_driver> + </param> + + <param + id="779" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="4" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1048" /> + + <driven + id="1049" /> + </param_driver> + </param> + + <param + id="617" + group="0" + wearable="socks" + edit_group="socks" + name="Socks Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="0.35" + camera_distance=".95" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1050" /> + + <driven + id="1051" /> + </param_driver> + </param> + + <param + id="616" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="1" + name="Shoe Height" + label_min="Short" + label_max="Tall" + value_min="0" + value_max="1" + value_default="0.1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1052" /> + + <driven + id="1053" /> + </param_driver> + </param> + + <param + id="619" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1054" /> + + <driven + id="1055" /> + </param_driver> + </param> + + <param + id="624" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1056" /> + + <driven + id="1057" /> + </param_driver> + </param> + + <param + id="93" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1058" /> + + <driven + id="1059" /> + </param_driver> + </param> + + <param + id="844" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Fingers" + label_min="Fingerless" + label_max="Fingers" + value_min=".01" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1060" /> + + <driven + id="1061" /> + </param_driver> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="16" + group="0" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="3" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="870" /> + </param_driver> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="757" + group="0" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-4" + value_max="2" + value_default="-1" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="871" /> + </param_driver> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="31" + group="0" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="2" + value_default=".5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="872" /> + </param_driver> + </param> + + + <param + id="877" + group="3" + name="Jacket Wrinkles" + label="Jacket Wrinkles" + wearable="jacket" + edit_group="jacket" + edit_group_order="20" + label_min="No Wrinkles" + label_max="Wrinkles" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="875" /> + + + <driven + id="876" /> + </param_driver> + </param> + + <param + id="1071" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1062" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1065" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1068" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1072" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1063" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1066" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1069" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1073" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1064" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1067" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1070" + min1="0" + max1="1" + max2="1" + min2="1" /> + + </param_driver> + </param> + + <!-- ==PHYSICS PARAMETERS======================================= --> + + <param + id="1100" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_UpDown_Controller" + label="Breast Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1200" /> + </param_driver> + </param> + + <param + id="1101" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_InOut_Controller" + label="Breast Physics InOut Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1201" /> + </param_driver> + </param> + + <param + id="1102" + group="1" + wearable="physics" + name="Belly_Physics_UpDown_Controller" + label="Belly Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1202" /> + <driven + id="1203" /> + <driven + id="1204" /> + </param_driver> + </param> + + <param + id="1103" + group="1" + wearable="shape" + name="Butt_Physics_UpDown_Controller" + label="Butt Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1205" /> + </param_driver> + </param> + + <param + id="1104" + group="1" + wearable="shape" + name="Butt_Physics_LeftRight_Controller" + label="Butt Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1206" /> + </param_driver> + </param> + + <param + id="1105" + group="1" + wearable="shape" + name="Breast_Physics_LeftRight_Controller" + label="Breast Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1207" /> + </param_driver> + </param> + + <param + id="10000" + group="0" + sex="female" + name="Breast_Physics_Mass" + label="Breast Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10001" + group="0" + sex="female" + name="Breast_Physics_Gravity" + label="Breast Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + + <param + id="10002" + group="0" + sex="female" + name="Breast_Physics_Drag" + label="Breast Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10003" + group="0" + sex="female" + name="Breast_Physics_UpDown_Max_Effect" + label="Breast Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10004" + group="0" + sex="female" + name="Breast_Physics_UpDown_Spring" + label="Breast Physics UpDown Spring" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10005" + group="0" + sex="female" + name="Breast_Physics_UpDown_Gain" + label="Breast Physics UpDown Gain" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10006" + group="0" + sex="female" + name="Breast_Physics_UpDown_Damping" + label="Breast Physics UpDown Damping" + wearable="physics" + edit_group="physics_breasts_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10007" + group="0" + sex="female" + name="Breast_Physics_InOut_Max_Effect" + label="Breast Physics InOut Max Effect" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10008" + group="0" + sex="female" + name="Breast_Physics_InOut_Spring" + label="Breast Physics InOut Spring" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10009" + group="0" + sex="female" + name="Breast_Physics_InOut_Gain" + label="Breast Physics InOut Gain" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10010" + group="0" + sex="female" + name="Breast_Physics_InOut_Damping" + label="Breast Physics InOut Damping" + wearable="physics" + edit_group="physics_breasts_inout" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10011" + group="0" + name="Belly_Physics_Mass" + label="Belly Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10012" + group="0" + name="Belly_Physics_Gravity" + label="Belly Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10013" + group="0" + name="Belly_Physics_Drag" + label="Belly Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + <param + id="10014" + group="0" + name="Belly_Physics_UpDown_Max_Effect" + label="Belly Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_belly_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10015" + group="0" + name="Belly_Physics_UpDown_Spring" + label="Belly Physics UpDown Spring" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10016" + group="0" + name="Belly_Physics_UpDown_Gain" + label="Belly Physics UpDown Gain" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10017" + group="0" + name="Belly_Physics_UpDown_Damping" + label="Belly Physics UpDown Damping" + wearable="physics" + edit_group="physics_belly_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10018" + group="0" + name="Butt_Physics_Mass" + label="Butt Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10019" + group="0" + name="Butt_Physics_Gravity" + label="Butt Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10020" + group="0" + name="Butt_Physics_Drag" + label="Butt Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10021" + group="0" + name="Butt_Physics_UpDown_Max_Effect" + label="Butt Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_butt_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10022" + group="0" + name="Butt_Physics_UpDown_Spring" + label="Butt Physics UpDown Spring" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10023" + group="0" + name="Butt_Physics_UpDown_Gain" + label="Butt Physics UpDown Gain" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10024" + group="0" + name="Butt_Physics_UpDown_Damping" + label="Butt Physics UpDown Damping" + wearable="physics" + edit_group="physics_butt_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10025" + group="0" + name="Butt_Physics_LeftRight_Max_Effect" + label="Butt Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10026" + group="0" + name="Butt_Physics_LeftRight_Spring" + label="Butt Physics LeftRight Spring" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10027" + group="0" + name="Butt_Physics_LeftRight_Gain" + label="Butt Physics LeftRight Gain" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10028" + group="0" + name="Butt_Physics_LeftRight_Damping" + label="Butt Physics LeftRight Damping" + wearable="physics" + edit_group="physics_butt_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10029" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Max_Effect" + label="Breast Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10030" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Spring" + label="Breast Physics LeftRight Spring" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10031" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Gain" + label="Breast Physics LeftRight Gain" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10032" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Damping" + label="Breast Physics LeftRight Damping" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="11000" + group="0" + name="AppearanceMessage_Version" + label="AppearanceMessage Version" + value_default="0" + value_min="0" + value_max="255"> + <param_driver /> + </param> + + </driver_parameters> + + <morph_masks> + <mask + morph_name="Displace_Hair_Facial" + body_region="head" + layer="facialhair" /> + <mask + morph_name="Displace_Loose_Upperbody" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Shirtsleeve_flair" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Displace_Loose_Lowerbody" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Pantflair" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Low_Crotch" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Longcuffs" + body_region="lower_body" + layer="lower_pants" /> + </morph_masks> +</linden_avatar> + diff --git a/indra/newview/character/avatar_lad_tentacles.xml b/indra/newview/character/avatar_lad_tentacles.xml new file mode 100644 index 0000000000..9ec6428ee6 --- /dev/null +++ b/indra/newview/character/avatar_lad_tentacles.xml @@ -0,0 +1,12505 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_avatar + version="1.0" wearable_definition_version="22"> + <!-- The wearable_definition_version is checked during asset upload. --> + <!-- If you increment it, check indra/lib/python/indra/assetutil.py. --> + <skeleton + file_name="avatar_skeleton.xml"> + <attachment_point + id="1" + group="6" + pie_slice="2" + name="Chest" + joint="mChest" + position="0.15 0 -0.1" + rotation="0 90 90" + visible_in_first_person="true" /> + + <attachment_point + id="2" + group="2" + pie_slice="2" + name="Skull" + joint="mHead" + position="0 0 0.15" + rotation="0 0 90" + visible_in_first_person="false" /> + + <attachment_point + id="3" + group="3" + pie_slice="3" + name="Left Shoulder" + joint="mCollarLeft" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="4" + group="1" + pie_slice="1" + name="Right Shoulder" + joint="mCollarRight" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="5" + group="4" + name="Left Hand" + joint="mWristLeft" + position="0 0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="6" + group="0" + name="Right Hand" + joint="mWristRight" + position="0 -0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="7" + group="5" + pie_slice="6" + name="Left Foot" + joint="mFootLeft" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="8" + group="7" + pie_slice="6" + name="Right Foot" + joint="mFootRight" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="9" + group="6" + pie_slice="7" + name="Spine" + joint="mChest" + position="-0.15 0 -0.1" + rotation="0 -90 90" + visible_in_first_person="true" /> + + <attachment_point + id="10" + group="6" + pie_slice="6" + name="Pelvis" + joint="mPelvis" + position="0 0 -0.15" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="11" + group="2" + pie_slice="6" + name="Mouth" + joint="mHead" + position="0.12 0 0.001" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="12" + group="2" + pie_slice="7" + name="Chin" + joint="mHead" + position="0.12 0 -0.04" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="13" + group="2" + pie_slice="4" + name="Left Ear" + joint="mHead" + position="0.015 0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="14" + group="2" + pie_slice="0" + name="Right Ear" + joint="mHead" + position="0.015 -0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="15" + group="2" + pie_slice="3" + name="Left Eyeball" + joint="mEyeLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="16" + group="2" + pie_slice="1" + name="Right Eyeball" + joint="mEyeRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="17" + group="2" + pie_slice="5" + name="Nose" + joint="mHead" + position="0.1 0 0.05" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="18" + group="1" + pie_slice="0" + name="R Upper Arm" + joint="mShoulderRight" + position="0.01 -0.13 0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="19" + group="1" + pie_slice="7" + name="R Forearm" + joint="mElbowRight" + position="0 -0.12 0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="20" + group="3" + pie_slice="4" + name="L Upper Arm" + joint="mShoulderLeft" + position="0.01 0.15 -0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="21" + group="3" + pie_slice="5" + name="L Forearm" + joint="mElbowLeft" + position="0 0.113 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="22" + group="7" + pie_slice="1" + name="Right Hip" + joint="mHipRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="23" + group="7" + pie_slice="0" + name="R Upper Leg" + joint="mHipRight" + position="-0.017 0.041 -0.310" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="24" + group="7" + pie_slice="7" + name="R Lower Leg" + joint="mKneeRight" + position="-0.044 -0.007 -0.262" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="25" + group="5" + pie_slice="3" + name="Left Hip" + joint="mHipLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="26" + group="5" + pie_slice="4" + name="L Upper Leg" + joint="mHipLeft" + position="-0.019 -0.034 -0.310" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="27" + group="5" + pie_slice="5" + name="L Lower Leg" + joint="mKneeLeft" + position="-0.044 -0.007 -0.261" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="28" + group="6" + pie_slice="5" + name="Stomach" + joint="mPelvis" + position="0.092 0.0 0.088" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="29" + group="6" + pie_slice="3" + name="Left Pec" + joint="mTorso" + position="0.104 0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="30" + group="6" + pie_slice="1" + name="Right Pec" + joint="mTorso" + position="0.104 -0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="31" + group="8" + name="Center 2" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="32" + group="8" + name="Top Right" + joint="mScreen" + position="0 -0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="33" + group="8" + name="Top" + joint="mScreen" + position="0 0 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="34" + group="8" + name="Top Left" + joint="mScreen" + position="0 0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="35" + group="8" + name="Center" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="36" + group="8" + name="Bottom Left" + joint="mScreen" + position="0 0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="37" + group="8" + name="Bottom" + joint="mScreen" + position="0 0 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="38" + group="8" + name="Bottom Right" + joint="mScreen" + position="0 -0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="39" + group="6" + pie_slice="1" + name="Neck" + joint="mNeck" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="40" + group="6" + pie_slice="2" + name="Avatar Center" + joint="mRoot" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <param + id="32" + group="1" + wearable="shape" + name="Male_Skeleton" + label_min="Female" + label_max="Male" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .2" /> + + <bone + name="mCollarLeft" + scale="0 .4 0" /> + + <bone + name="mCollarRight" + scale="0 .4 0" /> + + <bone + name="mShoulderLeft" + scale="0 .35 0" /> + + <bone + name="mShoulderRight" + scale="0 .35 0" /> + + <bone + name="mElbowLeft" + scale="0 .1 0" /> + + <bone + name="mElbowRight" + scale="0 .1 0" /> + + <bone + name="mChest" + scale=".05 .05 .05" /> + + <bone + name="mTorso" + scale="0 0 .05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale=".05 .05 0" /> + + <bone + name="mHipRight" + scale=".05 .05 0" /> + + <bone + name="mKneeLeft" + scale=".05 .05 .1" /> + + <bone + name="mKneeRight" + scale=".05 .05 .1" /> + </param_skeleton> + </param> + + <param + id="33" + group="0" + name="Height" + label="Height" + wearable="shape" + edit_group="shape_body" + edit_group_order="1" + label_min="Short" + label_max="Tall" + show_simple="true" + value_min="-2.3" + value_max="2" + camera_distance="2.2"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .02" /> + + <bone + name="mCollarLeft" + scale="0 0 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" /> + + <bone + name="mShoulderLeft" + scale="0 0.08 0" /> + + <bone + name="mShoulderRight" + scale="0 0.08 0" /> + + <bone + name="mElbowLeft" + scale="0 0.06 0" /> + + <bone + name="mElbowRight" + scale="0 0.06 0" /> + + <bone + name="mChest" + scale="0 0 0.05" /> + + <bone + name="mTorso" + scale="0 0 0.05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale="0 0 0.1" /> + + <bone + name="mHipRight" + scale="0 0 0.1" /> + + <bone + name="mKneeLeft" + scale="0 0 0.1" /> + + <bone + name="mKneeRight" + scale="0 0 0.1" /> + </param_skeleton> + </param> + + <param + id="34" + group="0" + name="Thickness" + label="Body Thickness" + wearable="shape" + edit_group="shape_body" + edit_group_order="2" + label_min="Body Thin" + label_max="Body Thick" + show_simple="true" + value_min="-0.7" + value_max="1.5" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mNeck" + scale="0.1 0.1 0" /> + + <bone + name="mCollarLeft" + scale="0 0.2 0" /> + + <bone + name="mCollarRight" + scale="0 0.2 0" /> + + <bone + name="mShoulderLeft" + scale="0.1 0 0.1" /> + + <bone + name="mShoulderRight" + scale="0.1 0 0.1" /> + + <bone + name="mElbowLeft" + scale="0.1 0 0.1" /> + + <bone + name="mElbowRight" + scale="0.1 0 0.1" /> + + <bone + name="mChest" + scale="0.1 0.1 0" /> + + <bone + name="mTorso" + scale="0.1 0.1 0" /> + + <bone + name="mPelvis" + scale="0.1 0.1 0" /> + + <bone + name="mHipLeft" + scale="0.13 0.13 0" /> + + <bone + name="mHipRight" + scale="0.13 0.13 0" /> + + <bone + name="mKneeLeft" + scale="0.12 0.12 0" /> + + <bone + name="mKneeRight" + scale="0.12 0.12 0" /> + </param_skeleton> + </param> + + <param + id="36" + group="0" + name="Shoulders" + label="Shoulders" + wearable="shape" + edit_group="shape_torso" + edit_group_order="4" + label_min="Narrow" + label_max="Broad" + show_simple="true" + value_min="-1.8" + value_max="1.4" + value_default="-0.5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_skeleton> + <bone + name="mNeck" + scale="0.01 0.03 0" /> + + <bone + name="mCollarLeft" + scale="0 0 0" + offset="0 .02 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" + offset="0 -.02 0" /> + + <bone + name="mChest" + scale="0.02 0.08 0" /> + </param_skeleton> + </param> + + <param + id="37" + group="0" + name="Hip Width" + label="Hip Width" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-3.2" + value_max="2.8" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0.1 0" /> + + <bone + name="mHipLeft" + scale="0 0 0" + offset="0 .004 0" /> + + <bone + name="mHipRight" + scale="0 0 0" + offset="0 -.004 0" /> + </param_skeleton> + </param> + + <param + id="842" + group="0" + name="Hip Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3.2" + label_min="Short hips" + label_max="Long Hips" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0 0.3" /> + </param_skeleton> + </param> + + <param + id="38" + group="0" + name="Torso Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="11" + label_min="Short Torso" + label_max="Long Torso" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mTorso" + scale="0 0 .3" /> + + <bone + name="mPelvis" + scale="0 0 .1" /> + + <bone + name="mHipLeft" + scale="0 0 -.1" /> + + <bone + name="mHipRight" + scale="0 0 -.1" /> + + <bone + name="mKneeRight" + scale="0 0 -.05" /> + + <bone + name="mKneeLeft" + scale="0 0 -.05" /> + </param_skeleton> + </param> + + <param + id="195" + group="1" + name="EyeBone_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 .009 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 -.009 0" /> + </param_skeleton> + </param> + + <param + id="661" + group="1" + name="EyeBone_Head_Shear" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Shear Left Up" + label_max="Eyes Shear Right Up" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 0 .004" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 0 -.004" /> + </param_skeleton> + </param> + + <param + id="772" + group="1" + name="EyeBone_Head_Elongate" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Short Head" + label_max="Eyes Long Head" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".016 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".016 0 0" /> + </param_skeleton> + </param> + + <param + id="768" + group="1" + name="EyeBone_Bug" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Sunken" + label_max="Eyes Bugged" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".005 0 0" /> + </param_skeleton> + </param> + + <param + id="655" + group="1" + name="Head Size" + label="Head Size" + wearable="shape" + edit_group="shape_head" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="-.25" + value_max=".10"> + <param_skeleton> + <bone + name="mSkull" + scale="1 1 1" + offset="0 0 0.1" /> + + <bone + name="mHead" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeLeft" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeRight" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="197" + group="1" + wearable="shoes" + name="Shoe_Heels" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.08" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.08" /> + </param_skeleton> + </param> + + <param + id="502" + group="1" + wearable="shoes" + name="Shoe_Platform" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.07" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.07" /> + </param_skeleton> + </param> + + <param + id="675" + group="0" + name="Hand Size" + wearable="shape" + edit_group="shape_torso" + edit_group_order="10" + label_min="Small Hands" + label_max="Large Hands" + value_min="-.3" + value_max=".3" + camera_elevation=".1" + camera_distance="1.4" + camera_angle="0"> + <param_skeleton> + <bone + name="mWristRight" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mWristLeft" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="683" + group="0" + name="Neck Thickness" + wearable="shape" + edit_group="shape_torso" + edit_group_order="2" + label_min="Skinny Neck" + label_max="Thick Neck" + value_min="-.4" + value_max=".2" + value_default="-.15" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="1 1 0" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="689" + group="1" + wearable="shape" + name="EyeBone_Big_Eyes" + edit_group="shape_eyes" + label_min="Eyes Back" + label_max="Eyes Forward" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="-.005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="-.005 0 0" /> + </param_skeleton> + </param> + + <param + id="692" + group="0" + name="Leg Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="2" + label_min="Short Legs" + label_max="Long Legs" + value_min="-1" + value_max="1" + camera_distance="2.5"> + <param_skeleton> + <bone + name="mHipLeft" + scale="0 0 .2" /> + + <bone + name="mHipRight" + scale="0 0 .2" /> + + <bone + name="mKneeRight" + scale="0 0 .2" /> + + <bone + name="mKneeLeft" + scale="0 0 .2" /> + </param_skeleton> + </param> + + <param + id="693" + group="0" + name="Arm Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="9" + label_min="Short Arms" + label_max="Long arms" + value_min="-1" + value_max="1" + value_default=".6" + camera_distance="1.5"> + <param_skeleton> + <bone + name="mShoulderLeft" + scale="0 .2 0" /> + + <bone + name="mShoulderRight" + scale="0 .2 0" /> + + <bone + name="mElbowRight" + scale="0 .3 0" /> + + <bone + name="mElbowLeft" + scale="0 .3 0" /> + </param_skeleton> + </param> + + <param + id="756" + group="0" + name="Neck Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="3" + label_min="Short Neck" + label_max="Long Neck" + value_min="-1" + value_max="1" + value_default="0" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .5" /> + </param_skeleton> + </param> + <param + id="11001" + group="0" + name="Hover" + wearable="shape" + edit_group="shape_body" + edit_group_order="4" + label_min="Lower" + label_max="Higher" + value_min="-2" + value_max="2" + value_default="0" + camera_distance="2.5"> + <param_skeleton /> + </param> + + </skeleton> + + <mesh + type="hairMesh" + lod="0" + file_name="avatar_hair.llm" + min_pixel_width="320"> + <!-- begin morph targets --> + <param + id="180" + group="1" + name="Hair_Volume" + label="Hair Volume" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="761" + group="1" + name="Hair_Volume_Small" + label="Hair Volume" + show_simple="true" + wearable="hair" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="181" + group="0" + name="Hair_Big_Front" + label="Big Hair Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.14" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="182" + group="0" + name="Hair_Big_Top" + label="Big Hair Top" + wearable="hair" + edit_group="hair_style" + edit_group_order="6" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="183" + group="0" + name="Hair_Big_Back" + clothing_morph="true" + label="Big Hair Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="7" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.05" + camera_elevation=".1" + camera_distance=".7" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="184" + group="0" + name="Hair_Spiked" + label="Spiked Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="15" + label_min="No Spikes" + label_max="Big Spikes" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="140" + group="0" + name="Hair_Part_Middle" + label="Middle Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="17" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="141" + group="0" + name="Hair_Part_Right" + label="Right Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="18" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="142" + group="0" + name="Hair_Part_Left" + label="Left Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="19" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="143" + group="0" + name="Hair_Sides_Full" + label="Full Hair Sides" + show_simple="true" + wearable="hair" + edit_group="hair_style" + edit_group_order="11" + label_min="Mowhawk" + label_max="Full Sides" + value_min="-4" + value_max="1.5" + value_default="0.125" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="144" + group="1" + name="Bangs_Front_Up" + label="Front Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="145" + group="1" + clothing_morph="true" + name="Bangs_Front_Down" + label="Front Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Down" + value_min="0" + value_max="5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="146" + group="1" + name="Bangs_Sides_Up" + label="Side Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="147" + group="1" + clothing_morph="true" + name="Bangs_Sides_Down" + label="Side Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="148" + group="1" + name="Bangs_Back_Up" + label="Back Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="149" + group="1" + name="Bangs_Back_Down" + label="Back Bangs Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="171" + group="1" + name="Hair_Front_Down" + label="Front Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="172" + group="1" + name="Hair_Front_Up" + label="Front Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="173" + group="1" + name="Hair_Sides_Down" + label="Sides Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="174" + group="1" + name="Hair_Sides_Up" + label="Sides Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="175" + group="1" + name="Hair_Back_Down" + label="Back Hair Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Down" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="176" + group="1" + name="Hair_Back_Up" + label="Back Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="177" + group="0" + name="Hair_Rumpled" + label="Rumpled Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="14.5" + label_min="Smooth Hair" + label_max="Rumpled Hair" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="178" + group="1" + name="Hair_Swept_Back" + label="Swept Back Hair" + wearable="hair" + edit_group="hair_style" + label_min="NotHair" + label_max="Swept Back" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="179" + group="1" + name="Hair_Swept_Forward" + label="Swept Forward Hair" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Swept Forward" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="190" + group="1" + name="Hair_Tilt_Right" + label="Hair Tilted Right" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Right" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="191" + group="1" + name="Hair_Tilt_Left" + label="Hair Tilted Left" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Left" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="192" + group="0" + name="Bangs_Part_Middle" + label="Part Bangs" + wearable="hair" + edit_group="hair_style" + edit_group_order="20" + label_min="No Part" + label_max="Part Bangs" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="640" + group="1" + name="Hair_Egg_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1.3" + value_max="1"> + <param_morph /> + </param> + + <param + id="641" + group="1" + name="Hair_Squash_Stretch_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-.5" + value_max="1"> + <param_morph /> + </param> + + <param + id="642" + group="1" + name="Hair_Square_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="643" + group="1" + name="Hair_Round_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="644" + group="1" + name="Hair_Forehead_Round" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="645" + group="1" + name="Hair_Forehead_Slant" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="774" + group="1" + name="Shear_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="771" + group="1" + name="Elongate_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + <param + id="674" + group="0" + name="Hair_Shear_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="12" + label="Shear Back" + label_min="Full Back" + label_max="Sheared Back" + value_min="-1" + value_max="2" + value_default="-0.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="100"> + <param_morph /> + </param> + + <param + id="762" + group="0" + name="Hair_Shear_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.8" + label="Shear Front" + show_simple="true" + label_min="Full Front" + label_max="Sheared Front" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="754" + group="0" + name="Hair_Taper_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="14" + label="Taper Back" + label_min="Wide Back" + label_max="Narrow Back" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_morph /> + </param> + + <param + id="755" + group="0" + name="Hair_Taper_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="13" + label="Taper Front" + label_min="Wide Front" + label_max="Narrow Front" + value_min="-1.5" + value_max="1.5" + value_default="0.05" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="782" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="783" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="790" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Medlong" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="784" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Long" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="786" + group="1" + name="Hair_Ponytail_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="787" + group="1" + name="Hair_Ponytail_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="788" + group="1" + name="Hair_Ponytail_Long" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- #end morph targets --> + </mesh> + + <mesh + type="hairMesh" + lod="1" + file_name="avatar_hair_1.llm" + min_pixel_width="160" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="2" + file_name="avatar_hair_2.llm" + min_pixel_width="80" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="3" + file_name="avatar_hair_3.llm" + min_pixel_width="40" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="4" + file_name="avatar_hair_4.llm" + min_pixel_width="20" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="5" + file_name="avatar_hair_5.llm" + min_pixel_width="0" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="headMesh" + lod="0" + file_name="avatar_head.llm" + min_pixel_width="320"> + <!-- + begin morph targets + ############# + tweakable morphs + ############# + --> + <param + id="1" + group="0" + name="Big_Brow" + label="Brow Size" + wearable="shape" + edit_group="shape_head" + edit_group_order="7" + label_min="Small" + label_max="Large" + value_min="-.3" + value_max="2" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="2" + group="0" + name="Nose_Big_Out" + label="Nose Size" + wearable="shape" + edit_group="shape_nose" + edit_group_order="1" + label_min="Small" + label_max="Large" + show_simple="true" + value_min="-0.8" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="50"> + <param_morph /> + </param> + + <param + id="4" + group="0" + name="Broad_Nostrils" + label="Nostril Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3" + label_min="Narrow" + label_max="Broad" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="759" + group="0" + name="Low_Septum_Nose" + label="Nostril Division" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3.5" + label_min="High" + label_max="Low" + value_min="-1" + value_max="1.5" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="517" + group="0" + name="Wide_Nose" + label="Nose Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="2" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="5" + group="0" + name="Cleft_Chin" + label="Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="6" + label_min="Round" + label_max="Cleft" + value_min="-.1" + value_max="1" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="6" + group="0" + name="Bulbous_Nose_Tip" + label="Nose Tip Shape" + wearable="shape" + edit_group="shape_nose" + edit_group_order="8" + label_min="Pointy" + label_max="Bulbous" + value_min="-.3" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="7" + group="0" + name="Weak_Chin" + label="Chin Angle" + wearable="shape" + edit_group="shape_chin" + edit_group_order="1" + label_min="Chin Out" + label_max="Chin In" + value_min="-.5" + value_max=".5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="8" + group="0" + name="Double_Chin" + label="Chin-Neck" + wearable="shape" + edit_group="shape_chin" + edit_group_order="8" + label_min="Tight Chin" + label_max="Double Chin" + value_min="-.5" + value_max="1.5" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="60"> + <param_morph /> + </param> + + <param + id="10" + group="0" + name="Sunken_Cheeks" + label="Lower Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="9" + label_min="Well-Fed" + label_max="Sunken" + show_simple="true" + value_min="-1.5" + value_max="3" + camera_elevation=".1" + camera_distance=".4" + camera_angle="5"> + <param_morph /> + </param> + + <param + id="11" + group="0" + name="Noble_Nose_Bridge" + label="Upper Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="758" + group="0" + name="Lower_Bridge_Nose" + label="Lower Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5.5" + label_min="Low" + label_max="High" + value_min="-1.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="12" + group="0" + name="Jowls" + wearable="shape" + edit_group="shape_chin" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="13" + group="0" + name="Cleft_Chin_Upper" + label="Upper Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="7" + label_min="Round" + label_max="Cleft" + value_min="0" + value_max="1.5" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="14" + group="0" + name="High_Cheek_Bones" + label="Cheek Bones" + wearable="shape" + edit_group="shape_head" + edit_group_order="10" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="15" + group="0" + name="Ears_Out" + label="Ear Angle" + wearable="shape" + edit_group="shape_ears" + edit_group_order="2" + label_min="In" + label_max="Out" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="870" + group="1" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="17" + group="0" + name="Square_Jaw" + label="Jaw Shape" + wearable="shape" + edit_group="shape_chin" + edit_group_order="2" + label_min="Pointy" + label_max="Square" + value_min="-.5" + value_max="1" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="18" + group="0" + name="Puffy_Upper_Cheeks" + label="Upper Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="8" + label_min="Thin" + label_max="Puffy" + value_min="-1.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="19" + group="0" + name="Upturned_Nose_Tip" + label="Nose Tip Angle" + wearable="shape" + edit_group="shape_nose" + edit_group_order="7" + label_min="Downturned" + label_max="Upturned" + value_min="-1.5" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="20" + group="0" + name="Bulbous_Nose" + label="Nose Thickness" + wearable="shape" + edit_group="shape_nose" + edit_group_order="4" + label_min="Thin Nose" + label_max="Bulbous Nose" + show_simple="true" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="5" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="22" + group="0" + name="Attached_Earlobes" + label="Attached Earlobes" + wearable="shape" + edit_group="shape_ears" + edit_group_order="3" + label_min="Unattached" + label_max="Attached" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="23" + group="0" + name="Baggy_Eyes" + label="Eye Bags" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6" + label_min="Smooth" + label_max="Baggy" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="765" + group="0" + name="Puffy_Lower_Lids" + label="Puffy Eyelids" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6.1" + label_min="Flat" + label_max="Puffy" + value_min="-.3" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1.1" + label_min="Narrow" + label_max="Wide" + value_min="-1.5" + value_max="2" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="25" + group="0" + name="Wide_Lip_Cleft" + label="Lip Cleft" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-.8" + value_max="1.5" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="764" + group="0" + name="Lip_Cleft_Deep" + label="Lip Cleft Depth" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5.8" + label_min="Shallow" + label_max="Deep" + value_min="-.5" + value_max="1.2" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="26" + group="1" + wearable="shape" + name="Lips_Thin" + edit_group="driven" + value_min="0" + value_max=".7"> + <param_morph /> + </param> + + <param + id="27" + group="0" + name="Wide_Nose_Bridge" + label="Bridge Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="28" + group="1" + name="Lips_Fat" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="29" + group="1" + name="Wide_Upper_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <param + id="30" + group="1" + name="Wide_Lower_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="872" + group="1" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="871" + group="1" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="35" + group="0" + name="Big_Ears" + label="Ear Size" + wearable="shape" + edit_group="shape_ears" + edit_group_order="1" + label_min="Small" + label_max="Large" + value_min="-1" + value_max="2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="796" + group="0" + name="Pointy_Ears" + label="Ear Tips" + wearable="shape" + edit_group="shape_ears" + edit_group_order="4" + label_min="Flat" + label_max="Pointy" + value_min="-.4" + value_max="3" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="185" + group="0" + name="Deep_Chin" + label="Chin Depth" + wearable="shape" + edit_group="shape_chin" + edit_group_order="3" + label_min="Shallow" + label_max="Deep" + value_min="-1" + value_max="1" + camera_elevation=".1" + camera_distance=".4" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph> + <volume_morph + name="HEAD" + scale="-0.008 -0.006 0.015"/> + </param_morph> + </param> + + <param + id="188" + group="1" + name="Square_Head" + wearable="shape" + label_min="Less Square" + label_max="More Square" + value_min="0" + value_max=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="189" + group="1" + wearable="shape" + name="Round_Head" + label_min="Less Round" + label_max="More Round" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="194" + group="1" + name="Eye_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="400" + sex="male" + group="1" + name="Displace_Hair_Facial" + label="Hair Thickess" + wearable="hair" + edit_group="hair_facial" + label_min="Cropped Hair" + label_max="Bushy Hair" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="506" + group="0" + name="Mouth_Height" + wearable="shape" + label="Mouth Position" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="4" + label_min="High" + label_max="Low" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="633" + group="1" + name="Fat_Head" + label="Fat Head" + wearable="shape" + edit_group="shape_body" + label_min="Skinny" + label_max="Fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph/> + </param> + + <param + id="630" + group="1" + name="Forehead_Round" + label="Round Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="631" + group="1" + name="Forehead_Slant" + label="Slanted Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + <param + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.2" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + + <param + id="653" + group="0" + name="Tall_Lips" + wearable="shape" + label="Lip Fullness" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="2" + label_min="Less Full" + label_max="More Full" + value_min="-1" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="656" + group="0" + name="Crooked_Nose" + wearable="shape" + label="Crooked Nose" + edit_group="shape_nose" + edit_group_order="9" + label_min="Nose Left" + label_max="Nose Right" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="657" + group="1" + name="Smile_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Up" + value_min="0" + value_max="1.4" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="658" + group="1" + name="Frown_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Down" + value_min="0" + value_max="1.2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="797" + group="1" + name="Fat_Upper_Lip" + wearable="shape" + label="Fat Upper Lip" + edit_group="shape_mouth" + label_min="Normal Upper" + label_max="Fat Upper" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="798" + group="1" + name="Fat_Lower_Lip" + wearable="shape" + label="Fat Lower Lip" + edit_group="shape_mouth" + label_min="Normal Lower" + label_max="Fat Lower" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph> + <volume_morph + name="HEAD" + scale="0.02 0.0 0.0"/> + </param_morph> + </param> + + <param + id="663" + group="0" + name="Shift_Mouth" + wearable="shape" + label="Shift Mouth" + edit_group="shape_mouth" + edit_group_order="7" + label_min="Shift Left" + label_max="Shift Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".35" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-1.3" + value_max="1.3" + value_default="0" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="760" + group="0" + name="Jaw_Angle" + wearable="shape" + label="Jaw Angle" + edit_group="shape_chin" + edit_group_order="3.5" + label_min="Low Jaw" + label_max="High Jaw" + value_min="-1.2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="665" + group="0" + name="Jaw_Jut" + wearable="shape" + label="Jaw Jut" + edit_group="shape_chin" + edit_group_order="4" + label_min="Overbite" + label_max="Underbite" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + show_simple="true" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <param + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + #Fat_Lips = Fat_Lips 34 1 0 1 + #Wide_Lips = Wide_Lips 35 1 0 1 + #Wide_Nose = Wide_Nose 36 1 0 1 + --> + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + id="300" + group="1" + name="Express_Closed_Mouth" + value_default="1" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="311" + group="1" + name="Express_Worry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="632" + group="1" + name="Express_Open_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # Lipsync morphs + ############## + --> + + <param + id="70" + group="1" + name="Lipsync_Aah" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="71" + group="1" + name="Lipsync_Ooh" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + id="40" + group="1" + name="Male_Head" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="51" + group="1" + name="Furrowed_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="53" + group="1" + name="Surprised_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="54" + group="1" + name="Worried_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="55" + group="1" + name="Frown_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="57" + group="1" + name="Smile_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + #end morph targets + --> + </mesh> + + <mesh + type="headMesh" + lod="1" + file_name="avatar_head_1.llm" + min_pixel_width="160" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="2" + file_name="avatar_head_2.llm" + min_pixel_width="80" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="3" + file_name="avatar_head_3.llm" + min_pixel_width="40" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="4" + file_name="avatar_head_4.llm" + min_pixel_width="0" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="eyelashMesh" + lod="0" + file_name="avatar_eyelashes.llm" + min_pixel_width="320"> + <param + shared="1" + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + shared="1" + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-1.5" + value_max="2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="194" + group="1" + name="Eye_Spread" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="518" + group="0" + name="Eyelashes_Long" + wearable="shape" + label="Eyelash Length" + edit_group="shape_eyes" + edit_group_order="7" + label_min="Short" + label_max="Long" + value_min="-.3" + value_max="1.5" + camera_elevation=".1" + camera_distance=".30" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + + <param + shared="1" + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="-2" + value_max="2" + show_simple="true" + value_default="0"> + <param_morph /> + </param> + + <param + shared="1" + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + shared="1" + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + shared="1" + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + shared="1" + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + </mesh> + + <!-- + #headMesh2 = + #headMesh3 = + --> + <mesh + type="upperBodyMesh" + lod="0" + file_name="avatar_upper_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="104" + group="1" + name="Big_Belly_Torso" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.07"/> + <volume_morph + name="PELVIS" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.02"/> + </param_morph> + </param> + + <param + id="626" + sex="female" + group="1" + name="Big_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 0.024 -0.016"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 -0.024 -0.016"/> + </param_morph> + </param> + + <param + id="627" + sex="female" + group="1" + name="Small_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Large" + label_max="Small" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + </param_morph> + </param> + + <param + id="843" + sex="female" + group="1" + name="No_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Some" + label_max="None" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + </param_morph> + </param> + + <param + id="106" + group="1" + name="Muscular_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Muscular" + value_min="0" + value_max="1.4" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + </param_morph> + </param> + + <param + id="648" + group="1" + sex="female" + name="Scrawny_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="677" + group="1" + sex="male" + name="Scrawny_Torso_Male" + label="Torso Scrawny" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.02 -0.02 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="634" + group="1" + name="Fat_Torso" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="PELVIS" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="UPPER_BACK" + scale="0.01 0.03 0.0" + pos="-0.03 0 0"/> + <volume_morph + name="LOWER_BACK" + scale="0.04 0.06 0.0" + pos="-0.06 0 0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.08 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.08 0.0"/> + <volume_morph + name="LEFT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 -0.005 -0.013"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 0.005 -0.013"/> + <volume_morph + name="BELLY" + scale="0.09 0.08 0.07" + pos="0 0 -0.05"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <param + id="507" + group="0" + sex="female" + name="Breast_Gravity" + label="Breast Buoyancy" + wearable="shape" + edit_group="shape_torso" + edit_group_order="7" + label_min="Less Gravity" + label_max="More Gravity" + value_default="0" + value_min="-1.5" + value_max="2" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="628" + group="1" + name="Displace_Loose_Upperbody" + label="Shirt Fit" + wearable="shirt" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="840" + group="0" + name="Shirtsleeve_flair" + label="Sleeve Looseness" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="6" + clothing_morph="true" + label_min="Tight Sleeves" + label_max="Loose Sleeves" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="855" + group="1" + name="Love_Handles" + wearable="shape" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LOWER_BACK" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.025 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.025 0.0"/> + </param_morph> + </param> + + <param + id="684" + group="0" + sex="female" + name="Breast_Female_Cleavage" + label="Breast Cleavage" + wearable="shape" + edit_group="shape_torso" + edit_group_order="8" + label_min="Separate" + label_max="Join" + value_default="0" + value_min="-.3" + value_max="1.3" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 0.0"/> + </param_morph> + </param> + + <param + id="685" + group="0" + sex="male" + name="Chest_Male_No_Pecs" + label="Pectorals" + wearable="shape" + edit_group="shape_torso" + edit_group_order="5" + label_min="Big Pectorals" + label_max="Sunken Chest" + value_default="0" + value_min="-0.5" + value_max="1.1" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 -0.024 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 0.024 -0.01"/> + </param_morph> + </param> + + <!-- ############# # + other morphs (not user controlled) + ############# --> + <param + id="100" + group="1" + name="Male_Torso" + wearable="shape" + edit_group="driven" + label_min="Male_Torso" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.03 0.04 0.02" + pos="-0.03 0 -0.01"/> + <volume_morph + name="BELLY" + scale="0.03 0.03 0.0" + pos="-0.03 0 0.02"/> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 -0.03 0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 0.03 0.01"/> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="101" + group="1" + name="Hands_Relaxed" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="102" + group="1" + name="Hands_Point" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="103" + group="1" + name="Hands_Fist" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="666" + group="1" + name="Hands_Relaxed_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="667" + group="1" + name="Hands_Point_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="668" + group="1" + name="Hands_Fist_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="669" + group="1" + name="Hands_Relaxed_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="670" + group="1" + name="Hands_Point_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="671" + group="1" + name="Hands_Fist_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="672" + group="1" + name="Hands_Typing" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="766" + group="1" + name="Hands_Salute_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="791" + group="1" + name="Hands_Peace_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="792" + group="1" + name="Hands_Spread_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1200" + group="1" + sex="female" + name="Breast_Physics_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-3" + value_max="3"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="1201" + group="1" + sex="female" + name="Breast_Physics_InOut_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1.25" + value_max="1.25"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 -0.0"/> + </param_morph> + </param> + + <param + id="1204" + group="1" + name="Belly_Physics_Torso_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.0 0.0" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1207" + group="1" + name="Breast_Physics_LeftRight_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-2" + value_max="2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="upperBodyMesh" + lod="1" + file_name="avatar_upper_body_1.llm" + min_pixel_width="160" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="2" + file_name="avatar_upper_body_2.llm" + min_pixel_width="80" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="3" + file_name="avatar_upper_body_3.llm" + min_pixel_width="40" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="4" + file_name="avatar_upper_body_4.llm" + min_pixel_width="0" + reference="avatar_upper_body.llm"> + </mesh> + + <!-- + #upperBodyMesh2 = + #upperBodyMesh3 = + --> + <mesh + type="lowerBodyMesh" + lod="0" + file_name="avatar_lower_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="156" + group="1" + name="Big_Belly_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + + <param + id="151" + group="1" + name="Big_Butt_Legs" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Large" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.0 0.02" + pos="-0.03 0 -0.025"/> + </param_morph> + </param> + + <param + id="794" + group="1" + name="Small_Butt" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Small" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="-0.01 0.0 0.0" + pos="0.01 0 0.0"/> + <volume_morph + name="BUTT" + scale="0.0 0.0886 0.0" + pos="0.03 0 0.0"/> + </param_morph> + </param> + + <param + id="152" + group="1" + name="Muscular_Legs" + label="Leg Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="More Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="651" + group="1" + name="Scrawny_Legs" + label="Scrawny Leg" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="Less Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="853" + group="1" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="L_LOWER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="R_UPPER_LEG" + pos="0.0 -0.03 0.0"/> + <volume_morph + name="R_LOWER_LEG" + pos="0.0 -0.03 0.0"/> + </param_morph> + </param> + + <param + id="500" + group="1" + name="Shoe_Heel_Height" + label="Heel Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="501" + group="1" + name="Shoe_Platform_Height" + label="Platform Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="508" + group="0" + name="Shoe_Platform_Width" + label="Platform Width" + wearable="shoes" + edit_group="shoes" + edit_group_order="7" + label_min="Narrow" + label_max="Wide" + value_min="-1" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="509" + group="1" + name="Shoe_Heel_Point" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Heels" + label_max="Pointy Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="510" + group="1" + name="Shoe_Heel_Thick" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="default Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="511" + group="1" + name="Shoe_Toe_Point" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Pointy Toe" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="512" + group="1" + name="Shoe_Toe_Square" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Square Toe" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="654" + group="0" + name="Shoe_Toe_Thick" + label="Toe Thickness" + wearable="shoes" + edit_group="shoes" + edit_group_order="5" + label_min="Flat Toe" + label_max="Thick Toe" + value_min="0" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="515" + group="0" + name="Foot_Size" + label="Foot Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="6" + label_min="Small" + label_max="Big" + value_min="-1" + value_max="3" + camera_angle="45" + camera_distance="1.1" + camera_elevation="-1"> + <param_morph> + <volume_morph + name="L_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + <volume_morph + name="R_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + </param_morph> + </param> + + <param + id="516" + group="1" + name="Displace_Loose_Lowerbody" + label="Pants Fit" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="625" + group="0" + name="Leg_Pantflair" + label="Cuff Flare" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="3" + clothing_morph="true" + label_min="Tight Cuffs" + label_max="Flared Cuffs" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="793" + group="1" + name="Leg_Longcuffs" + label="Longcuffs" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="3" + value_default="0"> + <param_morph /> + </param> + + <param + id="638" + group="0" + name="Low_Crotch" + label="Pants Crotch" + wearable="pants" + clothing_morph="true" + edit_group="pants" + edit_group_order="4" + label_min="High and Tight" + label_max="Low and Loose" + value_min="0" + value_max="1.3" + camera_distance="1.2" + camera_angle="-20" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="635" + group="1" + name="Fat_Legs" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.06 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 -0.02 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0"/> + <volume_morph + name="L_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 0.02 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0"/> + </param_morph> + </param> + + <param + id="854" + group="1" + name="Saddlebags" + wearable="shape" + edit_group="driven" + value_min="-.5" + value_max="3"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.0 0.025 0.0"/> + </param_morph> + + </param> + + <param + id="879" + group="0" + sex="male" + name="Male_Package" + label="Package" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4.6" + label_min="Coin Purse" + label_max="Duffle Bag" + value_default="0" + value_min="-.5" + value_max="2" + camera_angle="60" + camera_distance=".6"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="153" + group="1" + name="Male_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1202" + group="1" + name="Belly_Physics_Legs_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + + <param + id="1205" + group="1" + name="Butt_Physics_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1206" + group="1" + name="Butt_Physics_LeftRight_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.05 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="lowerBodyMesh" + lod="1" + file_name="avatar_lower_body_1.llm" + min_pixel_width="160" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="2" + file_name="avatar_lower_body_2.llm" + min_pixel_width="80" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="3" + file_name="avatar_lower_body_3.llm" + min_pixel_width="40" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="4" + file_name="avatar_lower_body_4.llm" + min_pixel_width="0" + reference="avatar_lower_body.llm"> + </mesh> + + <!-- + #lowerBodyMesh2 = + #lowerBodyMesh3 = + --> + <!-- + #eyeLidLeftMesh = + --> + <mesh + type="eyeBallLeftMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="679" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="687" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallLeftMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="694" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="695" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <!-- + #eyeLidRightMesh = + --> + <mesh + type="eyeBallRightMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="680" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="688" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallRightMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="681" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="691" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="skirtMesh" + lod="0" + file_name="avatar_skirt.llm" + min_pixel_width="320"> + <param + id="845" + group="1" + name="skirt_poofy" + label="poofy skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="less poofy" + label_max="more poofy" + value_min="0" + value_max="1.5"> + <param_morph /> + </param> + + <param + id="846" + group="1" + name="skirt_loose" + label="loose skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="866" + group="1" + name="skirt_tight" + label="tight skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="867" + group="1" + name="skirt_smallbutt" + label="tight skirt" + clothing_morph="false" + wearable="skirt" + edit_group="skirt" + cross_wearable="true" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="848" + group="0" + name="skirt_bustle" + label="bustle skirt" + clothing_morph="true" + wearable="skirt" + edit_group_order="3" + edit_group="skirt" + label_min="no bustle" + label_max="more bustle" + value_min="0" + value_max="2" + value_default=".2" + camera_angle="100" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="847" + group="1" + name="skirt_bowlegs" + label="legs skirt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="-1" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="852" + group="1" + name="skirt_bigbutt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="bigbutt skirt" + label_min="less" + label_max="more" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="849" + group="1" + name="skirt_belly" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="big belly skirt" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="850" + group="1" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + name="skirt_saddlebags" + value_min="-.5" + value_max="3"> + <param_morph /> + </param> + + <param + id="851" + group="1" + name="skirt_chubby" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="856" + group="1" + name="skirt_lovehandles" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="-1" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="857" + group="1" + name="skirt_male" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1203" + group="1" + name="Belly_Physics_Skirt_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + </mesh> + + <mesh + type="skirtMesh" + lod="1" + file_name="avatar_skirt_1.llm" + min_pixel_width="160" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="2" + file_name="avatar_skirt_2.llm" + min_pixel_width="80" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="3" + file_name="avatar_skirt_3.llm" + min_pixel_width="40" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="4" + file_name="avatar_skirt_4.llm" + min_pixel_width="0" + reference="avatar_skirt.llm"> + </mesh> + + <!-- =========================================================== --> + <global_color + name="skin_color"> + <param + id="111" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="1" + name="Pigment" + show_simple="true" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + value_default=".5"> + <param_color> + <value + color="252, 215, 200, 255" /> + + <value + color="240, 177, 112, 255" /> + + <value + color="90, 40, 16, 255" /> + + <value + color="29, 9, 6, 255" /> + </param_color> + </param> + + <param + id="110" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="2" + name="Red Skin" + label="Ruddiness" + label_min="Pale" + label_max="Ruddy" + value_min="0" + value_max="0.1"> + <param_color + operation="blend"> + <value + color="218, 41, 37, 255" /> + </param_color> + </param> + + <param + id="108" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="3" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="hair_color"> + <param + id="114" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="3" + name="Blonde Hair" + show_simple="true" + label_min="Black" + label_max="Blonde" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="22, 6, 6, 255" /> + + <value + color="29, 9, 6, 255" /> + + <value + color="45, 21, 11, 255" /> + + <value + color="78, 39, 11, 255" /> + + <value + color="90, 53, 16, 255" /> + + <value + color="136, 92, 21, 255" /> + + <value + color="150, 106, 33, 255" /> + + <value + color="198, 156, 74, 255" /> + + <value + color="233, 192, 103, 255" /> + + <value + color="238, 205, 136, 255" /> + </param_color> + </param> + + <param + id="113" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="4" + name="Red Hair" + show_simple="true" + label_min="No Red" + label_max="Very Red" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="118, 47, 19, 255" /> + </param_color> + </param> + + <param + id="115" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="1" + name="White Hair" + show_simple="true" + label_min="No White" + label_max="All White" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="112" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="2" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="eye_color"> + <param + id="99" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="1" + name="Eye Color" + show_simple="true" + label_min="Natural" + label_max="Unnatural" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <!-- default to natural brown eyes--> + <param_color> + <value + color="50, 25, 5, 255" /> + + <!-- natural dark brown eyes--> + <value + color="109, 55, 15, 255" /> + + <!-- natural brown eyes--> + <value + color="150, 93, 49, 255" /> + + <!-- natural light brown eyes--> + <value + color="152, 118, 25, 255" /> + + <!--natural hazel eyes--> + <value + color="95, 179, 107, 255" /> + + <!--natural green eyes--> + <value + color="87, 192, 191, 255" /> + + <!--natural aqua eyes--> + <value + color="95, 172, 179, 255" /> + + <!--natural blue eyes--> + <value + color="128, 128, 128, 255" /> + + <!--natural grey eyes--> + <value + color="0, 0, 0, 255" /> + + <!--black eyes--> + <value + color="255, 255, 0, 255" /> + + <!--bright yellow eyes--> + <value + color=" 0, 255, 0, 255" /> + + <!-- bright green eyes--> + <value + color=" 0, 255, 255, 255" /> + + <!-- bright cyan eyes--> + <value + color=" 0, 0, 255, 255" /> + + <!--bright blue eyes--> + <value + color="255, 0, 255, 255" /> + + <!-- bright violet eyes--> + <value + color="255, 0, 0, 255" /> + + <!--bright red eyes--> + </param_color> + </param> + + <param + id="98" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="2" + name="Eye Lightness" + show_simple="true" + label_min="Darker" + label_max="Lighter" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <layer_set + body_region="hair" + width="512" + height="512" + clear_alpha="false"> + <layer + name="base" + global_color="hair_color" + write_all_channels="true"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair texture alpha layer" + visibility_mask="TRUE"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair alpha" + visibility_mask="TRUE"> + <texture + local_texture="hair_alpha" /> + </layer> + + </layer_set> + <!-- =========================================================== --> + + <layer_set + body_region="head" + width="512" + height="512"> + <layer + name="head bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + + <layer + name="head bump definition" + render_pass="bump"> + + + <texture + tga_file="bump_head_base.tga" + file_is_mask="FALSE"/> + + <param + id="873" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="12" + name="Bump base" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="head_skingrain.tga" /> + </layer> + + <layer + name="headcolor"> + <texture + tga_file="head_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="head_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="158" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="head_highlights_alpha.tga" +file_is_mask="TRUE" /> + + + <param + id="159" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value +color="255, 255, 255, 0" /> + + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + <layer + name="rosyface"> + <texture + tga_file="rosyface_alpha.tga" + file_is_mask="true" /> + + <param + id="116" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="4" + name="Rosy Complexion" + label_min="Less Rosy" + label_max="More Rosy" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07"> + <param_color> + <value + color="198, 71, 71, 0" /> + + <value + color="198, 71, 71, 255" /> + </param_color> + </param> + </layer> + + <layer + name="lips"> + <texture + tga_file="lips_mask.tga" + file_is_mask="true" /> + + <param + id="117" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="5" + name="Lip Pinkness" + label_min="Darker" + label_max="Pinker" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_color> + <value + color="220, 115, 115, 0" /> + + <value + color="220, 115, 115, 128" /> + </param_color> + </param> + </layer> + + <layer + name="wrinkles_shading" + render_pass="bump" + fixed_color="0,0,0,100"> + <param + id="118" + group="1" + wearable="skin" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bump_face_wrinkles.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer> + + <!--<layer + name="wrinkles_highlights" + fixed_color="255,255,255,64"> + <param + id="128" + group="1" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="head_wrinkles_highlights_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer>--> + <layer + name="freckles" + fixed_color="120,47,20,128"> + <param + id="165" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="2" + name="Freckles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" +camera_elevation=".07"> + <param_alpha + tga_file="freckles_alpha.tga" + skip_if_zero="true" +domain="0.5" /> + </param> + </layer> + <layer +name="eyebrowsbump" +render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1000" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Size Bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1002" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density Bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="eyebrows" + global_color="hair_color"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1001" + group="1" + wearable="hair" + edit_group="hair_eyebrows" + name="Eyebrow Size" + show_simple="true" + value_min="0" + value_max="1" + value_default="0.5"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1003" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density" + value_min="0" + value_max="1"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="lipstick"> + <param + id="700" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="2" + name="Lipstick Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + value_default=".25" + camera_distance=".25"> + <param_color> + <value + color="245,161,177,200" /> + + <value + color="216,37,67,200" /> + + <value + color="178,48,76,200" /> + + <value + color="68,0,11,200" /> + + <value + color="252,207,184,200" /> + + <value + color="241,136,106,200" /> + + <value + color="208,110,85,200" /> + + <value + color="106,28,18,200" /> + + <value + color="58,26,49,200" /> + + <value + color="14,14,14,200" /> + </param_color> + </param> + + <param + id="701" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="1" + name="Lipstick" + label_min="No Lipstick" + label_max="More Lipstick" + value_min="0" + value_max=".9" + value_default="0.0" + camera_distance=".25"> + <param_alpha + tga_file="lipstick_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="lipgloss" + fixed_color="255,255,255,190"> + <param + id="702" + name="Lipgloss" + label_min="No Lipgloss" + label_max="Glossy" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="3" + group="0" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_alpha + tga_file="lipgloss_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="blush"> + <param + id="704" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="4" + name="Blush" + label_min="No Blush" + label_max="More Blush" + value_min="0" + value_max=".9" + value_default="0" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_alpha + tga_file="blush_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + + <param + id="705" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="5" + name="Blush Color" + label_min="Pink" + label_max="Orange" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color> + <value + color="253,162,193,200" /> + + <value + color="247,131,152,200" /> + + <value + color="213,122,140,200" /> + + <value + color="253,152,144,200" /> + + <value + color="236,138,103,200" /> + + <value + color="195,128,122,200" /> + + <value + color="148,103,100,200" /> + + <value + color="168,95,62,200" /> + </param_color> + </param> + + <param + id="711" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="6" + name="Blush Opacity" + label_min="Clear" + label_max="Opaque" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="Outer Eye Shadow"> + <param + id="708" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="11" + name="Out Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="706" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="12" + name="Out Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".6" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="707" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="10" + name="Outer Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_outer_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Inner Eye Shadow"> + <param + id="712" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="8" + name="In Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="713" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="9" + name="In Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="709" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="7" + name="Inner Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max="1" + value_default="0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_inner_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="eyeliner" + fixed_color="0,0,0,200"> + <param + id="703" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="13" + name="Eyeliner" + label_min="No Eyeliner" + label_max="Full Eyeliner" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeliner_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="714" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="14" + name="Eyeliner Color" + label_min="Dark Green" + label_max="Black" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="24,98,40,250" /> + + <!-- dark green --> + <value + color="9,100,127,250" /> + + <!-- lt.aqua blue --> + <value + color="61,93,134,250" /> + + <!-- aqua --> + <value + color="70,29,27,250" /> + + <!-- dark brown --> + <value + color="115,75,65,250" /> + + <!-- lt. brown blue --> + <value + color="100,100,100,250" /> + + <!-- grey --> + <value + color="91,80,74,250" /> + + <!-- grey/brown --> + <value + color="112,42,76,250" /> + + <!-- plum --> + <value + color="14,14,14,250" /> + + <!-- black --> + </param_color> + </param> + </layer> + + <layer + name="facialhair bump" + render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1004" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1006" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1008" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1010" + sex="male" + group="1" + edit_group="driven" + wearable="hair" + name="Chin Curtains bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="1012" + group="1" + sex="male" + wearable="hair" + edit_group="driven" + name="5 O'Clock Shadow bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,0" /> + </param_color> + </param> + </layer> + + <layer + name="facialhair" + global_color="hair_color"> + + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1005" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1007" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1009" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1011" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Chin Curtains" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="751" + group="1" + wearable="hair" + sex="male" + edit_group="hair_facial" + name="5 O'Clock Shadow" + label_min="Dense hair" + label_max="Shadow hair" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_color + operation="multiply"> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,30" /> + </param_color> + </param> + </layer> + + <layer + name="head_bodypaint"> + <texture + local_texture="head_bodypaint" /> + </layer> + <layer + name="eyelash alpha" + visibility_mask="TRUE"> + <texture + tga_file="head_alpha.tga" + file_is_mask="TRUE" /> + </layer> + <layer + name="head alpha" + visibility_mask="TRUE"> + <texture + local_texture="head_alpha" /> + </layer> + <layer + name="head_tattoo"> + <texture + local_texture="head_tattoo" /> + <param + id="1062" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1063" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1064" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="upper_body" + width="512" + height="512"> + <layer + name="base_upperbody bump" + render_pass="bump" + fixed_color="128,128,128,255"> + </layer> + <layer + name="upperbody bump definition" + render_pass="bump"> + <texture + tga_file="bump_upperbody_base.tga" + file_is_mask="FALSE"/> + + <param + id="874" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="nipples"> + <texture + tga_file="upperbody_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="upperbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="125" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="upperbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="126" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="upper_bodypaint"> + <texture + local_texture="upper_bodypaint" /> + </layer> + + <layer + name="freckles upper" + fixed_color="120,47,20,128"> + <param + id="776" + group="1" + name="freckles upper" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="upperbodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="upper_tattoo"> + <texture + local_texture="upper_tattoo" /> + + <param + id="1065" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1066" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1067" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + <layer + name="upper_undershirt bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_undershirt" + local_texture_alpha_only="true" /> + + <param + id="1043" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length bump" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1045" + group="1" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1047" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1049" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_undershirt"> + <texture + local_texture="upper_undershirt" /> + + <param + id="821" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="822" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="823" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1042" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1044" + group="1" + wearable="undershirt" + edit_group="driven" + name="Bottom" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1046" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1048" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Nail Polish"> + <param + id="710" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="15" + name="Nail Polish" + label_min="No Polish" + label_max="Painted Nails" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_alpha + tga_file="nailpolish_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="715" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="16" + name="Nail Polish Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_color> + <value + color="255,187,200,255" /> + + <value + color="194,102,127,255" /> + + <value + color="227,34,99,255" /> + + <value + color="168,41,60,255" /> + + <value + color="97,28,59,255" /> + + <value + color="234,115,93,255" /> + + <value + color="142,58,47,255" /> + + <value + color="114,30,46,255" /> + + <value + color="14,14,14,255" /> + </param_color> + </param> + </layer> + + <layer + name="upper_gloves bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_gloves" + local_texture_alpha_only="true" /> + + <param + id="1059" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length bump" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1061" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers bump" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_gloves"> + <texture + local_texture="upper_gloves" /> + + <param + id="827" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="829" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="830" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1058" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1060" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_clothes_shadow"> + <texture + local_texture="upper_shirt" /> + + <param + id="899" + group="1" + edit_group="driven" + wearable="shirt" + name="Upper Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="900" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Shadow" + value_min="0.02" + value_max=".87" + value_default="0.02"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="901" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Shadow Bottom" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="902" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + + <param + id="903" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + </layer> + + <layer + name="upper_shirt base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="1029" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1030" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1031" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1032" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="868" + group="3" + wearable="shirt" + edit_group="shirt" + edit_group_order="8" + name="Shirt Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1013" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1014" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1015" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1016" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes"> + <texture + local_texture="upper_shirt" /> + + <param + id="803" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="804" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="805" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="600" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85" + value_default=".7"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="601" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="602" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="778" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + <param + id="1039" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1040" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1041" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1037" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1038" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + + <param + id="875" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1019" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1021" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1023" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1025" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1026" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket"> + <texture + local_texture="upper_jacket" /> + + <param + id="831" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="832" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="833" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1020" + group="1" + edit_group="driven" + wearable="jacket" + name="jacket Sleeve Length" value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1022" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket Collar Front" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1024" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="jacket Collar Back" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="620" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length upper" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="622" + group="1" + wearable="jacket" + edit_group="jacket" + name="open upper" + label_min="closed" + label_max="open" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper alpha" + visibility_mask="TRUE"> + <texture + local_texture="upper_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="lower_body" + width="512" + height="512"> + <layer + name="lower body bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + <layer + name="base_lowerbody bump" + render_pass="bump"> + <texture + tga_file="bump_lowerbody_base.tga" + file_is_mask="FALSE" /> + + <param + id="878" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="lowerbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="160" + group="1" + name="Shading" + wearable="pants" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="lowerbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="161" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="toenails"> + <texture + tga_file="lowerbody_color.tga" /> + </layer> + + <layer + name="lower_bodypaint"> + <texture + local_texture="lower_bodypaint" /> + </layer> + + <layer + name="freckles lower" + fixed_color="120,47,20,128"> + <param + id="777" + group="1" + name="freckles lower" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="lower_tattoo"> + <texture + local_texture="lower_tattoo" /> + + <param + id="1068" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1069" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1070" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + <layer + name="lower_underpants bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_underpants" + local_texture_alpha_only="true" /> + + <param + id="1055" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1057" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_underpants"> + <texture + local_texture="lower_underpants" /> + + <param + id="824" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="825" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="826" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1054" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1056" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_socks bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_socks" + local_texture_alpha_only="true" /> + + <param + id="1051" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_socks"> + <texture + local_texture="lower_socks" /> + + <param + id="818" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="819" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="820" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1050" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_shoes" + local_texture_alpha_only="true" /> + + <param + id="1053" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height bump" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes"> + <texture + local_texture="lower_shoes" /> + + <param + id="812" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="813" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="817" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1052" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_clothes_shadow"> + <texture + local_texture="lower_pants" /> + + <param + id="913" + group="1" + edit_group="driven" + wearable="pants" + name="Lower Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="914" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + skip_if_zero="true" + domain="0.04" /> + </param> + + <param + id="915" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + </layer> + + <layer + name="lower_pants base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="1035" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1036" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="869" + group="3" + wearable="pants" + edit_group="pants" + edit_group_order="6" + name="Pants Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1017" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1018" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants"> + <texture + local_texture="lower_pants" /> + + <param + id="806" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="807" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="808" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="614" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="615" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + <param + id="1033" + group="1" + wearable="jacket" + edit_group="driven" + cross_wearable="true" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1034" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + + <param + id="876" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1027" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1028" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket"> + <texture + local_texture="lower_jacket" /> + + <param + id="809" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="810" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="811" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="621" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length lower" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="623" + group="1" + wearable="jacket" + edit_group="jacket" + name="open lower" + label_min="open" + label_max="closed" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower alpha" + visibility_mask="TRUE"> + <texture + local_texture="lower_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="eyes" + width="128" + height="128"> + <layer + name="whites"> + <texture + tga_file="eyewhite.tga" /> + </layer> + + <layer + name="iris" + global_color="eye_color"> + <texture + local_texture="eyes_iris" /> + </layer> + + <layer + name="eyes alpha" + visibility_mask="TRUE"> + <texture + local_texture="eyes_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="skirt" + width="512" + height="512" + clear_alpha="false"> + <layer + name="skirt_fabric" + write_all_channels="true"> + <texture + local_texture="skirt" /> + + <param + id="921" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="922" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="923" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + </layer> + + <layer + name="skirt_fabric_alpha"> + <param + id="858" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="1" + name="Skirt Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_length_alpha.tga" + domain="0" + multiply_blend="true" /> + </param> + + <param + id="859" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="4" + name="Slit Front" + label_min="Open Front" + label_max="Closed Front" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_front_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="860" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="5" + name="Slit Back" + label_min="Open Back" + label_max="Closed Back" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="160"> + <param_alpha + tga_file="skirt_slit_back_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="861" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="6" + name="Slit Left" + label_min="Open Left" + label_max="Closed Left" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_left_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="862" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="7" + name="Slit Right" + label_min="Open Right" + label_max="Closed Right" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="-30"> + <param_alpha + tga_file="skirt_slit_right_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <driver_parameters> + + <param + id="828" + group="0" + name="Loose Upper Clothing" + label="Shirt Fit" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="4" + label_min="Tight Shirt" + label_max="Loose Shirt" + value_min="0" + value_max="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="628" /> + + <driven + id="899" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="816" + group="0" + name="Loose Lower Clothing" + label="Pants Fit" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="2.5" + label_min="Tight Pants" + label_max="Loose Pants" + value_min="0" + value_max="1" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="516" /> + + <driven + id="913" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="814" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="2" + name="Waist Height" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="614" /> + + <driven + id="1017" /> + + <driven + id="1035" /> + + <driven + id="914" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="815" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="1" + name="Pants Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + simple_percent_min="20" + simple_percent_max="100" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="615" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1018" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1036" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="793" + min1=".9" + max1="1" + max2="1" + min2="1" /> + + <driven + id="915" + min1="0" + max1=".882" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="800" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="1" + name="Sleeve Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".89" + simple_percent_min="15" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="600" /> + + <driven + id="1013" /> + + <driven + id="1029" /> + + <driven + id="900" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="801" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="2" + name="Shirt Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="601" /> + + <driven + id="1014" /> + + <driven + id="1030" /> + + <driven + id="901" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="802" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3" + name="Collar Front" + show_simple="true" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="602" /> + + <driven + id="1015" /> + + <driven + id="1031" /> + + <driven + id="902" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="781" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3.1" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="778" /> + + <driven + id="1016" /> + + <driven + id="1032" /> + + <driven + id="903" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="150" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="125" /> + + <driven + id="126" /> + + <driven + id="160" /> + + <driven + id="161" /> + + <driven + id="874" /> + + <driven + id="878" /> + + </param_driver> + </param> + + <param + id="775" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Freckles" + label_min="Less Freckles" + label_max="More Freckles" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="776" /> + + <driven + id="777" /> + </param_driver> + </param> + + <param + id="162" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="1" + name="Facial Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <driven + id="158" /> + + <driven + id="159" /> + + <driven + id="873" /> + </param_driver> + </param> + + <param + id="163" + group="3" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="3" + name="Wrinkles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <!--<driven + id="128" />--> + <driven + id="118" /> + </param_driver> + </param> + + <param + id="505" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3" + name="Lip Thickness" + label_min="Thin Lips" + label_max="Fat Lips" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="26" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="28" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="799" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3.2" + name="Lip Ratio" + label="Lip Ratio" + show_simple="true" + label_min="More Upper Lip" + label_max="More Lower Lip" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="797" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="798" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="155" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="1" + name="Lip Width" + label="Lip Width" + label_min="Narrow Lips" + label_max="Wide Lips" + show_simple="true" + value_min="-0.9" + value_max="1.3" + camera_distance=".3" + camera_elevation=".04" + value_default="0"> + <param_driver> + <driven + id="29" /> + + <driven + id="30" /> + </param_driver> + </param> + + <param + id="196" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="2" + name="Eye Spacing" + label="Eye Spacing" + label_min="Close Set Eyes" + label_max="Far Set Eyes" + show_simple="true" + value_min="-2" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".35" + camera_angle="5"> + <param_driver> + <driven + id="194" /> + + <driven + id="195" /> + </param_driver> + </param> + + <param + id="769" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.5" + name="Eye Depth" + label_min="Sunken Eyes" + label_max="Bugged Eyes" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="75"> + <param_driver> + <driven + id="767" /> + + <driven + id="768" /> + </param_driver> + </param> + + <param + id="198" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="2" + name="Heel Height" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".8" + camera_elevation="-1"> + <param_driver> + <driven + id="197" /> + + <driven + id="500" /> + </param_driver> + </param> + + <param + id="513" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="3" + name="Heel Shape" + label_min="Pointy Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="45" + camera_distance="1.5" + camera_elevation="-1"> + <param_driver> + <driven + id="509" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="510" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="514" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="4" + name="Toe Shape" + label_min="Pointy" + label_max="Square" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="5" + camera_distance=".8" + camera_elevation="-.8"> + <param_driver> + <driven + id="511" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="512" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="503" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="6" + name="Platform Height" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".5" + camera_elevation="-1"> + <param_driver> + <driven + id="501" /> + + <driven + id="502" /> + </param_driver> + </param> + + <param + id="193" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="3" + name="Head Shape" + label="Head Shape" + label_min="More Square" + label_max="More Round" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="188" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="642" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="189" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="643" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="157" + group="0" + wearable="shape" + edit_group="shape_torso" + edit_group_order="13" + name="Belly Size" + label_min="Small" + label_max="Big" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="104" /> + + <driven + id="156" /> + + <driven + id="849" /> + </param_driver> + </param> + + <param + id="637" + group="0" + wearable="shape" + edit_group="shape_body" + edit_group_order="3" + name="Body Fat" + label_min="Less Body Fat" + label_max="More Body Fat" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.8"> + <param_driver> + <driven + id="633" /> + + <driven + id="634" /> + + <driven + id="635" /> + + <driven + id="851" /> + </param_driver> + </param> + + <param + id="130" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="8" + name="Front Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".45" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="144" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="145" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="131" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="9" + name="Side Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="146" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="147" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="132" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="10" + name="Back Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".39" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_driver> + <driven + id="148" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="149" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="133" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="2" + name="Hair Front" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".25" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="172" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="171" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="134" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="3" + name="Hair Sides" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="174" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="173" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="135" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="4" + name="Hair Back" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation="-.1" + camera_distance=".8" + camera_angle="160"> + <param_driver> + <driven + id="176" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="175" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="136" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.5" + name="Hair Sweep" + label_min="Sweep Forward" + label_max="Sweep Back" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="179" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="178" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="137" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="16" + name="Hair Tilt" + label_min="Left" + label_max="Right" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_driver> + <driven + id="190" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="191" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="608" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="2" + name="bottom length lower" + label="Jacket Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="620" /> + + <driven + id="1025" /> + + <driven + id="1037" /> + + <driven + id="621" /> + + <driven + id="1027" /> + + <driven + id="1033" /> + </param_driver> + </param> + + <param + id="609" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="4" + name="open jacket" + label="Open Front" + label_min="Open" + label_max="Closed" + value_min="0" + value_max="1" + value_default=".2" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="622" /> + + <driven + id="1026" /> + + <driven + id="1038" /> + + <driven + id="623" /> + + <driven + id="1028" /> + + <driven + id="1034" /> + </param_driver> + </param> + + <param + id="105" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="6" + name="Breast Size" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".3" + camera_distance="1.2" + camera_angle="30"> + <param_driver> + <driven + id="843" + min1="0" + max1="0" + max2="0" + min2=".01" /> + + <driven + id="627" + min1="0" + max1="0.01" + max2="0.01" + min2=".5" /> + + <driven + id="626" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="629" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="6" + name="Forehead Angle" + label_min="More Vertical" + label_max="More Sloped" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="70"> + <param_driver> + <driven + id="630" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="644" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="631" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="645" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="646" + group="0" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + edit_group_order="4" + label_min="Chin Heavy" + label_max="Forehead Heavy" + show_simple="true" + value_min="-1.3" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="640" /> + + <driven + id="186" /> + </param_driver> + </param> + + <param + id="647" + group="0" + name="Squash_Stretch_Head" + label="Head Stretch" + wearable="shape" + edit_group="shape_head" + edit_group_order="2" + show_simple="true" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-0.5" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="641" /> + + <driven + id="187" /> + </param_driver> + </param> + + <param + id="649" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1.1" + name="Torso Muscles" + label="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_driver> + <driven + id="648" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="678" + group="0" + sex="male" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1" + name="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_driver> + <driven + id="677" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="652" + group="0" + wearable="shape" + edit_group="shape_legs" + edit_group_order="1" + name="Leg Muscles" + label_min="Less Muscular" + label_max="More Muscular" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="15"> + <param_driver> + <driven + id="651" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="152" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="80" + name="male" + group="0" + edit_group="dummy" + wearable="shape" + value_min="0" + value_max="1"> + <param_driver> + <driven + id="32" /> + + <driven + id="153" /> + + <driven + id="40" /> + + <driven + id="100" /> + + <driven + id="857" /> + </param_driver> + </param> + + <param + id="659" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5" + name="Mouth Corner" + label_min="Corner Down" + label_max="Corner Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="658" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="657" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="662" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="5" + name="Face Shear" + label_min="Shear Right Up" + label_max="Shear Left Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="660" /> + + <driven + id="661" /> + + <driven + id="774" /> + </param_driver> + </param> + + <param + id="773" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="4.5" + name="Head Length" + label_min="Flat Head" + label_max="Long Head" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="75"> + <param_driver> + <driven + id="770" /> + + <driven + id="771" /> + + <driven + id="772" /> + </param_driver> + </param> + + <param + id="682" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="1" + name="Head Size" + label="Head Size" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="679" /> + + <driven + id="694" /> + + <driven + id="680" /> + + <driven + id="681" /> + + <driven + id="655" /> + </param_driver> + </param> + + <param + id="690" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1" + name="Eye Size" + label="Eye Size" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="0" + value_max="1" + value_default=".5" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_driver> + <driven + id="686" /> + + <driven + id="687" /> + + <driven + id="695" /> + + <driven + id="688" /> + + <driven + id="691" /> + + <driven + id="689" /> + </param_driver> + </param> + + <param + id="752" + group="0" + sex="male" + wearable="hair" + edit_group="hair_facial" + edit_group_order="1" + name="Hair Thickness" + label_min="5 O'Clock Shadow" + label_max="Bushy Hair" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="751" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="1012" + min1="0" + max1="0" + max2=".2" + min2=".6" /> + + <driven + id="400" + min1=".2" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="763" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="1" + name="Hair Volume" + show_simple="true" + label_min="Less Volume" + label_max="More Volume" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="761" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="180" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="834" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="809" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="831" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="835" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="810" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="832" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="836" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="811" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="833" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="785" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.6" + name="Pigtails" + show_simple="true" + label_min="Short Pigtails" + label_max="Long Pigtails" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="15"> + <param_driver> + <driven + id="782" + min1="0" + max1=".10" + max2=".10" + min2=".5" /> + + <driven + id="783" + min1=".10" + max1=".5" + max2=".5" + min2=".75" /> + + <driven + id="790" + min1=".5" + max1=".75" + max2=".75" + min2="1" /> + + <driven + id="784" + min1=".75" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="789" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.7" + name="Ponytail" + label_min="Short Ponytail" + label_max="Long Ponytail" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="180"> + <param_driver> + <driven + id="786" + min1="0" + max1=".10" + max2=".10" + min2=".66" /> + + <driven + id="787" + min1=".10" + max1=".66" + max2=".66" + min2="1" /> + + <driven + id="788" + min1=".66" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="795" + group="0" + name="Butt Size" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4" + label_min="Flat Butt" + label_max="Big Butt" + value_min="0" + value_max="1" + value_default=".25" + camera_angle="180" + camera_distance=".6"> + <param_driver> + <driven + id="867" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="794" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="151" + min1=".3" + max1="1" + max2="1" + min2="1" /> + + <driven + id="852" + min1=".3" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="841" + group="0" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + edit_group_order="5.5" + edit_group="shape_legs" + label_min="Knock Kneed" + label_max="Bow Legged" + value_min="-1" + value_max="1" + value_default="0" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="853" /> + + <driven + id="847" /> + </param_driver> + </param> + + <param + id="753" + group="0" + name="Saddlebags" + label="Saddle Bags" + wearable="shape" + edit_group="shape_legs" + edit_group_order="5" + label_min="Less Saddle" + label_max="More Saddle" + value_min="-0.5" + value_max="3" + value_default="0" + camera_angle="0" + camera_distance="1.2"> + <param_driver> + <driven + id="850" /> + + <driven + id="854" /> + </param_driver> + </param> + + <param + id="676" + group="0" + name="Love_Handles" + label="Love Handles" + wearable="shape" + edit_group="shape_torso" + edit_group_order="12" + label_min="Less Love" + label_max="More Love" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".3" + camera_distance=".9"> + <param_driver> + <driven + id="855" /> + + <driven + id="856" /> + </param_driver> + </param> + + <param + id="863" + group="0" + name="skirt_looseness" + label="Skirt Fit" + show_simple="true" + clothing_morph="true" + wearable="skirt" + edit_group_order="2" + edit_group="skirt" + label_min="Tight Skirt" + label_max="Poofy Skirt" + value_min="0" + value_max="1" + value_default=".333" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="866" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="846" + min1="0" + max1=".5" + max2=".5" + min2="1" /> + + <driven + id="845" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="119" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="1" + name="Eyebrow Size" + show_simple="true" + label_min="Thin Eyebrows" + label_max="Bushy Eyebrows" + value_min="0" + value_max="1" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1000" /> + + <driven + id="1001" /> + </param_driver> + </param> + + <param + id="750" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2" + name="Eyebrow Density" + label_min="Sparse" + label_max="Dense" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1002" /> + + <driven + id="1003" /> + </param_driver> + </param> + + <param + id="166" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="2" + name="Sideburns" + show_simple="true" + label_min="Short Sideburns" + label_max="Mutton Chops" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1004" /> + + <driven + id="1005" /> + </param_driver> + </param> + + <param + id="167" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="3" + name="Moustache" + show_simple="true" + label_min="Chaplin" + label_max="Handlebars" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1006" /> + + <driven + id="1007" /> + </param_driver> + </param> + + <param + id="168" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="5" + name="Soulpatch" + show_simple="true" + label_min="Less soul" + label_max="More soul" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="0"> + <param_driver> + <driven + id="1008" /> + + <driven + id="1009" /> + </param_driver> + </param> + + <param + id="169" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="4" + name="Chin Curtains" + show_simple="true" + label_min="Less Curtains" + label_max="More Curtains" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="45"> + <param_driver> + <driven + id="1010" /> + + <driven + id="1011" /> + </param_driver> + </param> + + <param + id="606" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1019" /> + + <driven + id="1039" /> + + <driven + id="1020" /> + </param_driver> + </param> + + <param + id="607" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1021" /> + + <driven + id="1040" /> + + <driven + id="1022" /> + </param_driver> + </param> + + <param + id="780" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3.5" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1023" /> + + <driven + id="1041" /> + + <driven + id="1024" /> + </param_driver> + </param> + + <param + id="603" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1042" /> + + <driven + id="1043" /> + </param_driver> + </param> + + <param + id="604" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".85" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1044" /> + + <driven + id="1045" /> + </param_driver> + </param> + + <param + id="605" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1046" /> + + <driven + id="1047" /> + </param_driver> + </param> + + <param + id="779" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="4" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1048" /> + + <driven + id="1049" /> + </param_driver> + </param> + + <param + id="617" + group="0" + wearable="socks" + edit_group="socks" + name="Socks Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="0.35" + camera_distance=".95" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1050" /> + + <driven + id="1051" /> + </param_driver> + </param> + + <param + id="616" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="1" + name="Shoe Height" + label_min="Short" + label_max="Tall" + value_min="0" + value_max="1" + value_default="0.1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1052" /> + + <driven + id="1053" /> + </param_driver> + </param> + + <param + id="619" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1054" /> + + <driven + id="1055" /> + </param_driver> + </param> + + <param + id="624" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1056" /> + + <driven + id="1057" /> + </param_driver> + </param> + + <param + id="93" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1058" /> + + <driven + id="1059" /> + </param_driver> + </param> + + <param + id="844" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Fingers" + label_min="Fingerless" + label_max="Fingers" + value_min=".01" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1060" /> + + <driven + id="1061" /> + </param_driver> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="16" + group="0" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="3" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="870" /> + </param_driver> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="757" + group="0" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-4" + value_max="2" + value_default="-1" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="871" /> + </param_driver> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="31" + group="0" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="2" + value_default=".5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="872" /> + </param_driver> + </param> + + + <param + id="877" + group="3" + name="Jacket Wrinkles" + label="Jacket Wrinkles" + wearable="jacket" + edit_group="jacket" + edit_group_order="20" + label_min="No Wrinkles" + label_max="Wrinkles" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="875" /> + + + <driven + id="876" /> + </param_driver> + </param> + + <param + id="1071" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1062" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1065" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1068" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1072" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1063" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1066" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1069" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1073" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1064" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1067" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1070" + min1="0" + max1="1" + max2="1" + min2="1" /> + + </param_driver> + </param> + + <!-- ==PHYSICS PARAMETERS======================================= --> + + <param + id="1100" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_UpDown_Controller" + label="Breast Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1200" /> + </param_driver> + </param> + + <param + id="1101" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_InOut_Controller" + label="Breast Physics InOut Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1201" /> + </param_driver> + </param> + + <param + id="1102" + group="1" + wearable="physics" + name="Belly_Physics_UpDown_Controller" + label="Belly Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1202" /> + <driven + id="1203" /> + <driven + id="1204" /> + </param_driver> + </param> + + <param + id="1103" + group="1" + wearable="shape" + name="Butt_Physics_UpDown_Controller" + label="Butt Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1205" /> + </param_driver> + </param> + + <param + id="1104" + group="1" + wearable="shape" + name="Butt_Physics_LeftRight_Controller" + label="Butt Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1206" /> + </param_driver> + </param> + + <param + id="1105" + group="1" + wearable="shape" + name="Breast_Physics_LeftRight_Controller" + label="Breast Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1207" /> + </param_driver> + </param> + + <param + id="10000" + group="0" + sex="female" + name="Breast_Physics_Mass" + label="Breast Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10001" + group="0" + sex="female" + name="Breast_Physics_Gravity" + label="Breast Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + + <param + id="10002" + group="0" + sex="female" + name="Breast_Physics_Drag" + label="Breast Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10003" + group="0" + sex="female" + name="Breast_Physics_UpDown_Max_Effect" + label="Breast Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10004" + group="0" + sex="female" + name="Breast_Physics_UpDown_Spring" + label="Breast Physics UpDown Spring" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10005" + group="0" + sex="female" + name="Breast_Physics_UpDown_Gain" + label="Breast Physics UpDown Gain" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10006" + group="0" + sex="female" + name="Breast_Physics_UpDown_Damping" + label="Breast Physics UpDown Damping" + wearable="physics" + edit_group="physics_breasts_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10007" + group="0" + sex="female" + name="Breast_Physics_InOut_Max_Effect" + label="Breast Physics InOut Max Effect" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10008" + group="0" + sex="female" + name="Breast_Physics_InOut_Spring" + label="Breast Physics InOut Spring" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10009" + group="0" + sex="female" + name="Breast_Physics_InOut_Gain" + label="Breast Physics InOut Gain" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10010" + group="0" + sex="female" + name="Breast_Physics_InOut_Damping" + label="Breast Physics InOut Damping" + wearable="physics" + edit_group="physics_breasts_inout" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10011" + group="0" + name="Belly_Physics_Mass" + label="Belly Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10012" + group="0" + name="Belly_Physics_Gravity" + label="Belly Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10013" + group="0" + name="Belly_Physics_Drag" + label="Belly Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + <param + id="10014" + group="0" + name="Belly_Physics_UpDown_Max_Effect" + label="Belly Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_belly_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10015" + group="0" + name="Belly_Physics_UpDown_Spring" + label="Belly Physics UpDown Spring" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10016" + group="0" + name="Belly_Physics_UpDown_Gain" + label="Belly Physics UpDown Gain" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10017" + group="0" + name="Belly_Physics_UpDown_Damping" + label="Belly Physics UpDown Damping" + wearable="physics" + edit_group="physics_belly_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10018" + group="0" + name="Butt_Physics_Mass" + label="Butt Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10019" + group="0" + name="Butt_Physics_Gravity" + label="Butt Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10020" + group="0" + name="Butt_Physics_Drag" + label="Butt Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10021" + group="0" + name="Butt_Physics_UpDown_Max_Effect" + label="Butt Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_butt_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10022" + group="0" + name="Butt_Physics_UpDown_Spring" + label="Butt Physics UpDown Spring" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10023" + group="0" + name="Butt_Physics_UpDown_Gain" + label="Butt Physics UpDown Gain" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10024" + group="0" + name="Butt_Physics_UpDown_Damping" + label="Butt Physics UpDown Damping" + wearable="physics" + edit_group="physics_butt_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10025" + group="0" + name="Butt_Physics_LeftRight_Max_Effect" + label="Butt Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10026" + group="0" + name="Butt_Physics_LeftRight_Spring" + label="Butt Physics LeftRight Spring" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10027" + group="0" + name="Butt_Physics_LeftRight_Gain" + label="Butt Physics LeftRight Gain" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10028" + group="0" + name="Butt_Physics_LeftRight_Damping" + label="Butt Physics LeftRight Damping" + wearable="physics" + edit_group="physics_butt_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10029" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Max_Effect" + label="Breast Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10030" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Spring" + label="Breast Physics LeftRight Spring" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10031" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Gain" + label="Breast Physics LeftRight Gain" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10032" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Damping" + label="Breast Physics LeftRight Damping" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="11000" + group="0" + name="AppearanceMessage_Version" + label="AppearanceMessage Version" + value_default="0" + value_min="0" + value_max="255"> + <param_driver /> + </param> + + </driver_parameters> + + <morph_masks> + <mask + morph_name="Displace_Hair_Facial" + body_region="head" + layer="facialhair" /> + <mask + morph_name="Displace_Loose_Upperbody" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Shirtsleeve_flair" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Displace_Loose_Lowerbody" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Pantflair" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Low_Crotch" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Longcuffs" + body_region="lower_body" + layer="lower_pants" /> + </morph_masks> +</linden_avatar> + diff --git a/indra/newview/character/avatar_lad_wings_tail.xml b/indra/newview/character/avatar_lad_wings_tail.xml new file mode 100644 index 0000000000..ac0b8b5704 --- /dev/null +++ b/indra/newview/character/avatar_lad_wings_tail.xml @@ -0,0 +1,12615 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_avatar + version="1.0" wearable_definition_version="22"> + <!-- The wearable_definition_version is checked during asset upload. --> + <!-- If you increment it, check indra/lib/python/indra/assetutil.py. --> + <skeleton + file_name="avatar_skeleton.xml"> + <attachment_point + id="1" + group="6" + pie_slice="2" + name="Chest" + joint="mChest" + position="0.15 0 -0.1" + rotation="0 90 90" + visible_in_first_person="true" /> + + <attachment_point + id="2" + group="2" + pie_slice="2" + name="Skull" + joint="mHead" + position="0 0 0.15" + rotation="0 0 90" + visible_in_first_person="false" /> + + <attachment_point + id="3" + group="3" + pie_slice="3" + name="Left Shoulder" + joint="mCollarLeft" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="4" + group="1" + pie_slice="1" + name="Right Shoulder" + joint="mCollarRight" + position="0 0 0.08" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="5" + group="4" + name="Left Hand" + joint="mWristLeft" + position="0 0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="6" + group="0" + name="Right Hand" + joint="mWristRight" + position="0 -0.08 -0.02" + rotation="0 0 0" + visible_in_first_person="true" + max_attachment_offset="1.5" /> + + <attachment_point + id="7" + group="5" + pie_slice="6" + name="Left Foot" + joint="mFootLeft" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="8" + group="7" + pie_slice="6" + name="Right Foot" + joint="mFootRight" + position="0 0.0 0.0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="9" + group="6" + pie_slice="7" + name="Spine" + joint="mChest" + position="-0.15 0 -0.1" + rotation="0 -90 90" + visible_in_first_person="true" /> + + <attachment_point + id="10" + group="6" + pie_slice="6" + name="Pelvis" + joint="mPelvis" + position="0 0 -0.15" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="11" + group="2" + pie_slice="6" + name="Mouth" + joint="mHead" + position="0.12 0 0.001" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="12" + group="2" + pie_slice="7" + name="Chin" + joint="mHead" + position="0.12 0 -0.04" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="13" + group="2" + pie_slice="4" + name="Left Ear" + joint="mHead" + position="0.015 0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="14" + group="2" + pie_slice="0" + name="Right Ear" + joint="mHead" + position="0.015 -0.08 0.017" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="15" + group="2" + pie_slice="3" + name="Left Eyeball" + joint="mEyeLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="16" + group="2" + pie_slice="1" + name="Right Eyeball" + joint="mEyeRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="false" /> + + <attachment_point + id="17" + group="2" + pie_slice="5" + name="Nose" + joint="mHead" + position="0.1 0 0.05" + rotation="0 0 0" + visible_in_first_person="false"/> + + <attachment_point + id="18" + group="1" + pie_slice="0" + name="R Upper Arm" + joint="mShoulderRight" + position="0.01 -0.13 0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="19" + group="1" + pie_slice="7" + name="R Forearm" + joint="mElbowRight" + position="0 -0.12 0" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="20" + group="3" + pie_slice="4" + name="L Upper Arm" + joint="mShoulderLeft" + position="0.01 0.15 -0.01" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="21" + group="3" + pie_slice="5" + name="L Forearm" + joint="mElbowLeft" + position="0 0.113 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="22" + group="7" + pie_slice="1" + name="Right Hip" + joint="mHipRight" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="23" + group="7" + pie_slice="0" + name="R Upper Leg" + joint="mHipRight" + position="-0.017 0.041 -0.310" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="24" + group="7" + pie_slice="7" + name="R Lower Leg" + joint="mKneeRight" + position="-0.044 -0.007 -0.262" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="25" + group="5" + pie_slice="3" + name="Left Hip" + joint="mHipLeft" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="26" + group="5" + pie_slice="4" + name="L Upper Leg" + joint="mHipLeft" + position="-0.019 -0.034 -0.310" + rotation="0 0 0" + visible_in_first_person="true"/> + + <attachment_point + id="27" + group="5" + pie_slice="5" + name="L Lower Leg" + joint="mKneeLeft" + position="-0.044 -0.007 -0.261" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="28" + group="6" + pie_slice="5" + name="Stomach" + joint="mPelvis" + position="0.092 0.0 0.088" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="29" + group="6" + pie_slice="3" + name="Left Pec" + joint="mTorso" + position="0.104 0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="30" + group="6" + pie_slice="1" + name="Right Pec" + joint="mTorso" + position="0.104 -0.082 0.247" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="31" + group="8" + name="Center 2" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="32" + group="8" + name="Top Right" + joint="mScreen" + position="0 -0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="33" + group="8" + name="Top" + joint="mScreen" + position="0 0 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="34" + group="8" + name="Top Left" + joint="mScreen" + position="0 0.5 0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="35" + group="8" + name="Center" + joint="mScreen" + position="0 0 0" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="36" + group="8" + name="Bottom Left" + joint="mScreen" + position="0 0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="37" + group="8" + name="Bottom" + joint="mScreen" + position="0 0 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="38" + group="8" + name="Bottom Right" + joint="mScreen" + position="0 -0.5 -0.5" + rotation="0 0 0" + hud="true" + max_attachment_offset="2.0" + visible_in_first_person="true" /> + + <attachment_point + id="39" + group="6" + pie_slice="1" + name="Neck" + joint="mNeck" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="40" + group="6" + pie_slice="2" + name="Avatar Center" + joint="mRoot" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="41" + group="6" + pie_slice="2" + name="L Wing Shoulder" + joint="mLeftWingShoulder" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="42" + group="6" + pie_slice="2" + name="L Wing Elbow" + joint="mLeftWingElbow" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="43" + group="6" + pie_slice="2" + name="L Wing Wrist" + joint="mLeftWingWrist" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="44" + group="6" + pie_slice="2" + name="L Wing Tip" + joint="mLeftWingTip" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="45" + group="6" + pie_slice="2" + name="R Wing Shoulder" + joint="mRightWingShoulder" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="46" + group="6" + pie_slice="2" + name="R Wing Elbow" + joint="mRightWingElbow" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="47" + group="6" + pie_slice="2" + name="R Wing Wrist" + joint="mRightWingWrist" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="48" + group="6" + pie_slice="2" + name="R Wing Tip" + joint="mRightWingTip" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="49" + group="6" + pie_slice="2" + name="Tail 1" + joint="mTail_1" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="50" + group="6" + pie_slice="2" + name="Tail 2" + joint="mTail_2" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <attachment_point + id="51" + group="6" + pie_slice="2" + name="Tail 3" + joint="mTail_3" + position="0 0 0" + rotation="0 0 0" + visible_in_first_person="true" /> + + <param + id="32" + group="1" + wearable="shape" + name="Male_Skeleton" + label_min="Female" + label_max="Male" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .2" /> + + <bone + name="mCollarLeft" + scale="0 .4 0" /> + + <bone + name="mCollarRight" + scale="0 .4 0" /> + + <bone + name="mShoulderLeft" + scale="0 .35 0" /> + + <bone + name="mShoulderRight" + scale="0 .35 0" /> + + <bone + name="mElbowLeft" + scale="0 .1 0" /> + + <bone + name="mElbowRight" + scale="0 .1 0" /> + + <bone + name="mChest" + scale=".05 .05 .05" /> + + <bone + name="mTorso" + scale="0 0 .05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale=".05 .05 0" /> + + <bone + name="mHipRight" + scale=".05 .05 0" /> + + <bone + name="mKneeLeft" + scale=".05 .05 .1" /> + + <bone + name="mKneeRight" + scale=".05 .05 .1" /> + </param_skeleton> + </param> + + <param + id="33" + group="0" + name="Height" + label="Height" + wearable="shape" + edit_group="shape_body" + edit_group_order="1" + label_min="Short" + label_max="Tall" + show_simple="true" + value_min="-2.3" + value_max="2" + camera_distance="2.2"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .02" /> + + <bone + name="mCollarLeft" + scale="0 0 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" /> + + <bone + name="mShoulderLeft" + scale="0 0.08 0" /> + + <bone + name="mShoulderRight" + scale="0 0.08 0" /> + + <bone + name="mElbowLeft" + scale="0 0.06 0" /> + + <bone + name="mElbowRight" + scale="0 0.06 0" /> + + <bone + name="mChest" + scale="0 0 0.05" /> + + <bone + name="mTorso" + scale="0 0 0.05" /> + + <bone + name="mPelvis" + scale="0 0 0" /> + + <bone + name="mHipLeft" + scale="0 0 0.1" /> + + <bone + name="mHipRight" + scale="0 0 0.1" /> + + <bone + name="mKneeLeft" + scale="0 0 0.1" /> + + <bone + name="mKneeRight" + scale="0 0 0.1" /> + </param_skeleton> + </param> + + <param + id="34" + group="0" + name="Thickness" + label="Body Thickness" + wearable="shape" + edit_group="shape_body" + edit_group_order="2" + label_min="Body Thin" + label_max="Body Thick" + show_simple="true" + value_min="-0.7" + value_max="1.5" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mNeck" + scale="0.1 0.1 0" /> + + <bone + name="mCollarLeft" + scale="0 0.2 0" /> + + <bone + name="mCollarRight" + scale="0 0.2 0" /> + + <bone + name="mShoulderLeft" + scale="0.1 0 0.1" /> + + <bone + name="mShoulderRight" + scale="0.1 0 0.1" /> + + <bone + name="mElbowLeft" + scale="0.1 0 0.1" /> + + <bone + name="mElbowRight" + scale="0.1 0 0.1" /> + + <bone + name="mChest" + scale="0.1 0.1 0" /> + + <bone + name="mTorso" + scale="0.1 0.1 0" /> + + <bone + name="mPelvis" + scale="0.1 0.1 0" /> + + <bone + name="mHipLeft" + scale="0.13 0.13 0" /> + + <bone + name="mHipRight" + scale="0.13 0.13 0" /> + + <bone + name="mKneeLeft" + scale="0.12 0.12 0" /> + + <bone + name="mKneeRight" + scale="0.12 0.12 0" /> + </param_skeleton> + </param> + + <param + id="36" + group="0" + name="Shoulders" + label="Shoulders" + wearable="shape" + edit_group="shape_torso" + edit_group_order="4" + label_min="Narrow" + label_max="Broad" + show_simple="true" + value_min="-1.8" + value_max="1.4" + value_default="-0.5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_skeleton> + <bone + name="mNeck" + scale="0.01 0.03 0" /> + + <bone + name="mCollarLeft" + scale="0 0 0" + offset="0 .02 0" /> + + <bone + name="mCollarRight" + scale="0 0 0" + offset="0 -.02 0" /> + + <bone + name="mChest" + scale="0.02 0.08 0" /> + </param_skeleton> + </param> + + <param + id="37" + group="0" + name="Hip Width" + label="Hip Width" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-3.2" + value_max="2.8" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0.1 0" /> + + <bone + name="mHipLeft" + scale="0 0 0" + offset="0 .004 0" /> + + <bone + name="mHipRight" + scale="0 0 0" + offset="0 -.004 0" /> + </param_skeleton> + </param> + + <param + id="842" + group="0" + name="Hip Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="3.2" + label_min="Short hips" + label_max="Long Hips" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mPelvis" + scale="0 0 0.3" /> + </param_skeleton> + </param> + + <param + id="38" + group="0" + name="Torso Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="11" + label_min="Short Torso" + label_max="Long Torso" + value_min="-1" + value_max="1" + camera_distance="1.8"> + <param_skeleton> + <bone + name="mTorso" + scale="0 0 .3" /> + + <bone + name="mPelvis" + scale="0 0 .1" /> + + <bone + name="mHipLeft" + scale="0 0 -.1" /> + + <bone + name="mHipRight" + scale="0 0 -.1" /> + + <bone + name="mKneeRight" + scale="0 0 -.05" /> + + <bone + name="mKneeLeft" + scale="0 0 -.05" /> + </param_skeleton> + </param> + + <param + id="195" + group="1" + name="EyeBone_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 .009 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 -.009 0" /> + </param_skeleton> + </param> + + <param + id="661" + group="1" + name="EyeBone_Head_Shear" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Shear Left Up" + label_max="Eyes Shear Right Up" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="0 0 .004" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="0 0 -.004" /> + </param_skeleton> + </param> + + <param + id="772" + group="1" + name="EyeBone_Head_Elongate" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Short Head" + label_max="Eyes Long Head" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".016 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".016 0 0" /> + </param_skeleton> + </param> + + <param + id="768" + group="1" + name="EyeBone_Bug" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Sunken" + label_max="Eyes Bugged" + value_min="-2" + value_max="2"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset=".005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset=".005 0 0" /> + </param_skeleton> + </param> + + <param + id="655" + group="1" + name="Head Size" + label="Head Size" + wearable="shape" + edit_group="shape_head" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="-.25" + value_max=".10"> + <param_skeleton> + <bone + name="mSkull" + scale="1 1 1" + offset="0 0 0.1" /> + + <bone + name="mHead" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeLeft" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mEyeRight" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="197" + group="1" + wearable="shoes" + name="Shoe_Heels" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.08" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.08" /> + </param_skeleton> + </param> + + <param + id="502" + group="1" + wearable="shoes" + name="Shoe_Platform" + edit_group="shoes" + label_min="No Heels" + label_max="High Heels" + value_min="0" + value_max="1"> + <param_skeleton> + <bone + name="mFootRight" + scale="0 0 0" + offset="0 0 -.07" /> + + <bone + name="mFootLeft" + scale="0 0 0" + offset="0 0 -.07" /> + </param_skeleton> + </param> + + <param + id="675" + group="0" + name="Hand Size" + wearable="shape" + edit_group="shape_torso" + edit_group_order="10" + label_min="Small Hands" + label_max="Large Hands" + value_min="-.3" + value_max=".3" + camera_elevation=".1" + camera_distance="1.4" + camera_angle="0"> + <param_skeleton> + <bone + name="mWristRight" + scale="1 1 1" + offset="0 0 0" /> + + <bone + name="mWristLeft" + scale="1 1 1" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="683" + group="0" + name="Neck Thickness" + wearable="shape" + edit_group="shape_torso" + edit_group_order="2" + label_min="Skinny Neck" + label_max="Thick Neck" + value_min="-.4" + value_max=".2" + value_default="-.15" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="1 1 0" + offset="0 0 0" /> + </param_skeleton> + </param> + + <param + id="689" + group="1" + wearable="shape" + name="EyeBone_Big_Eyes" + edit_group="shape_eyes" + label_min="Eyes Back" + label_max="Eyes Forward" + value_min="-1" + value_max="1"> + <param_skeleton> + <bone + name="mEyeLeft" + scale="0 0 0" + offset="-.005 0 0" /> + + <bone + name="mEyeRight" + scale="0 0 0" + offset="-.005 0 0" /> + </param_skeleton> + </param> + + <param + id="692" + group="0" + name="Leg Length" + wearable="shape" + edit_group="shape_legs" + edit_group_order="2" + label_min="Short Legs" + label_max="Long Legs" + value_min="-1" + value_max="1" + camera_distance="2.5"> + <param_skeleton> + <bone + name="mHipLeft" + scale="0 0 .2" /> + + <bone + name="mHipRight" + scale="0 0 .2" /> + + <bone + name="mKneeRight" + scale="0 0 .2" /> + + <bone + name="mKneeLeft" + scale="0 0 .2" /> + </param_skeleton> + </param> + + <param + id="693" + group="0" + name="Arm Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="9" + label_min="Short Arms" + label_max="Long arms" + value_min="-1" + value_max="1" + value_default=".6" + camera_distance="1.5"> + <param_skeleton> + <bone + name="mShoulderLeft" + scale="0 .2 0" /> + + <bone + name="mShoulderRight" + scale="0 .2 0" /> + + <bone + name="mElbowRight" + scale="0 .3 0" /> + + <bone + name="mElbowLeft" + scale="0 .3 0" /> + </param_skeleton> + </param> + + <param + id="756" + group="0" + name="Neck Length" + wearable="shape" + edit_group="shape_torso" + edit_group_order="3" + label_min="Short Neck" + label_max="Long Neck" + value_min="-1" + value_max="1" + value_default="0" + camera_elevation=".3" + camera_distance=".8" + camera_angle="15"> + <param_skeleton> + <bone + name="mNeck" + scale="0 0 .5" /> + </param_skeleton> + </param> + <param + id="11001" + group="0" + name="Hover" + wearable="shape" + edit_group="shape_body" + edit_group_order="4" + label_min="Lower" + label_max="Higher" + value_min="-2" + value_max="2" + value_default="0" + camera_distance="2.5"> + <param_skeleton /> + </param> + + </skeleton> + + <mesh + type="hairMesh" + lod="0" + file_name="avatar_hair.llm" + min_pixel_width="320"> + <!-- begin morph targets --> + <param + id="180" + group="1" + name="Hair_Volume" + label="Hair Volume" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="761" + group="1" + name="Hair_Volume_Small" + label="Hair Volume" + show_simple="true" + wearable="hair" + edit_group="hair_style" + label_min="Less" + label_max="More" + value_min="0" + value_max="1.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="181" + group="0" + name="Hair_Big_Front" + label="Big Hair Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.14" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="182" + group="0" + name="Hair_Big_Top" + label="Big Hair Top" + wearable="hair" + edit_group="hair_style" + edit_group_order="6" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="183" + group="0" + name="Hair_Big_Back" + clothing_morph="true" + label="Big Hair Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="7" + label_min="Less" + label_max="More" + value_min="-1" + value_max="1" + value_default="0.05" + camera_elevation=".1" + camera_distance=".7" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="184" + group="0" + name="Hair_Spiked" + label="Spiked Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="15" + label_min="No Spikes" + label_max="Big Spikes" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="140" + group="0" + name="Hair_Part_Middle" + label="Middle Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="17" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="141" + group="0" + name="Hair_Part_Right" + label="Right Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="18" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="142" + group="0" + name="Hair_Part_Left" + label="Left Part" + wearable="hair" + edit_group="hair_style" + edit_group_order="19" + label_min="No Part" + label_max="Part" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="143" + group="0" + name="Hair_Sides_Full" + label="Full Hair Sides" + show_simple="true" + wearable="hair" + edit_group="hair_style" + edit_group_order="11" + label_min="Mowhawk" + label_max="Full Sides" + value_min="-4" + value_max="1.5" + value_default="0.125" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="144" + group="1" + name="Bangs_Front_Up" + label="Front Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="145" + group="1" + clothing_morph="true" + name="Bangs_Front_Down" + label="Front Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Bangs" + label_max="Bangs Down" + value_min="0" + value_max="5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="146" + group="1" + name="Bangs_Sides_Up" + label="Side Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="147" + group="1" + clothing_morph="true" + name="Bangs_Sides_Down" + label="Side Bangs Down" + wearable="hair" + edit_group="hair_style" + label_min="Side Bangs" + label_max="Side Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="148" + group="1" + name="Bangs_Back_Up" + label="Back Bangs Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="149" + group="1" + name="Bangs_Back_Down" + label="Back Bangs Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Bangs" + label_max="Back Bangs Down" + value_min="0" + value_max="2" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="171" + group="1" + name="Hair_Front_Down" + label="Front Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="172" + group="1" + name="Hair_Front_Up" + label="Front Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Front Hair" + label_max="Front Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="173" + group="1" + name="Hair_Sides_Down" + label="Sides Hair Down" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Down" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="174" + group="1" + name="Hair_Sides_Up" + label="Sides Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Sides Hair" + label_max="Sides Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="175" + group="1" + name="Hair_Back_Down" + label="Back Hair Down" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Down" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="176" + group="1" + name="Hair_Back_Up" + label="Back Hair Up" + wearable="hair" + edit_group="hair_style" + label_min="Back Hair" + label_max="Back Hair Up" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="150"> + <param_morph /> + </param> + + <param + id="177" + group="0" + name="Hair_Rumpled" + label="Rumpled Hair" + show_simple="true" + wearable="hair" + clothing_morph="true" + edit_group="hair_style" + edit_group_order="14.5" + label_min="Smooth Hair" + label_max="Rumpled Hair" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="178" + group="1" + name="Hair_Swept_Back" + label="Swept Back Hair" + wearable="hair" + edit_group="hair_style" + label_min="NotHair" + label_max="Swept Back" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="179" + group="1" + name="Hair_Swept_Forward" + label="Swept Forward Hair" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Swept Forward" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_morph /> + </param> + + <param + id="190" + group="1" + name="Hair_Tilt_Right" + label="Hair Tilted Right" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Right" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="191" + group="1" + name="Hair_Tilt_Left" + label="Hair Tilted Left" + wearable="hair" + edit_group="hair_style" + label_min="Hair" + label_max="Tilt Left" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="192" + group="0" + name="Bangs_Part_Middle" + label="Part Bangs" + wearable="hair" + edit_group="hair_style" + edit_group_order="20" + label_min="No Part" + label_max="Part Bangs" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="640" + group="1" + name="Hair_Egg_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1.3" + value_max="1"> + <param_morph /> + </param> + + <param + id="641" + group="1" + name="Hair_Squash_Stretch_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-.5" + value_max="1"> + <param_morph /> + </param> + + <param + id="642" + group="1" + name="Hair_Square_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="643" + group="1" + name="Hair_Round_Head" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="644" + group="1" + name="Hair_Forehead_Round" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="645" + group="1" + name="Hair_Forehead_Slant" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="774" + group="1" + name="Shear_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="771" + group="1" + name="Elongate_Head_Hair" + wearable="hair" + edit_group="hair_style" + cross_wearable="true" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + <param + id="674" + group="0" + name="Hair_Shear_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="12" + label="Shear Back" + label_min="Full Back" + label_max="Sheared Back" + value_min="-1" + value_max="2" + value_default="-0.3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="100"> + <param_morph /> + </param> + + <param + id="762" + group="0" + name="Hair_Shear_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.8" + label="Shear Front" + show_simple="true" + label_min="Full Front" + label_max="Sheared Front" + value_min="0" + value_max="3" + camera_elevation=".1" + camera_distance=".5" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="754" + group="0" + name="Hair_Taper_Back" + wearable="hair" + edit_group="hair_style" + edit_group_order="14" + label="Taper Back" + label_min="Wide Back" + label_max="Narrow Back" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_morph /> + </param> + + <param + id="755" + group="0" + name="Hair_Taper_Front" + wearable="hair" + edit_group="hair_style" + edit_group_order="13" + label="Taper Front" + label_min="Wide Front" + label_max="Narrow Front" + value_min="-1.5" + value_max="1.5" + value_default="0.05" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="782" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="783" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="790" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Medlong" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="784" + group="1" + clothing_morph="true" + name="Hair_Pigtails_Long" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="786" + group="1" + name="Hair_Ponytail_Short" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="787" + group="1" + name="Hair_Ponytail_Med" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="788" + group="1" + name="Hair_Ponytail_Long" + clothing_morph="true" + wearable="hair" + edit_group="hair_style" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- #end morph targets --> + </mesh> + + <mesh + type="hairMesh" + lod="1" + file_name="avatar_hair_1.llm" + min_pixel_width="160" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="2" + file_name="avatar_hair_2.llm" + min_pixel_width="80" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="3" + file_name="avatar_hair_3.llm" + min_pixel_width="40" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="4" + file_name="avatar_hair_4.llm" + min_pixel_width="20" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="hairMesh" + lod="5" + file_name="avatar_hair_5.llm" + min_pixel_width="0" + reference="avatar_hair.llm"> + </mesh> + + <mesh + type="headMesh" + lod="0" + file_name="avatar_head.llm" + min_pixel_width="320"> + <!-- + begin morph targets + ############# + tweakable morphs + ############# + --> + <param + id="1" + group="0" + name="Big_Brow" + label="Brow Size" + wearable="shape" + edit_group="shape_head" + edit_group_order="7" + label_min="Small" + label_max="Large" + value_min="-.3" + value_max="2" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="2" + group="0" + name="Nose_Big_Out" + label="Nose Size" + wearable="shape" + edit_group="shape_nose" + edit_group_order="1" + label_min="Small" + label_max="Large" + show_simple="true" + value_min="-0.8" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="50"> + <param_morph /> + </param> + + <param + id="4" + group="0" + name="Broad_Nostrils" + label="Nostril Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3" + label_min="Narrow" + label_max="Broad" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="759" + group="0" + name="Low_Septum_Nose" + label="Nostril Division" + wearable="shape" + edit_group="shape_nose" + edit_group_order="3.5" + label_min="High" + label_max="Low" + value_min="-1" + value_max="1.5" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="517" + group="0" + name="Wide_Nose" + label="Nose Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="2" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="5" + group="0" + name="Cleft_Chin" + label="Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="6" + label_min="Round" + label_max="Cleft" + value_min="-.1" + value_max="1" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="6" + group="0" + name="Bulbous_Nose_Tip" + label="Nose Tip Shape" + wearable="shape" + edit_group="shape_nose" + edit_group_order="8" + label_min="Pointy" + label_max="Bulbous" + value_min="-.3" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="7" + group="0" + name="Weak_Chin" + label="Chin Angle" + wearable="shape" + edit_group="shape_chin" + edit_group_order="1" + label_min="Chin Out" + label_max="Chin In" + value_min="-.5" + value_max=".5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="8" + group="0" + name="Double_Chin" + label="Chin-Neck" + wearable="shape" + edit_group="shape_chin" + edit_group_order="8" + label_min="Tight Chin" + label_max="Double Chin" + value_min="-.5" + value_max="1.5" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="60"> + <param_morph /> + </param> + + <param + id="10" + group="0" + name="Sunken_Cheeks" + label="Lower Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="9" + label_min="Well-Fed" + label_max="Sunken" + show_simple="true" + value_min="-1.5" + value_max="3" + camera_elevation=".1" + camera_distance=".4" + camera_angle="5"> + <param_morph /> + </param> + + <param + id="11" + group="0" + name="Noble_Nose_Bridge" + label="Upper Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="758" + group="0" + name="Lower_Bridge_Nose" + label="Lower Bridge" + wearable="shape" + edit_group="shape_nose" + edit_group_order="5.5" + label_min="Low" + label_max="High" + value_min="-1.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="12" + group="0" + name="Jowls" + wearable="shape" + edit_group="shape_chin" + edit_group_order="5" + label_min="Less" + label_max="More" + value_min="-.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".4" + camera_angle="0"> + <param_morph /> + </param> + + <param + id="13" + group="0" + name="Cleft_Chin_Upper" + label="Upper Chin Cleft" + wearable="shape" + edit_group="shape_chin" + edit_group_order="7" + label_min="Round" + label_max="Cleft" + value_min="0" + value_max="1.5" + camera_elevation="0" + camera_distance=".28" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="14" + group="0" + name="High_Cheek_Bones" + label="Cheek Bones" + wearable="shape" + edit_group="shape_head" + edit_group_order="10" + label_min="Low" + label_max="High" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="15" + group="0" + name="Ears_Out" + label="Ear Angle" + wearable="shape" + edit_group="shape_ears" + edit_group_order="2" + label_min="In" + label_max="Out" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="870" + group="1" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="17" + group="0" + name="Square_Jaw" + label="Jaw Shape" + wearable="shape" + edit_group="shape_chin" + edit_group_order="2" + label_min="Pointy" + label_max="Square" + value_min="-.5" + value_max="1" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="18" + group="0" + name="Puffy_Upper_Cheeks" + label="Upper Cheeks" + wearable="shape" + edit_group="shape_head" + edit_group_order="8" + label_min="Thin" + label_max="Puffy" + value_min="-1.5" + value_max="2.5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="19" + group="0" + name="Upturned_Nose_Tip" + label="Nose Tip Angle" + wearable="shape" + edit_group="shape_nose" + edit_group_order="7" + label_min="Downturned" + label_max="Upturned" + value_min="-1.5" + value_max="1" + camera_elevation=".1" + camera_distance=".35" + camera_angle="15"> + <param_morph /> + </param> + + <param + id="20" + group="0" + name="Bulbous_Nose" + label="Nose Thickness" + wearable="shape" + edit_group="shape_nose" + edit_group_order="4" + label_min="Thin Nose" + label_max="Bulbous Nose" + show_simple="true" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="5" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="22" + group="0" + name="Attached_Earlobes" + label="Attached Earlobes" + wearable="shape" + edit_group="shape_ears" + edit_group_order="3" + label_min="Unattached" + label_max="Attached" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="23" + group="0" + name="Baggy_Eyes" + label="Eye Bags" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6" + label_min="Smooth" + label_max="Baggy" + value_min="-.5" + value_max="1.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="765" + group="0" + name="Puffy_Lower_Lids" + label="Puffy Eyelids" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="6.1" + label_min="Flat" + label_max="Puffy" + value_min="-.3" + value_max="2.5" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1.1" + label_min="Narrow" + label_max="Wide" + value_min="-1.5" + value_max="2" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="25" + group="0" + name="Wide_Lip_Cleft" + label="Lip Cleft" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-.8" + value_max="1.5" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="764" + group="0" + name="Lip_Cleft_Deep" + label="Lip Cleft Depth" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5.8" + label_min="Shallow" + label_max="Deep" + value_min="-.5" + value_max="1.2" + camera_elevation="0" + camera_distance=".28"> + <param_morph /> + </param> + + <param + id="26" + group="1" + wearable="shape" + name="Lips_Thin" + edit_group="driven" + value_min="0" + value_max=".7"> + <param_morph /> + </param> + + <param + id="27" + group="0" + name="Wide_Nose_Bridge" + label="Bridge Width" + wearable="shape" + edit_group="shape_nose" + edit_group_order="6" + label_min="Narrow" + label_max="Wide" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="28" + group="1" + name="Lips_Fat" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="29" + group="1" + name="Wide_Upper_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <param + id="30" + group="1" + name="Wide_Lower_Lip" + wearable="shape" + edit_group="driven" + value_min="-.7" + value_max="1.3"> + <param_morph /> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="872" + group="1" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="871" + group="1" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="35" + group="0" + name="Big_Ears" + label="Ear Size" + wearable="shape" + edit_group="shape_ears" + edit_group_order="1" + label_min="Small" + label_max="Large" + value_min="-1" + value_max="2" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="796" + group="0" + name="Pointy_Ears" + label="Ear Tips" + wearable="shape" + edit_group="shape_ears" + edit_group_order="4" + label_min="Flat" + label_max="Pointy" + value_min="-.4" + value_max="3" + camera_elevation=".1" + camera_distance=".3" + camera_angle="45"> + <param_morph /> + </param> + + <param + id="185" + group="0" + name="Deep_Chin" + label="Chin Depth" + wearable="shape" + edit_group="shape_chin" + edit_group_order="3" + label_min="Shallow" + label_max="Deep" + value_min="-1" + value_max="1" + camera_elevation=".1" + camera_distance=".4" + camera_angle="30"> + <param_morph /> + </param> + + <param + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph> + <volume_morph + name="HEAD" + scale="-0.008 -0.006 0.015"/> + </param_morph> + </param> + + <param + id="188" + group="1" + name="Square_Head" + wearable="shape" + label_min="Less Square" + label_max="More Square" + value_min="0" + value_max=".7" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="189" + group="1" + wearable="shape" + name="Round_Head" + label_min="Less Round" + label_max="More Round" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + id="194" + group="1" + name="Eye_Spread" + wearable="shape" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="400" + sex="male" + group="1" + name="Displace_Hair_Facial" + label="Hair Thickess" + wearable="hair" + edit_group="hair_facial" + label_min="Cropped Hair" + label_max="Bushy Hair" + value_min="0" + value_max="2"> + <param_morph /> + </param> + + <param + id="506" + group="0" + name="Mouth_Height" + wearable="shape" + label="Mouth Position" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="4" + label_min="High" + label_max="Low" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="633" + group="1" + name="Fat_Head" + label="Fat Head" + wearable="shape" + edit_group="shape_body" + label_min="Skinny" + label_max="Fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph/> + </param> + + <param + id="630" + group="1" + name="Forehead_Round" + label="Round Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="631" + group="1" + name="Forehead_Slant" + label="Slanted Forehead" + wearable="shape" + label_min="Less" + label_max="More" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + <param + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.2" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".30"> + <param_morph /> + </param> + + + <param + id="653" + group="0" + name="Tall_Lips" + wearable="shape" + label="Lip Fullness" + show_simple="true" + edit_group="shape_mouth" + edit_group_order="2" + label_min="Less Full" + label_max="More Full" + value_min="-1" + value_max="2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="656" + group="0" + name="Crooked_Nose" + wearable="shape" + label="Crooked Nose" + edit_group="shape_nose" + edit_group_order="9" + label_min="Nose Left" + label_max="Nose Right" + value_min="-2" + value_max="2" + camera_distance=".3" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="657" + group="1" + name="Smile_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Up" + value_min="0" + value_max="1.4" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="658" + group="1" + name="Frown_Mouth" + wearable="shape" + label="Mouth Corner" + edit_group="shape_mouth" + label_min="Corner Normal" + label_max="Corner Down" + value_min="0" + value_max="1.2" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="797" + group="1" + name="Fat_Upper_Lip" + wearable="shape" + label="Fat Upper Lip" + edit_group="shape_mouth" + label_min="Normal Upper" + label_max="Fat Upper" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="798" + group="1" + name="Fat_Lower_Lip" + wearable="shape" + label="Fat Lower Lip" + edit_group="shape_mouth" + label_min="Normal Lower" + label_max="Fat Lower" + value_min="0" + value_max="1.5" + camera_distance=".3" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph> + <volume_morph + name="HEAD" + scale="0.02 0.0 0.0"/> + </param_morph> + </param> + + <param + id="663" + group="0" + name="Shift_Mouth" + wearable="shape" + label="Shift Mouth" + edit_group="shape_mouth" + edit_group_order="7" + label_min="Shift Left" + label_max="Shift Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".35" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-1.3" + value_max="1.3" + value_default="0" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + id="760" + group="0" + name="Jaw_Angle" + wearable="shape" + label="Jaw Angle" + edit_group="shape_chin" + edit_group_order="3.5" + label_min="Low Jaw" + label_max="High Jaw" + value_min="-1.2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="665" + group="0" + name="Jaw_Jut" + wearable="shape" + label="Jaw Jut" + edit_group="shape_chin" + edit_group_order="4" + label_min="Overbite" + label_max="Underbite" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="70"> + <param_morph /> + </param> + + <param + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + show_simple="true" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <param + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + #Fat_Lips = Fat_Lips 34 1 0 1 + #Wide_Lips = Wide_Lips 35 1 0 1 + #Wide_Nose = Wide_Nose 36 1 0 1 + --> + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + id="300" + group="1" + name="Express_Closed_Mouth" + value_default="1" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="311" + group="1" + name="Express_Worry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="632" + group="1" + name="Express_Open_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # Lipsync morphs + ############## + --> + + <param + id="70" + group="1" + name="Lipsync_Aah" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="71" + group="1" + name="Lipsync_Ooh" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + id="40" + group="1" + name="Male_Head" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="51" + group="1" + name="Furrowed_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="53" + group="1" + name="Surprised_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="54" + group="1" + name="Worried_Eyebrows" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="55" + group="1" + name="Frown_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="57" + group="1" + name="Smile_Mouth" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + #end morph targets + --> + </mesh> + + <mesh + type="headMesh" + lod="1" + file_name="avatar_head_1.llm" + min_pixel_width="160" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="2" + file_name="avatar_head_2.llm" + min_pixel_width="80" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="3" + file_name="avatar_head_3.llm" + min_pixel_width="40" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="headMesh" + lod="4" + file_name="avatar_head_4.llm" + min_pixel_width="0" + reference="avatar_head.llm"> + </mesh> + + <mesh + type="eyelashMesh" + lod="0" + file_name="avatar_eyelashes.llm" + min_pixel_width="320"> + <param + shared="1" + id="660" + group="1" + name="Shear_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Shear Left" + label_max="Shear Right" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="770" + group="1" + name="Elongate_Head" + wearable="shape" + label="Shear Face" + edit_group="shape_head" + label_min="Flat Head" + label_max="Long Head" + value_min="-1" + value_max="1" + value_default="0" + camera_distance=".5" + camera_elevation=".04"> + <param_morph /> + </param> + + <param + shared="1" + id="664" + group="0" + name="Pop_Eye" + wearable="shape" + label="Eye Pop" + edit_group="shape_eyes" + edit_group_order="8" + label_min="Pop Right Eye" + label_max="Pop Left Eye" + value_min="-2" + value_max="2" + value_default="0" + camera_distance=".5" + camera_elevation=".04" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="21" + group="0" + name="Upper_Eyelid_Fold" + label="Upper Eyelid Fold" + wearable="shape" + edit_group="shape_eyes" + label_min="Uncreased" + label_max="Creased" + value_min="-0.2" + value_max="1.3" + camera_elevation=".1" + camera_distance=".35"> + <param_morph /> + </param> + + <param + shared="1" + id="24" + group="0" + name="Wide_Eyes" + label="Eye Opening" + wearable="shape" + edit_group="shape_eyes" + label_min="Narrow" + label_max="Wide" + show_simple="true" + value_min="-1.5" + value_max="2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="186" + group="1" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + label_min="Chin Heavy" + label_max="Forehead Heavy" + value_min="-1.3" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="187" + group="1" + name="Squash_Stretch_Head" + label="Squash/Stretch Head" + wearable="shape" + edit_group="shape_head" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-.5" + value_max="1" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_morph /> + </param> + + <param + shared="1" + id="194" + group="1" + name="Eye_Spread" + edit_group="shape_eyes" + label_min="Eyes Together" + label_max="Eyes Spread" + value_min="-2" + value_max="2"> + <param_morph /> + </param> + + <param + id="518" + group="0" + name="Eyelashes_Long" + wearable="shape" + label="Eyelash Length" + edit_group="shape_eyes" + edit_group_order="7" + label_min="Short" + label_max="Long" + value_min="-.3" + value_max="1.5" + camera_elevation=".1" + camera_distance=".30" + camera_angle="-20"> + <param_morph /> + </param> + + <param + shared="1" + id="650" + group="0" + name="Eyelid_Corner_Up" + label="Outer Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + + <param + shared="1" + id="880" + group="0" + name="Eyelid_Inner_Corner_Up" + label="Inner Eye Corner" + wearable="shape" + edit_group="shape_eyes" + label_min="Corner Down" + label_max="Corner Up" + value_min="-1.3" + value_max="1.2" + camera_elevation=".1" + camera_distance=".3"> + <param_morph /> + </param> + + <param + shared="1" + id="686" + group="1" + name="Head_Eyes_Big" + wearable="shape" + label="Eye Size" + edit_group="shape_eyes" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="-2" + value_max="2" + show_simple="true" + value_default="0"> + <param_morph /> + </param> + + <param + shared="1" + id="767" + group="1" + name="Bug_Eyed_Head" + wearable="shape" + label="Eye Depth" + edit_group="shape_eyes" + edit_group_order="4.5" + label_min="Sunken Eyes" + label_max="Bug Eyes" + value_min="-2" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############## + # Facial Expression morphs + ############## + --> + <param + shared="1" + id="301" + group="1" + name="Express_Tongue_Out" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="302" + group="1" + name="Express_Surprise_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="303" + group="1" + name="Express_Wink_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="304" + group="1" + name="Express_Embarrassed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="305" + group="1" + name="Express_Shrug_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="306" + group="1" + name="Express_Kiss" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="307" + group="1" + name="Express_Bored_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="308" + group="1" + name="Express_Repulsed_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="309" + group="1" + name="Express_Disdain" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="310" + group="1" + name="Express_Afraid_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="312" + group="1" + name="Express_Cry_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="313" + group="1" + name="Express_Sad_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="314" + group="1" + name="Express_Anger_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="315" + group="1" + name="Express_Frown" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="316" + group="1" + name="Express_Laugh_Emote" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="317" + group="1" + name="Express_Toothsmile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="318" + group="1" + name="Express_Smile" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # other morphs (not user controlled) + ############## + --> + <param + shared="1" + id="41" + group="1" + name="Old" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + shared="1" + id="58" + group="1" + name="Blink_Left" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + shared="1" + id="59" + group="1" + name="Blink_Right" + value_min="0" + value_max="1"> + <param_morph /> + </param> + </mesh> + + <!-- + #headMesh2 = + #headMesh3 = + --> + <mesh + type="upperBodyMesh" + lod="0" + file_name="avatar_upper_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="104" + group="1" + name="Big_Belly_Torso" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.07"/> + <volume_morph + name="PELVIS" + scale="0.075 0.04 0.03" + pos="0.07 0 -0.02"/> + </param_morph> + </param> + + <param + id="626" + sex="female" + group="1" + name="Big_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 0.024 -0.016"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0273 0.0273 0.0273" + pos="0.038 -0.024 -0.016"/> + </param_morph> + </param> + + <param + id="627" + sex="female" + group="1" + name="Small_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Large" + label_max="Small" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.05 0.0 0.0" + pos="-0.01 -0.01 -0.02"/> + </param_morph> + </param> + + <param + id="843" + sex="female" + group="1" + name="No_Chest" + label="Chest Size" + wearable="shape" + edit_group="shape_torso" + label_min="Some" + label_max="None" + value_min="0" + value_max="1" + camera_elevation="0" + camera_distance=".28"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + <volume_morph + name="RIGHT_PEC" + scale="-0.051 0.0 0.0" + pos="-0.02 -0.01 -0.03"/> + </param_morph> + </param> + + <param + id="106" + group="1" + name="Muscular_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Muscular" + value_min="0" + value_max="1.4" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.005" + pos="0.0 0 0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.015 0.0 0.005" + pos="0.015 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.005 0 0"/> + </param_morph> + </param> + + <param + id="648" + group="1" + sex="female" + name="Scrawny_Torso" + label="Torso Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="677" + group="1" + sex="male" + name="Scrawny_Torso_Male" + label="Torso Scrawny" + wearable="shape" + edit_group="shape_torso" + label_min="Regular" + label_max="Scrawny" + value_min="0" + value_max="1.3" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="BELLY" + scale="-0.01 -0.01 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="UPPER_BACK" + scale="-0.01 -0.01 0.0" + pos="0.0 0.0 0"/> + <volume_morph + name="CHEST" + scale="-0.02 -0.02 0.0" + pos="0.01 0.0 0"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="L_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="L_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 -0.03 -0.005" + pos="0.0 0 -0.005"/> + <volume_morph + name="R_UPPER_ARM" + scale="-0.01 -0.01 -0.02" + pos="0 0 0"/> + <volume_morph + name="R_LOWER_ARM" + scale="-0.005 0.0 -0.01" + pos="-0.005 0 0"/> + </param_morph> + </param> + + <param + id="634" + group="1" + name="Fat_Torso" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1" + camera_elevation=".3"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="PELVIS" + scale="0.02 0.03 0.03" + pos="0 0 -0.03"/> + <volume_morph + name="UPPER_BACK" + scale="0.01 0.03 0.0" + pos="-0.03 0 0"/> + <volume_morph + name="LOWER_BACK" + scale="0.04 0.06 0.0" + pos="-0.06 0 0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.08 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.08 0.0"/> + <volume_morph + name="LEFT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 -0.005 -0.013"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0367 0.0367 0.016" + pos="0.00 0.005 -0.013"/> + <volume_morph + name="BELLY" + scale="0.09 0.08 0.07" + pos="0 0 -0.05"/> + <volume_morph + name="L_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_CLAVICLE" + scale="0.0 0.0 0.015"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.02 0.0 0.02" + pos="0.0 0.0 -0.02"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <param + id="507" + group="0" + sex="female" + name="Breast_Gravity" + label="Breast Buoyancy" + wearable="shape" + edit_group="shape_torso" + edit_group_order="7" + label_min="Less Gravity" + label_max="More Gravity" + value_default="0" + value_min="-1.5" + value_max="2" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.004 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="628" + group="1" + name="Displace_Loose_Upperbody" + label="Shirt Fit" + wearable="shirt" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="840" + group="0" + name="Shirtsleeve_flair" + label="Sleeve Looseness" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="6" + clothing_morph="true" + label_min="Tight Sleeves" + label_max="Loose Sleeves" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="855" + group="1" + name="Love_Handles" + wearable="shape" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="2"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LOWER_BACK" + scale="0.0 0.02 0.0"/> + <volume_morph + name="LEFT_HANDLE" + pos="0.0 0.025 0.0"/> + <volume_morph + name="RIGHT_HANDLE" + pos="0.0 -0.025 0.0"/> + </param_morph> + </param> + + <param + id="684" + group="0" + sex="female" + name="Breast_Female_Cleavage" + label="Breast Cleavage" + wearable="shape" + edit_group="shape_torso" + edit_group_order="8" + label_min="Separate" + label_max="Join" + value_default="0" + value_min="-.3" + value_max="1.3" + camera_elevation=".3" + camera_distance=".8"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 0.0"/> + </param_morph> + </param> + + <param + id="685" + group="0" + sex="male" + name="Chest_Male_No_Pecs" + label="Pectorals" + wearable="shape" + edit_group="shape_torso" + edit_group_order="5" + label_min="Big Pectorals" + label_max="Sunken Chest" + value_default="0" + value_min="-0.5" + value_max="1.1" + camera_elevation=".3" + camera_distance="1.2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 -0.024 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="-0.03 0.024 -0.01"/> + </param_morph> + </param> + + <!-- ############# # + other morphs (not user controlled) + ############# --> + <param + id="100" + group="1" + name="Male_Torso" + wearable="shape" + edit_group="driven" + label_min="Male_Torso" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="CHEST" + scale="0.03 0.04 0.02" + pos="-0.03 0 -0.01"/> + <volume_morph + name="BELLY" + scale="0.03 0.03 0.0" + pos="-0.03 0 0.02"/> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 -0.03 0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.008 0.03 0.01"/> + <volume_morph + name="L_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="L_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="L_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="R_CLAVICLE" + scale="0.02 0.0 0.01" + pos="-0.02 0 0"/> + <volume_morph + name="R_UPPER_ARM" + scale="0.01 0.0 0.01" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="R_LOWER_ARM" + scale="0.005 0.0 0.005" + pos="0.0 0.0 -0.005"/> + <volume_morph + name="NECK" + scale="0.015 0.01 0.0"/> + <volume_morph + name="HEAD" + scale="0.0 0.0 0.01" + pos="0 0 -0.01"/> + </param_morph> + </param> + + <!-- + ############## + # animatable morphs + ############## + --> + <param + id="101" + group="1" + name="Hands_Relaxed" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="102" + group="1" + name="Hands_Point" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="103" + group="1" + name="Hands_Fist" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="666" + group="1" + name="Hands_Relaxed_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="667" + group="1" + name="Hands_Point_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="668" + group="1" + name="Hands_Fist_L" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="669" + group="1" + name="Hands_Relaxed_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="670" + group="1" + name="Hands_Point_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="671" + group="1" + name="Hands_Fist_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="672" + group="1" + name="Hands_Typing" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="766" + group="1" + name="Hands_Salute_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="791" + group="1" + name="Hands_Peace_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="792" + group="1" + name="Hands_Spread_R" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1200" + group="1" + sex="female" + name="Breast_Physics_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-3" + value_max="3"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.0 -0.01"/> + </param_morph> + </param> + + <param + id="1201" + group="1" + sex="female" + name="Breast_Physics_InOut_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1.25" + value_max="1.25"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 -0.026 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.026 -0.0"/> + </param_morph> + </param> + + <param + id="1204" + group="1" + name="Belly_Physics_Torso_UpDown_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BELLY" + scale="0.0 0.0 0.0" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1207" + group="1" + name="Breast_Physics_LeftRight_Driven" + wearable="physics" + edit_group="driven" + value_default="0" + value_min="-2" + value_max="2"> + <param_morph> + <volume_morph + name="LEFT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + <volume_morph + name="RIGHT_PEC" + scale="0.0 0.0 0.0" + pos="0.0 0.03 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="upperBodyMesh" + lod="1" + file_name="avatar_upper_body_1.llm" + min_pixel_width="160" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="2" + file_name="avatar_upper_body_2.llm" + min_pixel_width="80" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="3" + file_name="avatar_upper_body_3.llm" + min_pixel_width="40" + reference="avatar_upper_body.llm"> + </mesh> + + <mesh + type="upperBodyMesh" + lod="4" + file_name="avatar_upper_body_4.llm" + min_pixel_width="0" + reference="avatar_upper_body.llm"> + </mesh> + + <!-- + #upperBodyMesh2 = + #upperBodyMesh3 = + --> + <mesh + type="lowerBodyMesh" + lod="0" + file_name="avatar_lower_body.llm" + min_pixel_width="320"> + <!-- + #begin morph targets + ############# + # tweakable morphs + ############# + --> + <param + id="156" + group="1" + name="Big_Belly_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + + <param + id="151" + group="1" + name="Big_Butt_Legs" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Large" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.0 0.02" + pos="-0.03 0 -0.025"/> + </param_morph> + </param> + + <param + id="794" + group="1" + name="Small_Butt" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + label_min="Regular" + label_max="Small" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="-0.01 0.0 0.0" + pos="0.01 0 0.0"/> + <volume_morph + name="BUTT" + scale="0.0 0.0886 0.0" + pos="0.03 0 0.0"/> + </param_morph> + </param> + + <param + id="152" + group="1" + name="Muscular_Legs" + label="Leg Muscles" + show_simple="true" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="More Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.015 0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="651" + group="1" + name="Scrawny_Legs" + label="Scrawny Leg" + wearable="shape" + edit_group="shape_legs" + label_min="Regular Muscles" + label_max="Less Muscles" + value_min="0" + value_max="1.5" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="-0.03 -0.03 0.0" + pos="0.0 0 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="-0.015 -0.015 0.0" + pos="0.0 0 0.0"/> + </param_morph> + </param> + + <param + id="853" + group="1" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="L_UPPER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="L_LOWER_LEG" + pos="0.0 0.03 0.0"/> + <volume_morph + name="R_UPPER_LEG" + pos="0.0 -0.03 0.0"/> + <volume_morph + name="R_LOWER_LEG" + pos="0.0 -0.03 0.0"/> + </param_morph> + </param> + + <param + id="500" + group="1" + name="Shoe_Heel_Height" + label="Heel Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="501" + group="1" + name="Shoe_Platform_Height" + label="Platform Height" + wearable="shoes" + edit_group="shoes" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="508" + group="0" + name="Shoe_Platform_Width" + label="Platform Width" + wearable="shoes" + edit_group="shoes" + edit_group_order="7" + label_min="Narrow" + label_max="Wide" + value_min="-1" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="509" + group="1" + name="Shoe_Heel_Point" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Heels" + label_max="Pointy Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="510" + group="1" + name="Shoe_Heel_Thick" + label="Heel Shape" + wearable="shoes" + edit_group="shoes" + label_min="default Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="511" + group="1" + name="Shoe_Toe_Point" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Pointy Toe" + value_min="0" + value_max="1" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="512" + group="1" + name="Shoe_Toe_Square" + label="Toe Shape" + wearable="shoes" + edit_group="shoes" + label_min="Default Toe" + label_max="Square Toe" + value_min="0" + value_max="1" + camera_distance="1.5" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="654" + group="0" + name="Shoe_Toe_Thick" + label="Toe Thickness" + wearable="shoes" + edit_group="shoes" + edit_group_order="5" + label_min="Flat Toe" + label_max="Thick Toe" + value_min="0" + value_max="2" + camera_angle="15" + camera_distance="1.5" + camera_elevation="-1"> + <param_morph /> + </param> + + <param + id="515" + group="0" + name="Foot_Size" + label="Foot Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="6" + label_min="Small" + label_max="Big" + value_min="-1" + value_max="3" + camera_angle="45" + camera_distance="1.1" + camera_elevation="-1"> + <param_morph> + <volume_morph + name="L_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + <volume_morph + name="R_FOOT" + scale="0.02 0.01 0.0" + pos="0.01 0 0"/> + </param_morph> + </param> + + <param + id="516" + group="1" + name="Displace_Loose_Lowerbody" + label="Pants Fit" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="625" + group="0" + name="Leg_Pantflair" + label="Cuff Flare" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="3" + clothing_morph="true" + label_min="Tight Cuffs" + label_max="Flared Cuffs" + value_min="0" + value_max="1.5" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="793" + group="1" + name="Leg_Longcuffs" + label="Longcuffs" + wearable="pants" + edit_group="driven" + clothing_morph="true" + value_min="0" + value_max="3" + value_default="0"> + <param_morph /> + </param> + + <param + id="638" + group="0" + name="Low_Crotch" + label="Pants Crotch" + wearable="pants" + clothing_morph="true" + edit_group="pants" + edit_group_order="4" + label_min="High and Tight" + label_max="Low and Loose" + value_min="0" + value_max="1.3" + camera_distance="1.2" + camera_angle="-20" + camera_elevation="-.3"> + <param_morph /> + </param> + + <param + id="635" + group="1" + name="Fat_Legs" + label="Fat Torso" + wearable="shape" + edit_group="shape_body" + label_min="skinny" + label_max="fat" + value_min="0" + value_max="1"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.03 0.06 0.0"/> + <volume_morph + name="R_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 -0.02 0.0"/> + <volume_morph + name="R_LOWER_LEG" + scale="0.01 0.01 0.0"/> + <volume_morph + name="L_UPPER_LEG" + scale="0.02 0.02 0.0" + pos="0.0 0.02 0.0"/> + <volume_morph + name="L_LOWER_LEG" + scale="0.01 0.01 0.0"/> + </param_morph> + </param> + + <param + id="854" + group="1" + name="Saddlebags" + wearable="shape" + edit_group="driven" + value_min="-.5" + value_max="3"> + <param_morph> + <volume_morph + name="PELVIS" + scale="0.0 0.025 0.0"/> + </param_morph> + + </param> + + <param + id="879" + group="0" + sex="male" + name="Male_Package" + label="Package" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4.6" + label_min="Coin Purse" + label_max="Duffle Bag" + value_default="0" + value_min="-.5" + value_max="2" + camera_angle="60" + camera_distance=".6"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="153" + group="1" + name="Male_Legs" + wearable="shape" + edit_group="driven" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1202" + group="1" + name="Belly_Physics_Legs_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + + <param + id="1205" + group="1" + name="Butt_Physics_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.0 0.05"/> + </param_morph> + </param> + + <param + id="1206" + group="1" + name="Butt_Physics_LeftRight_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph> + <volume_morph + name="BUTT" + pos="0.0 0.05 0.0"/> + </param_morph> + </param> + + <!-- + #end morph targets + --> + + </mesh> + + <mesh + type="lowerBodyMesh" + lod="1" + file_name="avatar_lower_body_1.llm" + min_pixel_width="160" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="2" + file_name="avatar_lower_body_2.llm" + min_pixel_width="80" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="3" + file_name="avatar_lower_body_3.llm" + min_pixel_width="40" + reference="avatar_lower_body.llm"> + </mesh> + + <mesh + type="lowerBodyMesh" + lod="4" + file_name="avatar_lower_body_4.llm" + min_pixel_width="0" + reference="avatar_lower_body.llm"> + </mesh> + + <!-- + #lowerBodyMesh2 = + #lowerBodyMesh3 = + --> + <!-- + #eyeLidLeftMesh = + --> + <mesh + type="eyeBallLeftMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="679" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="687" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallLeftMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="694" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="695" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <!-- + #eyeLidRightMesh = + --> + <mesh + type="eyeBallRightMesh" + lod="0" + file_name="avatar_eye.llm" + min_pixel_width="320"> + <!-- begin morph_params --> + <param + id="680" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="688" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="eyeBallRightMesh" + lod="1" + file_name="avatar_eye_1.llm" + min_pixel_width="80"> + <!-- begin morph_params --> + <param + id="681" + group="1" + name="Eyeball_Size" + label="Eyeball Size" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".10"> + <param_morph /> + </param> + + <param + id="691" + group="1" + name="Eyeball_Size" + label="Big Eyeball" + wearable="shape" + edit_group="shape_eyes" + label_min="small eye" + label_max="big eye" + value_min="-.25" + value_max=".25"> + <param_morph /> + </param> + </mesh> + + <mesh + type="skirtMesh" + lod="0" + file_name="avatar_skirt.llm" + min_pixel_width="320"> + <param + id="845" + group="1" + name="skirt_poofy" + label="poofy skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="less poofy" + label_max="more poofy" + value_min="0" + value_max="1.5"> + <param_morph /> + </param> + + <param + id="846" + group="1" + name="skirt_loose" + label="loose skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="866" + group="1" + name="skirt_tight" + label="tight skirt" + clothing_morph="true" + wearable="skirt" + edit_group="skirt" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="867" + group="1" + name="skirt_smallbutt" + label="tight skirt" + clothing_morph="false" + wearable="skirt" + edit_group="skirt" + cross_wearable="true" + label_min="form fitting" + label_max="loose" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="848" + group="0" + name="skirt_bustle" + label="bustle skirt" + clothing_morph="true" + wearable="skirt" + edit_group_order="3" + edit_group="skirt" + label_min="no bustle" + label_max="more bustle" + value_min="0" + value_max="2" + value_default=".2" + camera_angle="100" + camera_distance="1.3" + camera_elevation="-.5"> + <param_morph /> + </param> + + <param + id="847" + group="1" + name="skirt_bowlegs" + label="legs skirt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="-1" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="852" + group="1" + name="skirt_bigbutt" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="bigbutt skirt" + label_min="less" + label_max="more" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="849" + group="1" + name="skirt_belly" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label="big belly skirt" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <param + id="850" + group="1" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + name="skirt_saddlebags" + value_min="-.5" + value_max="3"> + <param_morph /> + </param> + + <param + id="851" + group="1" + name="skirt_chubby" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="0" + value_max="1" + value_default="0"> + <param_morph /> + </param> + + <param + id="856" + group="1" + name="skirt_lovehandles" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + label_min="less" + label_max="more" + value_min="-1" + value_max="2" + value_default="0"> + <param_morph /> + </param> + + <!-- + ############# + # other morphs (not user controlled) + ############# + --> + <param + id="857" + group="1" + name="skirt_male" + wearable="skirt" + edit_group="driven" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_morph /> + </param> + + <!-- + ############# + # physics morphs (not user controlled) + ############# + --> + <param + id="1203" + group="1" + name="Belly_Physics_Skirt_UpDown_Driven" + wearable="physics" + cross_wearable="true" + edit_group="driven" + value_default="0" + value_min="-1" + value_max="1"> + <param_morph /> + </param> + + </mesh> + + <mesh + type="skirtMesh" + lod="1" + file_name="avatar_skirt_1.llm" + min_pixel_width="160" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="2" + file_name="avatar_skirt_2.llm" + min_pixel_width="80" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="3" + file_name="avatar_skirt_3.llm" + min_pixel_width="40" + reference="avatar_skirt.llm"> + </mesh> + + <mesh + type="skirtMesh" + lod="4" + file_name="avatar_skirt_4.llm" + min_pixel_width="0" + reference="avatar_skirt.llm"> + </mesh> + + <!-- =========================================================== --> + <global_color + name="skin_color"> + <param + id="111" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="1" + name="Pigment" + show_simple="true" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + value_default=".5"> + <param_color> + <value + color="252, 215, 200, 255" /> + + <value + color="240, 177, 112, 255" /> + + <value + color="90, 40, 16, 255" /> + + <value + color="29, 9, 6, 255" /> + </param_color> + </param> + + <param + id="110" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="2" + name="Red Skin" + label="Ruddiness" + label_min="Pale" + label_max="Ruddy" + value_min="0" + value_max="0.1"> + <param_color + operation="blend"> + <value + color="218, 41, 37, 255" /> + </param_color> + </param> + + <param + id="108" + group="0" + wearable="skin" + edit_group="skin_color" + edit_group_order="3" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="hair_color"> + <param + id="114" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="3" + name="Blonde Hair" + show_simple="true" + label_min="Black" + label_max="Blonde" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="22, 6, 6, 255" /> + + <value + color="29, 9, 6, 255" /> + + <value + color="45, 21, 11, 255" /> + + <value + color="78, 39, 11, 255" /> + + <value + color="90, 53, 16, 255" /> + + <value + color="136, 92, 21, 255" /> + + <value + color="150, 106, 33, 255" /> + + <value + color="198, 156, 74, 255" /> + + <value + color="233, 192, 103, 255" /> + + <value + color="238, 205, 136, 255" /> + </param_color> + </param> + + <param + id="113" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="4" + name="Red Hair" + show_simple="true" + label_min="No Red" + label_max="Very Red" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="118, 47, 19, 255" /> + </param_color> + </param> + + <param + id="115" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="1" + name="White Hair" + show_simple="true" + label_min="No White" + label_max="All White" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="112" + group="0" + wearable="hair" + edit_group="hair_color" + edit_group_order="2" + name="Rainbow Color" + show_simple="true" + label_min="None" + label_max="Wild" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".5"> + <param_color> + <value + color=" 0, 0, 0, 255" /> + + <value + color="255, 0, 255, 255" /> + + <value + color="255, 0, 0, 255" /> + + <value + color="255, 255, 0, 255" /> + + <value + color=" 0, 255, 0, 255" /> + + <value + color=" 0, 255, 255, 255" /> + + <value + color=" 0, 0, 255, 255" /> + + <value + color="255, 0, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <global_color + name="eye_color"> + <param + id="99" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="1" + name="Eye Color" + show_simple="true" + label_min="Natural" + label_max="Unnatural" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <!-- default to natural brown eyes--> + <param_color> + <value + color="50, 25, 5, 255" /> + + <!-- natural dark brown eyes--> + <value + color="109, 55, 15, 255" /> + + <!-- natural brown eyes--> + <value + color="150, 93, 49, 255" /> + + <!-- natural light brown eyes--> + <value + color="152, 118, 25, 255" /> + + <!--natural hazel eyes--> + <value + color="95, 179, 107, 255" /> + + <!--natural green eyes--> + <value + color="87, 192, 191, 255" /> + + <!--natural aqua eyes--> + <value + color="95, 172, 179, 255" /> + + <!--natural blue eyes--> + <value + color="128, 128, 128, 255" /> + + <!--natural grey eyes--> + <value + color="0, 0, 0, 255" /> + + <!--black eyes--> + <value + color="255, 255, 0, 255" /> + + <!--bright yellow eyes--> + <value + color=" 0, 255, 0, 255" /> + + <!-- bright green eyes--> + <value + color=" 0, 255, 255, 255" /> + + <!-- bright cyan eyes--> + <value + color=" 0, 0, 255, 255" /> + + <!--bright blue eyes--> + <value + color="255, 0, 255, 255" /> + + <!-- bright violet eyes--> + <value + color="255, 0, 0, 255" /> + + <!--bright red eyes--> + </param_color> + </param> + + <param + id="98" + group="0" + wearable="eyes" + edit_group="eyes" + edit_group_order="2" + name="Eye Lightness" + show_simple="true" + label_min="Darker" + label_max="Lighter" + value_min="0" + value_max="1" + camera_elevation=".1" + camera_distance=".3"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + </global_color> + + <!-- =========================================================== --> + <layer_set + body_region="hair" + width="512" + height="512" + clear_alpha="false"> + <layer + name="base" + global_color="hair_color" + write_all_channels="true"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair texture alpha layer" + visibility_mask="TRUE"> + <texture + local_texture="hair_grain" /> + </layer> + + <layer + name="hair alpha" + visibility_mask="TRUE"> + <texture + local_texture="hair_alpha" /> + </layer> + + </layer_set> + <!-- =========================================================== --> + + <layer_set + body_region="head" + width="512" + height="512"> + <layer + name="head bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + + <layer + name="head bump definition" + render_pass="bump"> + + + <texture + tga_file="bump_head_base.tga" + file_is_mask="FALSE"/> + + <param + id="873" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="12" + name="Bump base" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="head_skingrain.tga" /> + </layer> + + <layer + name="headcolor"> + <texture + tga_file="head_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="head_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="158" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="head_highlights_alpha.tga" +file_is_mask="TRUE" /> + + + <param + id="159" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value +color="255, 255, 255, 0" /> + + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + <layer + name="rosyface"> + <texture + tga_file="rosyface_alpha.tga" + file_is_mask="true" /> + + <param + id="116" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="4" + name="Rosy Complexion" + label_min="Less Rosy" + label_max="More Rosy" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07"> + <param_color> + <value + color="198, 71, 71, 0" /> + + <value + color="198, 71, 71, 255" /> + </param_color> + </param> + </layer> + + <layer + name="lips"> + <texture + tga_file="lips_mask.tga" + file_is_mask="true" /> + + <param + id="117" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="5" + name="Lip Pinkness" + label_min="Darker" + label_max="Pinker" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_color> + <value + color="220, 115, 115, 0" /> + + <value + color="220, 115, 115, 128" /> + </param_color> + </param> + </layer> + + <layer + name="wrinkles_shading" + render_pass="bump" + fixed_color="0,0,0,100"> + <param + id="118" + group="1" + wearable="skin" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bump_face_wrinkles.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer> + + <!--<layer + name="wrinkles_highlights" + fixed_color="255,255,255,64"> + <param + id="128" + group="1" + name="Wrinkles" + value_min="0" + value_max="1"> + <param_alpha + tga_file="head_wrinkles_highlights_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + </layer>--> + <layer + name="freckles" + fixed_color="120,47,20,128"> + <param + id="165" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="2" + name="Freckles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" +camera_elevation=".07"> + <param_alpha + tga_file="freckles_alpha.tga" + skip_if_zero="true" +domain="0.5" /> + </param> + </layer> + <layer +name="eyebrowsbump" +render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1000" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Size Bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1002" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density Bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="eyebrows" + global_color="hair_color"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1001" + group="1" + wearable="hair" + edit_group="hair_eyebrows" + name="Eyebrow Size" + show_simple="true" + value_min="0" + value_max="1" + value_default="0.5"> + <param_alpha + tga_file="eyebrows_alpha.tga" + domain="0.1" /> + </param> + + <param + id="1003" + group="1" + wearable="hair" + edit_group="driven" + name="Eyebrow Density" + value_min="0" + value_max="1"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="lipstick"> + <param + id="700" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="2" + name="Lipstick Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + value_default=".25" + camera_distance=".25"> + <param_color> + <value + color="245,161,177,200" /> + + <value + color="216,37,67,200" /> + + <value + color="178,48,76,200" /> + + <value + color="68,0,11,200" /> + + <value + color="252,207,184,200" /> + + <value + color="241,136,106,200" /> + + <value + color="208,110,85,200" /> + + <value + color="106,28,18,200" /> + + <value + color="58,26,49,200" /> + + <value + color="14,14,14,200" /> + </param_color> + </param> + + <param + id="701" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="1" + name="Lipstick" + label_min="No Lipstick" + label_max="More Lipstick" + value_min="0" + value_max=".9" + value_default="0.0" + camera_distance=".25"> + <param_alpha + tga_file="lipstick_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="lipgloss" + fixed_color="255,255,255,190"> + <param + id="702" + name="Lipgloss" + label_min="No Lipgloss" + label_max="Glossy" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="3" + group="0" + value_min="0" + value_max="1" + camera_distance=".25"> + <param_alpha + tga_file="lipgloss_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="blush"> + <param + id="704" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="4" + name="Blush" + label_min="No Blush" + label_max="More Blush" + value_min="0" + value_max=".9" + value_default="0" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_alpha + tga_file="blush_alpha.tga" + skip_if_zero="true" + domain="0.3" /> + </param> + + <param + id="705" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="5" + name="Blush Color" + label_min="Pink" + label_max="Orange" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color> + <value + color="253,162,193,200" /> + + <value + color="247,131,152,200" /> + + <value + color="213,122,140,200" /> + + <value + color="253,152,144,200" /> + + <value + color="236,138,103,200" /> + + <value + color="195,128,122,200" /> + + <value + color="148,103,100,200" /> + + <value + color="168,95,62,200" /> + </param_color> + </param> + + <param + id="711" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="6" + name="Blush Opacity" + label_min="Clear" + label_max="Opaque" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".07" + camera_angle="20"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + </layer> + + <layer + name="Outer Eye Shadow"> + <param + id="708" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="11" + name="Out Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="706" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="12" + name="Out Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".6" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="707" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="10" + name="Outer Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_outer_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Inner Eye Shadow"> + <param + id="712" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="8" + name="In Shdw Color" + label_min="Light" + label_max="Dark" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="252,247,246,255" /> + + <value + color="255,206,206,255" /> + + <value + color="233,135,149,255" /> + + <value + color="220,168,192,255" /> + + <value + color="228,203,232,255" /> + + <value + color="255,234,195,255" /> + + <value + color="230,157,101,255" /> + + <value + color="255,147,86,255" /> + + <value + color="228,110,89,255" /> + + <value + color="228,150,120,255" /> + + <value + color="223,227,213,255" /> + + <value + color="96,116,87,255" /> + + <value + color="88,143,107,255" /> + + <value + color="194,231,223,255" /> + + <value + color="207,227,234,255" /> + + <value + color="41,171,212,255" /> + + <value + color="180,137,130,255" /> + + <value + color="173,125,105,255" /> + + <value + color="144,95,98,255" /> + + <value + color="115,70,77,255" /> + + <value + color="155,78,47,255" /> + + <value + color="239,239,239,255" /> + + <value + color="194,194,194,255" /> + + <value + color="120,120,120,255" /> + + <value + color="10,10,10,255" /> + </param_color> + </param> + + <param + id="713" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="9" + name="In Shdw Opacity" + label_min="Clear" + label_max="Opaque" + value_min=".2" + value_max="1" + value_default=".7" + camera_distance=".3" + camera_elevation=".14"> + <param_color + operation="multiply"> + <value + color="255,255,255,0" /> + + <value + color="255,255,255,255" /> + </param_color> + </param> + + <param + id="709" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="7" + name="Inner Shadow" + label_min="No Eyeshadow" + label_max="More Eyeshadow" + value_min="0" + value_max="1" + value_default="0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeshadow_inner_alpha.tga" + skip_if_zero="true" + domain="0.2" /> + </param> + </layer> + + <layer + name="eyeliner" + fixed_color="0,0,0,200"> + <param + id="703" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="13" + name="Eyeliner" + label_min="No Eyeliner" + label_max="Full Eyeliner" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance=".3" + camera_elevation=".14"> + <param_alpha + tga_file="eyeliner_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="714" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="14" + name="Eyeliner Color" + label_min="Dark Green" + label_max="Black" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".14"> + <param_color> + <value + color="24,98,40,250" /> + + <!-- dark green --> + <value + color="9,100,127,250" /> + + <!-- lt.aqua blue --> + <value + color="61,93,134,250" /> + + <!-- aqua --> + <value + color="70,29,27,250" /> + + <!-- dark brown --> + <value + color="115,75,65,250" /> + + <!-- lt. brown blue --> + <value + color="100,100,100,250" /> + + <!-- grey --> + <value + color="91,80,74,250" /> + + <!-- grey/brown --> + <value + color="112,42,76,250" /> + + <!-- plum --> + <value + color="14,14,14,250" /> + + <!-- black --> + </param_color> + </param> + </layer> + + <layer + name="facialhair bump" + render_pass="bump"> + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1004" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1006" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1008" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1010" + sex="male" + group="1" + edit_group="driven" + wearable="hair" + name="Chin Curtains bump" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="1012" + group="1" + sex="male" + wearable="hair" + edit_group="driven" + name="5 O'Clock Shadow bump" + value_min="0" + value_max="1"> + <param_color> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,0" /> + </param_color> + </param> + </layer> + + <layer + name="facialhair" + global_color="hair_color"> + + <texture + tga_file="head_hair.tga" + file_is_mask="false" /> + + <param + id="1005" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Sideburns" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_sideburns_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1007" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Moustache" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_moustache_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="1009" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Soulpatch" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_soulpatch_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="1011" + sex="male" + group="1" + wearable="hair" + edit_group="driven" + name="Chin Curtains" + value_min="0" + value_max="1"> + <param_alpha + tga_file="facehair_chincurtains_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="751" + group="1" + wearable="hair" + sex="male" + edit_group="hair_facial" + name="5 O'Clock Shadow" + label_min="Dense hair" + label_max="Shadow hair" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_color + operation="multiply"> + <value + color="255,255,255,255" /> + + <value + color="255,255,255,30" /> + </param_color> + </param> + </layer> + + <layer + name="head_bodypaint"> + <texture + local_texture="head_bodypaint" /> + </layer> + <layer + name="eyelash alpha" + visibility_mask="TRUE"> + <texture + tga_file="head_alpha.tga" + file_is_mask="TRUE" /> + </layer> + <layer + name="head alpha" + visibility_mask="TRUE"> + <texture + local_texture="head_alpha" /> + </layer> + <layer + name="head_tattoo"> + <texture + local_texture="head_tattoo" /> + <param + id="1062" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1063" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1064" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_head_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="upper_body" + width="512" + height="512"> + <layer + name="base_upperbody bump" + render_pass="bump" + fixed_color="128,128,128,255"> + </layer> + <layer + name="upperbody bump definition" + render_pass="bump"> + <texture + tga_file="bump_upperbody_base.tga" + file_is_mask="FALSE"/> + + <param + id="874" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="nipples"> + <texture + tga_file="upperbody_color.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="upperbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="125" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="upperbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="126" + group="1" + wearable="skin" + name="Shading" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="upper_bodypaint"> + <texture + local_texture="upper_bodypaint" /> + </layer> + + <layer + name="freckles upper" + fixed_color="120,47,20,128"> + <param + id="776" + group="1" + name="freckles upper" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="upperbodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="upper_tattoo"> + <texture + local_texture="upper_tattoo" /> + + <param + id="1065" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1066" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1067" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_upper_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + + <layer + name="upper_undershirt bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_undershirt" + local_texture_alpha_only="true" /> + + <param + id="1043" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length bump" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1045" + group="1" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1047" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1049" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back bump" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_undershirt"> + <texture + local_texture="upper_undershirt" /> + + <param + id="821" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="822" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="823" + group="0" + wearable="undershirt" + edit_group="colorpicker" + name="undershirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1042" + group="1" + wearable="undershirt" + edit_group="driven" + name="Sleeve Length" + value_min=".01" + value_max="1" + value_default=".4"> + <param_alpha + tga_file="shirt_sleeve_alpha.tga" + multiply_blend="false" + domain="0.01" /> + </param> + + <param + id="1044" + group="1" + wearable="undershirt" + edit_group="driven" + name="Bottom" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_bottom_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1046" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Front" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + + <param + id="1048" + group="1" + wearable="undershirt" + edit_group="driven" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="shirt_collar_back_alpha.tga" + multiply_blend="true" + domain="0.05" /> + </param> + </layer> + + <layer + name="Nail Polish"> + <param + id="710" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="15" + name="Nail Polish" + label_min="No Polish" + label_max="Painted Nails" + value_min="0" + value_max="1" + value_default="0.0" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_alpha + tga_file="nailpolish_alpha.tga" + skip_if_zero="true" + domain="0.1" /> + </param> + + <param + id="715" + group="0" + wearable="skin" + edit_group="skin_makeup" + edit_group_order="16" + name="Nail Polish Color" + label_min="Pink" + label_max="Black" + value_min="0" + value_max="1" + camera_distance="1.6" + camera_elevation="-.4" + camera_angle="70"> + <param_color> + <value + color="255,187,200,255" /> + + <value + color="194,102,127,255" /> + + <value + color="227,34,99,255" /> + + <value + color="168,41,60,255" /> + + <value + color="97,28,59,255" /> + + <value + color="234,115,93,255" /> + + <value + color="142,58,47,255" /> + + <value + color="114,30,46,255" /> + + <value + color="14,14,14,255" /> + </param_color> + </param> + </layer> + + <layer + name="upper_gloves bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_gloves" + local_texture_alpha_only="true" /> + + <param + id="1059" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length bump" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1061" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers bump" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_gloves"> + <texture + local_texture="upper_gloves" /> + + <param + id="827" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="829" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="830" + group="0" + wearable="gloves" + edit_group="colorpicker" + name="gloves_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1058" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Length" + value_min=".01" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="glove_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1060" + group="1" + wearable="gloves" + edit_group="driven" + name="Glove Fingers" + value_min=".01" + value_max="1" + value_default="1"> + <param_alpha + tga_file="gloves_fingers_alpha.tga" + multiply_blend="true" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_clothes_shadow"> + <texture + local_texture="upper_shirt" /> + + <param + id="899" + group="1" + edit_group="driven" + wearable="shirt" + name="Upper Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="900" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Shadow" + value_min="0.02" + value_max=".87" + value_default="0.02"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + + <param + id="901" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Shadow Bottom" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + skip_if_zero="true" + domain="0.05" /> + </param> + + <param + id="902" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + + <param + id="903" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Shadow Height" + value_min="0.02" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + skip_if_zero="true" + domain="0.02" /> + </param> + </layer> + + <layer + name="upper_shirt base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="1029" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1030" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1031" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1032" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_shirt" + local_texture_alpha_only="true" /> + + <param + id="868" + group="3" + wearable="shirt" + edit_group="shirt" + edit_group_order="8" + name="Shirt Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1013" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1014" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1015" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1016" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_clothes"> + <texture + local_texture="upper_shirt" /> + + <param + id="803" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="804" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="805" + group="0" + wearable="shirt" + edit_group="colorpicker" + name="shirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="600" + group="1" + wearable="shirt" + edit_group="driven" + name="Sleeve Length Cloth" + value_min="0" + value_max="0.85" + value_default=".7"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="601" + group="1" + wearable="shirt" + edit_group="driven" + name="Shirt Bottom Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_bottom_alpha.tga" + domain="0.05" /> + </param> + + <param + id="602" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Front Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="778" + group="1" + wearable="shirt" + edit_group="driven" + name="Collar Back Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="upper_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + <param + id="1039" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1040" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1041" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1037" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1038" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_shirt_wrinkles.tga" /> + + <texture + local_texture="upper_jacket" + local_texture_alpha_only="true" /> + + + <param + id="875" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1019" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="1" + name="Jacket Sleeve Length bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1021" + group="1" + wearable="jacket" + edit_group="driven" + name="Jacket Collar Front bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1023" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="Jacket Collar Back bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1025" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1026" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open upper bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper_jacket"> + <texture + local_texture="upper_jacket" /> + + <param + id="831" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="832" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="833" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="upper_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1020" + group="1" + edit_group="driven" + wearable="jacket" + name="jacket Sleeve Length" value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="shirt_sleeve_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1022" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket Collar Front" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1024" + group="1" + wearable="jacket" + edit_group="driven" + edit_group_order="3.5" + name="jacket Collar Back" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="shirt_collar_back_alpha.tga" + domain="0.05" /> + </param> + + <param + id="620" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length upper" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_length_upper_alpha.tga" + domain="0.01" /> + </param> + + <param + id="622" + group="1" + wearable="jacket" + edit_group="jacket" + name="open upper" + label_min="closed" + label_max="open" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_upper_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="upper alpha" + visibility_mask="TRUE"> + <texture + local_texture="upper_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="lower_body" + width="512" + height="512"> + <layer + name="lower body bump base" + fixed_color = "128,128,128,255" + render_pass="bump"> + </layer> + <layer + name="base_lowerbody bump" + render_pass="bump"> + <texture + tga_file="bump_lowerbody_base.tga" + file_is_mask="FALSE" /> + + <param + id="878" + group="1" + wearable="skin" + edit_group="driven" + edit_group_order="20" + name="Bump upperdef" + value_min="0" + value_max="1"> + <param_alpha + domain="0" /> + </param> + </layer> + + <layer + name="base" + global_color="skin_color"> + <texture + tga_file="body_skingrain.tga" /> + </layer> + + <layer + name="shadow"> + <texture + tga_file="lowerbody_shading_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="160" + group="1" + name="Shading" + wearable="pants" + cross_wearable="true" + value_min="0" + value_max="1"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 128" /> + </param_color> + </param> + </layer> + + <layer + name="highlight"> + <texture + tga_file="lowerbody_highlights_alpha.tga" + file_is_mask="TRUE" /> + + <param + id="161" + group="1" + name="Shading" + wearable="skin" + value_min="0" + value_max="1"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 64" /> + </param_color> + </param> + </layer> + + <layer + name="toenails"> + <texture + tga_file="lowerbody_color.tga" /> + </layer> + + <layer + name="lower_bodypaint"> + <texture + local_texture="lower_bodypaint" /> + </layer> + + <layer + name="freckles lower" + fixed_color="120,47,20,128"> + <param + id="777" + group="1" + name="freckles lower" + wearable="skin" + value_min="0" + value_max="1"> + <param_alpha + tga_file="bodyfreckles_alpha.tga" + skip_if_zero="true" + domain="0.6" /> + </param> + </layer> + + <layer + name="lower_tattoo"> + <texture + local_texture="lower_tattoo" /> + + <param + id="1068" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="1069" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="1070" + group="1" + edit_group="colorpicker_driven" + wearable="tattoo" + name="tattoo_lower_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + </layer> + + <layer + name="lower_underpants bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_underpants" + local_texture_alpha_only="true" /> + + <param + id="1055" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1057" + group="1" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_underpants"> + <texture + local_texture="lower_underpants" /> + + <param + id="824" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="825" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="826" + group="0" + wearable="underpants" + edit_group="colorpicker" + name="underpants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1054" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Length" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1056" + group="1" + wearable="underpants" + edit_group="driven" + name="Pants Waist" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + </layer> + + <layer + name="lower_socks bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_socks" + local_texture_alpha_only="true" /> + + <param + id="1051" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_socks"> + <texture + local_texture="lower_socks" /> + + <param + id="818" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="819" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="820" + group="0" + wearable="socks" + edit_group="colorpicker" + name="socks_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1050" + group="1" + wearable="socks" + edit_group="driven" + name="Socks Length bump" + value_min="0" + value_max="1" + value_default="0.35"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_shoes" + local_texture_alpha_only="true" /> + + <param + id="1053" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height bump" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_shoes"> + <texture + local_texture="lower_shoes" /> + + <param + id="812" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="813" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="817" + group="0" + wearable="shoes" + edit_group="colorpicker" + name="shoes_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="1052" + group="1" + wearable="shoes" + edit_group="driven" + name="Shoe Height" + value_min="0" + value_max="1" + value_default="0.1"> + <param_alpha + tga_file="shoe_height_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_clothes_shadow"> + <texture + local_texture="lower_pants" /> + + <param + id="913" + group="1" + edit_group="driven" + wearable="pants" + name="Lower Clothes Shading" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="0, 0, 0, 0" /> + + <value + color="0, 0, 0, 80" /> + </param_color> + </param> + + <param + id="914" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + skip_if_zero="true" + domain="0.04" /> + </param> + + <param + id="915" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Shadow" + value_min="0.02" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + skip_if_zero="true" + domain="0.03" /> + </param> + </layer> + + <layer + name="lower_pants base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="1035" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1036" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_pants" + local_texture_alpha_only="true" /> + + <param + id="869" + group="3" + wearable="pants" + edit_group="pants" + edit_group_order="6" + name="Pants Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1017" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="1018" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_pants"> + <texture + local_texture="lower_pants" /> + + <param + id="806" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="807" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="808" + group="0" + wearable="pants" + edit_group="colorpicker" + name="pants_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="614" + group="1" + edit_group="driven" + wearable="pants" + name="Waist Height Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_waist_alpha.tga" + domain="0.05" /> + </param> + + <param + id="615" + group="1" + edit_group="driven" + wearable="pants" + name="Pants Length Cloth" + value_min="0" + value_max="1" + value_default=".8"> + <param_alpha + tga_file="pants_length_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket base bump" + render_pass="bump" + fixed_color="128,128,128,255"> + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + <param + id="1033" + group="1" + wearable="jacket" + edit_group="driven" + cross_wearable="true" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1034" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket bump" + render_pass="bump"> + <texture + tga_file="bump_pants_wrinkles.tga" /> + + <texture + local_texture="lower_jacket" + local_texture_alpha_only="true" /> + + + <param + id="876" + group="1" + wearable="jacket" + name="jacket upper Wrinkles" + value_min="0" + value_max="1" + value_default="0"> + <param_color> + <value + color="255, 255, 255, 0" /> + + <value + color="255, 255, 255, 255" /> + </param_color> + </param> + + <param + id="1027" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket bottom length lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="1028" + group="1" + wearable="jacket" + edit_group="driven" + name="jacket open lower bump" + value_min="0" + value_max="1"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower_jacket"> + <texture + local_texture="lower_jacket" /> + + <param + id="809" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="810" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="811" + group="1" + edit_group="colorpicker_driven" + wearable="jacket" + name="lower_jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + + <param + id="621" + group="1" + wearable="jacket" + edit_group="jacket" + name="bottom length lower" + label_min="hi cut" + label_max="low cut" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="false" + tga_file="jacket_length_lower_alpha.tga" + domain="0.01" /> + </param> + + <param + id="623" + group="1" + wearable="jacket" + edit_group="jacket" + name="open lower" + label_min="open" + label_max="closed" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_alpha + multiply_blend="true" + tga_file="jacket_open_lower_alpha.tga" + domain="0.01" /> + </param> + </layer> + + <layer + name="lower alpha" + visibility_mask="TRUE"> + <texture + local_texture="lower_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="eyes" + width="128" + height="128"> + <layer + name="whites"> + <texture + tga_file="eyewhite.tga" /> + </layer> + + <layer + name="iris" + global_color="eye_color"> + <texture + local_texture="eyes_iris" /> + </layer> + + <layer + name="eyes alpha" + visibility_mask="TRUE"> + <texture + local_texture="eyes_alpha" /> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <layer_set + body_region="skirt" + width="512" + height="512" + clear_alpha="false"> + <layer + name="skirt_fabric" + write_all_channels="true"> + <texture + local_texture="skirt" /> + + <param + id="921" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_red" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="255, 0, 0, 255" /> + </param_color> + </param> + + <param + id="922" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_green" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 255, 0, 255" /> + </param_color> + </param> + + <param + id="923" + group="0" + wearable="skirt" + edit_group="colorpicker" + name="skirt_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_color> + <value + color="0, 0, 0, 255" /> + + <value + color="0, 0, 255, 255" /> + </param_color> + </param> + </layer> + + <layer + name="skirt_fabric_alpha"> + <param + id="858" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="1" + name="Skirt Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_length_alpha.tga" + domain="0" + multiply_blend="true" /> + </param> + + <param + id="859" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="4" + name="Slit Front" + label_min="Open Front" + label_max="Closed Front" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_front_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="860" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="5" + name="Slit Back" + label_min="Open Back" + label_max="Closed Back" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="160"> + <param_alpha + tga_file="skirt_slit_back_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="861" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="6" + name="Slit Left" + label_min="Open Left" + label_max="Closed Left" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="30"> + <param_alpha + tga_file="skirt_slit_left_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + + <param + id="862" + group="0" + wearable="skirt" + edit_group="skirt" + edit_group_order="7" + name="Slit Right" + label_min="Open Right" + label_max="Closed Right" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="-30"> + <param_alpha + tga_file="skirt_slit_right_alpha.tga" + multiply_blend="true" + domain="0" /> + </param> + </layer> + + </layer_set> + + <!-- =========================================================== --> + <driver_parameters> + + <param + id="828" + group="0" + name="Loose Upper Clothing" + label="Shirt Fit" + show_simple="true" + wearable="shirt" + edit_group="shirt" + edit_group_order="4" + label_min="Tight Shirt" + label_max="Loose Shirt" + value_min="0" + value_max="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="628" /> + + <driven + id="899" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="816" + group="0" + name="Loose Lower Clothing" + label="Pants Fit" + show_simple="true" + wearable="pants" + edit_group="pants" + edit_group_order="2.5" + label_min="Tight Pants" + label_max="Loose Pants" + value_min="0" + value_max="1" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="516" /> + + <driven + id="913" + min1="0.1" + max1="0.5" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="814" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="2" + name="Waist Height" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="614" /> + + <driven + id="1017" /> + + <driven + id="1035" /> + + <driven + id="914" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="815" + group="0" + wearable="pants" + edit_group="pants" + edit_group_order="1" + name="Pants Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + simple_percent_min="20" + simple_percent_max="100" + camera_distance="1.8" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="615" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1018" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="1036" + min1="0" + max1=".9" + max2="1" + min2="1" /> + + <driven + id="793" + min1=".9" + max1="1" + max2="1" + min2="1" /> + + <driven + id="915" + min1="0" + max1=".882" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="800" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="1" + name="Sleeve Length" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".89" + simple_percent_min="15" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="600" /> + + <driven + id="1013" /> + + <driven + id="1029" /> + + <driven + id="900" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="801" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="2" + name="Shirt Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="601" /> + + <driven + id="1014" /> + + <driven + id="1030" /> + + <driven + id="901" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="802" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3" + name="Collar Front" + show_simple="true" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + simple_percent_min="40" + simple_percent_max="100" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="602" /> + + <driven + id="1015" /> + + <driven + id="1031" /> + + <driven + id="902" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="781" + group="0" + wearable="shirt" + edit_group="shirt" + edit_group_order="3.1" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".78" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="778" /> + + <driven + id="1016" /> + + <driven + id="1032" /> + + <driven + id="903" + min1="0" + max1=".98" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="150" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="125" /> + + <driven + id="126" /> + + <driven + id="160" /> + + <driven + id="161" /> + + <driven + id="874" /> + + <driven + id="878" /> + + </param_driver> + </param> + + <param + id="775" + group="0" + wearable="skin" + edit_group="skin_bodydetail" + name="Body Freckles" + label_min="Less Freckles" + label_max="More Freckles" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_elevation="-.2"> + <param_driver> + <driven + id="776" /> + + <driven + id="777" /> + </param_driver> + </param> + + <param + id="162" + group="0" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="1" + name="Facial Definition" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <driven + id="158" /> + + <driven + id="159" /> + + <driven + id="873" /> + </param_driver> + </param> + + <param + id="163" + group="3" + wearable="skin" + edit_group="skin_facedetail" + edit_group_order="3" + name="Wrinkles" + label_min="Less" + label_max="More" + value_min="0" + value_max="1" + camera_distance=".3" + camera_elevation=".07" + value_default="0"> + <param_driver> + <!--<driven + id="128" />--> + <driven + id="118" /> + </param_driver> + </param> + + <param + id="505" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3" + name="Lip Thickness" + label_min="Thin Lips" + label_max="Fat Lips" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="26" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="28" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="799" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="3.2" + name="Lip Ratio" + label="Lip Ratio" + show_simple="true" + label_min="More Upper Lip" + label_max="More Lower Lip" + value_min="0" + value_max="1" + value_default=".5" + camera_distance=".3" + camera_elevation=".04" + camera_angle="20"> + <param_driver> + <driven + id="797" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="798" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="155" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="1" + name="Lip Width" + label="Lip Width" + label_min="Narrow Lips" + label_max="Wide Lips" + show_simple="true" + value_min="-0.9" + value_max="1.3" + camera_distance=".3" + camera_elevation=".04" + value_default="0"> + <param_driver> + <driven + id="29" /> + + <driven + id="30" /> + </param_driver> + </param> + + <param + id="196" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="2" + name="Eye Spacing" + label="Eye Spacing" + label_min="Close Set Eyes" + label_max="Far Set Eyes" + show_simple="true" + value_min="-2" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".35" + camera_angle="5"> + <param_driver> + <driven + id="194" /> + + <driven + id="195" /> + </param_driver> + </param> + + <param + id="769" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="4.5" + name="Eye Depth" + label_min="Sunken Eyes" + label_max="Bugged Eyes" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".3" + camera_angle="75"> + <param_driver> + <driven + id="767" /> + + <driven + id="768" /> + </param_driver> + </param> + + <param + id="198" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="2" + name="Heel Height" + label_min="Low Heels" + label_max="High Heels" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".8" + camera_elevation="-1"> + <param_driver> + <driven + id="197" /> + + <driven + id="500" /> + </param_driver> + </param> + + <param + id="513" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="3" + name="Heel Shape" + label_min="Pointy Heels" + label_max="Thick Heels" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="45" + camera_distance="1.5" + camera_elevation="-1"> + <param_driver> + <driven + id="509" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="510" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="514" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="4" + name="Toe Shape" + label_min="Pointy" + label_max="Square" + value_min="0" + value_max="1" + value_default=".5" + camera_angle="5" + camera_distance=".8" + camera_elevation="-.8"> + <param_driver> + <driven + id="511" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="512" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="503" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="6" + name="Platform Height" + label_min="Low Platforms" + label_max="High Platforms" + value_min="0" + value_max="1" + value_default="0" + camera_angle="45" + camera_distance=".5" + camera_elevation="-1"> + <param_driver> + <driven + id="501" /> + + <driven + id="502" /> + </param_driver> + </param> + + <param + id="193" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="3" + name="Head Shape" + label="Head Shape" + label_min="More Square" + label_max="More Round" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="188" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="642" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="189" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="643" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="157" + group="0" + wearable="shape" + edit_group="shape_torso" + edit_group_order="13" + name="Belly Size" + label_min="Small" + label_max="Big" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="104" /> + + <driven + id="156" /> + + <driven + id="849" /> + </param_driver> + </param> + + <param + id="637" + group="0" + wearable="shape" + edit_group="shape_body" + edit_group_order="3" + name="Body Fat" + label_min="Less Body Fat" + label_max="More Body Fat" + value_min="0" + value_max="1" + value_default="0" + camera_distance="1.8"> + <param_driver> + <driven + id="633" /> + + <driven + id="634" /> + + <driven + id="635" /> + + <driven + id="851" /> + </param_driver> + </param> + + <param + id="130" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="8" + name="Front Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".45" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="144" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="145" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="131" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="9" + name="Side Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="146" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="147" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="132" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="10" + name="Back Fringe" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".39" + camera_elevation=".1" + camera_distance=".5" + camera_angle="160"> + <param_driver> + <driven + id="148" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="149" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="133" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="2" + name="Hair Front" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".25" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="172" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="171" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="134" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="3" + name="Hair Sides" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="174" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="173" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="135" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="4" + name="Hair Back" + show_simple="true" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation="-.1" + camera_distance=".8" + camera_angle="160"> + <param_driver> + <driven + id="176" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="175" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="136" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="11.5" + name="Hair Sweep" + label_min="Sweep Forward" + label_max="Sweep Back" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="90"> + <param_driver> + <driven + id="179" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="178" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="137" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="16" + name="Hair Tilt" + label_min="Left" + label_max="Right" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="0"> + <param_driver> + <driven + id="190" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="191" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="608" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="2" + name="bottom length lower" + label="Jacket Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="620" /> + + <driven + id="1025" /> + + <driven + id="1037" /> + + <driven + id="621" /> + + <driven + id="1027" /> + + <driven + id="1033" /> + </param_driver> + </param> + + <param + id="609" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="4" + name="open jacket" + label="Open Front" + label_min="Open" + label_max="Closed" + value_min="0" + value_max="1" + value_default=".2" + camera_distance="1.4" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="622" /> + + <driven + id="1026" /> + + <driven + id="1038" /> + + <driven + id="623" /> + + <driven + id="1028" /> + + <driven + id="1034" /> + </param_driver> + </param> + + <param + id="105" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="6" + name="Breast Size" + label_min="Small" + label_max="Large" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".3" + camera_distance="1.2" + camera_angle="30"> + <param_driver> + <driven + id="843" + min1="0" + max1="0" + max2="0" + min2=".01" /> + + <driven + id="627" + min1="0" + max1="0.01" + max2="0.01" + min2=".5" /> + + <driven + id="626" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="629" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="6" + name="Forehead Angle" + label_min="More Vertical" + label_max="More Sloped" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="70"> + <param_driver> + <driven + id="630" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="644" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="631" + min1=".5" + max1="1" + max2="1" + min2="1" /> + + <driven + id="645" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="646" + group="0" + name="Egg_Head" + label="Egg Head" + wearable="shape" + edit_group="shape_head" + edit_group_order="4" + label_min="Chin Heavy" + label_max="Forehead Heavy" + show_simple="true" + value_min="-1.3" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="640" /> + + <driven + id="186" /> + </param_driver> + </param> + + <param + id="647" + group="0" + name="Squash_Stretch_Head" + label="Head Stretch" + wearable="shape" + edit_group="shape_head" + edit_group_order="2" + show_simple="true" + label_min="Squash Head" + label_max="Stretch Head" + value_min="-0.5" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="641" /> + + <driven + id="187" /> + </param_driver> + </param> + + <param + id="649" + group="0" + sex="female" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1.1" + name="Torso Muscles" + label="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1" + camera_angle="15"> + <param_driver> + <driven + id="648" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="678" + group="0" + sex="male" + wearable="shape" + edit_group="shape_torso" + edit_group_order="1" + name="Torso Muscles" + show_simple="true" + label_min="Less Muscular" + label_max="More Muscular" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance="1.2" + camera_angle="0"> + <param_driver> + <driven + id="677" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="106" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="652" + group="0" + wearable="shape" + edit_group="shape_legs" + edit_group_order="1" + name="Leg Muscles" + label_min="Less Muscular" + label_max="More Muscular" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_distance="1.3" + camera_elevation="-.5" + camera_angle="15"> + <param_driver> + <driven + id="651" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="152" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="80" + name="male" + group="0" + edit_group="dummy" + wearable="shape" + value_min="0" + value_max="1"> + <param_driver> + <driven + id="32" /> + + <driven + id="153" /> + + <driven + id="40" /> + + <driven + id="100" /> + + <driven + id="857" /> + </param_driver> + </param> + + <param + id="659" + group="0" + wearable="shape" + edit_group="shape_mouth" + edit_group_order="5" + name="Mouth Corner" + label_min="Corner Down" + label_max="Corner Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="658" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="657" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="662" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="5" + name="Face Shear" + label_min="Shear Right Up" + label_max="Shear Left Up" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="660" /> + + <driven + id="661" /> + + <driven + id="774" /> + </param_driver> + </param> + + <param + id="773" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="4.5" + name="Head Length" + label_min="Flat Head" + label_max="Long Head" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5" + camera_angle="75"> + <param_driver> + <driven + id="770" /> + + <driven + id="771" /> + + <driven + id="772" /> + </param_driver> + </param> + + <param + id="682" + group="0" + wearable="shape" + edit_group="shape_head" + edit_group_order="1" + name="Head Size" + label="Head Size" + label_min="Small Head" + label_max="Big Head" + show_simple="true" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation=".1" + camera_distance=".5"> + <param_driver> + <driven + id="679" /> + + <driven + id="694" /> + + <driven + id="680" /> + + <driven + id="681" /> + + <driven + id="655" /> + </param_driver> + </param> + + <param + id="690" + group="0" + wearable="shape" + edit_group="shape_eyes" + edit_group_order="1" + name="Eye Size" + label="Eye Size" + label_min="Beady Eyes" + label_max="Anime Eyes" + value_min="0" + value_max="1" + value_default=".5" + show_simple="true" + camera_elevation=".1" + camera_distance=".35"> + <param_driver> + <driven + id="686" /> + + <driven + id="687" /> + + <driven + id="695" /> + + <driven + id="688" /> + + <driven + id="691" /> + + <driven + id="689" /> + </param_driver> + </param> + + <param + id="752" + group="0" + sex="male" + wearable="hair" + edit_group="hair_facial" + edit_group_order="1" + name="Hair Thickness" + label_min="5 O'Clock Shadow" + label_max="Bushy Hair" + value_min="0" + value_max="1" + value_default=".5" + camera_elevation="0" + camera_distance=".28"> + <param_driver> + <driven + id="751" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="1012" + min1="0" + max1="0" + max2=".2" + min2=".6" /> + + <driven + id="400" + min1=".2" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="763" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="1" + name="Hair Volume" + show_simple="true" + label_min="Less Volume" + label_max="More Volume" + value_min="0" + value_max="1" + value_default=".55" + camera_elevation=".1" + camera_distance=".5" + camera_angle="20"> + <param_driver> + <driven + id="761" + min1="0" + max1="0" + max2="0" + min2=".5" /> + + <driven + id="180" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="834" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="809" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="831" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="835" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="810" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="832" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="836" + group="0" + wearable="jacket" + edit_group="colorpicker" + name="jacket_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="811" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="833" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="785" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.6" + name="Pigtails" + show_simple="true" + label_min="Short Pigtails" + label_max="Long Pigtails" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="15"> + <param_driver> + <driven + id="782" + min1="0" + max1=".10" + max2=".10" + min2=".5" /> + + <driven + id="783" + min1=".10" + max1=".5" + max2=".5" + min2=".75" /> + + <driven + id="790" + min1=".5" + max1=".75" + max2=".75" + min2="1" /> + + <driven + id="784" + min1=".75" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="789" + group="0" + wearable="hair" + edit_group="hair_style" + edit_group_order="14.7" + name="Ponytail" + label_min="Short Ponytail" + label_max="Long Ponytail" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".5" + camera_angle="180"> + <param_driver> + <driven + id="786" + min1="0" + max1=".10" + max2=".10" + min2=".66" /> + + <driven + id="787" + min1=".10" + max1=".66" + max2=".66" + min2="1" /> + + <driven + id="788" + min1=".66" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="795" + group="0" + name="Butt Size" + label="Butt Size" + wearable="shape" + edit_group="shape_legs" + edit_group_order="4" + label_min="Flat Butt" + label_max="Big Butt" + value_min="0" + value_max="1" + value_default=".25" + camera_angle="180" + camera_distance=".6"> + <param_driver> + <driven + id="867" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="794" + min1="0" + max1="0" + max2="0" + min2=".3" /> + + <driven + id="151" + min1=".3" + max1="1" + max2="1" + min2="1" /> + + <driven + id="852" + min1=".3" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="841" + group="0" + name="Bowed_Legs" + label="Knee Angle" + wearable="shape" + edit_group_order="5.5" + edit_group="shape_legs" + label_min="Knock Kneed" + label_max="Bow Legged" + value_min="-1" + value_max="1" + value_default="0" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="853" /> + + <driven + id="847" /> + </param_driver> + </param> + + <param + id="753" + group="0" + name="Saddlebags" + label="Saddle Bags" + wearable="shape" + edit_group="shape_legs" + edit_group_order="5" + label_min="Less Saddle" + label_max="More Saddle" + value_min="-0.5" + value_max="3" + value_default="0" + camera_angle="0" + camera_distance="1.2"> + <param_driver> + <driven + id="850" /> + + <driven + id="854" /> + </param_driver> + </param> + + <param + id="676" + group="0" + name="Love_Handles" + label="Love Handles" + wearable="shape" + edit_group="shape_torso" + edit_group_order="12" + label_min="Less Love" + label_max="More Love" + value_min="-1" + value_max="2" + value_default="0" + camera_elevation=".3" + camera_distance=".9"> + <param_driver> + <driven + id="855" /> + + <driven + id="856" /> + </param_driver> + </param> + + <param + id="863" + group="0" + name="skirt_looseness" + label="Skirt Fit" + show_simple="true" + clothing_morph="true" + wearable="skirt" + edit_group_order="2" + edit_group="skirt" + label_min="Tight Skirt" + label_max="Poofy Skirt" + value_min="0" + value_max="1" + value_default=".333" + camera_distance="1.3" + camera_elevation="-.5"> + <param_driver> + <driven + id="866" + min1="0" + max1="0" + max2="0" + min2=".2" /> + + <driven + id="846" + min1="0" + max1=".5" + max2=".5" + min2="1" /> + + <driven + id="845" + min1=".5" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="119" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="1" + name="Eyebrow Size" + show_simple="true" + label_min="Thin Eyebrows" + label_max="Bushy Eyebrows" + value_min="0" + value_max="1" + value_default="0.5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1000" /> + + <driven + id="1001" /> + </param_driver> + </param> + + <param + id="750" + group="0" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2" + name="Eyebrow Density" + label_min="Sparse" + label_max="Dense" + value_min="0" + value_max="1" + value_default="0.7" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="1002" /> + + <driven + id="1003" /> + </param_driver> + </param> + + <param + id="166" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="2" + name="Sideburns" + show_simple="true" + label_min="Short Sideburns" + label_max="Mutton Chops" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1004" /> + + <driven + id="1005" /> + </param_driver> + </param> + + <param + id="167" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="3" + name="Moustache" + show_simple="true" + label_min="Chaplin" + label_max="Handlebars" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation=".1" + camera_distance=".3" + camera_angle="30"> + <param_driver> + <driven + id="1006" /> + + <driven + id="1007" /> + </param_driver> + </param> + + <param + id="168" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="5" + name="Soulpatch" + show_simple="true" + label_min="Less soul" + label_max="More soul" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="0"> + <param_driver> + <driven + id="1008" /> + + <driven + id="1009" /> + </param_driver> + </param> + + <param + id="169" + sex="male" + group="0" + wearable="hair" + edit_group="hair_facial" + edit_group_order="4" + name="Chin Curtains" + show_simple="true" + label_min="Less Curtains" + label_max="More Curtains" + value_min="0" + value_max="1" + value_default="0.0" + camera_elevation="-.1" + camera_distance=".3" + camera_angle="45"> + <param_driver> + <driven + id="1010" /> + + <driven + id="1011" /> + </param_driver> + </param> + + <param + id="606" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1019" /> + + <driven + id="1039" /> + + <driven + id="1020" /> + </param_driver> + </param> + + <param + id="607" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1021" /> + + <driven + id="1040" /> + + <driven + id="1022" /> + </param_driver> + </param> + + <param + id="780" + group="0" + wearable="jacket" + edit_group="jacket" + edit_group_order="3.5" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1023" /> + + <driven + id="1041" /> + + <driven + id="1024" /> + </param_driver> + </param> + + <param + id="603" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="1" + name="Sleeve Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".4" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1042" /> + + <driven + id="1043" /> + </param_driver> + </param> + + <param + id="604" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="2" + name="Bottom" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".85" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1044" /> + + <driven + id="1045" /> + </param_driver> + </param> + + <param + id="605" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="3" + name="Collar Front" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="15" + camera_elevation=".2"> + <param_driver> + <driven + id="1046" /> + + <driven + id="1047" /> + </param_driver> + </param> + + <param + id="779" + group="0" + wearable="undershirt" + edit_group="undershirt" + edit_group_order="4" + name="Collar Back" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".84" + camera_distance=".8" + camera_angle="195" + camera_elevation=".2"> + <param_driver> + <driven + id="1048" /> + + <driven + id="1049" /> + </param_driver> + </param> + + <param + id="617" + group="0" + wearable="socks" + edit_group="socks" + name="Socks Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default="0.35" + camera_distance=".95" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1050" /> + + <driven + id="1051" /> + </param_driver> + </param> + + <param + id="616" + group="0" + wearable="shoes" + edit_group="shoes" + edit_group_order="1" + name="Shoe Height" + label_min="Short" + label_max="Tall" + value_min="0" + value_max="1" + value_default="0.1" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.75"> + <param_driver> + <driven + id="1052" /> + + <driven + id="1053" /> + </param_driver> + </param> + + <param + id="619" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Length" + label_min="Short" + label_max="Long" + value_min="0" + value_max="1" + value_default=".3" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1054" /> + + <driven + id="1055" /> + </param_driver> + </param> + + <param + id="624" + group="0" + wearable="underpants" + edit_group="underpants" + name="Pants Waist" + label_min="Low" + label_max="High" + value_min="0" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation="-.3"> + <param_driver> + <driven + id="1056" /> + + <driven + id="1057" /> + </param_driver> + </param> + + <param + id="93" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Length" + label_min="Short" + label_max="Long" + value_min=".01" + value_max="1" + value_default=".8" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1058" /> + + <driven + id="1059" /> + </param_driver> + </param> + + <param + id="844" + group="0" + wearable="gloves" + edit_group="gloves" + name="Glove Fingers" + label_min="Fingerless" + label_max="Fingers" + value_min=".01" + value_max="1" + value_default="1" + camera_distance="1.2" + camera_angle="30" + camera_elevation=".2"> + <param_driver> + <driven + id="1060" /> + + <driven + id="1061" /> + </param_driver> + </param> + + <!--Pointy eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="16" + group="0" + name="Pointy_Eyebrows" + label="Eyebrow Points" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="4" + label_min="Smooth" + label_max="Pointy" + value_min="-.5" + value_max="3" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="870" /> + </param_driver> + </param> + + <!--Lower eyebrows became a driver/driven param with new min value for backwards compatibility between 1.0 and 1.1--> + <param + id="757" + group="0" + name="Lower_Eyebrows" + label="Eyebrow Height" + show_simple="true" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="2.5" + label_min="Higher" + label_max="Lower" + value_min="-4" + value_max="2" + value_default="-1" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="871" /> + </param_driver> + </param> + + <!--Arced eyebrows became a driver/driven param with new max value for backwards compatibility between 1.0 and 1.1--> + <param + id="31" + group="0" + name="Arced_Eyebrows" + label="Eyebrow Arc" + wearable="hair" + edit_group="hair_eyebrows" + edit_group_order="3" + label_min="Flat" + label_max="Arced" + value_min="0" + value_max="2" + value_default=".5" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="872" /> + </param_driver> + </param> + + + <param + id="877" + group="3" + name="Jacket Wrinkles" + label="Jacket Wrinkles" + wearable="jacket" + edit_group="jacket" + edit_group_order="20" + label_min="No Wrinkles" + label_max="Wrinkles" + value_min="0" + value_max="1" + value_default="0" + camera_elevation=".1" + camera_distance=".3"> + <param_driver> + <driven + id="875" /> + + + <driven + id="876" /> + </param_driver> + </param> + + <param + id="1071" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_red" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1062" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1065" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1068" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1072" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_green" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1063" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1066" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1069" + min1="0" + max1="1" + max2="1" + min2="1" /> + </param_driver> + </param> + + <param + id="1073" + group="2" + wearable="tattoo" + edit_group="colorpicker" + name="tattoo_blue" + value_min="0" + value_max="1" + value_default="1"> + <param_driver> + <driven + id="1064" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1067" + min1="0" + max1="1" + max2="1" + min2="1" /> + + <driven + id="1070" + min1="0" + max1="1" + max2="1" + min2="1" /> + + </param_driver> + </param> + + <!-- ==PHYSICS PARAMETERS======================================= --> + + <param + id="1100" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_UpDown_Controller" + label="Breast Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1200" /> + </param_driver> + </param> + + <param + id="1101" + group="1" + sex="female" + wearable="physics" + name="Breast_Physics_InOut_Controller" + label="Breast Physics InOut Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1201" /> + </param_driver> + </param> + + <param + id="1102" + group="1" + wearable="physics" + name="Belly_Physics_UpDown_Controller" + label="Belly Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1202" /> + <driven + id="1203" /> + <driven + id="1204" /> + </param_driver> + </param> + + <param + id="1103" + group="1" + wearable="shape" + name="Butt_Physics_UpDown_Controller" + label="Butt Physics UpDown Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1205" /> + </param_driver> + </param> + + <param + id="1104" + group="1" + wearable="shape" + name="Butt_Physics_LeftRight_Controller" + label="Butt Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1206" /> + </param_driver> + </param> + + <param + id="1105" + group="1" + wearable="shape" + name="Breast_Physics_LeftRight_Controller" + label="Breast Physics LeftRight Controller" + value_min="-1" + value_max="1" + value_default="0"> + <param_driver> + <driven + id="1207" /> + </param_driver> + </param> + + <param + id="10000" + group="0" + sex="female" + name="Breast_Physics_Mass" + label="Breast Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10001" + group="0" + sex="female" + name="Breast_Physics_Gravity" + label="Breast Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + + <param + id="10002" + group="0" + sex="female" + name="Breast_Physics_Drag" + label="Breast Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10003" + group="0" + sex="female" + name="Breast_Physics_UpDown_Max_Effect" + label="Breast Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10004" + group="0" + sex="female" + name="Breast_Physics_UpDown_Spring" + label="Breast Physics UpDown Spring" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10005" + group="0" + sex="female" + name="Breast_Physics_UpDown_Gain" + label="Breast Physics UpDown Gain" + wearable="physics" + edit_group="physics_breasts_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10006" + group="0" + sex="female" + name="Breast_Physics_UpDown_Damping" + label="Breast Physics UpDown Damping" + wearable="physics" + edit_group="physics_breasts_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10007" + group="0" + sex="female" + name="Breast_Physics_InOut_Max_Effect" + label="Breast Physics InOut Max Effect" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10008" + group="0" + sex="female" + name="Breast_Physics_InOut_Spring" + label="Breast Physics InOut Spring" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10009" + group="0" + sex="female" + name="Breast_Physics_InOut_Gain" + label="Breast Physics InOut Gain" + wearable="physics" + edit_group="physics_breasts_inout" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10010" + group="0" + sex="female" + name="Breast_Physics_InOut_Damping" + label="Breast Physics InOut Damping" + wearable="physics" + edit_group="physics_breasts_inout" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10011" + group="0" + name="Belly_Physics_Mass" + label="Belly Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10012" + group="0" + name="Belly_Physics_Gravity" + label="Belly Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10013" + group="0" + name="Belly_Physics_Drag" + label="Belly Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + <param + id="10014" + group="0" + name="Belly_Physics_UpDown_Max_Effect" + label="Belly Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_belly_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10015" + group="0" + name="Belly_Physics_UpDown_Spring" + label="Belly Physics UpDown Spring" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10016" + group="0" + name="Belly_Physics_UpDown_Gain" + label="Belly Physics UpDown Gain" + wearable="physics" + edit_group="physics_belly_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10017" + group="0" + name="Belly_Physics_UpDown_Damping" + label="Belly Physics UpDown Damping" + wearable="physics" + edit_group="physics_belly_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10018" + group="0" + name="Butt_Physics_Mass" + label="Butt Physics Mass" + wearable="physics" + edit_group="physics_advanced" + value_default=".1" + value_min=".1" + value_max="1"> + <param_driver /> + </param> + <param + id="10019" + group="0" + name="Butt_Physics_Gravity" + label="Butt Physics Gravity" + wearable="physics" + edit_group="physics_advanced" + value_default="0" + value_min="0" + value_max="30"> + <param_driver /> + </param> + <param + id="10020" + group="0" + name="Butt_Physics_Drag" + label="Butt Physics Drag" + wearable="physics" + edit_group="physics_advanced" + value_default="1" + value_min="0" + value_max="10"> + <param_driver /> + </param> + + <param + id="10021" + group="0" + name="Butt_Physics_UpDown_Max_Effect" + label="Butt Physics UpDown Max Effect" + wearable="physics" + edit_group="physics_butt_updown" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10022" + group="0" + name="Butt_Physics_UpDown_Spring" + label="Butt Physics UpDown Spring" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10023" + group="0" + name="Butt_Physics_UpDown_Gain" + label="Butt Physics UpDown Gain" + wearable="physics" + edit_group="physics_butt_updown" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10024" + group="0" + name="Butt_Physics_UpDown_Damping" + label="Butt Physics UpDown Damping" + wearable="physics" + edit_group="physics_butt_updown" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10025" + group="0" + name="Butt_Physics_LeftRight_Max_Effect" + label="Butt Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10026" + group="0" + name="Butt_Physics_LeftRight_Spring" + label="Butt Physics LeftRight Spring" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10027" + group="0" + name="Butt_Physics_LeftRight_Gain" + label="Butt Physics LeftRight Gain" + wearable="physics" + edit_group="physics_butt_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10028" + group="0" + name="Butt_Physics_LeftRight_Damping" + label="Butt Physics LeftRight Damping" + wearable="physics" + edit_group="physics_butt_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="10029" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Max_Effect" + label="Breast Physics LeftRight Max Effect" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="0" + value_min="0" + value_max="3"> + <param_driver /> + </param> + <param + id="10030" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Spring" + label="Breast Physics LeftRight Spring" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="0" + value_max="100"> + <param_driver /> + </param> + <param + id="10031" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Gain" + label="Breast Physics LeftRight Gain" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default="10" + value_min="1" + value_max="100"> + <param_driver /> + </param> + <param + id="10032" + group="0" + sex="female" + name="Breast_Physics_LeftRight_Damping" + label="Breast Physics LeftRight Damping" + wearable="physics" + edit_group="physics_breasts_leftright" + value_default=".2" + value_min="0" + value_max="1"> + <param_driver /> + </param> + + <param + id="11000" + group="0" + name="AppearanceMessage_Version" + label="AppearanceMessage Version" + value_default="0" + value_min="0" + value_max="255"> + <param_driver /> + </param> + + </driver_parameters> + + <morph_masks> + <mask + morph_name="Displace_Hair_Facial" + body_region="head" + layer="facialhair" /> + <mask + morph_name="Displace_Loose_Upperbody" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Shirtsleeve_flair" + body_region="upper_body" + layer="upper_clothes" /> + <mask + morph_name="Displace_Loose_Lowerbody" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Pantflair" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Low_Crotch" + body_region="lower_body" + layer="lower_pants" /> + <mask + morph_name="Leg_Longcuffs" + body_region="lower_body" + layer="lower_pants" /> + </morph_masks> +</linden_avatar> + diff --git a/indra/newview/character/avatar_skeleton.xml b/indra/newview/character/avatar_skeleton.xml index 6b07bbc1d3..7a088484d8 100755 --- a/indra/newview/character/avatar_skeleton.xml +++ b/indra/newview/character/avatar_skeleton.xml @@ -1,6 +1,14 @@ <?xml version="1.0" encoding="US-ASCII" standalone="yes"?> -<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="26"> +<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="29"> <bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015"> + <bone name="mTail_1" pos="0.000 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.25 0.000000 0.000000"> + <bone name="mTail_2" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-.25000000 0.000000 0.000000"> + <bone name="mTail_3" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.2500000 0.000000 0.000000"> + <bone name="mTail_4" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.25000000 0.000000 0.000000"> + </bone> + </bone> + </bone> + </bone> <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/> <collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/> <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073"> @@ -9,6 +17,22 @@ <collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> <collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877"> + <bone name="mRightWingShoulder" pos="-0.07 -0.082 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.07 -0.082 0.165"> + <bone name="mRightWingElbow" pos="-0.085 -0.115 0" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.085 -0.115 0"> + <bone name="mRightWingWrist" pos="0.000 -0.231 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -.231 -0.000000"> + <bone name="mRightWingTip" pos="0.000 -0.214 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000 -0.214 -0.000"> + </bone> + </bone> + </bone> + </bone> + <bone name="mLeftWingShoulder" pos="-0.07 0.082 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.07 0.082 0.165"> + <bone name="mLeftWingElbow" pos="-0.085 0.115 0" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.085 0.115 0"> + <bone name="mLeftWingWrist" pos="0.000 0.231 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.231 -0.000000"> + <bone name="mLeftWingTip" pos="0.000 0.214 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000 0.214 -0.000"> + </bone> + </bone> + </bone> + </bone> <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/> <collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> <collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> @@ -78,4 +102,4 @@ </bone> </bone> </bone> -</linden_skeleton>
\ No newline at end of file +</linden_skeleton> diff --git a/indra/newview/character/avatar_skeleton_orig.xml b/indra/newview/character/avatar_skeleton_orig.xml new file mode 100644 index 0000000000..6b07bbc1d3 --- /dev/null +++ b/indra/newview/character/avatar_skeleton_orig.xml @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="26"> +<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015"> + <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/> + <collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/> + <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073"> + <collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LOWER_BACK" pos = "0.0 0.0 0.023" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877"> + <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/> + <collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_PEC" pos = "0.119 -0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108"> + <collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/> + <bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630"> + <collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/> + <bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000"> + </bone> + <bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000"> + </bone> + <bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000"> + </bone> + </bone> + </bone> + <bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396"> + <collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000"> + <collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000"> + <collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000"> + <collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + <bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396"> + <collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000"> + <collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000"> + <collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000"> + <collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086"> + <collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922"> + <collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494"> + <collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637"> + <bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104"> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998"> + <collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053"> + <collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449"> + <collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620"> + <bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871"> + </bone> + </bone> + </bone> + </bone> + </bone> +</bone> +</linden_skeleton>
\ No newline at end of file diff --git a/indra/newview/character/avatar_skeleton_tentacles.xml b/indra/newview/character/avatar_skeleton_tentacles.xml new file mode 100644 index 0000000000..9863a5cbfd --- /dev/null +++ b/indra/newview/character/avatar_skeleton_tentacles.xml @@ -0,0 +1,281 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_skeleton version="1.0" num_bones="152" num_collision_volumes="26"> + <bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015"> + <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/> + <collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/> + <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073"> + <collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LOWER_BACK" pos = "0.0 0.0 0.023" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877"> + <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/> + <collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_PEC" pos = "0.119 -0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108"> + <collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/> + <bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630"> + <collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/> + <bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000"> + </bone> + <bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000"> + </bone> + <bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000"> + </bone> + </bone> + </bone> + <bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396"> + <collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000"> + <collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000"> + <collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000"> + <collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + <bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396"> + <collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000"> + <collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000"> + <collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000"> + <collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle0_0" pos="0.0 0.0 0.0" rot="0.0 0.0 0.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle0_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle0_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle1_0" pos="0.0 0.0 0.0" rot="0.0 0.0 36.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle1_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle1_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle2_0" pos="0.0 0.0 0.0" rot="0.0 0.0 72.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle2_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle2_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle3_0" pos="0.0 0.0 0.0" rot="0.0 0.0 108.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle3_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle3_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle4_0" pos="0.0 0.0 0.0" rot="0.0 0.0 144.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle4_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle4_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle5_0" pos="0.0 0.0 0.0" rot="0.0 0.0 180.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle5_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle5_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle6_0" pos="0.0 0.0 0.0" rot="0.0 0.0 216.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle6_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle6_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle7_0" pos="0.0 0.0 0.0" rot="0.0 0.0 252.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle7_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle7_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle8_0" pos="0.0 0.0 0.0" rot="0.0 0.0 288.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle8_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle8_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mTentacle9_0" pos="0.0 0.0 0.0" rot="0.0 0.0 324.000000" scale="1.0 1.0 1.0" pivot="0.0 0.0 0.0"> + <bone name="mTentacle9_1" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_2" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_3" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_4" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_5" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_6" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_7" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_8" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + <bone name="mTentacle9_9" pos="0.100000 0.0 0.0" rot="0.0 0.0 0.0" scale="1.0 1.0 1.0" pivot="0.1 0.0 0.0"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086"> + <collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922"> + <collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494"> + <collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637"> + <bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104"> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998"> + <collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053"> + <collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449"> + <collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620"> + <bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871"> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> +</linden_skeleton> diff --git a/indra/newview/character/avatar_skeleton_wings_tail.xml b/indra/newview/character/avatar_skeleton_wings_tail.xml new file mode 100644 index 0000000000..7a088484d8 --- /dev/null +++ b/indra/newview/character/avatar_skeleton_wings_tail.xml @@ -0,0 +1,105 @@ +<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> +<linden_skeleton version="1.0" num_bones="53" num_collision_volumes="29"> +<bone name="mPelvis" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 1.067015"> + <bone name="mTail_1" pos="0.000 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.25 0.000000 0.000000"> + <bone name="mTail_2" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-.25000000 0.000000 0.000000"> + <bone name="mTail_3" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.2500000 0.000000 0.000000"> + <bone name="mTail_4" pos="-0.2500 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.25000000 0.000000 0.000000"> + </bone> + </bone> + </bone> + </bone> + <collision_volume name="PELVIS" pos = "-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17"/> + <collision_volume name="BUTT" pos = "-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1"/> + <bone name="mTorso" pos="0.000 0.000 0.084" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.084073"> + <collision_volume name="BELLY" pos = "0.028 0 0.04" rot="0.000000 8.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LOWER_BACK" pos = "0.0 0.0 0.023" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_HANDLE" pos = "0.0 0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_HANDLE" pos = "0.0 -0.10 0.058" rot="0.000000 0.00000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mChest" pos="-0.015 0.000 0.205" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.015368 0.000000 0.204877"> + <bone name="mRightWingShoulder" pos="-0.07 -0.082 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.07 -0.082 0.165"> + <bone name="mRightWingElbow" pos="-0.085 -0.115 0" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.085 -0.115 0"> + <bone name="mRightWingWrist" pos="0.000 -0.231 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -.231 -0.000000"> + <bone name="mRightWingTip" pos="0.000 -0.214 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000 -0.214 -0.000"> + </bone> + </bone> + </bone> + </bone> + <bone name="mLeftWingShoulder" pos="-0.07 0.082 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.07 0.082 0.165"> + <bone name="mLeftWingElbow" pos="-0.085 0.115 0" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.085 0.115 0"> + <bone name="mLeftWingWrist" pos="0.000 0.231 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.231 -0.000000"> + <bone name="mLeftWingTip" pos="0.000 0.214 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000 0.214 -0.000"> + </bone> + </bone> + </bone> + </bone> + <collision_volume name="CHEST" pos = "0.028 0 0.07" rot="0.000000 -10.00000 0.000000" scale="0.11 0.15 0.2"/> + <collision_volume name="UPPER_BACK" pos = "0.0 0.0 0.017" rot="0.000000 0.00000 0.000000" scale="0.09 0.13 0.15"/> + <collision_volume name="LEFT_PEC" pos = "0.119 0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <collision_volume name="RIGHT_PEC" pos = "0.119 -0.082 0.042" rot="0.000000 4.29000 0.000000" scale="0.05 0.05 0.05"/> + <bone name="mNeck" pos="-0.010 0.000 0.251" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.009507 0.000000 0.251108"> + <collision_volume name="NECK" pos = "0.0 0 0.02" rot="0.000000 0.000000 0.000000" scale="0.05 0.06 0.08"/> + <bone name="mHead" pos="0.000 -0.000 0.076" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.000000 0.075630"> + <collision_volume name="HEAD" pos = "0.02 0 0.07" rot="0.000000 0.000000 0.000000" scale="0.11 0.09 0.12"/> + <bone name="mSkull" pos="0.000 0.000 0.079" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.000000 0.079000"> + </bone> + <bone name="mEyeRight" pos="0.098 -0.036 0.079" rot="0.000000 0.000000 -0.000000" scale="1.000 1.000 1.000" pivot="0.098466 -0.036000 0.079000"> + </bone> + <bone name="mEyeLeft" pos="0.098 0.036 0.079" rot="0.000000 -0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.098461 0.036000 0.079000"> + </bone> + </bone> + </bone> + <bone name="mCollarLeft" pos="-0.021 0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 0.084665 0.165396"> + <collision_volume name="L_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderLeft" pos="0.000 0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.079000 -0.000000"> + <collision_volume name="L_UPPER_ARM" pos = "0.0 0.12 0.01" rot="-5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowLeft" pos="0.000 0.248 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 0.248000 0.000000"> + <collision_volume name="L_LOWER_ARM" pos = "0.0 0.1 0.0" rot="-3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristLeft" pos="-0.000 0.205 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 0.204846 0.000000"> + <collision_volume name="L_HAND" pos = "0.01 0.05 0.0" rot="-3.000000 0.00000 -10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + <bone name="mCollarRight" pos="-0.021 -0.085 0.165" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.020927 -0.085000 0.165396"> + <collision_volume name="R_CLAVICLE" pos = "0.02 0 0.02" rot="0.000000 0.00000 0.000000" scale="0.07 0.14 0.05"/> + <bone name="mShoulderRight" pos="0.000 -0.079 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.079418 -0.000000"> + <collision_volume name="R_UPPER_ARM" pos = "0.0 -0.12 0.01" rot="5.000000 0.00000 0.000000" scale="0.05 0.17 0.05"/> + <bone name="mElbowRight" pos="0.000 -0.248 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.000000 -0.248000 -0.000000"> + <collision_volume name="R_LOWER_ARM" pos = "0.0 -0.1 0.0" rot="3.000000 0.00000 0.000000" scale="0.04 0.14 0.04"/> + <bone name="mWristRight" pos="0.000 -0.205 -0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000000 -0.205000 -0.000000"> + <collision_volume name="R_HAND" pos = "0.01 -0.05 0.0" rot="3.000000 0.00000 10.000000" scale="0.05 0.08 0.03"/> + </bone> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipRight" pos="0.034 -0.129 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033620 -0.128806 -0.041086"> + <collision_volume name="R_UPPER_LEG" pos = "-0.02 0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeRight" pos="-0.001 0.049 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000780 0.048635 -0.490922"> + <collision_volume name="R_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleRight" pos="-0.029 0.000 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028869 0.000000 -0.468494"> + <collision_volume name="R_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootRight" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060637"> + <bone name="mToeRight" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105399 -0.010408 -0.000104"> + </bone> + </bone> + </bone> + </bone> + </bone> + <bone name="mHipLeft" pos="0.034 0.127 -0.041" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.033757 0.126765 -0.040998"> + <collision_volume name="L_UPPER_LEG" pos = "-0.02 -0.05 -0.22" rot="0.000000 0.00000 0.000000" scale="0.09 0.09 0.32"/> + <bone name="mKneeLeft" pos="-0.001 -0.046 -0.491" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.000887 -0.045568 -0.491053"> + <collision_volume name="L_LOWER_LEG" pos = "-0.02 0.0 -0.2" rot="0.000000 0.00000 0.000000" scale="0.06 0.06 0.25"/> + <bone name="mAnkleLeft" pos="-0.029 0.001 -0.468" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="-0.028887 0.001378 -0.468449"> + <collision_volume name="L_FOOT" pos = "0.077 0.0 -0.041" rot="0.000000 10.00000 0.000000" scale="0.13 0.05 0.05"/> + <bone name="mFootLeft" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.111956 -0.000000 -0.060620"> + <bone name="mToeLeft" pos="0.109 0.000 0.000" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" pivot="0.105387 0.008270 0.000871"> + </bone> + </bone> + </bone> + </bone> + </bone> +</bone> +</linden_skeleton> diff --git a/indra/newview/installers/windows/installer_template.nsi b/indra/newview/installers/windows/installer_template.nsi index 8c8b4971cf..95cdf90e99 100755 --- a/indra/newview/installers/windows/installer_template.nsi +++ b/indra/newview/installers/windows/installer_template.nsi @@ -298,6 +298,11 @@ CreateShortCut "$INSTDIR\$INSTSHORTCUT.lnk" \ CreateShortCut "$INSTDIR\Uninstall $INSTSHORTCUT.lnk" \
'"$INSTDIR\uninst.exe"' ''
+# Create *.bat file to specify lang params on first run from installer - see MAINT-5259
+FileOpen $9 "$INSTDIR\autorun.bat" w
+FileWrite $9 'start "$INSTDIR\$INSTEXE" "$INSTDIR\$INSTEXE" $SHORTCUT_LANG_PARAM$\r$\n'
+FileClose $9
+
# Write registry
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}"
@@ -682,7 +687,7 @@ Call CheckWindowsServPack # Warn if not on the latest SP before asking to launc Push $R0 # Option value, unused
StrCmp $SKIP_AUTORUN "true" +2;
# Assumes SetOutPath $INSTDIR
- Exec '"$WINDIR\explorer.exe" "$INSTDIR\$INSTEXE"'
+ Exec '"$WINDIR\explorer.exe" "$INSTDIR\autorun.bat"'
Pop $R0
FunctionEnd
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp index 7f0330ee99..aed27924fe 100755 --- a/indra/newview/llagentcamera.cpp +++ b/indra/newview/llagentcamera.cpp @@ -147,6 +147,7 @@ LLAgentCamera::LLAgentCamera() : mCameraUpVector(LLVector3::z_axis), // default is straight up mFocusOnAvatar(TRUE), + mAllowChangeToFollow(FALSE), mFocusGlobal(), mFocusTargetGlobal(), mFocusObject(NULL), @@ -1152,8 +1153,10 @@ void LLAgentCamera::updateCamera() mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation(); } - if (cameraThirdPerson() && mFocusOnAvatar && LLFollowCamMgr::getActiveFollowCamParams()) + if (cameraThirdPerson() && (mFocusOnAvatar || mAllowChangeToFollow) && LLFollowCamMgr::getActiveFollowCamParams()) { + mAllowChangeToFollow = FALSE; + mFocusOnAvatar = TRUE; changeCameraToFollow(); } @@ -2610,6 +2613,7 @@ void LLAgentCamera::setFocusOnAvatar(BOOL focus_on_avatar, BOOL animate) { // keep camera focus point consistent, even though it is now unlocked setFocusGlobal(gAgent.getPositionGlobal() + calcThirdPersonFocusOffset(), gAgent.getID()); + mAllowChangeToFollow = FALSE; } mFocusOnAvatar = focus_on_avatar; diff --git a/indra/newview/llagentcamera.h b/indra/newview/llagentcamera.h index 4d0f9a80de..ab793ff316 100755 --- a/indra/newview/llagentcamera.h +++ b/indra/newview/llagentcamera.h @@ -206,13 +206,15 @@ public: void setCameraPosAndFocusGlobal(const LLVector3d& pos, const LLVector3d& focus, const LLUUID &object_id); void clearFocusObject(); void setFocusObject(LLViewerObject* object); + void setAllowChangeToFollow(BOOL focus) { mAllowChangeToFollow = focus; } void setObjectTracking(BOOL track) { mTrackFocusObject = track; } const LLVector3d &getFocusGlobal() const { return mFocusGlobal; } const LLVector3d &getFocusTargetGlobal() const { return mFocusTargetGlobal; } private: LLVector3d mCameraFocusOffset; // Offset from focus point in build mode LLVector3d mCameraFocusOffsetTarget; // Target towards which we are lerping the camera's focus offset - BOOL mFocusOnAvatar; + BOOL mFocusOnAvatar; + BOOL mAllowChangeToFollow; LLVector3d mFocusGlobal; LLVector3d mFocusTargetGlobal; LLPointer<LLViewerObject> mFocusObject; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 06b86e311a..cce1eb5895 100755 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -986,6 +986,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it S32 matched = 0, mismatched = 0; const S32 arr_size = LLWearableType::WT_COUNT; S32 type_counts[arr_size]; + BOOL update_inventory = FALSE; std::fill(type_counts,type_counts+arr_size,0); for (S32 i = 0; i < count; i++) { @@ -1013,10 +1014,9 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it continue; } - // Don't care about this case - ordering of wearables with the same asset id has no effect. - // Causes the two-alphas error case in MAINT-4158. + // Update only inventory in this case - ordering of wearables with the same asset id has no effect. + // Updating wearables in this case causes the two-alphas error in MAINT-4158. // We should actually disallow wearing two wearables with the same asset id. -#if 0 if (curr_wearable->getName() != new_item->getName() || curr_wearable->getItemID() != new_item->getUUID()) { @@ -1024,10 +1024,9 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it << curr_wearable->getName() << " vs " << new_item->getName() << " item ids " << curr_wearable->getItemID() << " vs " << new_item->getUUID() << LL_ENDL; - mismatched++; + update_inventory = TRUE; continue; } -#endif // If we got here, everything matches. matched++; } @@ -1041,14 +1040,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it mismatched++; } } - if (mismatched == 0) + if (mismatched == 0 && !update_inventory) { LL_DEBUGS("Avatar") << "no changes, bailing out" << LL_ENDL; mCOFChangeInProgress = false; return; } - - + + // updating inventory + // TODO: Removed check for ensuring that teens don't remove undershirt and underwear. Handle later // note: shirt is the first non-body part wearable item. Update if wearable order changes. // This loop should remove all clothing, but not any body parts @@ -1069,7 +1069,8 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it if (new_wearable) { const LLWearableType::EType type = new_wearable->getType(); - + + LLUUID old_wearable_id = new_wearable->getItemID(); new_wearable->setName(new_item->getName()); new_wearable->setItemID(new_item->getUUID()); @@ -1077,11 +1078,18 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it { // exactly one wearable per body part setWearable(type,0,new_wearable); + if (old_wearable_id.notNull()) + { + // we changed id before setting wearable, update old item manually + // to complete the swap. + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_wearable_id); + } } else { pushWearable(type,new_wearable); } + const BOOL removed = FALSE; wearableUpdated(new_wearable, removed); } @@ -1089,6 +1097,15 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it gInventory.notifyObservers(); + if (mismatched == 0) + { + LL_DEBUGS("Avatar") << "inventory updated, wearable assets not changed, bailing out" << LL_ENDL; + mCOFChangeInProgress = false; + return; + } + + // updating agent avatar + if (isAgentAvatarValid()) { gAgentAvatarp->setCompositeUpdatesEnabled(TRUE); diff --git a/indra/newview/llaisapi.cpp b/indra/newview/llaisapi.cpp index 9d887a61f1..714b456ae7 100755 --- a/indra/newview/llaisapi.cpp +++ b/indra/newview/llaisapi.cpp @@ -315,7 +315,8 @@ SlamFolderCommand::SlamFolderCommand(const LLUUID& folder_id, const LLSD& conten CopyLibraryCategoryCommand::CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, - LLPointer<LLInventoryCallback> callback): + LLPointer<LLInventoryCallback> callback, + bool copy_subfolders): AISCommand(callback) { std::string cap; @@ -328,6 +329,10 @@ CopyLibraryCategoryCommand::CopyLibraryCategoryCommand(const LLUUID& source_id, LLUUID tid; tid.generate(); std::string url = cap + std::string("/category/") + source_id.asString() + "?tid=" + tid.asString(); + if (!copy_subfolders) + { + url += ",depth=0"; + } LL_INFOS() << url << LL_ENDL; LLCurl::ResponderPtr responder = this; LLSD headers; diff --git a/indra/newview/llaisapi.h b/indra/newview/llaisapi.h index 5a2ec94af9..bb483fb133 100755 --- a/indra/newview/llaisapi.h +++ b/indra/newview/llaisapi.h @@ -124,7 +124,7 @@ private: class CopyLibraryCategoryCommand: public AISCommand { public: - CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, LLPointer<LLInventoryCallback> callback); + CopyLibraryCategoryCommand(const LLUUID& source_id, const LLUUID& dest_id, LLPointer<LLInventoryCallback> callback, bool copy_subfolders = true); protected: /* virtual */ bool getResponseUUID(const LLSD& content, LLUUID& id); diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 3be705dd95..35593dd4ff 100755 --- a/indra/newview/llappearancemgr.cpp +++ b/indra/newview/llappearancemgr.cpp @@ -1786,9 +1786,15 @@ bool LLAppearanceMgr::getCanRemoveFromCOF(const LLUUID& outfit_cat_id) { return false; } - + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; LLFindWearablesEx is_worn(/*is_worn=*/ true, /*include_body_parts=*/ false); - return gInventory.hasMatchingDirectDescendent(outfit_cat_id, is_worn); + gInventory.collectDescendentsIf(outfit_cat_id, + cats, + items, + LLInventoryModel::EXCLUDE_TRASH, + is_worn); + return items.size() > 0; } // static @@ -2465,7 +2471,7 @@ void LLAppearanceMgr::wearInventoryCategory(LLInventoryCategory* category, bool LLPointer<LLInventoryCallback> copy_cb = new LLWearCategoryAfterCopy(append); LLPointer<LLInventoryCallback> track_cb = new LLTrackPhaseWrapper( std::string("wear_inventory_category_callback"), copy_cb); - LLPointer<AISCommand> cmd_ptr = new CopyLibraryCategoryCommand(category->getUUID(), parent_id, track_cb); + LLPointer<AISCommand> cmd_ptr = new CopyLibraryCategoryCommand(category->getUUID(), parent_id, track_cb, false); ais_ran=cmd_ptr->run_command(); } diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index a2aee2e000..9b9b591cd1 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3091,8 +3091,8 @@ void LLAppViewer::initUpdater() U32 check_period = gSavedSettings.getU32("UpdaterServiceCheckPeriod"); bool willing_to_test; LL_DEBUGS("UpdaterService") << "channel " << channel << LL_ENDL; - static const boost::regex is_test_channel("\\bTest$"); - if (boost::regex_search(channel, is_test_channel)) + + if (LLVersionInfo::TEST_VIEWER == LLVersionInfo::getViewerMaturity()) { LL_INFOS("UpdaterService") << "Test build: overriding willing_to_test by sending testno" << LL_ENDL; willing_to_test = false; diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index f0bd63ba46..b81b95462e 100755 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -934,7 +934,7 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL // compact mode: show a timestamp and name if (use_plain_text_chat_history) { - square_brackets = chat.mFromName == SYSTEM_FROM; + square_brackets = chat.mSourceType == CHAT_SOURCE_SYSTEM; LLStyle::Params timestamp_style(body_message_params); diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp index 0bbf7db46e..f828b56f7f 100755 --- a/indra/newview/lldrawpoolavatar.cpp +++ b/indra/newview/lldrawpoolavatar.cpp @@ -1805,9 +1805,12 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow) if (mat) { - gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP)); - gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); + //order is important here LLRender::DIFFUSE_MAP should be last, becouse it change + //(gGL).mCurrTextureUnitIndex gGL.getTexUnit(specular_channel)->bind(face->getTexture(LLRender::SPECULAR_MAP)); + gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP)); + gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP), false, true); + LLColor4 col = mat->getSpecularLightColor(); F32 spec = mat->getSpecularLightExponent()/255.f; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index fc9e85caf8..f2b369a9ad 100755 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -1728,6 +1728,17 @@ void LLFavoritesOrderStorage::cleanup() mSortIndexes.swap(aTempMap); } +// See also LLInventorySort where landmarks in the Favorites folder are sorted. +class LLViewerInventoryItemSort +{ +public: + bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) + { + return LLFavoritesOrderStorage::instance().getSortIndex(a->getUUID()) + < LLFavoritesOrderStorage::instance().getSortIndex(b->getUUID()); + } +}; + void LLFavoritesOrderStorage::saveOrder() { LLInventoryModel::cat_array_t cats; @@ -1735,6 +1746,7 @@ void LLFavoritesOrderStorage::saveOrder() LLIsType is_type(LLAssetType::AT_LANDMARK); LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); gInventory.collectDescendentsIf(favorites_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); + std::sort(items.begin(), items.end(), LLViewerInventoryItemSort()); saveItemsOrder(items); } @@ -1760,16 +1772,7 @@ void LLFavoritesOrderStorage::saveItemsOrder( const LLInventoryModel::item_array gInventory.notifyObservers(); } -// See also LLInventorySort where landmarks in the Favorites folder are sorted. -class LLViewerInventoryItemSort -{ -public: - bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) - { - return LLFavoritesOrderStorage::instance().getSortIndex(a->getUUID()) - < LLFavoritesOrderStorage::instance().getSortIndex(b->getUUID()); - } -}; + // * @param source_item_id - LLUUID of the source item to be moved into new position // * @param target_item_id - LLUUID of the target item before which source item should be placed. diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index b342d8fdf3..e71daa6067 100755 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -289,15 +289,11 @@ void LLServerReleaseNotesURLFetcher::httpCompleted() LL_DEBUGS("ServerReleaseNotes") << dumpResponse() << " [headers:" << getResponseHeaders() << "]" << LL_ENDL; - LLFloaterAbout* floater_about = LLFloaterReg::getTypedInstance<LLFloaterAbout>("sl_about"); - if (floater_about) + std::string location = getResponseHeader(HTTP_IN_HEADER_LOCATION); + if (location.empty()) { - std::string location = getResponseHeader(HTTP_IN_HEADER_LOCATION); - if (location.empty()) - { - location = LLTrans::getString("ErrorFetchingServerReleaseNotesURL"); - } - LLAppViewer::instance()->setServerReleaseNotesURL(location); + location = LLTrans::getString("ErrorFetchingServerReleaseNotesURL"); } + LLAppViewer::instance()->setServerReleaseNotesURL(location); } diff --git a/indra/newview/llfloaterbvhpreview.cpp b/indra/newview/llfloaterbvhpreview.cpp index 669ffa7c59..a800a3ca14 100755 --- a/indra/newview/llfloaterbvhpreview.cpp +++ b/indra/newview/llfloaterbvhpreview.cpp @@ -280,9 +280,12 @@ BOOL LLFloaterBvhPreview::postBuild() LLDataPackerBinaryBuffer dp(buffer, buffer_size); // pass animation data through memory buffer + LL_INFOS("BVH") << "Serializing loaderp" << LL_ENDL; loaderp->serialize(dp); dp.reset(); + LL_INFOS("BVH") << "Deserializing motionp" << LL_ENDL; BOOL success = motionp && motionp->deserialize(dp); + LL_INFOS("BVH") << "Done" << LL_ENDL; delete []buffer; diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 035eb307c2..62d7efc8b2 100755 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -82,6 +82,7 @@ void LLFloaterHardwareSettings::refresh() mVideoCardMem = gSavedSettings.getS32("TextureMemory"); mFogRatio = gSavedSettings.getF32("RenderFogRatio"); mProbeHardwareOnStartup = gSavedSettings.getBOOL("ProbeHardwareOnStartup"); + mCompressTextures = gSavedSettings.getBOOL("RenderCompressTextures"); getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) mFSAASamples); refreshEnabledState(); @@ -149,6 +150,7 @@ void LLFloaterHardwareSettings::refreshEnabledState() BOOL LLFloaterHardwareSettings::postBuild() { childSetAction("OK", onBtnOK, this); + childSetAction("Cancel", onBtnCancel, this); // Don't do this on Mac as their braindead GL versioning // sets this when 8x and 16x are indeed available @@ -179,18 +181,17 @@ void LLFloaterHardwareSettings::apply() void LLFloaterHardwareSettings::cancel() { - gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); - gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); - gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); - gSavedSettings.setF32("RenderGamma", mGamma); - gSavedSettings.setS32("TextureMemory", mVideoCardMem); - gSavedSettings.setF32("RenderFogRatio", mFogRatio); - gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup ); - closeFloater(); } // static +void LLFloaterHardwareSettings::onBtnCancel( void* userdata ) +{ + LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata; + fp->cancel(); +} + +// static void LLFloaterHardwareSettings::onBtnOK( void* userdata ) { LLFloaterHardwareSettings *fp =(LLFloaterHardwareSettings *)userdata; @@ -198,4 +199,14 @@ void LLFloaterHardwareSettings::onBtnOK( void* userdata ) fp->closeFloater(false); } - +void LLFloaterHardwareSettings::onClose(bool app_quitting) +{ + gSavedSettings.setBOOL("RenderVBOEnable", mUseVBO); + gSavedSettings.setBOOL("RenderAnisotropic", mUseAniso); + gSavedSettings.setU32("RenderFSAASamples", mFSAASamples); + gSavedSettings.setF32("RenderGamma", mGamma); + gSavedSettings.setS32("TextureMemory", mVideoCardMem); + gSavedSettings.setF32("RenderFogRatio", mFogRatio); + gSavedSettings.setBOOL("ProbeHardwareOnStartup", mProbeHardwareOnStartup ); + gSavedSettings.setBOOL("RenderCompressTextures", mCompressTextures ); +} diff --git a/indra/newview/llfloaterhardwaresettings.h b/indra/newview/llfloaterhardwaresettings.h index 626771b1d2..11c27c266d 100755 --- a/indra/newview/llfloaterhardwaresettings.h +++ b/indra/newview/llfloaterhardwaresettings.h @@ -40,6 +40,7 @@ public: /*virtual*/ ~LLFloaterHardwareSettings(); /*virtual*/ BOOL postBuild(); + /*virtual*/ void onClose(bool app_quitting); /// initialize all the callbacks for the menu void initCallbacks(void); @@ -47,6 +48,9 @@ public: /// OK button static void onBtnOK( void* userdata ); + /// Cancel button + static void onBtnCancel( void* userdata ); + //// menu management /// show off our menu @@ -76,6 +80,7 @@ protected: S32 mVideoCardMem; F32 mFogRatio; BOOL mProbeHardwareOnStartup; + BOOL mCompressTextures; private: }; diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index f9c39a02c9..ce32aeda94 100755 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -81,6 +81,8 @@ #include "llgroupactions.h" +const F64 COVENANT_REFRESH_TIME_SEC = 60.0f; + static std::string OWNER_ONLINE = "0"; static std::string OWNER_OFFLINE = "1"; static std::string OWNER_GROUP = "2"; @@ -2444,33 +2446,33 @@ void LLPanelLandAccess::refresh() cit != parcel->mAccessList.end(); ++cit) { const LLAccessEntry& entry = (*cit).second; - std::string suffix; + std::string prefix; if (entry.mTime != 0) { LLStringUtil::format_map_t args; S32 now = time(NULL); S32 seconds = entry.mTime - now; if (seconds < 0) seconds = 0; - suffix.assign(" ("); + prefix.assign(" ("); if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); std::string buf = parent_floater->getString ("Minutes", args); - suffix.append(buf); + prefix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + parent_floater->getString("Minute")); + prefix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); std::string buf = parent_floater->getString ("Seconds", args); - suffix.append(buf); + prefix.append(buf); } - suffix.append(" " + parent_floater->getString("Remaining") + ")"); + prefix.append(" " + parent_floater->getString("Remaining") + ") "); } - mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); + mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix); } mListAccess->sortByName(TRUE); } @@ -2490,33 +2492,33 @@ void LLPanelLandAccess::refresh() cit != parcel->mBanList.end(); ++cit) { const LLAccessEntry& entry = (*cit).second; - std::string suffix; + std::string prefix; if (entry.mTime != 0) { LLStringUtil::format_map_t args; S32 now = time(NULL); S32 seconds = entry.mTime - now; if (seconds < 0) seconds = 0; - suffix.assign(" ("); + prefix.assign(" ("); if (seconds >= 120) { args["[MINUTES]"] = llformat("%d", (seconds/60)); std::string buf = parent_floater->getString ("Minutes", args); - suffix.append(buf); + prefix.append(buf); } else if (seconds >= 60) { - suffix.append("1 " + parent_floater->getString("Minute")); + prefix.append("1 " + parent_floater->getString("Minute")); } else { args["[SECONDS]"] = llformat("%d", seconds); std::string buf = parent_floater->getString ("Seconds", args); - suffix.append(buf); + prefix.append(buf); } - suffix.append(" " + parent_floater->getString("Remaining") + ")"); + prefix.append(" " + parent_floater->getString("Remaining") + ") "); } - mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); + mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, "", prefix); } mListBanned->sortByName(TRUE); } @@ -2919,14 +2921,23 @@ void LLPanelLandAccess::onClickRemoveBanned(void* data) //--------------------------------------------------------------------------- LLPanelLandCovenant::LLPanelLandCovenant(LLParcelSelectionHandle& parcel) : LLPanel(), - mParcel(parcel) -{ + mParcel(parcel), + mNextUpdateTime(0) +{ } LLPanelLandCovenant::~LLPanelLandCovenant() { } +BOOL LLPanelLandCovenant::postBuild() +{ + mLastRegionID = LLUUID::null; + mNextUpdateTime = 0; + + return TRUE; +} + // virtual void LLPanelLandCovenant::refresh() { @@ -2973,14 +2984,23 @@ void LLPanelLandCovenant::refresh() changeable_clause->setText(getString("can_not_change")); } } - - // send EstateCovenantInfo message - LLMessageSystem *msg = gMessageSystem; - msg->newMessage("EstateCovenantRequest"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); - msg->sendReliable(region->getHost()); + + if (mLastRegionID != region->getRegionID() + || mNextUpdateTime < LLTimer::getElapsedSeconds()) + { + // Request Covenant Info + // Note: LLPanelLandCovenant doesn't change Covenant's content and any + // changes made by Estate floater should be requested by Estate floater + LLMessageSystem *msg = gMessageSystem; + msg->newMessage("EstateCovenantRequest"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); + msg->sendReliable(region->getHost()); + + mLastRegionID = region->getRegionID(); + mNextUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC; + } } // static diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index 8e8b61c333..0540ddb880 100755 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -394,6 +394,7 @@ class LLPanelLandCovenant public: LLPanelLandCovenant(LLSafeHandle<LLParcelSelection>& parcelp); virtual ~LLPanelLandCovenant(); + virtual BOOL postBuild(); void refresh(); static void updateCovenantText(const std::string& string); static void updateEstateName(const std::string& name); @@ -402,6 +403,10 @@ public: protected: LLSafeHandle<LLParcelSelection>& mParcel; + +private: + LLUUID mLastRegionID; + F64 mNextUpdateTime; //seconds since client start }; #endif diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 72c9170b06..851e2d2eb7 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1316,33 +1316,8 @@ LLModelLoader::LLModelLoader( std::string filename, S32 lod, LLModelPreview* pre , mJointsFromNode( jointsFromNodes ) , LLThread("Model Loader"), mFilename(filename), mLod(lod), mPreview(preview), mFirstTransform(TRUE), mNumOfFetchingTextures(0) { - mJointMap["mPelvis"] = "mPelvis"; - mJointMap["mTorso"] = "mTorso"; - mJointMap["mChest"] = "mChest"; - mJointMap["mNeck"] = "mNeck"; - mJointMap["mHead"] = "mHead"; - mJointMap["mSkull"] = "mSkull"; - mJointMap["mEyeRight"] = "mEyeRight"; - mJointMap["mEyeLeft"] = "mEyeLeft"; - mJointMap["mCollarLeft"] = "mCollarLeft"; - mJointMap["mShoulderLeft"] = "mShoulderLeft"; - mJointMap["mElbowLeft"] = "mElbowLeft"; - mJointMap["mWristLeft"] = "mWristLeft"; - mJointMap["mCollarRight"] = "mCollarRight"; - mJointMap["mShoulderRight"] = "mShoulderRight"; - mJointMap["mElbowRight"] = "mElbowRight"; - mJointMap["mWristRight"] = "mWristRight"; - mJointMap["mHipRight"] = "mHipRight"; - mJointMap["mKneeRight"] = "mKneeRight"; - mJointMap["mAnkleRight"] = "mAnkleRight"; - mJointMap["mFootRight"] = "mFootRight"; - mJointMap["mToeRight"] = "mToeRight"; - mJointMap["mHipLeft"] = "mHipLeft"; - mJointMap["mKneeLeft"] = "mKneeLeft"; - mJointMap["mAnkleLeft"] = "mAnkleLeft"; - mJointMap["mFootLeft"] = "mFootLeft"; - mJointMap["mToeLeft"] = "mToeLeft"; - + // Accepted joint aliases - the origins and continued relevance of these is unclear. + mJointMap["avatar_mPelvis"] = "mPelvis"; mJointMap["avatar_mTorso"] = "mTorso"; mJointMap["avatar_mChest"] = "mChest"; @@ -1392,6 +1367,21 @@ LLModelLoader::LLModelLoader( std::string filename, S32 lod, LLModelPreview* pre mJointMap["lShin"] = "mKneeLeft"; mJointMap["lFoot"] = "mFootLeft"; + // Get all standard skeleton joints from the preview avatar. + if (mPreview) + { + LLVOAvatar *av = mPreview->getPreviewAvatar(); + const LLVOAvatar::avatar_joint_list_t &skel = av->getSkeleton(); + for (S32 i=0; i<skel.size(); i++) + { + LLAvatarJoint *joint = skel[i]; + if (joint) + { + mJointMap[joint->getName()] = joint->getName(); + } + } + } + if (mPreview) { //only try to load from slm if viewer is configured to do so and this is the @@ -3810,11 +3800,8 @@ void LLModelPreview::loadModelCallback(S32 lod) mFMP->getChild<LLCheckBoxCtrl>("confirm_checkbox")->set(FALSE); if (!mBaseModel.empty()) { - if (mFMP->getChild<LLUICtrl>("description_form")->getValue().asString().empty()) - { - const std::string& model_name = mBaseModel[0]->getName(); - mFMP->getChild<LLUICtrl>("description_form")->setValue(model_name); - } + const std::string& model_name = mBaseModel[0]->getName(); + mFMP->getChild<LLUICtrl>("description_form")->setValue(model_name); } } refresh(); @@ -4854,7 +4841,7 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights) LLModel* base_mdl = *base_iter; base_iter++; - for (S32 i = 0; i < mdl->getNumVolumeFaces(); ++i) + for (S32 i = 0, e = mdl->getNumVolumeFaces(); i < e; ++i) { const LLVolumeFace &vf = mdl->getVolumeFace(i); U32 num_vertices = vf.mNumVertices; @@ -5138,8 +5125,11 @@ BOOL LLModelPreview::render() mViewOption["show_skin_weight"] = false; fmp->disableViewOption("show_skin_weight"); fmp->disableViewOption("show_joint_positions"); + + skin_weight = false; + mFMP->childSetValue("show_skin_weight", false); + fmp->setViewOptionEnabled("show_skin_weight", skin_weight); } - skin_weight = false; } if (upload_skin && !has_skin_weights) @@ -5243,6 +5233,16 @@ BOOL LLModelPreview::render() const LLVertexBuffer* buff = vb_vec[0]; regen = buff->hasDataType(LLVertexBuffer::TYPE_WEIGHT4) != skin_weight; } + else + { + LL_INFOS(" ") << "Vertex Buffer[" << mPreviewLOD << "]" << " is EMPTY!!!" << LL_ENDL; + regen = TRUE; + } + } + + if (regen) + { + genBuffers(mPreviewLOD, skin_weight); } //make sure material lists all match @@ -5263,11 +5263,6 @@ BOOL LLModelPreview::render() } } - if (regen) - { - genBuffers(mPreviewLOD, skin_weight); - } - if (!skin_weight) { for (LLMeshUploadThread::instance_list::iterator iter = mUploadData.begin(); iter != mUploadData.end(); ++iter) @@ -5286,7 +5281,7 @@ BOOL LLModelPreview::render() gGL.multMatrix((GLfloat*) mat.mMatrix); - for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i) + for (U32 i = 0, e = mVertexBuffer[mPreviewLOD][model].size(); i < e; ++i) { LLVertexBuffer* buffer = mVertexBuffer[mPreviewLOD][model][i]; @@ -5561,7 +5556,7 @@ BOOL LLModelPreview::render() if (!model->mSkinWeights.empty()) { - for (U32 i = 0; i < mVertexBuffer[mPreviewLOD][model].size(); ++i) + for (U32 i = 0, e = mVertexBuffer[mPreviewLOD][model].size(); i < e; ++i) { LLVertexBuffer* buffer = mVertexBuffer[mPreviewLOD][model][i]; @@ -5630,6 +5625,7 @@ BOOL LLModelPreview::render() position[j] = v; } + llassert(model->mMaterialList.size() > i); const std::string& binding = instance.mModel->mMaterialList[i]; const LLImportMaterial& material = instance.mMaterial[binding]; diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 5e028e6d43..2f4d2a93b2 100755 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -107,14 +107,6 @@ LLFloaterReporter::LLFloaterReporter(const LLSD& key) { } -// static -void LLFloaterReporter::processRegionInfo(LLMessageSystem* msg) -{ - if ( LLFloaterReg::instanceVisible("reporter") ) - { - LLNotificationsUtil::add("HelpReportAbuseEmailLL"); - }; -} // virtual BOOL LLFloaterReporter::postBuild() { @@ -148,16 +140,6 @@ BOOL LLFloaterReporter::postBuild() mDefaultSummary = getChild<LLUICtrl>("details_edit")->getValue().asString(); - // send a message and ask for information about this region - - // result comes back in processRegionInfo(..) - LLMessageSystem* msg = gMessageSystem; - msg->newMessage("RequestRegionInfo"); - msg->nextBlock("AgentData"); - msg->addUUID("AgentID", gAgent.getID()); - msg->addUUID("SessionID", gAgent.getSessionID()); - gAgent.sendReliableMessage(); - - // abuser name is selected from a list LLUICtrl* le = getChild<LLUICtrl>("abuser_name_edit"); le->setEnabled( false ); diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h index 5eb5c20665..d857528f10 100755 --- a/indra/newview/llfloaterreporter.h +++ b/indra/newview/llfloaterreporter.h @@ -100,10 +100,7 @@ public: static void uploadDoneCallback(const LLUUID &uuid, void* user_data, S32 result, LLExtStat ext_status); static void addDescription(const std::string& description, LLMeanCollisionData *mcd = NULL); static void setDescription(const std::string& description, LLMeanCollisionData *mcd = NULL); - - // static - static void processRegionInfo(LLMessageSystem* msg); - + void setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id); private: diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index b27a42cb8e..16fa4684ab 100755 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -448,9 +448,9 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) floater->getChild<LLUICtrl>("file_size_label")->setTextArg("[SIZE]", got_snap ? bytes_string : floater->getString("unknown")); floater->getChild<LLUICtrl>("file_size_label")->setColor( - shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD - && got_bytes - && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" )); + shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD + && got_bytes + && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLUIColor(LLColor4::red) : LLUIColorTable::instance().getColor( "LabelTextColor" )); // Update the width and height spinners based on the corresponding resolution combos. (?) switch(shot_type) @@ -600,7 +600,11 @@ void LLFloaterSnapshot::Impl::onClickUICheck(LLUICtrl *ctrl, void* data) LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; if (view) { - checkAutoSnapshot(getPreviewView(view), TRUE); + LLSnapshotLivePreview* previewp = getPreviewView(view); + if(previewp) + { + previewp->updateSnapshot(TRUE, TRUE); + } updateControls(view); } } @@ -614,7 +618,11 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data) LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; if (view) { - checkAutoSnapshot(getPreviewView(view), TRUE); + LLSnapshotLivePreview* previewp = getPreviewView(view); + if(previewp) + { + previewp->updateSnapshot(TRUE, TRUE); + } updateControls(view); } } diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 7477b02867..6dbb202c9d 100755 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -92,6 +92,7 @@ // Globals LLFloaterTools *gFloaterTools = NULL; bool LLFloaterTools::sShowObjectCost = true; +bool LLFloaterTools::sPreviousFocusOnAvatar = false; const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] = { @@ -891,6 +892,12 @@ void LLFloaterTools::onClose(bool app_quitting) // prepare content for next call mPanelContents->clearContents(); + + if(sPreviousFocusOnAvatar) + { + sPreviousFocusOnAvatar = false; + gAgentCamera.setAllowChangeToFollow(TRUE); + } } void click_popup_info(void*) diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 189bae46c2..df481b8d4c 100755 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -201,11 +201,13 @@ private: std::map<std::string, std::string> mStatusText; + protected: LLSD mMediaSettings; public: static bool sShowObjectCost; + static bool sPreviousFocusOnAvatar; }; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index 56e671d902..86f9da6318 100755 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -1970,7 +1970,8 @@ void LLGroupMgr::processGroupBanRequest(const LLSD& content) LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); if (!gdatap) return; - + + gdatap->clearBanList(); LLSD::map_const_iterator i = content["ban_list"].beginMap(); LLSD::map_const_iterator iEnd = content["ban_list"].endMap(); for(;i != iEnd; ++i) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 5d3a11e245..b8b6bdaa11 100755 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1295,8 +1295,15 @@ void LLIMModel::sendMessage(const std::string& utf8_text, gAgent.sendReliableMessage(); } + bool is_group_chat = false; + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id); + if(session) + { + is_group_chat = session->isGroupSessionType(); + } + // If there is a mute list and this is not a group chat... - if ( LLMuteList::getInstance() ) + if ( LLMuteList::getInstance() && !is_group_chat) { // ... the target should not be in our mute list for some message types. // Auto-remove them if present. @@ -1345,7 +1352,6 @@ void LLIMModel::sendMessage(const std::string& utf8_text, if (is_not_group_id) { - LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id); if( session == 0)//??? shouldn't really happen { LLRecentPeople::instance().add(other_participant_id); diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp index d04378daaf..47560341e7 100755 --- a/indra/newview/llinspecttoast.cpp +++ b/indra/newview/llinspecttoast.cpp @@ -47,6 +47,7 @@ public: /*virtual*/ void onOpen(const LLSD& notification_id); /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); + /*virtual*/ void removeChild(LLView* child); private: void onToastDestroy(LLToast * toast); @@ -98,7 +99,7 @@ void LLInspectToast::onOpen(const LLSD& notification_id) panel->setMouseOpaque(FALSE); if(mPanel != NULL && mPanel->getParent() == this) { - removeChild(mPanel); + LLInspect::removeChild(mPanel); } addChild(panel); panel->setFocus(TRUE); @@ -121,6 +122,16 @@ BOOL LLInspectToast::handleToolTip(S32 x, S32 y, MASK mask) return LLFloater::handleToolTip(x, y, mask); } +// virtual +void LLInspectToast::removeChild(LLView* child) +{ + if (mPanel == child) + { + mPanel = NULL; + } + LLInspect::removeChild(child); +} + void LLInspectToast::onToastDestroy(LLToast * toast) { closeFloater(false); diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index 3ed876af87..003bbcafed 100755 --- a/indra/newview/llinventoryfilter.cpp +++ b/indra/newview/llinventoryfilter.cpp @@ -70,7 +70,8 @@ LLInventoryFilter::LLInventoryFilter(const Params& p) : mName(p.name), mFilterModified(FILTER_NONE), mEmptyLookupMessage("InventoryNoMatchingItems"), - mFilterOps(p.filter_ops), + mFilterOps(p.filter_ops), + mBackupFilterOps(mFilterOps), mFilterSubString(p.substring), mCurrentGeneration(0), mFirstRequiredGeneration(0), @@ -634,6 +635,21 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) setModified(FILTER_RESTART); } + // Cancel out filter links once the search string is modified + if (mFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + if (mBackupFilterOps.mFilterLinks == FILTERLINK_ONLY_LINKS) + { + // we started viewer/floater in 'only links' mode + mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; + } + else + { + mFilterOps = mBackupFilterOps; + setModified(FILTER_RESTART); + } + } + // Cancel out UUID once the search string is modified if (mFilterOps.mFilterTypes == FILTERTYPE_UUID) { @@ -641,11 +657,6 @@ void LLInventoryFilter::setFilterSubString(const std::string& string) mFilterOps.mFilterUUID = LLUUID::null; setModified(FILTER_RESTART); } - - // Cancel out filter links once the search string is modified - { - mFilterOps.mFilterLinks = FILTERLINK_INCLUDE_LINKS; - } } } @@ -836,6 +847,22 @@ void LLInventoryFilter::setShowFolderState(EFolderShow state) } } +void LLInventoryFilter::setFindAllLinksMode(const std::string &search_name, const LLUUID& search_id) +{ + // Save a copy of settings so that we will be able to restore it later + // but make sure we are not searching for links already + if(mFilterOps.mFilterLinks != FILTERLINK_ONLY_LINKS) + { + mBackupFilterOps = mFilterOps; + } + + // set search options + setFilterSubString(search_name); + setFilterUUID(search_id); + setShowFolderState(SHOW_NON_EMPTY_FOLDERS); + setFilterLinks(FILTERLINK_ONLY_LINKS); +} + void LLInventoryFilter::markDefault() { mDefaultFilterOps = mFilterOps; diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h index abc4ae347c..eee36b7e40 100755 --- a/indra/newview/llinventoryfilter.h +++ b/indra/newview/llinventoryfilter.h @@ -204,6 +204,9 @@ public: void setFilterLinks(U64 filter_link); U64 getFilterLinks() const; + // sets params for Link-only search and backs up search settings for future restoration + void setFindAllLinksMode(const std::string &search_name, const LLUUID& search_id); + // +-------------------------------------------------------------------+ // + Execution And Results // +-------------------------------------------------------------------+ @@ -278,6 +281,7 @@ private: FilterOps mFilterOps; FilterOps mDefaultFilterOps; + FilterOps mBackupFilterOps; // for backup purposes when leaving 'search link' mode std::string mFilterSubString; std::string mFilterSubStringOrig; diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp index 218590e5c3..990343c205 100755 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -737,7 +737,7 @@ void show_item_original(const LLUUID& item_uuid) { return; } - active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_NO); + active_panel->setSelection(gInventory.getLinkedItemID(item_uuid), TAKE_FOCUS_YES); if(do_reset_inventory_filter) { @@ -2473,7 +2473,7 @@ void LLInventoryAction::doToSelected(LLInventoryModel* model, LLFolderView* root { LLSD args; args["QUESTION"] = LLTrans::getString(root->getSelectedCount() > 1 ? "DeleteItems" : "DeleteItem"); - LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLInventoryAction::onItemsRemovalConfirmation, _1, _2, root)); + LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&onItemsRemovalConfirmation, _1, _2, root->getHandle())); // Note: marketplace listings will be updated in the callback if delete confirmed return; } @@ -2583,18 +2583,19 @@ void LLInventoryAction::removeItemFromDND(LLFolderView* root) } } -void LLInventoryAction::onItemsRemovalConfirmation( const LLSD& notification, const LLSD& response, LLFolderView* root ) +void LLInventoryAction::onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle<LLFolderView> root) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) + if (option == 0 && !root.isDead() && !root.get()->isDead()) { - //Need to remove item from DND before item is removed from root folder view - //because once removed from root folder view the item is no longer a selected item - removeItemFromDND(root); - root->removeSelectedItems(); - - // Update the marketplace listings that have been affected by the operation - updateMarketplaceFolders(); + LLFolderView* folder_root = root.get(); + //Need to remove item from DND before item is removed from root folder view + //because once removed from root folder view the item is no longer a selected item + removeItemFromDND(folder_root); + folder_root->removeSelectedItems(); + + // Update the marketplace listings that have been affected by the operation + updateMarketplaceFolders(); } } @@ -2650,4 +2651,3 @@ void LLInventoryAction::updateMarketplaceFolders() } - diff --git a/indra/newview/llinventoryfunctions.h b/indra/newview/llinventoryfunctions.h index 687aa57d7f..6ae8fd0f13 100755 --- a/indra/newview/llinventoryfunctions.h +++ b/indra/newview/llinventoryfunctions.h @@ -30,6 +30,7 @@ #include "llinventorymodel.h" #include "llinventory.h" +#include "llhandle.h" #include "llwearabletype.h" // compute_stock_count() return error code @@ -444,7 +445,8 @@ public: *******************************************************************************/ class LLFolderViewItem; class LLFolderViewFolder; - +class LLInventoryModel; +class LLFolderView; class LLInventoryState { @@ -456,13 +458,12 @@ public: struct LLInventoryAction { - static void doToSelected(class LLInventoryModel* model, class LLFolderView* root, const std::string& action, BOOL user_confirm = TRUE); - static void callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); - static void callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void doToSelected(LLInventoryModel* model, LLFolderView* root, const std::string& action, BOOL user_confirm = TRUE); + static void callback_doToSelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void callback_copySelected(const LLSD& notification, const LLSD& response, class LLInventoryModel* model, class LLFolderView* root, const std::string& action); + static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLHandle<LLFolderView> root); + static void removeItemFromDND(LLFolderView* root); - static void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response, LLFolderView* root); - static void removeItemFromDND(LLFolderView* root); - private: static void buildMarketplaceFolders(LLFolderView* root); static void updateMarketplaceFolders(); diff --git a/indra/newview/lllocalbitmaps.cpp b/indra/newview/lllocalbitmaps.cpp index 1380345164..4e9947fca0 100755 --- a/indra/newview/lllocalbitmaps.cpp +++ b/indra/newview/lllocalbitmaps.cpp @@ -128,7 +128,7 @@ LLLocalBitmap::LLLocalBitmap(std::string filename) LLLocalBitmap::~LLLocalBitmap() { // replace IDs with defaults, if set to do so. - if(LL_LOCAL_REPLACE_ON_DEL && mValid) // fix for STORM-1837 + if(LL_LOCAL_REPLACE_ON_DEL && mValid && gAgentAvatarp) // fix for STORM-1837 { replaceIDs(mWorldID, IMG_DEFAULT); LLLocalBitmapMgr::doRebake(); diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 8d21fda8f9..cf04c5f7a5 100755 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -862,11 +862,14 @@ void LLLocationInputCtrl::refreshParcelIcons() bool see_avs = current_parcel->getSeeAVs(); bool pathfinding_dynamic_enabled = agent_region->dynamicPathfindingEnabled(); + bool is_parcel_owner = (gAgent.getID() == current_parcel->getOwnerID()); + bool allow_group_modify = (gAgent.isInGroup(current_parcel->getGroupID()) && current_parcel->getAllowGroupModify()); + // Most icons are "block this ability" mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); mParcelIcon[FLY_ICON]->setVisible( !allow_fly ); mParcelIcon[PUSH_ICON]->setVisible( !allow_push ); - mParcelIcon[BUILD_ICON]->setVisible( !allow_build ); + mParcelIcon[BUILD_ICON]->setVisible( !allow_build && !is_parcel_owner && !allow_group_modify ); mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts ); mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage ); mParcelIcon[PATHFINDING_DIRTY_ICON]->setVisible(mIsNavMeshDirty); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 648056484e..9a0bd9d1bc 100755 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -72,6 +72,7 @@ #include "bufferstream.h" #include "llfasttimer.h" #include "llcorehttputil.h" +#include "lltrans.h" #include "boost/lexical_cast.hpp" @@ -693,12 +694,16 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, args["MESSAGE"] = message; args["IDENTIFIER"] = identifier; args["LABEL"] = model_name; - gMeshRepo.uploadError(args); // Log details. LL_WARNS(LOG_MESH) << "Error in stage: " << stage << ", Reason: " << status.toString() << " (" << status.toTerseString() << ")" << LL_ENDL; + + std::ostringstream details; + typedef std::set<std::string> mav_errors_set_t; + mav_errors_set_t mav_errors; + if (content.has("error")) { const LLSD& err = content["error"]; @@ -708,8 +713,11 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, << "', message '" << err["message"].asString() << "', id '" << err["identifier"].asString() << "'" << LL_ENDL; + if (err.has("errors")) { + details << std::endl << std::endl; + S32 error_num = 0; const LLSD& err_list = err["errors"]; for (LLSD::array_const_iterator it = err_list.beginArray(); @@ -717,6 +725,13 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, ++it) { const LLSD& err_entry = *it; + std::string message = err_entry["message"]; + + if (message.length() > 0) + { + mav_errors.insert(message); + } + LL_WARNS(LOG_MESH) << " error[" << error_num << "]:" << LL_ENDL; for (LLSD::map_const_iterator map_it = err_entry.beginMap(); map_it != err_entry.endMap(); @@ -733,6 +748,21 @@ void log_upload_error(LLCore::HttpStatus status, const LLSD& content, { LL_WARNS(LOG_MESH) << "Bad response to mesh request, no additional error information available." << LL_ENDL; } + + mav_errors_set_t::iterator mav_errors_it = mav_errors.begin(); + for (; mav_errors_it != mav_errors.end(); ++mav_errors_it) + { + std::string mav_details = "Mav_Details_" + *mav_errors_it; + details << "Message: '" << *mav_errors_it << "': " << LLTrans::getString(mav_details) << std::endl << std::endl; + } + + std::string details_str = details.str(); + if (details_str.length() > 0) + { + args["DETAILS"] = details_str; + } + + gMeshRepo.uploadError(args); } LLMeshRepoThread::LLMeshRepoThread() diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 65ac11092c..d79baf90e7 100755 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -646,6 +646,22 @@ BOOL LLMuteList::isMuted(const LLUUID& id, const std::string& name, U32 flags) c return legacy_it != mLegacyMutes.end(); } +BOOL LLMuteList::isMuted(const std::string& username, U32 flags) const +{ + mute_set_t::const_iterator mute_iter = mMutes.begin(); + while(mute_iter != mMutes.end()) + { + // can't convert "leha.test" into "LeHa TesT" so username comparison is more reliable + if (mute_iter->mType == LLMute::AGENT + && LLCacheName::buildUsername(mute_iter->mName) == username) + { + return TRUE; + } + mute_iter++; + } + return FALSE; +} + //----------------------------------------------------------------------------- // requestFromServer() //----------------------------------------------------------------------------- diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index 3e998b4f0e..4e7b6ee880 100755 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -101,7 +101,10 @@ public: // Name is required to test against legacy text-only mutes. BOOL isMuted(const LLUUID& id, const std::string& name = LLStringUtil::null, U32 flags = 0) const; - + + // Workaround for username-based mute search, a lot of string conversions so use cautiously + BOOL isMuted(const std::string& username, U32 flags = 0) const; + // Alternate (convenience) form for places we don't need to pass the name, but do need flags BOOL isMuted(const LLUUID& id, U32 flags) const { return isMuted(id, LLStringUtil::null, flags); }; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 54e4c6c1da..79988a0800 100755 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -70,7 +70,7 @@ LLNameListCtrl::LLNameListCtrl(const LLNameListCtrl::Params& p) // public LLScrollListItem* LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos, - BOOL enabled, const std::string& suffix) + BOOL enabled, const std::string& suffix, const std::string& prefix) { //LL_INFOS() << "LLNameListCtrl::addNameItem " << agent_id << LL_ENDL; @@ -79,7 +79,7 @@ LLScrollListItem* LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPositi item.enabled = enabled; item.target = INDIVIDUAL; - return addNameItemRow(item, pos, suffix); + return addNameItemRow(item, pos, suffix, prefix); } // virtual, public @@ -291,7 +291,8 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p LLScrollListItem* LLNameListCtrl::addNameItemRow( const LLNameListCtrl::NameItem& name_item, EAddPosition pos, - const std::string& suffix) + const std::string& suffix, + const std::string& prefix) { LLUUID id = name_item.value().asUUID(); LLNameListItem* item = new LLNameListItem(name_item,name_item.target() == GROUP); @@ -365,7 +366,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow( LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { - cell->setValue(fullname); + cell->setValue(prefix + fullname); } dirtyColumns(); diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index 2c40eeaaca..515962df7d 100755 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -129,11 +129,12 @@ public: // Add a user to the list by name. It will be added, the name // requested from the cache, and updated as necessary. LLScrollListItem* addNameItem(const LLUUID& agent_id, EAddPosition pos = ADD_BOTTOM, - BOOL enabled = TRUE, const std::string& suffix = LLStringUtil::null); + BOOL enabled = TRUE, const std::string& suffix = LLStringUtil::null, const std::string& prefix = LLStringUtil::null); LLScrollListItem* addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM); /*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); - LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, const std::string& suffix = LLStringUtil::null); + LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, const std::string& suffix = LLStringUtil::null, + const std::string& prefix = LLStringUtil::null); // Add a user to the list by name. It will be added, the name // requested from the cache, and updated as necessary. diff --git a/indra/newview/llpanelgroupbulk.cpp b/indra/newview/llpanelgroupbulk.cpp index 76792cc6fd..cffda02aa0 100644 --- a/indra/newview/llpanelgroupbulk.cpp +++ b/indra/newview/llpanelgroupbulk.cpp @@ -97,6 +97,7 @@ void LLPanelGroupBulkImpl::callbackClickAdd(void* userdata) if(picker) { root_floater->addDependentFloater(picker); + LLGroupMgr::getInstance()->sendCapGroupMembersRequest(panelp->mImplementation->mGroupID); } } } diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index a660cb3b21..d4894d4a42 100755 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -128,6 +128,10 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); std::string name = parcel_mgr->getAgentParcelName(); LLVector3 agent_pos = gAgent.getPositionAgent(); + + std::string desc; + LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, agent_pos); + mNotesEditor->setText(desc); if (name.empty()) { @@ -143,7 +147,7 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) } else { - region_name = getString("unknown"); + region_name = desc; } mLandmarkTitleEditor->setText(llformat("%s (%d, %d, %d)", @@ -154,10 +158,6 @@ void LLPanelLandmarkInfo::setInfoType(EInfoType type) mLandmarkTitleEditor->setText(name); } - std::string desc; - LLAgentUI::buildLocationString(desc, LLAgentUI::LOCATION_FORMAT_FULL, agent_pos); - mNotesEditor->setText(desc); - // Moved landmark creation here from LLPanelLandmarkInfo::processParcelInfo() // because we use only agent's current coordinates instead of waiting for // remote parcel request to complete. diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index cc8c3edd51..953f234a53 100755 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -229,7 +229,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, } } server_choice_combo->sortByName(); - server_choice_combo->addSeparator(ADD_TOP); LL_DEBUGS("AppInit")<<"adding current "<<current_grid<<LL_ENDL; server_choice_combo->add(LLGridManager::getInstance()->getGridLabel(), current_grid, diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 17c0b226d0..7aaf9510eb 100755 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -1134,14 +1134,12 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata) const LLUUID& item_id = static_cast<LLFolderViewModelItemInventory*>(current_item->getViewModelItem())->getUUID(); const std::string &item_name = current_item->getViewModelItem()->getName(); mFilterSubString = item_name; + LLInventoryFilter &filter = mActivePanel->getFilter(); - filter.setFilterSubString(item_name); - mFilterEditor->setText(item_name); + filter.setFindAllLinksMode(item_name, item_id); + mFilterEditor->setText(item_name); mFilterEditor->setFocus(TRUE); - filter.setFilterUUID(item_id); - filter.setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - filter.setFilterLinks(LLInventoryFilter::FILTERLINK_ONLY_LINKS); } } diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 39cf7d4222..c8af5b6718 100755 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1163,7 +1163,13 @@ void LLTaskNotecardBridge::openItem() { return; } - if(object->permModify() || gAgent.isGodlike()) + + // Note: even if we are not allowed to modify copyable notecard, we should be able to view it + LLInventoryItem *item = dynamic_cast<LLInventoryItem*>(object->getInventoryObject(mUUID)); + BOOL item_copy = item && gAgent.allowOperation(PERM_COPY, item->getPermissions(), GP_OBJECT_MANIPULATE); + if( item_copy + || object->permModify() + || gAgent.isGodlike()) { LLPreviewNotecard* preview = LLFloaterReg::showTypedInstance<LLPreviewNotecard>("preview_notecard", LLSD(mUUID), TAKE_FOCUS_YES); if (preview) diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index e853b2d050..1a665d4c1d 100755 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -53,6 +53,8 @@ #include "llviewerparcelmgr.h" #include "llviewerregion.h" +const F64 COVENANT_REFRESH_TIME_SEC = 60.0f; + static LLPanelInjector<LLPanelPlaceProfile> t_place_profile("panel_place_profile"); // Statics for textures filenames @@ -76,6 +78,7 @@ static std::string icon_see_avs_off; LLPanelPlaceProfile::LLPanelPlaceProfile() : LLPanelPlaceInfo(), + mNextCovenantUpdateTime(0), mForSalePanel(NULL), mYouAreHerePanel(NULL), mSelectedParcelID(-1), @@ -162,6 +165,9 @@ BOOL LLPanelPlaceProfile::postBuild() icon_see_avs_on = getString("icon_SeeAVs_On"); icon_see_avs_off = getString("icon_SeeAVs_Off"); + mLastSelectedRegionID = LLUUID::null; + mNextCovenantUpdateTime = 0; + return TRUE; } @@ -170,6 +176,9 @@ void LLPanelPlaceProfile::resetLocation() { LLPanelPlaceInfo::resetLocation(); + mLastSelectedRegionID = LLUUID::null; + mNextCovenantUpdateTime = 0; + mForSalePanel->setVisible(FALSE); mYouAreHerePanel->setVisible(FALSE); @@ -330,13 +339,20 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, if (!region || !parcel) return; - // send EstateCovenantInfo message - LLMessageSystem *msg = gMessageSystem; - msg->newMessage("EstateCovenantRequest"); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); - msg->sendReliable(region->getHost()); + if (mLastSelectedRegionID != region->getRegionID() + || mNextCovenantUpdateTime < LLTimer::getElapsedSeconds()) + { + // send EstateCovenantInfo message + // Note: LLPanelPlaceProfile doesn't change Covenant's content and any + // changes made by Estate floater should be requested by Estate floater + LLMessageSystem *msg = gMessageSystem; + msg->newMessage("EstateCovenantRequest"); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID()); + msg->sendReliable(region->getHost()); + mNextCovenantUpdateTime = LLTimer::getElapsedSeconds() + COVENANT_REFRESH_TIME_SEC; + } LLParcelData parcel_data; diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index 4547e14b2e..3d2654fc12 100755 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -71,6 +71,7 @@ private: */ S32 mSelectedParcelID; LLUUID mLastSelectedRegionID; + F64 mNextCovenantUpdateTime; //seconds since client start LLPanel* mForSalePanel; LLPanel* mYouAreHerePanel; diff --git a/indra/newview/llpanelsnapshotinventory.cpp b/indra/newview/llpanelsnapshotinventory.cpp index c8a201a5c8..c55e230b5e 100755 --- a/indra/newview/llpanelsnapshotinventory.cpp +++ b/indra/newview/llpanelsnapshotinventory.cpp @@ -48,6 +48,8 @@ public: /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + void onResolutionCommit(LLUICtrl* ctrl); + private: /*virtual*/ std::string getWidthSpinnerName() const { return "inventory_snapshot_width"; } /*virtual*/ std::string getHeightSpinnerName() const { return "inventory_snapshot_height"; } @@ -72,6 +74,8 @@ BOOL LLPanelSnapshotInventory::postBuild() { getChild<LLSpinCtrl>(getWidthSpinnerName())->setAllowEdit(FALSE); getChild<LLSpinCtrl>(getHeightSpinnerName())->setAllowEdit(FALSE); + + getChild<LLUICtrl>(getImageSizeComboName())->setCommitCallback(boost::bind(&LLPanelSnapshotInventory::onResolutionCommit, this, _1)); return LLPanelSnapshot::postBuild(); } @@ -89,6 +93,13 @@ void LLPanelSnapshotInventory::updateControls(const LLSD& info) getChild<LLUICtrl>("save_btn")->setEnabled(have_snapshot); } +void LLPanelSnapshotInventory::onResolutionCommit(LLUICtrl* ctrl) +{ + BOOL current_window_selected = (getChild<LLComboBox>(getImageSizeComboName())->getCurrentIndex() == 3); + getChild<LLSpinCtrl>(getWidthSpinnerName())->setVisible(!current_window_selected); + getChild<LLSpinCtrl>(getHeightSpinnerName())->setVisible(!current_window_selected); +} + void LLPanelSnapshotInventory::onSend() { LLFloaterSnapshot::saveTexture(); diff --git a/indra/newview/llpanelsnapshotlocal.cpp b/indra/newview/llpanelsnapshotlocal.cpp index 43e38b95e2..01dfdc4ece 100755 --- a/indra/newview/llpanelsnapshotlocal.cpp +++ b/indra/newview/llpanelsnapshotlocal.cpp @@ -58,6 +58,8 @@ private: /*virtual*/ LLFloaterSnapshot::ESnapshotFormat getImageFormat() const; /*virtual*/ void updateControls(const LLSD& info); + S32 mLocalFormat; + void onFormatComboCommit(LLUICtrl* ctrl); void onQualitySliderCommit(LLUICtrl* ctrl); void onSaveFlyoutCommit(LLUICtrl* ctrl); @@ -67,6 +69,7 @@ static LLPanelInjector<LLPanelSnapshotLocal> panel_class("llpanelsnapshotlocal") LLPanelSnapshotLocal::LLPanelSnapshotLocal() { + mLocalFormat = gSavedSettings.getS32("SnapshotFormat"); mCommitCallbackRegistrar.add("Local.Cancel", boost::bind(&LLPanelSnapshotLocal::cancel, this)); } @@ -83,6 +86,10 @@ BOOL LLPanelSnapshotLocal::postBuild() // virtual void LLPanelSnapshotLocal::onOpen(const LLSD& key) { + if(gSavedSettings.getS32("SnapshotFormat") != mLocalFormat) + { + getChild<LLComboBox>("local_format_combo")->selectNthItem(mLocalFormat); + } LLPanelSnapshot::onOpen(key); } @@ -129,6 +136,7 @@ void LLPanelSnapshotLocal::updateControls(const LLSD& info) void LLPanelSnapshotLocal::onFormatComboCommit(LLUICtrl* ctrl) { + mLocalFormat = getImageFormat(); // will call updateControls() LLFloaterSnapshot::getInstance()->notify(LLSD().with("image-format-change", true)); } diff --git a/indra/newview/llpanelsnapshotpostcard.cpp b/indra/newview/llpanelsnapshotpostcard.cpp index 8e37b1418c..8e37b1418c 100755..100644 --- a/indra/newview/llpanelsnapshotpostcard.cpp +++ b/indra/newview/llpanelsnapshotpostcard.cpp diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 109013498e..ac9a31ce4e 100755 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -313,11 +313,14 @@ void LLPanelTopInfoBar::updateParcelIcons() bool allow_damage = vpm->allowAgentDamage(agent_region, current_parcel); bool see_avs = current_parcel->getSeeAVs(); + bool is_parcel_owner = (gAgent.getID() == current_parcel->getOwnerID()); + bool allow_group_modify = (gAgent.isInGroup(current_parcel->getGroupID()) && current_parcel->getAllowGroupModify()); + // Most icons are "block this ability" mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); mParcelIcon[FLY_ICON]->setVisible( !allow_fly ); mParcelIcon[PUSH_ICON]->setVisible( !allow_push ); - mParcelIcon[BUILD_ICON]->setVisible( !allow_build ); + mParcelIcon[BUILD_ICON]->setVisible( !allow_build && !is_parcel_owner && !allow_group_modify ); mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts ); mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage ); mDamageText->setVisible(allow_damage); diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp index bf2652cb49..fb21b980dc 100755 --- a/indra/newview/llpreview.cpp +++ b/indra/newview/llpreview.cpp @@ -49,6 +49,7 @@ #include "llviewerinventory.h" #include "llviewerwindow.h" #include "lltrans.h" +#include "roles_constants.h" // Constants @@ -230,8 +231,23 @@ void LLPreview::refreshFromItem() } getChild<LLUICtrl>("desc")->setValue(item->getDescription()); - BOOL can_agent_manipulate = item->getPermissions().allowModifyBy(gAgent.getID()); - getChildView("desc")->setEnabled(can_agent_manipulate); + getChildView("desc")->setEnabled(canModify(mObjectUUID, item)); +} + +// static +BOOL LLPreview::canModify(const LLUUID taskUUID, const LLInventoryItem* item) +{ + if (taskUUID.notNull()) + { + LLViewerObject* object = gObjectList.findObject(taskUUID); + if(object && !object->permModify()) + { + // No permission to edit in-world inventory + return FALSE; + } + } + + return item && gAgent.allowOperation(PERM_MODIFY, item->getPermissions(), GP_OBJECT_MANIPULATE); } // static diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h index 759430c3a5..49c114720b 100755 --- a/indra/newview/llpreview.h +++ b/indra/newview/llpreview.h @@ -105,7 +105,11 @@ public: // llview /*virtual*/ void draw(); void refreshFromItem(); - + + // We can't modify Item or description in preview if either in-world Object + // or Item itself is unmodifiable + static BOOL canModify(const LLUUID taskUUID, const LLInventoryItem* item); + protected: virtual void onCommit(); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index 35ac0537a3..f83532ea83 100755 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -37,6 +37,7 @@ #include "lllineeditor.h" #include "lluictrlfactory.h" #include "lluictrlfactory.h" +#include "lldatapacker.h" extern LLAgent gAgent; @@ -109,6 +110,13 @@ void LLPreviewAnim::play(const LLSD& param) } else { + // BENTO TEMP + LLKeyframeMotion *motionp = dynamic_cast<LLKeyframeMotion*>(gAgentAvatarp->findMotion(itemID)); + if (motionp && motionp->isLoaded()) + { + //motionp->dumpToFile(item->getName()); + } + gAgentAvatarp->startMotion(item->getAssetUUID()); } diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 1308d1e9a7..9f88b0db5f 100755 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -218,7 +218,7 @@ void LLPreviewNotecard::loadAsset() LLPermissions perm(item->getPermissions()); BOOL is_owner = gAgent.allowOperation(PERM_OWNER, perm, GP_OBJECT_MANIPULATE); BOOL allow_copy = gAgent.allowOperation(PERM_COPY, perm, GP_OBJECT_MANIPULATE); - BOOL allow_modify = gAgent.allowOperation(PERM_MODIFY, perm, GP_OBJECT_MANIPULATE); + BOOL allow_modify = canModify(mObjectUUID, item); if (allow_copy || gAgent.isGodlike()) { @@ -338,10 +338,7 @@ void LLPreviewNotecard::onLoadComplete(LLVFS *vfs, } previewEditor->makePristine(); - - const LLInventoryItem* item = preview->getItem(); - BOOL modifiable = item && gAgent.allowOperation(PERM_MODIFY, - item->getPermissions(), GP_OBJECT_MANIPULATE); + BOOL modifiable = preview->canModify(preview->mObjectID, preview->getItem()); preview->setEnabled(modifiable); preview->mAssetStatus = PREVIEW_ASSET_LOADED; } diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp index 179a73413e..02912f12a9 100644 --- a/indra/newview/llscenemonitor.cpp +++ b/indra/newview/llscenemonitor.cpp @@ -39,6 +39,7 @@ #include "llspatialpartition.h" #include "llagent.h" #include "pipeline.h" +#include "llviewerparcelmgr.h" #include "llviewerpartsim.h" LLSceneMonitorView* gSceneMonitorView = NULL; @@ -702,6 +703,13 @@ LLSceneMonitorView::LLSceneMonitorView(const LLRect& rect) setCanMinimize(false); setCanClose(true); + + sTeleportFinishConnection = LLViewerParcelMgr::getInstance()->setTeleportFinishedCallback(boost::bind(&LLSceneMonitorView::onTeleportFinished, this)); +} + +LLSceneMonitorView::~LLSceneMonitorView() +{ + sTeleportFinishConnection.disconnect(); } void LLSceneMonitorView::onClose(bool app_quitting) @@ -714,6 +722,14 @@ void LLSceneMonitorView::onClickCloseBtn(bool app_quitting) setVisible(false); } +void LLSceneMonitorView::onTeleportFinished() +{ + if(isInVisibleChain()) + { + LLSceneMonitor::getInstance()->reset(); + } +} + void LLSceneMonitorView::onVisibilityChange(BOOL visible) { if (!LLGLSLShader::sNoFixedFunction && visible) diff --git a/indra/newview/llscenemonitor.h b/indra/newview/llscenemonitor.h index 5bde3b5aab..2b6ea57b96 100644 --- a/indra/newview/llscenemonitor.h +++ b/indra/newview/llscenemonitor.h @@ -64,10 +64,12 @@ public: void dumpToFile(std::string file_name); bool hasResults() const { return mSceneLoadRecording.getResults().getDuration() != S32Seconds(0);} + void reset(); + private: void freezeScene(); void unfreezeScene(); - void reset(); + LLRenderTarget& getCaptureTarget(); void generateDitheringTexture(S32 width, S32 height); @@ -109,7 +111,7 @@ class LLSceneMonitorView : public LLFloater { public: LLSceneMonitorView(const LLRect& rect); - + ~LLSceneMonitorView(); virtual void draw(); virtual void onVisibilityChange(BOOL visible); @@ -117,6 +119,8 @@ public: protected: virtual void onClose(bool app_quitting=false); virtual void onClickCloseBtn(bool app_quitting=false); + void onTeleportFinished(); + boost::signals2::connection sTeleportFinishConnection; }; extern LLSceneMonitorView* gSceneMonitorView; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 69c577f445..4fafbf917b 100755 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -620,10 +620,33 @@ bool LLSelectMgr::linkObjects() bool LLSelectMgr::unlinkObjects() { + S32 min_objects_for_confirm = gSavedSettings.getS32("MinObjectsForUnlinkConfirm"); + S32 unlink_object_count = mSelectedObjects->getObjectCount(); // clears out nodes with NULL objects + if (unlink_object_count >= min_objects_for_confirm + && unlink_object_count > mSelectedObjects->getRootObjectCount()) + { + // total count > root count means that there are childer inside and that there are linksets that will be unlinked + LLNotificationsUtil::add("ConfirmUnlink", LLSD(), LLSD(), boost::bind(&LLSelectMgr::confirmUnlinkObjects, this, _1, _2)); + return true; + } + LLSelectMgr::getInstance()->sendDelink(); return true; } +void LLSelectMgr::confirmUnlinkObjects(const LLSD& notification, const LLSD& response) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + // if Cancel pressed + if (option == 1) + { + return; + } + + LLSelectMgr::getInstance()->sendDelink(); + return; +} + // in order to link, all objects must have the same owner, and the // agent must have the ability to modify all of the objects. However, // we're not answering that question with this method. The question diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index 29c111b24f..87d25e3a8c 100755 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -506,6 +506,8 @@ public: bool unlinkObjects(); + void confirmUnlinkObjects(const LLSD& notification, const LLSD& response); + bool enableLinkObjects(); bool enableUnlinkObjects(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 6622fa7d9c..09cd4bb6f7 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -242,7 +242,8 @@ static LLVector3 gAgentStartLookAt(1.0f, 0.f, 0.f); static std::string gAgentStartLocation = "safe"; static bool mLoginStatePastUI = false; -const S32 DEFAULT_MAX_AGENT_GROUPS = 25; +const S32 DEFAULT_MAX_AGENT_GROUPS = 42; +const S32 ALLOWED_MAX_AGENT_GROUPS = 500; boost::scoped_ptr<LLEventPump> LLStartUp::sStateWatcher(new LLEventStream("StartupState")); boost::scoped_ptr<LLStartupListener> LLStartUp::sListener(new LLStartupListener()); @@ -1259,7 +1260,7 @@ bool idle_startup() LLPostProcess::initClass(); display_startup(); - LLAvatarAppearance::initClass(); + LLAvatarAppearance::initClass(gSavedSettings.getString("AvatarFileName"),gSavedSettings.getString("SkeletonFileName")); display_startup(); LLViewerObject::initVOClasses(); @@ -3509,15 +3510,24 @@ bool process_login_success_response() LLViewerMedia::openIDSetup(openid_url, openid_token); } - if(response.has("max-agent-groups")) { - std::string max_agent_groups(response["max-agent-groups"]); - gMaxAgentGroups = atoi(max_agent_groups.c_str()); - LL_INFOS("LLStartup") << "gMaxAgentGroups read from login.cgi: " - << gMaxAgentGroups << LL_ENDL; + gMaxAgentGroups = DEFAULT_MAX_AGENT_GROUPS; + if(response.has("max-agent-groups")) + { + S32 agent_groups = atoi(std::string(response["max-agent-groups"]).c_str()); + if (agent_groups > 0 && agent_groups <= ALLOWED_MAX_AGENT_GROUPS) + { + gMaxAgentGroups = agent_groups; + LL_INFOS("LLStartup") << "gMaxAgentGroups read from login.cgi: " + << gMaxAgentGroups << LL_ENDL; + } + else + { + LL_INFOS("LLStartup") << "Invalid value received, using defaults for gMaxAgentGroups: " + << gMaxAgentGroups << LL_ENDL; + } } else { - gMaxAgentGroups = DEFAULT_MAX_AGENT_GROUPS; - LL_INFOS("LLStartup") << "using gMaxAgentGroups default: " + LL_INFOS("LLStartup") << "Missing max-agent-groups, using default value for gMaxAgentGroups: " << gMaxAgentGroups << LL_ENDL; } diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 717807f513..980810835e 100755 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -188,6 +188,7 @@ protected: private: bool mCanApply; bool mCanPreview; + bool mPreviewSettingChanged; texture_selected_callback mTextureSelectedCallback; }; @@ -215,7 +216,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( mContextConeOpacity(0.f), mSelectedItemPinned( FALSE ), mCanApply(true), - mCanPreview(true) + mCanPreview(true), + mPreviewSettingChanged(false) { buildFromFile("floater_texture_ctrl.xml"); mCanApplyImmediately = can_apply_immediately; @@ -823,6 +825,16 @@ void LLFloaterTexturePicker::onSelectionChange(const std::deque<LLFolderViewItem } setImageID(itemp->getAssetUUID(),false); mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? + + if(!mPreviewSettingChanged) + { + mCanPreview = gSavedSettings.getBOOL("TextureLivePreview"); + } + else + { + mPreviewSettingChanged = false; + } + if (user_action && mCanPreview) { // only commit intentional selections, not implicit ones @@ -979,6 +991,7 @@ void LLFloaterTexturePicker::setCanApply(bool can_preview, bool can_apply) mCanApply = can_apply; mCanPreview = can_preview ? gSavedSettings.getBOOL("TextureLivePreview") : false; + mPreviewSettingChanged = true; } void LLFloaterTexturePicker::onFilterEdit(const std::string& search_string ) diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 79c31e15bf..81fbc471b3 100755 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1009,9 +1009,15 @@ BOOL LLToolDragAndDrop::handleDropTextureProtections(LLViewerObject* hit_obj, return TRUE; } - // In case the inventory has not been updated (e.g. due to some recent operation - // causing a dirty inventory), stall the user while fetching the inventory. - if (hit_obj->isInventoryDirty()) + // In case the inventory has not been loaded (e.g. due to some recent operation + // causing a dirty inventory) and we can do an update, stall the user + // while fetching the inventory. + // + // Note: fetch only if inventory is both dirty and not present since previously checked faces + // could have requested new fetch for same item (removed inventory and marked as dirty=false). + // Objects without listeners (dirty==true and inventory!=NULL. In this specific case - before + // first fetch) shouldn't be updated either since we won't receive any changes. + if (hit_obj->isInventoryDirty() && hit_obj->getInventoryRoot() == NULL) { hit_obj->fetchInventoryFromServer(); LLSD args; diff --git a/indra/newview/lltoolgrab.h b/indra/newview/lltoolgrab.h index 4e22732124..5d24c8813e 100755 --- a/indra/newview/lltoolgrab.h +++ b/indra/newview/lltoolgrab.h @@ -78,6 +78,8 @@ public: // Certain grabs should not highlight the "Build" toolbar button BOOL getHideBuildHighlight() { return mHideBuildHighlight; } + void setClickedInMouselook(BOOL is_clickedInMouselook) {mClickedInMouselook = is_clickedInMouselook;} + static void pickCallback(const LLPickInfo& pick_info); private: LLVector3d getGrabPointGlobal(); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index e4353aafaa..2081297717 100755 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -319,6 +319,7 @@ BOOL LLToolPie::handleLeftClickPick() { gGrabTransientTool = this; mMouseButtonDown = false; + LLToolGrab::getInstance()->setClickedInMouselook(gAgentCamera.cameraMouselook()); LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolGrab::getInstance() ); return LLToolGrab::getInstance()->handleObjectHit( mPick ); } diff --git a/indra/newview/llversioninfo.cpp b/indra/newview/llversioninfo.cpp index 5cc7d7bed3..e53de8be32 100755 --- a/indra/newview/llversioninfo.cpp +++ b/indra/newview/llversioninfo.cpp @@ -29,6 +29,7 @@ #include <iostream> #include <sstream> #include "llversioninfo.h" +#include <boost/regex.hpp> #if ! defined(LL_VIEWER_CHANNEL) \ || ! defined(LL_VIEWER_VERSION_MAJOR) \ @@ -131,3 +132,43 @@ void LLVersionInfo::resetChannel(const std::string& channel) sWorkingChannelName = channel; sVersionChannel.clear(); // Reset version and channel string til next use. } + +//static +LLVersionInfo::ViewerMaturity LLVersionInfo::getViewerMaturity() +{ + ViewerMaturity maturity; + + std::string channel = getChannel(); + + static const boost::regex is_test_channel("\\bTest\\b"); + static const boost::regex is_beta_channel("\\bBeta\\b"); + static const boost::regex is_project_channel("\\bProject\\b"); + static const boost::regex is_release_channel("\\bRelease\\b"); + + if (boost::regex_search(channel, is_release_channel)) + { + maturity = RELEASE_VIEWER; + } + else if (boost::regex_search(channel, is_beta_channel)) + { + maturity = BETA_VIEWER; + } + else if (boost::regex_search(channel, is_project_channel)) + { + maturity = PROJECT_VIEWER; + } + else if (boost::regex_search(channel, is_test_channel)) + { + maturity = TEST_VIEWER; + } + else + { + LL_WARNS() << "Channel '" << channel + << "' does not follow naming convention, assuming Test" + << LL_ENDL; + maturity = TEST_VIEWER; + } + return maturity; +} + + diff --git a/indra/newview/llversioninfo.h b/indra/newview/llversioninfo.h index 077105cae8..4e75535ec5 100755 --- a/indra/newview/llversioninfo.h +++ b/indra/newview/llversioninfo.h @@ -68,6 +68,15 @@ public: /// reset the channel name used by the viewer. static void resetChannel(const std::string& channel); + + typedef enum + { + TEST_VIEWER, + PROJECT_VIEWER, + BETA_VIEWER, + RELEASE_VIEWER + } ViewerMaturity; + static ViewerMaturity getViewerMaturity(); }; #endif diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 67f8581b9d..2505ae6a9c 100755 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2757,6 +2757,7 @@ void handle_object_edit() if (gAgentCamera.getFocusOnAvatar() && !LLToolMgr::getInstance()->inEdit()) { + LLFloaterTools::sPreviousFocusOnAvatar = true; LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection(); if (selection->getSelectType() == SELECT_TYPE_HUD || !gSavedSettings.getBOOL("EditCameraMovement")) diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 2775a320d4..886725be79 100755 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2707,6 +2707,13 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) break; case IM_GROUP_INVITATION: { + if (!is_muted) + { + // group is not blocked, but we still need to check agent that sent the invitation + // and we have no agent's id + // Note: server sends username "first.last". + is_muted |= LLMuteList::getInstance()->isMuted(name); + } if (is_do_not_disturb || is_muted) { send_do_not_disturb_message(msg, from_id); @@ -3601,6 +3608,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT && LLMuteList::getInstance()->isLinden(from_name); + if (is_muted && (chat.mSourceType == CHAT_SOURCE_OBJECT)) + { + return; + } + BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible); chatter = gObjectList.findObject(from_id); if (chatter) diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index faa58d423f..6666aecca2 100755 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -119,14 +119,14 @@ void LLGridManager::initialize(const std::string& grid_file) mGridFile = grid_file; // as we don't want an attacker to override our grid list // to point the default grid to an invalid grid - addSystemGrid("Second Life Main Grid (Agni)", + addSystemGrid(LLTrans::getString("AgniGridLabel"), MAINGRID, MAIN_GRID_LOGIN_URI, "https://secondlife.com/helpers/", DEFAULT_LOGIN_PAGE, SL_UPDATE_QUERY_URL, "Agni"); - addSystemGrid("Second Life Beta Test Grid (Aditi)", + addSystemGrid(LLTrans::getString("AditiGridLabel"), "util.aditi.lindenlab.com", "https://login.aditi.lindenlab.com/cgi-bin/login.cgi", "http://aditi-secondlife.webdev.lindenlab.com/helpers/", diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index 59f57c218e..2a6b105cab 100755 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -1602,8 +1602,14 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use } else if (local_id == parcel_mgr.mAgentParcel->getLocalID()) { - // updated agent parcel - parcel_mgr.mAgentParcel->unpackMessage(msg); + // Parcels in different regions can have same ids. + LLViewerRegion* parcel_region = LLWorld::getInstance()->getRegion( msg->getSender() ); + LLViewerRegion* agent_region = gAgent.getRegion(); + if (parcel_region && agent_region && parcel_region->getRegionID() == agent_region->getRegionID()) + { + // updated agent parcel + parcel_mgr.mAgentParcel->unpackMessage(msg); + } } } diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index a37f7d151b..6af3e40f01 100755 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -828,7 +828,6 @@ void LLViewerRegion::processRegionInfo(LLMessageSystem* msg, void**) LLRegionInfoModel::instance().update(msg); LLFloaterGodTools::processRegionInfo(msg); LLFloaterRegionInfo::processRegionInfo(msg); - LLFloaterReporter::processRegionInfo(msg); } void LLViewerRegion::setCacheID(const LLUUID& id) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index e317989f04..ba84d7aa2c 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2336,12 +2336,6 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) LLSD args; LLColor4 new_bg_color; - // no l10n problem because channel is always an english string - std::string channel = LLVersionInfo::getChannel(); - static const boost::regex is_beta_channel("\\bBeta\\b"); - static const boost::regex is_project_channel("\\bProject\\b"); - static const boost::regex is_test_channel("\\bTest$"); - // god more important than project, proj more important than grid if ( god_mode ) { @@ -2354,27 +2348,35 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid) new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionGodBgColor" ); } } - else if (boost::regex_search(channel, is_beta_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); - } - else if (boost::regex_search(channel, is_project_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); - } - else if (boost::regex_search(channel, is_test_channel)) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); - } - else if(!LLGridManager::getInstance()->isInProductionGrid()) - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); - } - else - { - new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); - } - + else + { + switch (LLVersionInfo::getViewerMaturity()) + { + case LLVersionInfo::TEST_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarTestBgColor" ); + break; + + case LLVersionInfo::PROJECT_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarProjectBgColor" ); + break; + + case LLVersionInfo::BETA_VIEWER: + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBetaBgColor" ); + break; + + case LLVersionInfo::RELEASE_VIEWER: + if(!LLGridManager::getInstance()->isInProductionGrid()) + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuNonProductionBgColor" ); + } + else + { + new_bg_color = LLUIColorTable::instance().getColor( "MenuBarBgColor" ); + } + break; + } + } + if(gMenuBarView) { gMenuBarView->setBackgroundColor( new_bg_color ); diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f753448770..202b63dec0 100755 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -5153,7 +5153,10 @@ void LLVOAvatar::clearAttachmentPosOverrides() for (; iter != end; ++iter) { LLJoint* pJoint = (*iter); - pJoint->clearAttachmentPosOverrides(); + if (pJoint) + { + pJoint->clearAttachmentPosOverrides(); + } } } @@ -5435,8 +5438,14 @@ BOOL LLVOAvatar::loadSkeletonNode () LLViewerJointAttachment* attachment = new LLViewerJointAttachment(); attachment->setName(info->mName); - LLJoint *parentJoint = getJoint(info->mJointName); - if (!parentJoint) + LLJoint *parent_joint = getJoint(info->mJointName); + if (!parent_joint) + { + // If the intended location for attachment point is unavailable, stick it in a default location. + LL_INFOS() << "attachment pt " << info->mName << " using mPelvis as default parent" << LL_ENDL; + parent_joint = getJoint("mPelvis"); + } + if (!parent_joint) { LL_WARNS() << "No parent joint by name " << info->mJointName << " found for attachment point " << info->mName << LL_ENDL; delete attachment; @@ -5491,7 +5500,7 @@ BOOL LLVOAvatar::loadSkeletonNode () mAttachmentPoints[attachmentID] = attachment; // now add attachment joint - parentJoint->addChild(attachment); + parent_joint->addChild(attachment); } } diff --git a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml index 3f5bbda724..3f5bbda724 100755..100644 --- a/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index 62ab8ed193..90d45d5ebc 100755 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -23,15 +23,15 @@ </floater.string> <floater.string name="Minutes"> - [MINUTES] minutes + [MINUTES] min. </floater.string> <floater.string name="Minute"> - minute + min. </floater.string> <floater.string name="Seconds"> - [SECONDS] seconds + [SECONDS] sec. </floater.string> <floater.string name="Remaining"> diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index 9deb0d2030..dcd6d98581 100755 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -191,8 +191,18 @@ label="OK" label_selected="OK" layout="topleft" - left="-102" + right="-105" name="OK" top="192" width="90" /> + <button + follows="right|bottom" + height="22" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="5" + name="Cancel" + right="-10" + width="90" /> </floater> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 2b01f763d5..f847c73287 100755 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1025,7 +1025,7 @@ Objects: [N] icon="alertmodal.tga" name="ReturnAllTopObjects" type="alertmodal"> -Are you sure you want to return all listed objects back to their owner's inventory? +Are you sure you want to return all listed objects back to their owner's inventory? This will return ALL scripted objects in the region! <tag>confirm</tag> <usetemplate name="okcancelbuttons" @@ -5709,16 +5709,19 @@ You cannot undo this action. notext="Cancel" yestext="OK"/> </notification> - + <notification - icon="alertmodal.tga" - name="HelpReportAbuseEmailLL" - type="alert"> + icon="alertmodal.tga" + name="ConfirmUnlink" + type="alertmodal"> <unique/> - -Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. - -All reported abuses are investigated and resolved. + This is a large selection with linksets. If you unlink it, you may not be able to link it again. You may wish to take copies of linksets into your inventory as a precaution. + <tag>confirm</tag> + <usetemplate + ignoretext="Confirm when unlinking a linkset" + name="okcancelignore" + notext="Cancel" + yestext="Unlink"/> </notification> <notification @@ -8264,9 +8267,8 @@ Select residents to share with. name="MeshUploadError" icon="alert.tga" type="alert"> - [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] - -See the log file for details. + [LABEL] failed to upload: [MESSAGE] [IDENTIFIER] +[DETAILS]See SecondLife.log for details </notification> <notification @@ -8507,7 +8509,7 @@ We cannot display a preview of this texture because it is no-copy and/or no-tran <notification icon="alertmodal.tga" name="ConfirmLeaveCall" - type="alert"> + type="alertmodal"> Are you sure you want to leave this call? <tag>confirm</tag> <tag>voice</tag> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml index ea579c6dae..d019a0a310 100755 --- a/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_inventory.xml @@ -60,6 +60,10 @@ name="Large(512x512)" value="[i512,i512]" /> <combo_box.item + label="Current Window(512x512)" + name="CurrentWindow" + value="[i0,i0]" /> + <combo_box.item label="Custom" name="Custom" value="[i-1,i-1]" /> diff --git a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml index 975b08be05..975b08be05 100755..100644 --- a/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 5f6e90b47f..b7e0cff146 100755 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -96,7 +96,10 @@ Voice Server Version: [VOICE_VERSION] <string name="LoginFailed">Login failed.</string> <string name="Quit">Quit</string> <string name="create_account_url">http://join.secondlife.com/?sourceid=[sourceid]</string> - + + <string name="AgniGridLabel">Second Life Main Grid (Agni)</string> + <string name="AditiGridLabel">Second Life Beta Test Grid (Aditi)</string> + <string name="ViewerDownloadURL">http://secondlife.com/download</string> <string name="LoginFailedViewerNotPermitted"> The viewer you are using can no longer access Second Life. Please visit the following page to download a new viewer: @@ -4115,5 +4118,17 @@ Try enclosing path to the editor with double quotes. <string name="loading_chat_logs"> Loading... </string> - - </strings> + + <string name="Mav_Details_MAV_FOUND_DEGENERATE_TRIANGLES"> + The physics shape contains triangles which are too small. Try simplifying the physics model. + </string> + + <string name="Mav_Details_MAV_CONFIRMATION_DATA_MISMATCH"> + The physics shape contains bad confirmation data. Try to correct the physics model. + </string> + + <string name="Mav_Details_MAV_UNKNOWN_VERSION"> + The physics shape does not have correct version. Set the correct version for the physics model. + </string> + +</strings> diff --git a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml index 357b432c4c..357b432c4c 100755..100644 --- a/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml index 54c857fdc8..40082cb265 100755 --- a/indra/newview/skins/default/xui/fr/panel_login.xml +++ b/indra/newview/skins/default/xui/fr/panel_login.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <panel name="panel_login"> <panel.string name="forgot_password_url">http://secondlife.com/account/request.php?lang=fr</panel.string> + <panel.string name="forgot_password_url"> + http://secondlife.com/account/request.php?lang=fr + </panel.string> <layout_stack name="ui_stack"> <layout_panel name="ui_container"> <combo_box label="Nom d'utilisateur" name="username_combo" tool_tip="Nom d'utilisateur que vous avez choisi lors de votre inscription (par exemple, bobsmith12 ou Steller Sunshine)."/> @@ -12,7 +15,7 @@ <button label="Connexion" name="connect_btn"/> <check_box label="Mémoriser mes informations" name="remember_check"/> <text name="forgot_password_text">Mot de passe oublié</text> - <combo_box label="Sélectionner la grille" name="server_combo"/> + <combo_box label="Sélectionner la grille" name="server_combo" left_pad="20"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml index 067fa091d8..067fa091d8 100755..100644 --- a/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml index be7d8763b6..be7d8763b6 100755..100644 --- a/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml index 569c07ad47..569c07ad47 100755..100644 --- a/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml index ab1545a231..ab1545a231 100755..100644 --- a/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml index 8f6ab612ff..8f6ab612ff 100755..100644 --- a/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml index ecb47b2218..ecb47b2218 100755..100644 --- a/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml diff --git a/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml b/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml index 77f8b335db..77f8b335db 100755..100644 --- a/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml +++ b/indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml diff --git a/indra/newview/tests/llslurl_test.cpp b/indra/newview/tests/llslurl_test.cpp index 2bc0d5a086..4694f657b6 100755 --- a/indra/newview/tests/llslurl_test.cpp +++ b/indra/newview/tests/llslurl_test.cpp @@ -39,7 +39,21 @@ namespace static const char * const TEST_FILENAME("llslurl_test.xml"); } - + +// +// Stub implementation for LLTrans +// +class LLTrans +{ +public: + static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args); +}; + +std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) +{ + return std::string(); +} + //---------------------------------------------------------------------------- // Mock objects for the dependencies of the code we're testing diff --git a/indra/newview/tests/llviewernetwork_test.cpp b/indra/newview/tests/llviewernetwork_test.cpp index 0eb0ab6500..e68da14fe9 100755 --- a/indra/newview/tests/llviewernetwork_test.cpp +++ b/indra/newview/tests/llviewernetwork_test.cpp @@ -38,6 +38,31 @@ namespace static const char * const TEST_FILENAME("llviewernetwork_test.xml"); } + +// +// Stub implementation for LLTrans +// +class LLTrans +{ +public: + static std::string getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args); +}; + +std::string LLTrans::getString(const std::string &xml_desc, const LLStringUtil::format_map_t& args) +{ + std::string grid_label = std::string(); + if(xml_desc == "AgniGridLabel") + { + grid_label = "Second Life Main Grid (Agni)"; + } + else if(xml_desc == "AditiGridLabel") + { + grid_label = "Second Life Beta Test Grid (Aditi)"; + } + + return grid_label; +} + //---------------------------------------------------------------------------- // Mock objects for the dependencies of the code we're testing |