From 50b9c63382121df879680cf43f5be6fc09686607 Mon Sep 17 00:00:00 2001 From: seth_productengine Date: Fri, 22 Jul 2011 22:40:18 +0300 Subject: SH-1868 WIP Added user-supplied metric data for uploading a model. The mesh category string selected by user within the model data and sent to the server during calculating the upload fee and upload requests. The accounting info and the upload permissions warning in the bottom left corner of the floater are temporarily made mutually exclusive. --- indra/llprimitive/llmodel.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 3f58eba07d..35fdf3f3d6 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -148,6 +148,7 @@ public: static LLModel* loadModelFromDomMesh(domMesh* mesh); static std::string getElementLabel(daeElement* element); std::string getName() const; + std::string getMetric() const {return mMetric;} EModelStatus getStatus() const {return mStatus;} static std::string getStatusString(U32 status) ; @@ -234,6 +235,8 @@ public: std::string mRequestedLabel; // name requested in UI, if any. std::string mLabel; // name computed from dae. + std::string mMetric; // user-supplied metric data for upload + LLVector3 mNormalizedScale; LLVector3 mNormalizedTranslation; -- cgit v1.2.3 From 7fc12cd43dcb21df88be5c47c319d0d3f6498216 Mon Sep 17 00:00:00 2001 From: prep Date: Thu, 28 Jul 2011 16:09:17 -0400 Subject: Fix for sh-2044, sh-2039 and sh-2166 (Avatar weights were sometimes not correctly applied upon import. --- indra/llprimitive/llmodel.h | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 3f58eba07d..9dab3a0400 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -217,13 +217,29 @@ public: } }; + + struct JointPositionalCompare + { + //Are the doubles the same w/in epsilon specified tolerance + bool areEqual( double a, double b ) + { + const float epsilon = 1e-5f; + return (abs(a - b) > epsilon) && (a < b); + } + //Make sure that we return false for any values that are within the tolerance for equivalence + bool operator() ( const LLVector3& a, const LLVector3& b ) + { + return ( areEqual( a[0],b[0]) && areEqual( a[1],b[1] ) && areEqual( a[2],b[2]) ) ? false : true; + } + }; + //copy of position array for this model -- mPosition[idx].mV[X,Y,Z] std::vector mPosition; //map of positions to skin weights --- mSkinWeights[pos].mV[0..4] == . //joint_index corresponds to mJointList typedef std::vector weight_list; - typedef std::map weight_map; + typedef std::map weight_map; weight_map mSkinWeights; //get list of weight influences closest to given position -- cgit v1.2.3 From 0713e8c97a75cb209c5d36fba0bdf20dc107a981 Mon Sep 17 00:00:00 2001 From: nyx Date: Fri, 29 Jul 2011 17:21:27 -0400 Subject: BUILDFIX: fixing build for linux, casting doubles as parameters to abs --- indra/llprimitive/llmodel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 90c1c252ed..74e5657d28 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -225,7 +225,7 @@ public: bool areEqual( double a, double b ) { const float epsilon = 1e-5f; - return (abs(a - b) > epsilon) && (a < b); + return (abs((int)(a - b)) > epsilon) && (a < b); } //Make sure that we return false for any values that are within the tolerance for equivalence bool operator() ( const LLVector3& a, const LLVector3& b ) -- cgit v1.2.3 From c013c3ab5360f25ad4f9d0c7663c342367105324 Mon Sep 17 00:00:00 2001 From: prep linden Date: Fri, 29 Jul 2011 17:44:42 -0400 Subject: Removed joint Positional Compare because it was crashing on some rigs --- indra/llprimitive/llmodel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 9dab3a0400..4f4e642f68 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -224,7 +224,7 @@ public: bool areEqual( double a, double b ) { const float epsilon = 1e-5f; - return (abs(a - b) > epsilon) && (a < b); + return (abs(a - b) < epsilon) && (a < b); } //Make sure that we return false for any values that are within the tolerance for equivalence bool operator() ( const LLVector3& a, const LLVector3& b ) @@ -239,7 +239,7 @@ public: //map of positions to skin weights --- mSkinWeights[pos].mV[0..4] == . //joint_index corresponds to mJointList typedef std::vector weight_list; - typedef std::map weight_map; + typedef std::map weight_map; weight_map mSkinWeights; //get list of weight influences closest to given position -- cgit v1.2.3 From df94d0c778e63ce053cfd1fa4423b180bab6adfb Mon Sep 17 00:00:00 2001 From: prep Date: Wed, 3 Aug 2011 17:01:34 -0400 Subject: Fixes for sh-2039, sh-1336, and sh-2044. Vertices were having incorrect weights assigned. --- indra/llprimitive/llmodel.h | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index b5dd9bf87d..9a7b9fa271 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -219,20 +219,17 @@ public: }; - struct JointPositionalCompare + //Are the doubles the same w/in epsilon specified tolerance + bool areEqual( double a, double b ) { - //Are the doubles the same w/in epsilon specified tolerance - bool areEqual( double a, double b ) - { - const float epsilon = 1e-5f; - return (abs((int)(a - b)) < epsilon) && (a < b); - } - //Make sure that we return false for any values that are within the tolerance for equivalence - bool operator() ( const LLVector3& a, const LLVector3& b ) - { - return ( areEqual( a[0],b[0]) && areEqual( a[1],b[1] ) && areEqual( a[2],b[2]) ) ? false : true; - } - }; + const float epsilon = 1e-5f; + return (fabs((a - b)) < epsilon) ? true : false ; + } + //Make sure that we return false for any values that are within the tolerance for equivalence + bool jointPositionalLookup( const LLVector3& a, const LLVector3& b ) + { + return ( areEqual( a[0],b[0]) && areEqual( a[1],b[1] ) && areEqual( a[2],b[2]) ) ? true : false; + } //copy of position array for this model -- mPosition[idx].mV[X,Y,Z] std::vector mPosition; -- cgit v1.2.3 From 71ac45a28b238bac4ac0cf43ee85f04589ffa116 Mon Sep 17 00:00:00 2001 From: prep linden Date: Tue, 30 Aug 2011 09:32:16 -0400 Subject: Handling of material mismatches - lod materials are required to be a subset of the high lod, introduced addEmptyFace() for when parity does not exist between model material counts --- indra/llprimitive/llmodel.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'indra/llprimitive/llmodel.h') diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index 9a7b9fa271..1cf528fd9f 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -176,8 +176,10 @@ public: //reorder face list based on mMaterialList in this and reference so //order matches that of reference (material ordering touchup) - void matchMaterialOrder(LLModel* reference); - + bool matchMaterialOrder(LLModel* ref, int& refFaceCnt, int& modelFaceCnt ); + bool isMaterialListSubset( LLModel* ref ); + bool needToAddFaces( LLModel* ref, int& refFaceCnt, int& modelFaceCnt ); + std::vector mMaterialList; //data used for skin weights -- cgit v1.2.3