From e7f3f3bdbbec310030209e09d389cd434adb7991 Mon Sep 17 00:00:00 2001 From: leyla_linden <none@none> Date: Mon, 20 Dec 2010 17:32:05 -0800 Subject: [PATCH] model upload wizard - added optimization and state changes --- indra/newview/llfloatermodelpreview.cpp | 15 +- indra/newview/llfloatermodelpreview.h | 4 +- indra/newview/llfloatermodelwizard.cpp | 141 ++- indra/newview/llfloatermodelwizard.h | 38 +- .../default/xui/en/floater_model_wizard.xml | 832 +++++++++++++----- 5 files changed, 774 insertions(+), 256 deletions(-) diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index f9648b0e3bd..85d0ae02cfe 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -107,7 +107,6 @@ const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PRE const S32 PREVIEW_HPAD = PREVIEW_RESIZE_HANDLE_SIZE; const S32 PREF_BUTTON_HEIGHT = 16 + 7 + 16; const S32 PREVIEW_TEXTURE_HEIGHT = 300; -const S32 NUM_LOD = 4; void drawBoxOutline(const LLVector3& pos, const LLVector3& size); @@ -476,12 +475,10 @@ void LLFloaterModelPreview::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata) S32 which_mode = 0; - LLCtrlSelectionInterface* iface = fp->childGetSelectionInterface("preview_lod_combo"); - if (iface) - { - which_mode = iface->getFirstSelectedIndex(); - } - which_mode = (NUM_LOD-1)-which_mode; // combo box list of lods is in reverse order + LLComboBox* combo = (LLComboBox*) ctrl; + + which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order + fp->mModelPreview->setPreviewLOD(which_mode); } @@ -2699,7 +2696,7 @@ bool LLModelPreview::containsRiggedAsset( void ) } return false; } -void LLModelPreview::genLODs(S32 which_lod) +void LLModelPreview::genLODs(S32 which_lod, U32 decimation) { if (mBaseModel.empty()) { @@ -2916,7 +2913,7 @@ void LLModelPreview::genLODs(S32 which_lod) { if (lod < start) { - triangle_count /= 3; + triangle_count /= decimation; } } else diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index ae4cf18feef..64b220d86bf 100755 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -52,6 +52,8 @@ class domTranslate; class LLMenuButton; class LLToggleableMenu; +const S32 NUM_LOD = 4; + class LLModelLoader : public LLThread { public: @@ -258,7 +260,7 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex void clearModel(S32 lod); void loadModel(std::string filename, S32 lod); void loadModelCallback(S32 lod); - void genLODs(S32 which_lod = -1); + void genLODs(S32 which_lod = -1, U32 decimation = 3); void generateNormals(); void consolidate(); void clearMaterials(); diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index 79c29ef0174..6a92e43d1a0 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -28,19 +28,71 @@ #include "llviewerprecompiledheaders.h" +#include "llbutton.h" #include "lldrawable.h" +#include "llcombobox.h" #include "llfloater.h" #include "llfloatermodelwizard.h" #include "llfloatermodelpreview.h" #include "llfloaterreg.h" +#include "llslider.h" +static const std::string stateNames[]={ + "choose_file", + "optimize", + "physics", + "review", + "upload"}; LLFloaterModelWizard::LLFloaterModelWizard(const LLSD& key) : LLFloater(key) { } +void LLFloaterModelWizard::setState(int state) +{ + mState = state; + setButtons(state); + + for(size_t t=0; t<LL_ARRAY_SIZE(stateNames); ++t) + { + LLView *view = getChild<LLView>(stateNames[t]+"_panel"); + if (view) + { + view->setVisible(state == (int) t ? TRUE : FALSE); + } + } + + if (state == OPTIMIZE) + { + mModelPreview->genLODs(-1); + } +} + +void LLFloaterModelWizard::setButtons(int state) +{ + for(size_t i=0; i<LL_ARRAY_SIZE(stateNames); ++i) + { + LLButton *button = getChild<LLButton>(stateNames[i]+"_btn"); + + if (i < state) + { + button->setEnabled(TRUE); + button->setToggleState(FALSE); + } + else if (i == state) + { + button->setEnabled(TRUE); + button->setToggleState(TRUE); + } + else + { + button->setEnabled(FALSE); + } + } +} + void LLFloaterModelWizard::loadModel() { mModelPreview->mLoading = TRUE; @@ -48,6 +100,30 @@ void LLFloaterModelWizard::loadModel() (new LLMeshFilePicker(mModelPreview, 3))->getFile(); } +void LLFloaterModelWizard::onClickCancel() +{ + closeFloater(); +} + +void LLFloaterModelWizard::onClickBack() +{ + setState(llmax((int) CHOOSE_FILE, mState-1)); +} + +void LLFloaterModelWizard::onClickNext() +{ + setState(llmin((int) UPLOAD, mState+1)); +} + +bool LLFloaterModelWizard::onEnableNext() +{ + return true; +} + +bool LLFloaterModelWizard::onEnableBack() +{ + return true; +} BOOL LLFloaterModelWizard::postBuild() { @@ -56,7 +132,20 @@ BOOL LLFloaterModelWizard::postBuild() childSetValue("import_scale", (F32) 0.67335826); getChild<LLUICtrl>("browse")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this)); + getChild<LLUICtrl>("cancel")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickCancel, this)); + getChild<LLUICtrl>("back")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickBack, this)); + getChild<LLUICtrl>("next")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickNext, this)); + childSetCommitCallback("preview_lod_combo", onPreviewLODCommit, this); + getChild<LLUICtrl>("accuracy_slider")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onAccuracyPerformance, this, _2)); + + childSetAction("ok_btn", onUpload, this); + LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar; + + enable_registrar.add("Next.OnEnable", boost::bind(&LLFloaterModelWizard::onEnableNext, this)); + enable_registrar.add("Back.OnEnable", boost::bind(&LLFloaterModelWizard::onEnableBack, this)); + + mPreviewRect = preview_panel->getRect(); mModelPreview = new LLModelPreview(512, 512, this); @@ -64,9 +153,55 @@ BOOL LLFloaterModelWizard::postBuild() center(); + setState(CHOOSE_FILE); + + childSetTextArg("import_dimensions", "[X]", LLStringUtil::null); + childSetTextArg("import_dimensions", "[Y]", LLStringUtil::null); + childSetTextArg("import_dimensions", "[Z]", LLStringUtil::null); + return TRUE; } +void LLFloaterModelWizard::onUpload(void* user_data) +{ + LLFloaterModelWizard* mp = (LLFloaterModelWizard*) user_data; + + mp->mModelPreview->rebuildUploadData(); + + gMeshRepo.uploadModel(mp->mModelPreview->mUploadData, mp->mModelPreview->mPreviewScale, + mp->childGetValue("upload_textures").asBoolean(), mp->childGetValue("upload_skin"), mp->childGetValue("upload_joints")); + + mp->closeFloater(false); +} + + +void LLFloaterModelWizard::onAccuracyPerformance(const LLSD& data) +{ + int val = (int) data.asInteger(); + + mModelPreview->genLODs(-1, NUM_LOD-val); + + mModelPreview->refresh(); +} + +void LLFloaterModelWizard::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata) +{ + LLFloaterModelWizard *fp =(LLFloaterModelWizard *)userdata; + + if (!fp->mModelPreview) + { + return; + } + + S32 which_mode = 0; + + LLComboBox* combo = (LLComboBox*) ctrl; + + which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order + + fp->mModelPreview->setPreviewLOD(which_mode); +} + void LLFloaterModelWizard::draw() { LLFloater::draw(); @@ -74,14 +209,14 @@ void LLFloaterModelWizard::draw() mModelPreview->update(); - if (mModelPreview && mModelPreview->mModelLoader) + if (mModelPreview) { gGL.color3f(1.f, 1.f, 1.f); gGL.getTexUnit(0)->bind(mModelPreview); - - LLView* preview_panel = getChild<LLView>("preview_panel"); + LLView *view = getChild<LLView>(stateNames[mState]+"_panel"); + LLView* preview_panel = view->getChild<LLView>("preview_panel"); LLRect rect = preview_panel->getRect(); if (rect != mPreviewRect) diff --git a/indra/newview/llfloatermodelwizard.h b/indra/newview/llfloatermodelwizard.h index c766697d472..ab69d93b635 100644 --- a/indra/newview/llfloatermodelwizard.h +++ b/indra/newview/llfloatermodelwizard.h @@ -35,24 +35,36 @@ class LLFloaterModelWizard : public LLFloater virtual ~LLFloaterModelWizard() {}; /*virtual*/ BOOL postBuild(); void draw(); - void loadModel(); - //void onSave(); - //void onReset(); - //void onCancel(); - ///*virtual*/ void onOpen(const LLSD& key); private: - + enum EWizardState + { + CHOOSE_FILE = 0, + OPTIMIZE, + PHYSICS, + REVIEW, + UPLOAD + }; + + void setState(int state); + void setButtons(int state); + void onClickCancel(); + void onClickBack(); + void onClickNext(); + bool onEnableNext(); + bool onEnableBack(); + void loadModel(); + static void onPreviewLODCommit(LLUICtrl*,void*); + void onAccuracyPerformance(const LLSD& data); + static void onUpload(void* data); + LLModelPreview* mModelPreview; LLRect mPreviewRect; + int mState; + + + }; -/* -namespace LLFloaterDisplayNameUtil -{ - // Register with LLFloaterReg - void registerFloater(); -} -*/ #endif diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml index 4a4b8075c8b..18dc33a23ad 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1,230 +1,602 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - layout="topleft" - name="Model Wizard" - help_topic="model_wizard" - bg_opaque_image_overlay="0.5 0.5 0.5 1" - height="450" - save_rect="true" - title="UPLOAD MODEL WIZARD" - width="530"> - <panel - height="600"> - <button - top="30" - left="410" - height="32" - name="upload" - enabled="false" - label="5. Upload" - border="false" - image_unselected="model_wizard/middle_button_off.png" - image_selected="model_wizard/middle_button_press.png" - image_hover_unselected="model_wizard/middle_button_over.png" - image_disabled="model_wizard/middle_button_disabled.png" - image_disabled_selected="model_wizard/middle_button_disabled.png" - width="110"/> - <button - top="30" - left="310" - height="32" - tab_stop="false" - name="review" - label="4. Review" - enabled="false" - border="false" - image_unselected="model_wizard/middle_button_off.png" - image_selected="model_wizard/middle_button_press.png" - image_hover_unselected="model_wizard/middle_button_over.png" - image_disabled="model_wizard/middle_button_disabled.png" - image_disabled_selected="model_wizard/middle_button_disabled.png" - width="110"/> - <button - top="30" - left="210" - height="32" - name="physics" - label="3. Physics" - tab_stop="false" - enabled="false" - border="false" - image_unselected="model_wizard/middle_button_off.png" - image_selected="model_wizard/middle_button_press.png" - image_hover_unselected="model_wizard/middle_button_over.png" - image_disabled="model_wizard/middle_button_disabled.png" - image_disabled_selected="model_wizard/middle_button_disabled.png" - width="110"/> - <button - top="30" - left="115" - name="optimize" - label="2. Optimize" - tab_stop="false" - height="32" - border="false" - image_unselected="model_wizard/middle_button_off.png" - image_selected="model_wizard/middle_button_press.png" - image_hover_unselected="model_wizard/middle_button_over.png" - image_disabled="model_wizard/middle_button_disabled.png" - image_disabled_selected="model_wizard/middle_button_disabled.png" - width="110"/> - <button - top="30" - left="15" - name="choose_file" - enabled="false" - label="1. Choose File" - height="32" - image_unselected="model_wizard/left_button_off.png" - image_selected="model_wizard/left_button_press.png" - image_hover_unselected="model_wizard/left_button_over.png" - image_disabled="model_wizard/left_button_disabled.png" - image_disabled_selected="model_wizard/left_button_disabled.png" - width="110"/> - <panel - top_pad="20" - height="20" - width="500" - bg_opaque_color="DkGray2" - background_visible="true" - background_opaque="true" - left="20"> - <text - width="200" - left="10" - top="2" - height="10" - font="SansSerifBig" - layout="topleft" - > - Upload Model - </text></panel> - <text - top_pad="14" - width="460" - height="20" - font="SansSerifSmall" - layout="topleft" - word_wrap="true" - left_delta="0"> - This wizard will help you import mesh models to Second Life. First specify a file containing the model you wish to import. Second Life supports COLLADA (.dae) files. - </text> - - <panel - top_delta="40" - left="15" - height="240" - width="500" - bg_opaque_color="DkGray2" - background_visible="true" - background_opaque="true"> - - <text - type="string" - length="1" - follows="left|top" - top="10" - height="10" - layout="topleft" - left_delta="10" - name="Cache location" - width="300"> - Filename: - </text> - <line_editor - border_style="line" - border_thickness="1" - follows="left|top" - font="SansSerifSmall" - height="20" - layout="topleft" - left_delta="0" - max_length="4096" - name="lod_file" - top_pad="5" - width="220" /> - <button - follows="left|top" - height="23" - label="Browse..." - label_selected="Browse..." - layout="topleft" - left_pad="10" - name="browse" - top_delta="-1" - width="75"> - </button> - <text - top_delta="-15" - width="200" - height="15" - font="SansSerifSmall" - layout="topleft" - left_pad="24"> - Model Preview: - </text> - - <!-- Placeholder panel for 3D preview render --> - - <panel - left_delta="-2" - top_pad="0" - name="preview_panel" - bevel_style="none" - border_style="line" - border="true" - height="150" - follows="all" - width="150"> - </panel> - <text - top_pad="10" - width="130" - height="15" - left="340" - word_wrap="true" - > - Dimensions (meters): - </text> - <text - top_pad="5" - width="150" - height="15" - name="import_dimensions" - left_delta="0"> - X: [X] | Y: [Y] | Z: [Z] - </text> - - <text - top="100" - width="320" - height="40" - left="10" - word_wrap="true" - > - Note: -Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window. - </text> - </panel> - <button - top="410" - right="-175" - width="80" - height="20" - label="<< Back" /> - <button - top="410" - right="-92" - width="80" - height="20" - label="Next >> " /> - <button - top="410" - right="-15" - width="70" - height="20" - label="Cancel" /> - </panel> - <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + layout="topleft" + name="Model Wizard" + help_topic="model_wizard" + bg_opaque_image_overlay="0.5 0.5 0.5 1" + height="450" + save_rect="true" + title="UPLOAD MODEL WIZARD" + width="530"> + <button + top="30" + tab_stop="false" + left="410" + height="32" + name="upload_btn" + enabled="false" + label="5. Upload" + border="false" + image_unselected="model_wizard/middle_button_off.png" + image_selected="model_wizard/middle_button_press.png" + image_hover_unselected="model_wizard/middle_button_over.png" + image_disabled="model_wizard/middle_button_disabled.png" + image_disabled_selected="model_wizard/middle_button_disabled.png" + width="110"/> + <button + top="30" + left="310" + height="32" + tab_stop="false" + name="review_btn" + label="4. Review" + enabled="false" + border="false" + image_unselected="model_wizard/middle_button_off.png" + image_selected="model_wizard/middle_button_press.png" + image_hover_unselected="model_wizard/middle_button_over.png" + image_disabled="model_wizard/middle_button_disabled.png" + image_disabled_selected="model_wizard/middle_button_disabled.png" + width="110"/> + <button + top="30" + left="210" + height="32" + name="physics_btn" + label="3. Physics" + tab_stop="false" + enabled="false" + border="false" + image_unselected="model_wizard/middle_button_off.png" + image_selected="model_wizard/middle_button_press.png" + image_hover_unselected="model_wizard/middle_button_over.png" + image_disabled="model_wizard/middle_button_disabled.png" + image_disabled_selected="model_wizard/middle_button_disabled.png" + width="110"/> + <button + top="30" + left="115" + name="optimize_btn" + label="2. Optimize" + tab_stop="false" + height="32" + border="false" + image_unselected="model_wizard/middle_button_off.png" + image_selected="model_wizard/middle_button_press.png" + image_hover_unselected="model_wizard/middle_button_over.png" + image_disabled="model_wizard/middle_button_disabled.png" + image_disabled_selected="model_wizard/middle_button_disabled.png" + width="110"/> + <button + top="30" + left="15" + name="choose_file_btn" + tab_stop="false" + enabled="false" + label="1. Choose File" + height="32" + image_unselected="model_wizard/left_button_off.png" + image_selected="model_wizard/left_button_press.png" + image_hover_unselected="model_wizard/left_button_over.png" + image_disabled="model_wizard/left_button_disabled.png" + image_disabled_selected="model_wizard/left_button_disabled.png" + width="110"/> + <panel + height="388" + top_pad="0" + name="choose_file_panel" + visible="true" + width="530" + left="0"> + <panel + height="20" + top_pad="20" + width="500" + name="header_panel" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="20"> + <text + width="200" + left="10" + top="2" + name="header_text" + height="10" + font="SansSerifBig" + layout="topleft"> + Upload Model + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + name="description" + font="SansSerifSmall" + layout="topleft" + word_wrap="true" + left_delta="0"> + This wizard will help you import mesh models to Second Life. First specify a file containing the model you wish to import. Second Life supports COLLADA (.dae) files. + </text> + <panel + top_delta="40" + left="15" + height="240" + width="500" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text + type="string" + length="1" + follows="left|top" + top="10" + height="10" + layout="topleft" + left_delta="10" + name="Cache location" + width="300"> + Filename: + </text> + <line_editor + border_style="line" + border_thickness="1" + follows="left|top" + font="SansSerifSmall" + height="20" + layout="topleft" + left_delta="0" + max_length="4096" + name="lod_file" + top_pad="5" + width="220" /> + <button + follows="left|top" + height="23" + label="Browse..." + label_selected="Browse..." + layout="topleft" + left_pad="10" + name="browse" + top_delta="-1" + width="75"> + </button> + <text + top_delta="-15" + width="200" + height="15" + font="SansSerifSmall" + layout="topleft" + left_pad="24"> + Model Preview: + </text> + <!-- Placeholder panel for 3D preview render --> + <panel + left_delta="-2" + top_pad="0" + name="preview_panel" + bevel_style="none" + border_style="line" + border="true" + height="150" + follows="all" + width="150"> + </panel> + <text + top_pad="10" + width="130" + height="15" + left="340" + word_wrap="true"> + Dimensions (meters): + </text> + <text + top_pad="5" + width="160" + height="15" + name="import_dimensions" + left_delta="0"> + X: [X] | Y: [Y] | Z: [Z] + </text> + <text + top="100" + width="320" + height="40" + left="10" + word_wrap="true"> + Note: + Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window. + </text> + <combo_box left_pad="0" top_delta="0" follows="left|top" list_position="below" height="18" + name="preview_lod_combo_2" width="90" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + <combo_item name="low"> + Low + </combo_item> + </combo_box> + </panel> + </panel> + + + <panel + height="388" + top_delta="0" + name="optimize_panel" + visible="false" + width="530" + left="0"> + <panel + height="20" + top_pad="20" + name="header_panel" + width="500" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="20"> + <text + width="200" + left="10" + name="header_text" + top="2" + height="10" + font="SansSerifBig" + layout="topleft"> + Optimize + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="0"> + This wizard is optimizing your model. This may take several minutes. To stop the process click the back button + </text> + <panel + top_delta="40" + visible="false" + left="15" + height="240" + width="500" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text + top="20" + width="300" + height="12" + font="SansSerifBold" + left="112">Generating Level of Detail</text> + <progress_bar + name="optimize_progress_bar" + image_fill="model_wizard\progress_light.png" + color_bg="1 1 1 1" + color_bar="1 1 1 0.96" + follows="left|right|top" + width="260" + height="16" + image_bar="model_wizard\progress_bar_bg.png" + top_pad="14" + left="110"/> + <icon + top_pad="10" + left_delta="0" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="high_detail_text" + width="200" + height="14">Generate Level of Detail: High</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="medium_detail_text" + width="200" + height="14">Generate Level of Detail: Medium</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="low_detail_text" + width="200" + height="14">Generate Level of Detail: Low</text> + <icon + top_pad="10" + left_delta="-18" + width="13" + height="12" + image_name="model_wizard\check_mark.png"/> + <text + top_delta="0" + left_delta="18" + name="lowest_detail_text" + width="200" + height="14">Generate Level of Detail: Lowest</text> + </panel> + <panel + top_delta="0" + left_delta="0" + height="240" + width="500" + name="content2" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <text top="10" left="10" width="85" follows="left|top" height="15" name="lod_label"> + Model Preview: + </text> + <combo_box left_pad="5" top_delta="-2" follows="left|top" list_position="below" height="18" + name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render"> + <combo_item name="high"> + High + </combo_item> + <combo_item name="medium"> + Medium + </combo_item> + <combo_item name="lowest"> + Lowest + </combo_item> + <combo_item name="low"> + Low + </combo_item> + </combo_box> + <panel + left="10" + top_pad="5" + name="preview_panel" + bevel_style="none" + border_style="line" + border="true" + height="175" + follows="all" + width="175"> + </panel> + <text top="50" left="210" font="SansSerifSmallBold" width="300" height="4">Performance Accuracy</text> + + <slider + follows="left|top" + height="20" + increment="1" + layout="topleft" + left="220" + max_val="2" + initial_vauel="1" + min_val="0" + name="accuracy_slider" + show_text="false" + top="105" + width="250" /> + <text font="SansSerifSmall" top_pad="4" width="300" left_delta="6" height="4">| | |</text> + + </panel> + </panel> + + + + <panel + height="388" + top_delta="0" + name="physics_panel" + visible="false" + width="530" + left="0"> + <panel + height="20" + top_pad="20" + name="header_panel" + width="500" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="20"> + <text + width="200" + left="10" + name="header_text" + top="2" + height="10" + font="SansSerifBig" + layout="topleft"> + Physics + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="0"> + The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used: + </text> + <panel + top_delta="40" + left="15" + height="240" + width="500" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"/> + </panel> + + + <panel + height="388" + top_delta="0" + name="review_panel" + visible="false" + width="530" + left="0"> + <panel + height="20" + top_pad="20" + name="header_panel" + width="500" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="20"> + <text + width="200" + left="10" + name="header_text" + top="2" + height="10" + font="SansSerifBig" + layout="topleft"> + Review + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="0"> + Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload. + </text> + <panel + top_delta="40" + left="15" + height="240" + width="500" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"/> + </panel> + + + + + <panel + height="388" + top_delta="0" + name="upload_panel" + visible="false" + width="530" + left="0"> + <panel + height="20" + top_pad="20" + name="header_panel" + width="500" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + left="20"> + <text + width="200" + left="10" + name="header_text" + top="2" + height="10" + font="SansSerifBig" + layout="topleft"> + Upload Complete! + </text> + </panel> + <text + top_pad="14" + width="460" + height="20" + font="SansSerifSmall" + layout="topleft" + name="description" + word_wrap="true" + left_delta="0"> + Congratulations! Your model has been sucessfully uploaded. You will find the model in the Objects folder in your inventory. + </text> + <panel + top_delta="40" + left="15" + height="240" + width="500" + name="content" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true"> + <button top="10" follows="top|left" height="20" label="Upload" + left="15" width="80" name="ok_btn" tool_tip="Upload to simulator"/> + </panel> + </panel> + + + + <button + top="410" + right="-245" + width="90" + height="20" + name="back" + label="<< Back" /> + <button + top_delta="0" + right="-150" + width="90" + height="20" + name="next" + label="Next >> " /> + <button + top_delta="0" + right="-15" + width="90" + height="20" + name="cancel" + label="Cancel" /> + <spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> + + <string name="status_idle">Idle</string> + <string name="status_reading_file">Loading...</string> + <string name="status_generating_meshes">Generating Meshes...</string> + <string name="high">High</string> + <string name="medium">Medium</string> + <string name="low">Low</string> + <string name="lowest">Lowest</string> + <string name="mesh_status_good">Ship it!</string> + <string name="mesh_status_na">N/A</string> + <string name="mesh_status_none">None</string> + <string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string> + <string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string> + <string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string> + <string name="mesh_status_missing_lod">Missing required level of detail.</string> + <string name="layer_all">All</string> + <!-- Text to display in physics layer combo box for "all layers" --> + +</floater> -- GitLab