From 52ce165290583af55576691ec1f8dc342a5af25b Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 11 May 2021 01:45:23 +0100 Subject: [PATCH 01/23] uploader error cleanup round 1 --- indra/llprimitive/llmodelloader.h | 1 + indra/newview/llfloatermodelpreview.cpp | 11 ++++++++++- indra/newview/llmodelpreview.cpp | 5 +++-- .../skins/default/xui/en/floater_model_preview.xml | 1 + 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/indra/llprimitive/llmodelloader.h b/indra/llprimitive/llmodelloader.h index a67c39252c..0bd7a05217 100644 --- a/indra/llprimitive/llmodelloader.h +++ b/indra/llprimitive/llmodelloader.h @@ -95,6 +95,7 @@ public: ERROR_INVALID_PARAMETERS, ERROR_OUT_OF_RANGE, ERROR_FILE_VERSION_INVALID, + ERROR_LOD_MODEL_MISMATCH, // clean up and improve error reporting ERROR_MODEL // this error should always be last in this list, error code is passed as ERROR_MODEL+error_code } eLoadState; diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index f24c047c25..294b0b234a 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -866,7 +866,9 @@ void LLFloaterModelPreview::draw() { if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_MATERIALS ) { - childSetTextArg("status", "[STATUS]", getString("status_material_mismatch")); + // cleanup/improve errors - this error is effectively duplicated, the unused one was actually better + // childSetTextArg("status", "[STATUS]", getString("status_material_mismatch")); + childSetTextArg("status", "[STATUS]", getString("mesh_status_invalid_material_list")); } else if ( mModelPreview->getLoadState() > LLModelLoader::ERROR_MODEL ) @@ -879,6 +881,13 @@ void LLFloaterModelPreview::draw() childSetTextArg("status", "[STATUS]", getString("status_parse_error")); toggleCalculateButton(false); } + // improve error reporting + else + if ( mModelPreview->getLoadState() == LLModelLoader::ERROR_LOD_MODEL_MISMATCH ) + { + childSetTextArg("status", "[STATUS]", getString("status_lod_model_mismatch")); + toggleCalculateButton(false); + } else if (mModelPreview->getLoadState() == LLModelLoader::WARNING_BIND_SHAPE_ORIENTATION) { diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 3cbe727461..e322081a48 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -644,14 +644,15 @@ void LLModelPreview::rebuildUploadData() } if (!found_model && mModel[lod][model_ind] && !mModel[lod][model_ind]->mSubmodelID) { - if (mImporterDebug) + // this is not debug, this is an important/useful error advisory + // if (mImporterDebug) { std::ostringstream out; out << "Model " << mModel[lod][model_ind]->mLabel << " was not used - mismatching lod models."; LL_INFOS() << out.str() << LL_ENDL; LLFloaterModelPreview::addStringToLog(out, true); } - load_state = LLModelLoader::ERROR_MATERIALS; + load_state = LLModelLoader::ERROR_LOD_MODEL_MISMATCH; mFMP->childDisable("calculate_btn"); } } diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 1efcfbc211..2d091d1d34 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -17,6 +17,7 @@ Error: Dae parsing issue - see log for details. Warning: bind shape matrix is not in standard X-forward orientation. Error: Material of model is not a subset of reference model. + Error: LOD Model has no parent. Loading... Generating Meshes... Error: Vertex number is more than 65535, aborted! From e2fd2687d475d720da8f24db031dbab2e8855149 Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 18 May 2021 23:27:52 +0100 Subject: [PATCH 02/23] FIRE-30963 - better physics defaults --- indra/newview/app_settings/settings.xml | 11 +++ indra/newview/fs_resources/cube_phys.dae | 74 +++++++++++++++++++ indra/newview/fs_resources/hex_phys.dae | 70 ++++++++++++++++++ indra/newview/llfloatermodelpreview.cpp | 19 ++++- indra/newview/llmodelpreview.cpp | 31 ++++++++ indra/newview/llmodelpreview.h | 1 + .../default/xui/en/floater_model_preview.xml | 30 +++++++- indra/newview/viewer_manifest.py | 1 + 8 files changed, 232 insertions(+), 5 deletions(-) create mode 100644 indra/newview/fs_resources/cube_phys.dae create mode 100644 indra/newview/fs_resources/hex_phys.dae diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8085746764..f278f4dcf2 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -9399,6 +9399,17 @@ Value salt_and_pepper.jpg + FSPhysicsPresetUser1 + + Comment + full system path to a user provided physics mesh (DAE). + Persist + 1 + Type + String + Value + + MigrateCacheDirectory Comment diff --git a/indra/newview/fs_resources/cube_phys.dae b/indra/newview/fs_resources/cube_phys.dae new file mode 100644 index 0000000000..80a92cb38c --- /dev/null +++ b/indra/newview/fs_resources/cube_phys.dae @@ -0,0 +1,74 @@ + + + + + Avastar User + Avastar 2-0-10 on Blender 2.78 (sub 0) + + 2017-02-03T17:31:59 + 2017-02-03T17:31:59 + + Z_UP + + + + + + + + + + -0.4 -0.4 -0.4 -0.4 -0.4 0.4 -0.4 0.4 -0.4 -0.4 0.4 0.4 0.4 -0.4 -0.4 0.4 -0.4 0.4 0.4 0.4 -0.4 0.4 0.4 0.4 + + + + + + + + + + -1 -0 0 0 1 0 1 -0 0 0 -1 0 0 0 -1 0 -0 1 + + + + + + + + + + + + + + + 4 4 4 4 4 4 +

