Merge bento-box
commit
472215b46c
|
|
@ -1731,11 +1731,11 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>468e88a527e610804c3eecf07f4ed70b</string>
|
||||
<string>01a7cc9d0e56238a9abedd7a41ccd0a3</string>
|
||||
<key>hash_algorithm</key>
|
||||
<string>md5</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Darwin/installer/llphysicsextensions_source-1.0.298369-darwin-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Darwin/installer/llphysicsextensions_source-1.0.313564-darwin-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1745,9 +1745,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>793964e49c935b414c4bdbb8a0d14ad1</string>
|
||||
<string>c94dc7ab6efe59c0d5d04fc447257c57</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/Linux/installer/llphysicsextensions_source-1.0.298369-linux-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/Linux/installer/llphysicsextensions_source-1.0.313564-linux-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1757,16 +1757,16 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>922aad5261aac150e5ce3c094e57f373</string>
|
||||
<string>4a9dbeb437d0e1546b93d16073ff1442</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions-source_llphysicsextensions-update/rev/298369/arch/CYGWIN/installer/llphysicsextensions_source-1.0.298369-windows-298369.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/llphysicsextensions/rev/313564/arch/CYGWIN/installer/llphysicsextensions_source-1.0.313564-windows-313564.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>1.0.298369</string>
|
||||
<string>1.0.313564</string>
|
||||
</map>
|
||||
<key>llphysicsextensions_stub</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ void LLWearable::createVisualParams(LLAvatarAppearance *avatarp)
|
|||
{
|
||||
if( !param->linkDrivenParams(boost::bind(param_function,avatarp,_1 ), true))
|
||||
{
|
||||
LL_WARNS() << "could not link driven params for wearable " << getName() << " id: " << param->getID() << LL_ENDL;
|
||||
LL_DEBUGS("Avatar") << "could not link driven params for wearable " << getName() << " id: " << param->getID() << LL_ENDL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
const S32 LL_CHARACTER_MAX_JOINTS_PER_MESH = 15;
|
||||
// BENTO JOINT COUNT LIMIT - need to set this to final skeleton size
|
||||
// (bones + attachments) + 2, rounded to next multiple of 4.
|
||||
const U32 LL_CHARACTER_MAX_ANIMATED_JOINTS = 188; // must be divisible by 4!
|
||||
const U32 LL_CHARACTER_MAX_ANIMATED_JOINTS = 192; // must be divisible by 4!
|
||||
const U32 LL_MAX_JOINTS_PER_MESH_OBJECT = 110;
|
||||
|
||||
// These should be higher than the joint_num of any
|
||||
|
|
|
|||
|
|
@ -1061,7 +1061,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val = (kdu_int32)(sp->fval*scale16);
|
||||
val = (val+128)>>8; // May be faster than true rounding
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffU)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 255);
|
||||
}
|
||||
|
|
@ -1079,7 +1079,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val = sp->ival;
|
||||
val = (val+offset)>>downshift;
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffU)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 255);
|
||||
}
|
||||
|
|
@ -1102,7 +1102,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val += (1<<(KDU_FIX_POINT-8))>>1;
|
||||
val >>= (KDU_FIX_POINT-8);
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffU)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 255);
|
||||
}
|
||||
|
|
@ -1121,7 +1121,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val = (val+offset)>>downshift;
|
||||
val <<= upshift;
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffU)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 256 - (1<<upshift));
|
||||
}
|
||||
|
|
@ -1143,7 +1143,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val = sp->ival;
|
||||
val = (val+offset)>>downshift;
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffU)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 255);
|
||||
}
|
||||
|
|
@ -1159,7 +1159,7 @@ all necessary level shifting, type conversion, rounding and truncation. */
|
|||
val = sp->ival;
|
||||
val <<= upshift;
|
||||
val += 128;
|
||||
if (val & ((-1)<<8))
|
||||
if (val & ((0xffffffffu)<<8))
|
||||
{
|
||||
val = (val < 0 ? 0 : 256 - (1<<upshift));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2585,7 +2585,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
|
|||
U16 influence = weights[idx++];
|
||||
influence |= ((U16) weights[idx++] << 8);
|
||||
|
||||
F32 w = llclamp((F32) influence / 65535.f, 0.f, 0.99999f);
|
||||
F32 w = llclamp((F32) influence / 65535.f, 0.001f, 0.999f);
|
||||
wght.mV[cur_influence] = w;
|
||||
joints[cur_influence] = joint;
|
||||
cur_influence++;
|
||||
|
|
@ -2602,11 +2602,13 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
|
|||
F32 wsum = wght.mV[VX] + wght.mV[VY] + wght.mV[VZ] + wght.mV[VW];
|
||||
if (wsum <= 0.f)
|
||||
{
|
||||
wght = LLVector4(0.99999f,0.f,0.f,0.f);
|
||||
wght = LLVector4(0.999f,0.f,0.f,0.f);
|
||||
}
|
||||
for (U32 k=0; k<4; k++)
|
||||
for (U32 k=0; k<cur_influence; k++)
|
||||
{
|
||||
joints_with_weights[k] = (F32) joints[k] + wght[k];
|
||||
F32 f_combined = (F32) joints[k] + wght[k];
|
||||
llassert(f_combined-(S32)f_combined>0); // If this fails, we have a floating point precision error.
|
||||
joints_with_weights[k] = f_combined;
|
||||
}
|
||||
face.mWeights[cur_vertex].loadua(joints_with_weights.mV);
|
||||
|
||||
|
|
|
|||
|
|
@ -1001,7 +1001,7 @@ LLSD LLModel::writeModelToStream(std::ostream& ostr, LLSD& mdl, BOOL nowrite, BO
|
|||
|
||||
LLModel::weight_list& LLModel::getJointInfluences(const LLVector3& pos)
|
||||
{
|
||||
//1. If a vertex has been weighted then we'll find it via pos and return it's weight list
|
||||
//1. If a vertex has been weighted then we'll find it via pos and return its weight list
|
||||
weight_map::iterator iterPos = mSkinWeights.begin();
|
||||
weight_map::iterator iterEnd = mSkinWeights.end();
|
||||
|
||||
|
|
@ -1237,7 +1237,6 @@ bool LLModel::loadModel(std::istream& is)
|
|||
}
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
bool LLModel::isMaterialListSubset( LLModel* ref )
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,4 +1,4 @@
|
|||
<linden_skeleton num_bones="131" num_collision_volumes="26" version="2.0">
|
||||
<linden_skeleton num_bones="132" num_collision_volumes="26" version="2.0">
|
||||
<bone aliases="hip avatar_mPelvis" connected="false" end="0.000 0.000 0.084" group="Torso" name="mPelvis" pivot="0.000000 0.000000 1.067015" pos="0.000 0.000 1.067" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" support="base">
|
||||
<collision_volume end="0.030 0.000 0.095" group="Collision" name="PELVIS" pos="-0.01 0 -0.02" rot="0.000000 8.00000 0.000000" scale="0.12 0.16 0.17" support="base"/>
|
||||
<collision_volume end="-0.100 0.000 0.000" group="Collision" name="BUTT" pos="-0.06 0 -0.1" rot="0.000000 0.00000 0.000000" scale="0.1 0.1 0.1" support="base"/>
|
||||
|
|
@ -62,6 +62,7 @@
|
|||
<bone connected="false" end="0.047 0.003 0.000" group="Lips" name="mFaceLipLowerLeft" pivot="0.032 0.014 -0.012" pos="0.032 0.014 -0.012" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
<bone connected="false" end="0.047 -0.003 0.000" group="Lips" name="mFaceLipLowerRight" pivot="0.032 -0.014 -0.012" pos="0.032 -0.014 -0.012" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
<bone connected="false" end="0.048 0.000 0.000" group="Lips" name="mFaceLipLowerCenter" pivot="0.037 0.000 -0.017" pos="0.037 0.000 -0.017" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
<bone connected="false" end="0.021 0.000 -0.018" group="Mouth" name="mFaceChin" pivot="0.053 0.000 -0.032" pos="0.053 0.000 -0.032" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
</bone>
|
||||
<bone connected="false" end="0.036 0.000 0.000" group="Face" name="mFaceForeheadCenter" pivot="0.069 0.000 0.065" pos="0.069 0.000 0.065" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
<bone connected="false" end="0.048 0.000 0.000" group="Lips" name="mFaceLipUpperCenter" pivot="0.060 0.000 -0.030" pos="0.060 0.000 -0.030" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
|
|
@ -212,7 +213,7 @@
|
|||
<bone connected="false" end="0.002 -0.046 -0.491" group="Limb" name="mHindLimb1Left" pivot="-0.204 0.129 -0.125" pos="-0.204 0.129 -0.125" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended">
|
||||
<bone connected="true" end="-0.030 -0.003 -0.468" group="Limb" name="mHindLimb2Left" pivot="0.002 -0.046 -0.491" pos="0.002 -0.046 -0.491" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended">
|
||||
<bone connected="true" end="0.112 0.000 -0.061" group="Limb" name="mHindLimb3Left" pivot="-0.030 -0.003 -0.468" pos="-0.030 -0.003 -0.468" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended">
|
||||
<bone connected="true" end="0.105 0.008 0.001" group="Limb" name="mHindLimb4Left" pivot="0.112 -0.000 -0.061" pos="0.112 -0.000 -0.061" rot="0.000000 0.000000 0.000000" scale="1.000 1.000 1.000" support="extended" />
|
||||
<bone connected="true" end="0.105 0.008 0.001" group="Limb" name="mHindLimb4Left" pivot="0.112 0.000 -0.061" pos="0.112 0.000 -0.061" rot="0.000 0.000 0.000" scale="1.00 1.00 1.00" support="extended"/>
|
||||
</bone>
|
||||
</bone>
|
||||
</bone>
|
||||
|
|
|
|||
|
|
@ -3430,14 +3430,17 @@ void LLModelPreview::genBuffers(S32 lod, bool include_skin_weights)
|
|||
LLVector3 pos(vf.mPositions[i].getF32ptr());
|
||||
|
||||
const LLModel::weight_list& weight_list = base_mdl->getJointInfluences(pos);
|
||||
llassert(weight_list.size()>0 && weight_list.size() <= 4); // LLModel::loadModel() should guarantee this
|
||||
|
||||
LLVector4 w(0,0,0,0);
|
||||
|
||||
for (U32 i = 0; i < weight_list.size(); ++i)
|
||||
{
|
||||
F32 wght = llmin(weight_list[i].mWeight, 0.999999f);
|
||||
F32 wght = llclamp(weight_list[i].mWeight, 0.001f, 0.999f);
|
||||
F32 joint = (F32) weight_list[i].mJointIdx;
|
||||
w.mV[i] = joint + wght;
|
||||
llassert(w.mV[i]-(S32)w.mV[i]>0.0f); // because weights are non-zero, and range of wt values
|
||||
//should not cause floating point precision issues.
|
||||
}
|
||||
|
||||
*(weights_strider++) = w;
|
||||
|
|
|
|||
|
|
@ -67,9 +67,6 @@ const F32 RADIUS_PIXELS = 100.f; // size in screen space
|
|||
const F32 SQ_RADIUS = RADIUS_PIXELS * RADIUS_PIXELS;
|
||||
const F32 WIDTH_PIXELS = 8;
|
||||
const S32 CIRCLE_STEPS = 100;
|
||||
const F32 DELTA = F_TWO_PI / CIRCLE_STEPS;
|
||||
const F32 SIN_DELTA = sin( DELTA );
|
||||
const F32 COS_DELTA = cos( DELTA );
|
||||
const F32 MAX_MANIP_SELECT_DISTANCE = 100.f;
|
||||
const F32 SNAP_ANGLE_INCREMENT = 5.625f;
|
||||
const F32 SNAP_ANGLE_DETENTE = SNAP_ANGLE_INCREMENT;
|
||||
|
|
|
|||
|
|
@ -291,12 +291,15 @@ void LLSkinningUtil::checkSkinWeights(LLVector4a* weights, U32 num_vertices, con
|
|||
{
|
||||
F32 *w = weights[j].getF32ptr();
|
||||
|
||||
F32 wsum = 0.0;
|
||||
for (U32 k=0; k<4; ++k)
|
||||
{
|
||||
S32 i = llfloor(w[k]);
|
||||
llassert(i>=0);
|
||||
llassert(i<max_joints);
|
||||
wsum += w[k]-i;
|
||||
}
|
||||
llassert(wsum > 0.0f);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
@ -310,7 +313,7 @@ void LLSkinningUtil::getPerVertexSkinMatrix(
|
|||
LLMatrix4a& final_mat,
|
||||
U32 max_joints)
|
||||
{
|
||||
|
||||
bool valid_weights = true;
|
||||
final_mat.clear();
|
||||
|
||||
S32 idx[4];
|
||||
|
|
@ -336,6 +339,7 @@ void LLSkinningUtil::getPerVertexSkinMatrix(
|
|||
if (handle_bad_scale && scale <= 0.f)
|
||||
{
|
||||
wght = LLVector4(1.0f, 0.0f, 0.0f, 0.0f);
|
||||
valid_weights = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -353,5 +357,8 @@ void LLSkinningUtil::getPerVertexSkinMatrix(
|
|||
|
||||
final_mat.add(src);
|
||||
}
|
||||
// SL-366 - with weight validation/cleanup code, it should no longer be
|
||||
// possible to hit the bad scale case.
|
||||
llassert(valid_weights);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1518,7 +1518,7 @@ void LLVOAvatar::renderBones()
|
|||
static LLVector3 EXTENDED_COLOR_OCCLUDED(0.0f, 1.0f, 0.0f);
|
||||
static LLVector3 EXTENDED_COLOR_VISIBLE(0.5f, 0.5f, 0.5f);
|
||||
|
||||
static F32 SPHERE_SCALEF = 0.003f;
|
||||
static F32 SPHERE_SCALEF = 0.001f;
|
||||
|
||||
for (; iter != end; ++iter)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -941,6 +941,8 @@ This feature is currently in Beta. Please add your name to this [http://goo.gl/f
|
|||
<string name="Alt Right Eye">Alt Right Eye</string>
|
||||
<string name="Tongue">Tongue</string>
|
||||
<string name="Groin">Groin</string>
|
||||
<string name="Left Hind Foot">Left Hind Foot</string>
|
||||
<string name="Right Hind Foot">Right Hind Foot</string>
|
||||
<string name="Invalid Attachment">Invalid Attachment Point</string>
|
||||
<string name="ATTACHMENT_MISSING_ITEM">Error: missing item</string>
|
||||
<string name="ATTACHMENT_MISSING_BASE_ITEM">Error: missing base item</string>
|
||||
|
|
|
|||
|
|
@ -510,6 +510,7 @@ if __name__ == "__main__":
|
|||
parser.add_argument("--summary", help="print summary of the output animation", action="store_true")
|
||||
parser.add_argument("--skel", help="name of the avatar_skeleton file")
|
||||
parser.add_argument("--lad", help="name of the avatar_lad file")
|
||||
parser.add_argument("--set_version", nargs=2, type=int, help="set version and sub-version to specified values")
|
||||
parser.add_argument("infilename", help="name of a .anim file to input")
|
||||
parser.add_argument("outfilename", nargs="?", help="name of a .anim file to output")
|
||||
args = parser.parse_args()
|
||||
|
|
@ -560,6 +561,9 @@ if __name__ == "__main__":
|
|||
anim.add_pos([joint], pos_array)
|
||||
else:
|
||||
print "no elt or no pos data for",joint
|
||||
if args.set_version:
|
||||
anim.version = args.set_version[0]
|
||||
anim.sub_version = args.set_version[1]
|
||||
if args.dump:
|
||||
anim.dump(args.dump)
|
||||
if args.summary:
|
||||
|
|
|
|||
|
|
@ -256,6 +256,22 @@ def validate_lad_tree(ladtree,skeltree):
|
|||
if not bone_name in bone_names:
|
||||
print "skel param references invalid bone",bone_name
|
||||
print etree.tostring(bone)
|
||||
drivers = {}
|
||||
for driven_param in ladtree.iter("driven"):
|
||||
driver = driven_param.getparent().getparent()
|
||||
driven_id = driven_param.get("id")
|
||||
driver_id = driver.get("id")
|
||||
if not driven_id in drivers:
|
||||
drivers[driven_id] = set()
|
||||
drivers[driven_id].add(driver_id)
|
||||
for driven_id in drivers:
|
||||
dset = drivers[driven_id]
|
||||
if len(dset) != 1:
|
||||
print "driven_id",driven_id,"has multiple drivers",dset
|
||||
else:
|
||||
if args.verbose:
|
||||
print "driven_id",driven_id,"has one driver",dset
|
||||
|
||||
|
||||
def remove_joint_by_name(tree, name):
|
||||
print "remove joint:",name
|
||||
|
|
@ -325,6 +341,7 @@ def compare_skel_trees(atree,btree):
|
|||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser(description="process SL animations")
|
||||
parser.add_argument("--verbose", action="store_true",help="verbose flag")
|
||||
parser.add_argument("--ogfile", help="specify file containing base bones")
|
||||
parser.add_argument("--ref_file", help="specify another file containing replacements for missing fields")
|
||||
parser.add_argument("--lad_file", help="specify avatar_lad file to check")
|
||||
|
|
|
|||
Loading…
Reference in New Issue