summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rwxr-xr-xindra/llappearance/llavatarappearance.cpp66
-rwxr-xr-xindra/llappearance/llavatarappearance.h9
-rwxr-xr-xindra/llcharacter/llbvhloader.cpp130
-rwxr-xr-xindra/llcharacter/llbvhloader.h4
-rwxr-xr-xindra/llcharacter/lljoint.h8
-rwxr-xr-xindra/llcharacter/llkeyframemotion.cpp96
-rwxr-xr-xindra/llcharacter/llkeyframemotion.h1
-rwxr-xr-xindra/llcharacter/llmotion.cpp11
-rwxr-xr-xindra/llcharacter/llmotioncontroller.cpp17
-rwxr-xr-xindra/llimage/llimage.cpp577
-rwxr-xr-xindra/llmessage/llassetstorage.cpp6
-rwxr-xr-xindra/llprimitive/llmodel.cpp16
-rwxr-xr-xindra/llrender/llglslshader.cpp67
-rwxr-xr-xindra/llrender/llrender.cpp53
-rwxr-xr-xindra/llrender/llrender.h2
-rwxr-xr-xindra/llui/llcombobox.cpp1
-rwxr-xr-xindra/llui/lltabcontainer.cpp20
-rwxr-xr-xindra/llwindow/llwindowwin32.cpp1
-rw-r--r--indra/newview/VIEWER_VERSION.txt2
-rwxr-xr-xindra/newview/app_settings/settings.xml44
-rwxr-xr-xindra/newview/app_settings/toolbars.xml3
-rwxr-xr-xindra/newview/character/avatar_lad.xml110
-rw-r--r--indra/newview/character/avatar_lad_orig.xml12505
-rw-r--r--indra/newview/character/avatar_lad_tentacles.xml12505
-rw-r--r--indra/newview/character/avatar_lad_wings_tail.xml12615
-rwxr-xr-xindra/newview/character/avatar_skeleton.xml28
-rw-r--r--indra/newview/character/avatar_skeleton_orig.xml81
-rw-r--r--indra/newview/character/avatar_skeleton_tentacles.xml281
-rw-r--r--indra/newview/character/avatar_skeleton_wings_tail.xml105
-rwxr-xr-xindra/newview/installers/windows/installer_template.nsi7
-rwxr-xr-xindra/newview/llagentcamera.cpp6
-rwxr-xr-xindra/newview/llagentcamera.h4
-rwxr-xr-xindra/newview/llagentwearables.cpp35
-rwxr-xr-xindra/newview/llaisapi.cpp7
-rwxr-xr-xindra/newview/llaisapi.h2
-rwxr-xr-xindra/newview/llappearancemgr.cpp12
-rwxr-xr-xindra/newview/llappviewer.cpp4
-rwxr-xr-xindra/newview/llchathistory.cpp2
-rwxr-xr-xindra/newview/lldrawpoolavatar.cpp7
-rwxr-xr-xindra/newview/llfavoritesbar.cpp23
-rwxr-xr-xindra/newview/llfloaterabout.cpp12
-rwxr-xr-xindra/newview/llfloaterbvhpreview.cpp3
-rwxr-xr-xindra/newview/llfloaterhardwaresettings.cpp29
-rwxr-xr-xindra/newview/llfloaterhardwaresettings.h5
-rwxr-xr-xindra/newview/llfloaterland.cpp68
-rwxr-xr-xindra/newview/llfloaterland.h5
-rwxr-xr-xindra/newview/llfloatermodelpreview.cpp78
-rwxr-xr-xindra/newview/llfloaterreporter.cpp18
-rwxr-xr-xindra/newview/llfloaterreporter.h5
-rwxr-xr-xindra/newview/llfloatersnapshot.cpp18
-rwxr-xr-xindra/newview/llfloatertools.cpp7
-rwxr-xr-xindra/newview/llfloatertools.h2
-rwxr-xr-xindra/newview/llgroupmgr.cpp3
-rwxr-xr-xindra/newview/llimview.cpp10
-rwxr-xr-xindra/newview/llinspecttoast.cpp13
-rwxr-xr-xindra/newview/llinventoryfilter.cpp39
-rwxr-xr-xindra/newview/llinventoryfilter.h4
-rwxr-xr-xindra/newview/llinventoryfunctions.cpp24
-rwxr-xr-xindra/newview/llinventoryfunctions.h15
-rwxr-xr-xindra/newview/lllocalbitmaps.cpp2
-rwxr-xr-xindra/newview/lllocationinputctrl.cpp5
-rwxr-xr-xindra/newview/llmeshrepository.cpp32
-rwxr-xr-xindra/newview/llmutelist.cpp16
-rwxr-xr-xindra/newview/llmutelist.h5
-rwxr-xr-xindra/newview/llnamelistctrl.cpp9
-rwxr-xr-xindra/newview/llnamelistctrl.h5
-rw-r--r--indra/newview/llpanelgroupbulk.cpp1
-rwxr-xr-xindra/newview/llpanellandmarkinfo.cpp10
-rwxr-xr-xindra/newview/llpanellogin.cpp1
-rwxr-xr-xindra/newview/llpanelmaininventory.cpp8
-rwxr-xr-xindra/newview/llpanelobjectinventory.cpp8
-rwxr-xr-xindra/newview/llpanelplaceprofile.cpp30
-rwxr-xr-xindra/newview/llpanelplaceprofile.h1
-rwxr-xr-xindra/newview/llpanelsnapshotinventory.cpp11
-rwxr-xr-xindra/newview/llpanelsnapshotlocal.cpp8
-rw-r--r--[-rwxr-xr-x]indra/newview/llpanelsnapshotpostcard.cpp0
-rwxr-xr-xindra/newview/llpaneltopinfobar.cpp5
-rwxr-xr-xindra/newview/llpreview.cpp20
-rwxr-xr-xindra/newview/llpreview.h6
-rwxr-xr-xindra/newview/llpreviewanim.cpp8
-rwxr-xr-xindra/newview/llpreviewnotecard.cpp7
-rw-r--r--indra/newview/llscenemonitor.cpp16
-rw-r--r--indra/newview/llscenemonitor.h8
-rwxr-xr-xindra/newview/llselectmgr.cpp23
-rwxr-xr-xindra/newview/llselectmgr.h2
-rwxr-xr-xindra/newview/llstartup.cpp28
-rwxr-xr-xindra/newview/lltexturectrl.cpp15
-rwxr-xr-xindra/newview/lltooldraganddrop.cpp12
-rwxr-xr-xindra/newview/lltoolgrab.h2
-rwxr-xr-xindra/newview/lltoolpie.cpp1
-rwxr-xr-xindra/newview/llversioninfo.cpp41
-rwxr-xr-xindra/newview/llversioninfo.h9
-rwxr-xr-xindra/newview/llviewermenu.cpp1
-rwxr-xr-xindra/newview/llviewermessage.cpp12
-rwxr-xr-xindra/newview/llviewernetwork.cpp4
-rwxr-xr-xindra/newview/llviewerparcelmgr.cpp10
-rwxr-xr-xindra/newview/llviewerregion.cpp1
-rwxr-xr-xindra/newview/llviewerwindow.cpp56
-rwxr-xr-xindra/newview/llvoavatar.cpp17
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/de/panel_snapshot_postcard.xml0
-rwxr-xr-xindra/newview/skins/default/xui/en/floater_about_land.xml6
-rwxr-xr-xindra/newview/skins/default/xui/en/floater_hardware_settings.xml12
-rwxr-xr-xindra/newview/skins/default/xui/en/notifications.xml28
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_snapshot_inventory.xml4
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/en/panel_snapshot_postcard.xml0
-rwxr-xr-xindra/newview/skins/default/xui/en/strings.xml21
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/es/panel_snapshot_postcard.xml0
-rwxr-xr-xindra/newview/skins/default/xui/fr/panel_login.xml5
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/fr/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/it/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/ja/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/pt/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/ru/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/tr/panel_snapshot_postcard.xml0
-rw-r--r--[-rwxr-xr-x]indra/newview/skins/default/xui/zh/panel_snapshot_postcard.xml0
-rwxr-xr-xindra/newview/tests/llslurl_test.cpp16
-rwxr-xr-xindra/newview/tests/llviewernetwork_test.cpp25
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 &current_volume_num, S32 &current_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&apos;s inventory?
+Are you sure you want to return all listed objects back to their owner&apos;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&apos;utilisateur" name="username_combo" tool_tip="Nom d&apos;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