0 0 1 0 3 0 2 0 2 1 3 1 7 1 6 1 6 2 7 2 5 2 4 2 4 3 5 3 1 3 0 3 2 4 6 4 4 4 0 4 7 5 3 5 1 5 5 5

+
+
+ + + 1 + + +
+
+ + + + + 5.93563 6.77334 -14.9673 + 0 0 1 0 + 0 1 0 0 + 1 0 0 0 + 1 1 1 + + + + + + + +
+ diff --git a/indra/newview/fs_resources/hex_phys.dae b/indra/newview/fs_resources/hex_phys.dae new file mode 100644 index 0000000000..21d05cca6f --- /dev/null +++ b/indra/newview/fs_resources/hex_phys.dae @@ -0,0 +1,70 @@ + + + + + Blender User + Blender 2.80.43 commit date:2019-01-29, commit time:22:41, hash:a1ae04d15a9f + + 2019-02-05T14:28:24 + 2019-02-05T14:28:24 + + Z_UP + + + + + + + 0 1 -1 0 1 1 0.8660255 0.5 -1 0.8660255 0.5 1 0.8660254 -0.5000001 -1 0.8660254 -0.5000001 1 0 -1 -1 0 -1 1 -0.8660255 -0.4999999 -1 -0.8660255 -0.4999999 1 -0.8660255 0.4999999 -1 -0.8660255 0.4999999 1 + + + + + + + + + + 0.5 0.8660255 0 1 0 0 0.5 -0.8660255 0 -0.5000001 -0.8660253 0 0 0 1 -1 0 0 -0.5000001 0.8660255 0 0 0 -1 1 -1.19209e-7 0 0.5 -0.8660255 0 -0.5000001 -0.8660254 0 0 0 1 1.37651e-7 0 1 0 0 1 1.37651e-7 0 -1 1.37651e-7 0 -1 + + + + + + + + + + 1 1 0.8333333 0.5 1 0.5 0.8333333 1 0.6666666 0.5 0.8333333 0.5 0.6666666 1 0.5 0.5 0.6666666 0.5 0.5 1 0.3333333 0.5 0.5 0.5 0.25 0.49 0.04215389 0.13 0.4578461 0.1299999 0.3333333 1 0.1666666 0.5 0.3333333 0.5 0.1666666 1 0 0.5 0.1666666 0.5 0.5421539 0.13 0.5421539 0.37 0.9578461 0.37 1 1 0.8333333 1 0.8333333 0.5 0.8333333 1 0.6666666 1 0.6666666 0.5 0.6666666 1 0.5 1 0.5 0.5 0.5 1 0.3333333 1 0.3333333 0.5 0.4578461 0.1299999 0.4578461 0.37 0.25 0.49 0.25 0.49 0.04215389 0.37 0.04215389 0.13 0.04215389 0.13 0.25 0.00999999 0.4578461 0.1299999 0.3333333 1 0.1666666 1 0.1666666 0.5 0.1666666 1 0 1 0 0.5 0.5421539 0.37 0.75 0.49 0.9578461 0.37 0.9578461 0.37 0.9578461 0.1299999 0.75 0.00999999 0.75 0.00999999 0.5421539 0.13 0.9578461 0.37 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 +

