diff options
-rwxr-xr-x | indra/newview/llfloatermodelpreview.cpp | 15 | ||||
-rwxr-xr-x | indra/newview/llfloatermodelpreview.h | 4 | ||||
-rw-r--r-- | indra/newview/llfloatermodelwizard.cpp | 141 | ||||
-rw-r--r-- | indra/newview/llfloatermodelwizard.h | 38 | ||||
-rw-r--r-- | indra/newview/skins/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 f9648b0e3b..85d0ae02cf 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 ae4cf18fee..64b220d86b 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 79c29ef017..6a92e43d1a 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 c766697d47..ab69d93b63 100644 --- a/indra/newview/llfloatermodelwizard.h +++ b/indra/newview/llfloatermodelwizard.h @@ -35,24 +35,36 @@ public: 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 4a4b8075c8..18dc33a23a 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>
|