From 13ec64e0e6a107d21108e817c5f9e33b6c929525 Mon Sep 17 00:00:00 2001 From: Dave Parks Date: Thu, 30 Dec 2010 16:07:18 -0600 Subject: SH-714 Fix for skinned meshes being incorrectly scaled. --- indra/newview/llfloatermodelpreview.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'indra/newview/llfloatermodelpreview.cpp') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 68b9e5d23d..8302befaad 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1562,11 +1562,23 @@ void LLModelLoader::run() //add instance to scene for this model - LLMatrix4 transform; + LLMatrix4 transformation = mTransform; + // adjust the transformation to compensate for mesh normalization + + LLMatrix4 mesh_translation; + mesh_translation.setTranslation(mesh_translation_vector); + mesh_translation *= transformation; + transformation = mesh_translation; + + LLMatrix4 mesh_scale; + mesh_scale.initScale(mesh_scale_vector); + mesh_scale *= transformation; + transformation = mesh_scale; + std::vector materials; materials.resize(model->getNumVolumeFaces()); - mScene[transform].push_back(LLModelInstance(model, transform, materials)); - stretch_extents(model, transform, mExtents[0], mExtents[1], mFirstTransform); + mScene[transformation].push_back(LLModelInstance(model, transformation, materials)); + stretch_extents(model, transformation, mExtents[0], mExtents[1], mFirstTransform); } } } -- cgit v1.2.3 From ca9df698db9c7a118d29adfe52f49054c333d982 Mon Sep 17 00:00:00 2001 From: Roxie Linden Date: Thu, 30 Dec 2010 22:08:25 -0800 Subject: Code review fix from davep - use booling or operator and not binary one Remove unnecessary state check. Initial dialog work for showing physics cost in upload dialog --- indra/newview/llfloatermodelpreview.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'indra/newview/llfloatermodelpreview.cpp') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2f1ce25511..f96c02d9b7 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -2055,6 +2055,7 @@ U32 LLModelPreview::calcResourceCost() F32 debug_scale = mFMP->childGetValue("import_scale").asReal(); F32 streaming_cost = 0.f; + F32 physics_cost = 0.f; for (U32 i = 0; i < mUploadData.size(); ++i) { LLModelInstance& instance = mUploadData[i]; @@ -2109,6 +2110,7 @@ U32 LLModelPreview::calcResourceCost() //mFMP->childSetTextArg(info_name[LLModel::LOD_PHYSICS], "[HULLS]", llformat("%d",num_hulls)); //mFMP->childSetTextArg(info_name[LLModel::LOD_PHYSICS], "[POINTS]", llformat("%d",num_points)); mFMP->childSetTextArg("streaming cost", "[COST]", llformat("%.3f", streaming_cost)); + mFMP->childSetTextArg("physics cost", "[COST]", llformat("%.3f", physics_cost)); F32 scale = mFMP->childGetValue("import_scale").asReal()*2.f; mFMP->childSetTextArg("import_dimensions", "[X]", llformat("%.3f", mPreviewScale[0]*scale)); mFMP->childSetTextArg("import_dimensions", "[Y]", llformat("%.3f", mPreviewScale[1]*scale)); -- cgit v1.2.3 From d196348d0f4bd542eee3702329dab28952b8a5e5 Mon Sep 17 00:00:00 2001 From: leyla_linden Date: Fri, 31 Dec 2010 12:53:39 -0800 Subject: Physics stage of wizard --- indra/newview/llfloatermodelpreview.cpp | 58 +++++++++++++++++---------------- 1 file changed, 30 insertions(+), 28 deletions(-) (limited to 'indra/newview/llfloatermodelpreview.cpp') diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 2f1ce25511..41fbdab2de 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -276,7 +276,10 @@ BOOL LLFloaterModelPreview::postBuild() return FALSE; } - setViewOption("show_textures", true); + + + + childSetAction("lod_browse", onBrowseLOD, this); @@ -393,13 +396,22 @@ LLFloaterModelPreview::~LLFloaterModelPreview() void LLFloaterModelPreview::onViewOptionChecked(const LLSD& userdata) { - mViewOption[userdata.asString()] = !mViewOption[userdata.asString()]; - mModelPreview->refresh(); + if (mModelPreview) + { + mModelPreview->mViewOption[userdata.asString()] = !mModelPreview->mViewOption[userdata.asString()]; + + mModelPreview->refresh(); + } } bool LLFloaterModelPreview::isViewOptionChecked(const LLSD& userdata) { - return mViewOption[userdata.asString()]; + if (mModelPreview) + { + return mModelPreview->mViewOption[userdata.asString()]; + } + + return false; } bool LLFloaterModelPreview::isViewOptionEnabled(const LLSD& userdata) @@ -422,11 +434,6 @@ void LLFloaterModelPreview::disableViewOption(const std::string& option) setViewOptionEnabled(option, false); } -void LLFloaterModelPreview::setViewOption(const std::string& option, bool value) -{ - mViewOption[option] = value; -} - void LLFloaterModelPreview::loadModel(S32 lod) { mModelPreview->mLoading = true; @@ -2017,7 +2024,9 @@ LLModelPreview::LLModelPreview(S32 width, S32 height, LLFloater* fmp) mBuildShareTolerance = 0.f; mBuildQueueMode = GLOD_QUEUE_GREEDY; mBuildBorderMode = GLOD_BORDER_UNLOCK; - mBuildOperator = GLOD_OPERATOR_HALF_EDGE_COLLAPSE; + mBuildOperator = GLOD_OPERATOR_HALF_EDGE_COLLAPSE; + + mViewOption["show_textures"] = false; mFMP = fmp; @@ -3258,13 +3267,14 @@ void LLModelPreview::updateStatusMessages() if (!fmp->isViewOptionEnabled("show_physics")) { fmp->enableViewOption("show_physics"); - fmp->setViewOption("show_physics", true); + mViewOption["show_physics"] = true; } } else { fmp->disableViewOption("show_physics"); - fmp->setViewOption("show_physics", false); + mViewOption["show_physics"] = false; + } //bool use_hull = fmp->childGetValue("physics_use_hull").asBoolean(); @@ -3589,21 +3599,11 @@ BOOL LLModelPreview::render() LLMutexLock lock(this); mNeedsUpdate = FALSE; - bool edges = false; - bool joint_positions = false; - bool skin_weight = false; - bool textures = false; - bool physics = false; - - LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; - if (fmp) - { - edges = fmp->isViewOptionChecked("show_edges"); - joint_positions = fmp->isViewOptionChecked("show_joint_positions"); - skin_weight = fmp->isViewOptionChecked("show_skin_weight"); - textures = fmp->isViewOptionChecked("show_textures"); - physics = fmp->isViewOptionChecked("show_physics"); - } + bool edges = mViewOption["show_edges"]; + bool joint_positions = mViewOption["show_joint_positions"]; + bool skin_weight = mViewOption["show_skin_weight"]; + bool textures = mViewOption["show_textures"]; + bool physics = mViewOption["show_physics"]; S32 width = getWidth(); S32 height = getHeight(); @@ -3636,6 +3636,8 @@ BOOL LLModelPreview::render() gGL.popMatrix(); } + LLFloaterModelPreview* fmp = LLFloaterModelPreview::sInstance; + bool has_skin_weights = false; bool upload_skin = mFMP->childGetValue("upload_skin").asBoolean(); bool upload_joints = mFMP->childGetValue("upload_joints").asBoolean(); @@ -3667,7 +3669,7 @@ BOOL LLModelPreview::render() mFMP->childDisable("upload_skin"); if (fmp) { - fmp->setViewOption("show_skin_weight", false); + mViewOption["show_skin_weight"] = false; fmp->disableViewOption("show_skin_weight"); fmp->disableViewOption("show_joint_positions"); } -- cgit v1.2.3