1 0 0 2 0 1 0 0 2 3 1 3 4 1 4 2 1 5 5 2 6 6 2 7 4 2 8 7 3 9 8 3 10 6 3 11 1 4 12 9 4 13 5 4 14 9 5 15 10 5 16 8 5 17 11 6 18 0 6 19 10 6 20 8 7 21 10 7 22 2 7 23 1 0 24 3 0 25 2 0 26 3 8 27 5 8 28 4 8 29 5 9 30 7 9 31 6 9 32 7 10 33 9 10 34 8 10 35 5 11 36 3 11 37 1 11 38 1 12 39 11 12 40 9 12 41 9 13 42 7 13 43 5 13 44 9 5 45 11 5 46 10 5 47 11 6 48 1 6 49 0 6 50 10 14 51 0 14 52 2 14 53 2 15 54 4 15 55 6 15 56 6 7 57 8 7 58 2 7 59

+
+
+
+
+ + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + +
\ No newline at end of file diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 294b0b234a..9f34b59bf6 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -1139,8 +1139,21 @@ void LLFloaterModelPreview::onPhysicsUseLOD(LLUICtrl* ctrl, void* userdata) S32 file_mode = iface->getItemCount() - 1; if (which_mode < file_mode) { - S32 which_lod = num_lods - which_mode; - sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + // FIRE-30963 Support pre-defined physics shapes (initially cube) + // S32 which_lod = num_lods - which_mode; + // sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + if(which_mode >= num_lods) + { + // which_mode is between the last LOD entry and file selection + // so it is a preset + sInstance->mModelPreview->setPhysicsFromPreset(which_mode-num_lods); + } + else + { + S32 which_lod = num_lods - which_mode; + sInstance->mModelPreview->setPhysicsFromLOD(which_lod); + } + // } LLModelPreview *model_preview = sInstance->mModelPreview; @@ -1747,7 +1760,7 @@ void LLFloaterModelPreview::setCtrlLoadFromFile(S32 lod) LLComboBox* lod_combo = findChild("physics_lod_combo"); if (lod_combo) { - lod_combo->setCurrentByIndex(5); + lod_combo->setCurrentByIndex(lod_combo->getItemCount() - 1); // FIRE-30963 - better physics defaults } } else diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index e322081a48..58c74e8d95 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -923,7 +923,38 @@ void LLModelPreview::setPhysicsFromLOD(S32 lod) updateStatusMessages(); } } +// FIRE-30963 - better physics defaults +void LLModelPreview::setPhysicsFromPreset(S32 preset) +{ + assert_main_thread(); + mPhysicsSearchLOD = -1; + mLODFile[LLModel::LOD_PHYSICS].clear(); + mFMP->childSetValue("physics_file", mLODFile[LLModel::LOD_PHYSICS]); + mVertexBuffer[LLModel::LOD_PHYSICS].clear(); + if(preset == 1) + { + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_FS_RESOURCES, "cube_phys.dae"), LLModel::LOD_PHYSICS); + } + else if(preset == 2) + { + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_FS_RESOURCES, "hex_phys.dae"), LLModel::LOD_PHYSICS); + } + else if(preset == 3) + { + auto ud_physics = gSavedSettings.getString("FSPhysicsPresetUser1"); + LL_INFOS() << "Loading User defined Physics Preset [" << ud_physics << "]" << LL_ENDL; + if (ud_physics != "" && gDirUtilp->fileExists(ud_physics)) + { + // loading physics from file + mPhysicsSearchLOD = LLModel::LOD_PHYSICS; + loadModel( gDirUtilp->getExpandedFilename(LL_PATH_NONE, gDirUtilp->getDirName(ud_physics), gDirUtilp->getBaseFileName(ud_physics, false)), LLModel::LOD_PHYSICS); + } + } +} +// void LLModelPreview::clearIncompatible(S32 lod) { //Don't discard models if specified model is the physic rep diff --git a/indra/newview/llmodelpreview.h b/indra/newview/llmodelpreview.h index a0e1d2b18c..90a3fccf81 100644 --- a/indra/newview/llmodelpreview.h +++ b/indra/newview/llmodelpreview.h @@ -139,6 +139,7 @@ public: void setTexture(U32 name) { mTextureName = name; } void setPhysicsFromLOD(S32 lod); + void setPhysicsFromPreset(S32 preset);// FIRE-30963 - better physics defaults BOOL render(); void update(); void genBuffers(S32 lod, bool skinned); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index 2d091d1d34..684dbaa81b 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -788,6 +788,9 @@ Medium Low Lowest + Cube + Hexagon + User Defined From file + + Physics User Defined Preset: + + Include firestorm resources with self.prefix(src_dst="fs_resources"): self.path("*.lsltxt") + self.path("*.dae") # FIRE-30963 - better physics defaults # skins with self.prefix(src_dst="skins"): From 95633f80c375450af653ac941f4074168b23108d Mon Sep 17 00:00:00 2001 From: Beq Date: Tue, 18 May 2021 23:46:02 +0100 Subject: [PATCH 03/23] FIRE-30964 [OpenSim] re-enable analyse function in opensim --- indra/newview/llmodelpreview.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/indra/newview/llmodelpreview.cpp b/indra/newview/llmodelpreview.cpp index 58c74e8d95..c6b41ca2c0 100644 --- a/indra/newview/llmodelpreview.cpp +++ b/indra/newview/llmodelpreview.cpp @@ -2397,10 +2397,7 @@ void LLModelPreview::updateStatusMessages() //fmp->childSetEnabled("physics_optimize", !use_hull); - // Enable mesh analysis in SL only for now - //bool enable = (phys_tris > 0 || phys_hulls > 0) && fmp->mCurRequest.empty(); - bool enable = (phys_tris > 0 || phys_hulls > 0) && fmp->mCurRequest.empty() && LLGridManager::instance().isInSecondLife(); - // + bool enable = (phys_tris > 0 || phys_hulls > 0) && fmp->mCurRequest.empty(); //enable = enable && !use_hull && fmp->childGetValue("physics_optimize").asBoolean(); //enable/disable "analysis" UI @@ -2434,13 +2431,10 @@ void LLModelPreview::updateStatusMessages() fmp->childEnable("Simplify"); } - // Enable mesh analysis in SL only for now - //if (phys_tris || phys_hulls > 0) - //{ - // fmp->childEnable("Decompose"); - //} - fmp->childSetEnabled("Decompose", (phys_tris || phys_hulls > 0) && LLGridManager::instance().isInSecondLife()); - // + if (phys_tris || phys_hulls > 0) + { + fmp->childEnable("Decompose"); + } } else { From 8f644338ddcfbafb9222f24a5b9f83231442d34d Mon Sep 17 00:00:00 2001 From: PanteraPolnocy Date: Fri, 21 May 2021 01:05:46 +0200 Subject: [PATCH 04/23] Updated Polish translation --- .../skins/default/xui/pl/floater_model_preview.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/indra/newview/skins/default/xui/pl/floater_model_preview.xml b/indra/newview/skins/default/xui/pl/floater_model_preview.xml index 0b89eea908..ad5b5a73d4 100644 --- a/indra/newview/skins/default/xui/pl/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_model_preview.xml @@ -4,6 +4,7 @@ Błąd: Problem z parsowaniem Dae, zobacz log. Uwaga: Macierz powiązań kształtu nie jest w standardowej orientacji X-forward. Błąd: Materiał nie jest podzbiorem modelu referencyjnego. + Błąd: Model LOD nie ma rodzica. Wczytywanie... Generowanie meszy... Błąd: Ilość wierzchołków większa niż 65535, przerwano! @@ -101,6 +102,9 @@ Średnie Niskie Najniższe + Sześcian + Heksagon + Użytkownika Z pliku