Merge branch 'DRTVWR-482' of https://bitbucket.org/lindenlab/viewer
commit
e0cd97f865
|
|
@ -770,6 +770,11 @@ void LLButton::draw()
|
|||
{
|
||||
glow_color = highlighting_color;
|
||||
}
|
||||
else
|
||||
{
|
||||
// will fade from highlight color
|
||||
glow_color = flash_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ public:
|
|||
void setFlashing( bool b, bool force_flashing = false );
|
||||
BOOL getFlashing() const { return mFlashing; }
|
||||
LLFlashTimer* getFlashTimer() {return mFlashingTimer;}
|
||||
void setFlashColor(const LLUIColor &color) { mFlashBgColor = color; };
|
||||
|
||||
void setHAlign( LLFontGL::HAlign align ) { mHAlign = align; }
|
||||
LLFontGL::HAlign getHAlign() const { return mHAlign; }
|
||||
|
|
|
|||
|
|
@ -269,6 +269,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
|
|||
mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),
|
||||
mTabIconCtrlPad(p.tab_icon_ctrl_pad),
|
||||
mUseTabEllipses(p.use_ellipses),
|
||||
mEnableTabsFlashing(p.enable_tabs_flashing),
|
||||
mDropShadowedText(p.label_shadow) // support for drop shadowed tab labels -Zi
|
||||
{
|
||||
// AO: Treat the IM tab container specially
|
||||
|
|
@ -1806,6 +1807,16 @@ void LLTabContainer::setTabPanelFlashing(LLPanel* child, BOOL state )
|
|||
}
|
||||
}
|
||||
|
||||
void LLTabContainer::setTabPanelFlashing(LLPanel* child, BOOL state, LLUIColor color)
|
||||
{
|
||||
LLTabTuple* tuple = getTabByPanel(child);
|
||||
if (tuple)
|
||||
{
|
||||
tuple->mButton->setFlashColor(color);
|
||||
tuple->mButton->setFlashing(state);
|
||||
}
|
||||
}
|
||||
|
||||
void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const LLColor4& color)
|
||||
{
|
||||
LLTabTuple* tuple = getTabByPanel(child);
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ public:
|
|||
Optional<bool> open_tabs_on_drag_and_drop;
|
||||
|
||||
/**
|
||||
* Open tabs on hover in drag and drop situations
|
||||
* Enable tab flashing
|
||||
*/
|
||||
Optional<bool> enable_tabs_flashing;
|
||||
|
||||
|
|
@ -220,6 +220,7 @@ public:
|
|||
|
||||
BOOL getTabPanelFlashing(LLPanel* child);
|
||||
void setTabPanelFlashing(LLPanel* child, BOOL state);
|
||||
void setTabPanelFlashing(LLPanel* child, BOOL state, LLUIColor color);
|
||||
void setTabImage(LLPanel* child, std::string img_name, const LLColor4& color = LLColor4::white);
|
||||
void setTabImage(LLPanel* child, const LLUUID& img_id, const LLColor4& color = LLColor4::white);
|
||||
void setTabImage(LLPanel* child, LLIconCtrl* icon);
|
||||
|
|
|
|||
|
|
@ -272,7 +272,8 @@ LLFloaterModelUploadBase(key),
|
|||
mUploadBtn(NULL),
|
||||
mCalculateBtn(NULL),
|
||||
mUploadLogText(NULL),
|
||||
mTabContainer(NULL)
|
||||
mTabContainer(NULL),
|
||||
mAvatarTabIndex(0)
|
||||
{
|
||||
sInstance = this;
|
||||
mLastMouseX = 0;
|
||||
|
|
@ -353,6 +354,10 @@ BOOL LLFloaterModelPreview::postBuild()
|
|||
childSetVisible("skin_too_many_joints", false);
|
||||
childSetVisible("skin_unknown_joint", false);
|
||||
|
||||
childSetVisible("warning_title", false);
|
||||
childSetVisible("warning_message", false);
|
||||
childSetVisible("status", false);
|
||||
|
||||
initDecompControls();
|
||||
|
||||
LLView* preview_panel = getChild<LLView>("preview_panel");
|
||||
|
|
@ -445,17 +450,10 @@ BOOL LLFloaterModelPreview::postBuild()
|
|||
mUploadLogText = getChild<LLViewerTextEditor>("log_text");
|
||||
mTabContainer = getChild<LLTabContainer>("import_tab");
|
||||
|
||||
// Disable Overrides tab untill it has something to show and set callbacks
|
||||
LLPanel *panel = mTabContainer->getPanelByName("overrides_panel");
|
||||
S32 index = mTabContainer->getIndexForPanel(panel);
|
||||
mTabContainer->enableTabButton(index, false);
|
||||
LLPanel *panel = mTabContainer->getPanelByName("avatar_panel");
|
||||
mAvatarTabIndex = mTabContainer->getIndexForPanel(panel);
|
||||
panel->getChild<LLScrollListCtrl>("joints_list")->setCommitCallback(boost::bind(&LLFloaterModelPreview::onJointListSelection, this));
|
||||
|
||||
// Disable Logs tab untill it has something to show
|
||||
panel = mTabContainer->getPanelByName("logs_panel");
|
||||
index = mTabContainer->getIndexForPanel(panel);
|
||||
mTabContainer->enableTabButton(index, false);
|
||||
|
||||
if (LLConvexDecomposition::getInstance() != NULL)
|
||||
{
|
||||
mCalculateBtn->setClickedCallback(boost::bind(&LLFloaterModelPreview::onClickCalculateBtn, this));
|
||||
|
|
@ -691,7 +689,7 @@ void populate_list_with_map(LLScrollListCtrl *list, const std::map<std::string,
|
|||
void LLFloaterModelPreview::onJointListSelection()
|
||||
{
|
||||
S32 display_lod = mModelPreview->mPreviewLOD;
|
||||
LLPanel *panel = mTabContainer->getPanelByName("overrides_panel");
|
||||
LLPanel *panel = mTabContainer->getPanelByName("avatar_panel");
|
||||
LLScrollListCtrl *joints_list = panel->getChild<LLScrollListCtrl>("joints_list");
|
||||
LLScrollListCtrl *joints_pos = panel->getChild<LLScrollListCtrl>("pos_overrides_list");
|
||||
LLScrollListCtrl *joints_scale = panel->getChild<LLScrollListCtrl>("scale_overrides_list");
|
||||
|
|
@ -708,14 +706,17 @@ void LLFloaterModelPreview::onJointListSelection()
|
|||
populate_list_with_map(joints_pos, data.mPosOverrides);
|
||||
|
||||
joint_pos_descr->setTextArg("[JOINT]", label);
|
||||
mSelectedJointName = label;
|
||||
}
|
||||
else
|
||||
{
|
||||
// temporary value (shouldn't happen)
|
||||
std::string label = "mPelvis";
|
||||
joint_pos_descr->setTextArg("[JOINT]", label);
|
||||
mSelectedJointName.clear();
|
||||
}
|
||||
|
||||
// Note: We can make a version of renderBones() to highlight selected joint
|
||||
}
|
||||
|
||||
void LLFloaterModelPreview::onDescriptionKeystroke(LLUICtrl* ctrl)
|
||||
|
|
@ -1538,33 +1539,34 @@ void LLFloaterModelPreview::addStringToLog(const std::ostringstream& strm, bool
|
|||
}
|
||||
}
|
||||
|
||||
void LLFloaterModelPreview::clearOverridesTab()
|
||||
void LLFloaterModelPreview::clearAvatarTab()
|
||||
{
|
||||
LLPanel *panel = mTabContainer->getPanelByName("overrides_panel");
|
||||
LLPanel *panel = mTabContainer->getPanelByName("avatar_panel");
|
||||
LLScrollListCtrl *joints_list = panel->getChild<LLScrollListCtrl>("joints_list");
|
||||
joints_list->deleteAllItems();
|
||||
LLScrollListCtrl *joints_pos = panel->getChild<LLScrollListCtrl>("pos_overrides_list");
|
||||
joints_pos->deleteAllItems(); mSelectedJointName.clear();
|
||||
|
||||
for (U32 i = 0; i < LLModel::NUM_LODS; ++i)
|
||||
{
|
||||
mJointOverrides[i].clear();
|
||||
}
|
||||
|
||||
LLTextBox *joint_total_descr = panel->getChild<LLTextBox>("conflicts_description");
|
||||
joint_total_descr->setTextArg("[CONFLICTS]", llformat("%d", 0));
|
||||
joint_total_descr->setTextArg("[JOINTS_COUNT]", llformat("%d", 0));
|
||||
|
||||
|
||||
LLTextBox *joint_pos_descr = panel->getChild<LLTextBox>("pos_overrides_descr");
|
||||
joint_pos_descr->setTextArg("[JOINT]", std::string("mPelvis")); // Might be better to hide it
|
||||
}
|
||||
|
||||
void LLFloaterModelPreview::resetOverridesTab()
|
||||
{
|
||||
clearOverridesTab();
|
||||
|
||||
for (U32 i = 0; i < LLModel::NUM_LODS; ++i)
|
||||
{
|
||||
mJointOverrides[i].clear();
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterModelPreview::showOverridesTab()
|
||||
void LLFloaterModelPreview::updateAvatarTab()
|
||||
{
|
||||
S32 display_lod = mModelPreview->mPreviewLOD;
|
||||
if (mModelPreview->mModel[display_lod].empty())
|
||||
{
|
||||
mSelectedJointName.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1606,14 +1608,16 @@ void LLFloaterModelPreview::showOverridesTab()
|
|||
}
|
||||
}
|
||||
|
||||
LLPanel *panel = mTabContainer->getPanelByName("overrides_panel");
|
||||
S32 index = mTabContainer->getIndexForPanel(panel);
|
||||
mTabContainer->enableTabButton(index, true);
|
||||
LLPanel *panel = mTabContainer->getPanelByName("avatar_panel");
|
||||
LLScrollListCtrl *joints_list = panel->getChild<LLScrollListCtrl>("joints_list");
|
||||
|
||||
if (joints_list->isEmpty())
|
||||
{
|
||||
// Populate table
|
||||
|
||||
std::map<std::string, std::string> joint_alias_map;
|
||||
mModelPreview->getJointAliases(joint_alias_map);
|
||||
|
||||
S32 conflicts = 0;
|
||||
joint_override_data_map_t::iterator joint_iter = mJointOverrides[display_lod].begin();
|
||||
joint_override_data_map_t::iterator joint_end = mJointOverrides[display_lod].end();
|
||||
|
|
@ -1627,8 +1631,14 @@ void LLFloaterModelPreview::showOverridesTab()
|
|||
LLScrollListCell::Params cell_params;
|
||||
cell_params.font = LLFontGL::getFontSansSerif();
|
||||
cell_params.value = listName;
|
||||
if (joint_alias_map.find(listName) == joint_alias_map.end())
|
||||
{
|
||||
// Missing names
|
||||
cell_params.color = LLColor4::red;
|
||||
}
|
||||
if (joint_iter->second.mHasConflicts)
|
||||
{
|
||||
// Conflicts
|
||||
cell_params.color = LLColor4::orange;
|
||||
conflicts++;
|
||||
}
|
||||
|
|
@ -1639,20 +1649,18 @@ void LLFloaterModelPreview::showOverridesTab()
|
|||
joint_iter++;
|
||||
}
|
||||
joints_list->selectFirstItem();
|
||||
LLScrollListItem *selected = joints_list->getFirstSelected();
|
||||
if (selected)
|
||||
{
|
||||
mSelectedJointName = selected->getValue().asString();
|
||||
}
|
||||
|
||||
LLTextBox *joint_pos_descr = panel->getChild<LLTextBox>("conflicts_description");
|
||||
joint_pos_descr->setTextArg("[CONFLICTS]", llformat("%d", conflicts));
|
||||
joint_pos_descr->setTextArg("[JOINTS_COUNT]", llformat("%d", mJointOverrides[display_lod].size()));
|
||||
LLTextBox *joint_conf_descr = panel->getChild<LLTextBox>("conflicts_description");
|
||||
joint_conf_descr->setTextArg("[CONFLICTS]", llformat("%d", conflicts));
|
||||
joint_conf_descr->setTextArg("[JOINTS_COUNT]", llformat("%d", mJointOverrides[display_lod].size()));
|
||||
}
|
||||
}
|
||||
|
||||
void LLFloaterModelPreview::hideOverridesTab()
|
||||
{
|
||||
LLPanel *panel = mTabContainer->getPanelByName("overrides_panel");
|
||||
S32 index = mTabContainer->getIndexForPanel(panel);
|
||||
mTabContainer->enableTabButton(index, false);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// addStringToLogTab()
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
@ -1672,8 +1680,6 @@ void LLFloaterModelPreview::addStringToLogTab(const std::string& str, bool flash
|
|||
}
|
||||
|
||||
LLPanel* panel = mTabContainer->getPanelByName("logs_panel");
|
||||
S32 index = mTabContainer->getIndexForPanel(panel);
|
||||
mTabContainer->enableTabButton(index, true);
|
||||
|
||||
// Make sure we have space for new string
|
||||
S32 editor_text_len = mUploadLogText->getLength();
|
||||
|
|
@ -1686,7 +1692,10 @@ void LLFloaterModelPreview::addStringToLogTab(const std::string& str, bool flash
|
|||
|
||||
if (flash && mTabContainer->getCurrentPanel() != panel)
|
||||
{
|
||||
mTabContainer->setTabPanelFlashing(panel, true);
|
||||
// This will makes colors pale due to "glow_type = LLRender::BT_ALPHA"
|
||||
// So instead of using "MenuItemFlashBgColor" added stronger color
|
||||
static LLUIColor sFlashBgColor(LLColor4U(255, 99, 0));
|
||||
mTabContainer->setTabPanelFlashing(panel, true, sFlashBgColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2594,8 +2603,7 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod)
|
|||
}
|
||||
else
|
||||
{
|
||||
fmp->resetOverridesTab();
|
||||
fmp->hideOverridesTab();
|
||||
fmp->clearAvatarTab();
|
||||
}
|
||||
|
||||
if (lock_scale_if_joint_position)
|
||||
|
|
@ -2738,6 +2746,10 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod)
|
|||
{
|
||||
description_form->setText(model_name);
|
||||
}
|
||||
// Add info to log that loading is complete (purpose: separator between loading and other logs)
|
||||
LLSD args;
|
||||
args["MODEL_NAME"] = model_name; // Teoretically shouldn't be empty, but might be better idea to add filename here
|
||||
LLFloaterModelPreview::addStringToLog("ModelLoaded", args, false, loaded_lod);
|
||||
}
|
||||
}
|
||||
refresh();
|
||||
|
|
@ -4543,7 +4555,7 @@ BOOL LLModelPreview::render()
|
|||
mFMP->childEnable("lock_scale_if_joint_position");
|
||||
if (fmp)
|
||||
{
|
||||
fmp->showOverridesTab();
|
||||
fmp->updateAvatarTab();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -4552,7 +4564,7 @@ BOOL LLModelPreview::render()
|
|||
mFMP->childSetValue("lock_scale_if_joint_position", false);
|
||||
if (fmp)
|
||||
{
|
||||
fmp->hideOverridesTab();
|
||||
fmp->clearAvatarTab();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -5114,7 +5126,14 @@ BOOL LLModelPreview::render()
|
|||
gDebugProgram.bind();
|
||||
}
|
||||
getPreviewAvatar()->renderCollisionVolumes();
|
||||
getPreviewAvatar()->renderBones();
|
||||
if (fmp->mTabContainer->getCurrentPanelIndex() == fmp->mAvatarTabIndex)
|
||||
{
|
||||
getPreviewAvatar()->renderBones(fmp->mSelectedJointName);
|
||||
}
|
||||
else
|
||||
{
|
||||
getPreviewAvatar()->renderBones();
|
||||
}
|
||||
if (shader)
|
||||
{
|
||||
shader->bind();
|
||||
|
|
@ -5205,7 +5224,7 @@ void LLModelPreview::setPreviewLOD(S32 lod)
|
|||
if (fmp)
|
||||
{
|
||||
// make preview repopulate tab
|
||||
fmp->clearOverridesTab();
|
||||
fmp->clearAvatarTab();
|
||||
}
|
||||
}
|
||||
refresh();
|
||||
|
|
@ -5228,7 +5247,7 @@ void LLFloaterModelPreview::onReset(void* user_data)
|
|||
LLFloaterModelPreview* fmp = (LLFloaterModelPreview*) user_data;
|
||||
fmp->childDisable("reset_btn");
|
||||
fmp->clearLogTab();
|
||||
fmp->resetOverridesTab();
|
||||
fmp->clearAvatarTab();
|
||||
LLModelPreview* mp = fmp->mModelPreview;
|
||||
std::string filename = mp->mLODFile[LLModel::LOD_HIGH];
|
||||
|
||||
|
|
|
|||
|
|
@ -108,10 +108,8 @@ public:
|
|||
static void addStringToLog(const std::string& message, const LLSD& args, bool flash, S32 lod = -1);
|
||||
static void addStringToLog(const std::string& str, bool flash);
|
||||
static void addStringToLog(const std::ostringstream& strm, bool flash);
|
||||
void clearOverridesTab(); // clears table
|
||||
void resetOverridesTab(); // clears table and cleans all data
|
||||
void showOverridesTab(); // populates table and data as nessesary
|
||||
void hideOverridesTab();
|
||||
void clearAvatarTab(); // clears table
|
||||
void updateAvatarTab(); // populates table and data as nessesary
|
||||
|
||||
void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost);
|
||||
void setPreviewLOD(S32 lod);
|
||||
|
|
@ -251,6 +249,9 @@ private:
|
|||
LLViewerTextEditor* mUploadLogText;
|
||||
LLTabContainer* mTabContainer;
|
||||
|
||||
S32 mAvatarTabIndex; // just to avoid any issues in case of xml changes
|
||||
std::string mSelectedJointName;
|
||||
|
||||
joint_override_data_map_t mJointOverrides[LLModel::NUM_LODS];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1700,13 +1700,16 @@ void LLVOAvatar::renderCollisionVolumes()
|
|||
}
|
||||
}
|
||||
|
||||
void LLVOAvatar::renderBones()
|
||||
void LLVOAvatar::renderBones(const std::string &selected_joint)
|
||||
{
|
||||
LLGLEnable blend(GL_BLEND);
|
||||
|
||||
avatar_joint_list_t::iterator iter = mSkeleton.begin();
|
||||
avatar_joint_list_t::iterator end = mSkeleton.end();
|
||||
avatar_joint_list_t::iterator end = mSkeleton.end();
|
||||
|
||||
// For selected joints
|
||||
static LLVector3 SELECTED_COLOR_OCCLUDED(1.0f, 1.0f, 0.0f);
|
||||
static LLVector3 SELECTED_COLOR_VISIBLE(0.5f, 0.5f, 0.5f);
|
||||
// For bones with position overrides defined
|
||||
static LLVector3 OVERRIDE_COLOR_OCCLUDED(1.0f, 0.0f, 0.0f);
|
||||
static LLVector3 OVERRIDE_COLOR_VISIBLE(0.5f, 0.5f, 0.5f);
|
||||
|
|
@ -1733,7 +1736,18 @@ void LLVOAvatar::renderBones()
|
|||
|
||||
LLVector3 pos;
|
||||
LLUUID mesh_id;
|
||||
if (jointp->hasAttachmentPosOverride(pos,mesh_id))
|
||||
F32 sphere_scale = SPHERE_SCALEF;
|
||||
|
||||
// We are in render, so it is preferable to implement selection
|
||||
// in a different way, but since this is for debug/preview, this
|
||||
// is low priority
|
||||
if (jointp->getName() == selected_joint)
|
||||
{
|
||||
sphere_scale *= 16.f;
|
||||
occ_color = SELECTED_COLOR_OCCLUDED;
|
||||
visible_color = SELECTED_COLOR_VISIBLE;
|
||||
}
|
||||
else if (jointp->hasAttachmentPosOverride(pos,mesh_id))
|
||||
{
|
||||
occ_color = OVERRIDE_COLOR_OCCLUDED;
|
||||
visible_color = OVERRIDE_COLOR_VISIBLE;
|
||||
|
|
@ -1754,7 +1768,6 @@ void LLVOAvatar::renderBones()
|
|||
LLVector3 begin_pos(0,0,0);
|
||||
LLVector3 end_pos(jointp->getEnd());
|
||||
|
||||
F32 sphere_scale = SPHERE_SCALEF;
|
||||
|
||||
gGL.pushMatrix();
|
||||
gGL.multMatrix( &jointp->getXform()->getWorldMatrix().mMatrix[0][0] );
|
||||
|
|
|
|||
|
|
@ -467,7 +467,7 @@ public:
|
|||
F32 getLastSkinTime() { return mLastSkinTime; }
|
||||
U32 renderTransparent(BOOL first_pass);
|
||||
void renderCollisionVolumes();
|
||||
void renderBones();
|
||||
void renderBones(const std::string &selected_joint = std::string());
|
||||
void renderJoints();
|
||||
static void deleteCachedImages(bool clearAll=true);
|
||||
static void destroyGL();
|
||||
|
|
|
|||
|
|
@ -292,6 +292,19 @@
|
|||
</panel>
|
||||
</panel>
|
||||
<panel label="Hochladeoptionen" name="modifiers_panel">
|
||||
<text name="scale_label">
|
||||
Skalierung (1=keine):
|
||||
</text>
|
||||
<spinner name="import_scale" value="1.0"/>
|
||||
<text name="dimensions_label">
|
||||
Dimensionen:
|
||||
</text>
|
||||
<text name="import_dimensions">
|
||||
[X] X [Y] X [Z]
|
||||
</text>
|
||||
<check_box label="Texturen einschließen" name="upload_textures"/>
|
||||
</panel>
|
||||
<panel label="Übersteuerung" title="Avatar" name="avatar_panel">
|
||||
<text name="scale_label">
|
||||
Skalierung (1=keine):
|
||||
</text>
|
||||
|
|
@ -306,15 +319,9 @@
|
|||
<text name="include_label">
|
||||
Nur für Avatarmodelle:
|
||||
</text>
|
||||
<check_box label="Skingewicht einschließen" name="upload_skin"/>
|
||||
<text name="skin_too_many_joints" text_color="Orange">
|
||||
Zu viele skingewichtete Gelenke
|
||||
</text>
|
||||
<text name="skin_unknown_joint">
|
||||
Modell hat unbekannte Gelenke
|
||||
</text>
|
||||
<check_box label="Gelenkpositionen einschließen" name="upload_joints"/>
|
||||
<check_box label="Skala sperren, wenn Gelenkposition definiert ist" name="lock_scale_if_joint_position"/>
|
||||
<check_box label="Skingewicht einschließen" name="upload_skin" top_pad="0"/>
|
||||
<check_box label="Gelenkpositionen einschließen" name="upload_joints" top_pad="2"/>
|
||||
<check_box label="Skala sperren, wenn Gelenkposition definiert ist" name="lock_scale_if_joint_position" top_pad="15"/>
|
||||
<check_box label="An Avatarform anpassen" name="deform"/>
|
||||
<radio_group name="deform_base">
|
||||
<radio_item label="Mann" name="0"/>
|
||||
|
|
@ -325,8 +332,29 @@
|
|||
Z-Offset (Av. anheben / senken):
|
||||
</text>
|
||||
<spinner name="pelvis_offset" value="0.0"/>
|
||||
<panel name="avatar_model_hint_panel">
|
||||
<text name="avatar_model_hint_text">
|
||||
<text name="skin_too_many_joints" text_color="Orange">
|
||||
Zu viele skingewichtete Gelenke
|
||||
</text>
|
||||
<text name="skin_unknown_joint">
|
||||
Modell hat unbekannte Gelenke
|
||||
</text>
|
||||
<text name="joints_descr">
|
||||
Gelenke:
|
||||
</text>
|
||||
<text name="conflicts_description">
|
||||
[CONFLICTS] Konflikte in [JOINTS_COUNT] Gelenk(e)
|
||||
</text>
|
||||
<text name="pos_overrides_descr">
|
||||
Position übersteuert für Gelenk '[JOINT]':
|
||||
</text>
|
||||
<scroll_list name="pos_overrides_list">
|
||||
<scroll_list.columns label="Modell" name="model_name"/>
|
||||
<scroll_list.columns label="X" name="axis_x"/>
|
||||
<scroll_list.columns label="Y" name="axis_y"/>
|
||||
<scroll_list.columns label="Z" name="axis_z"/>
|
||||
</scroll_list>
|
||||
<panel name="avatar_model_hint_panel" left="380" width="230">
|
||||
<text name="avatar_model_hint_text" width="220">
|
||||
Hinweis:
|
||||
Zu viele Objekte nutzen unnötigerweise den Standard-Anhängepunkt (Rechte Hand).
|
||||
|
||||
|
|
@ -387,56 +415,42 @@ Mesh:
|
|||
Analysiert:
|
||||
</text>
|
||||
</panel>
|
||||
<panel name="preview_controls_panel">
|
||||
<panel name="preview_controls_inner_panel">
|
||||
<text name="preview_controls_title">
|
||||
Vorschau-Einstellungen:
|
||||
</text>
|
||||
<combo_box name="preview_lod_combo" tool_tip="Detailstufe zur Anzeige in Vorschaudarstellung">
|
||||
<combo_item name="high">
|
||||
Hoch
|
||||
</combo_item>
|
||||
<combo_item name="medium">
|
||||
Mittel
|
||||
</combo_item>
|
||||
<combo_item name="low">
|
||||
Niedrig
|
||||
</combo_item>
|
||||
<combo_item name="lowest">
|
||||
Niedrigste
|
||||
</combo_item>
|
||||
</combo_box>
|
||||
</panel>
|
||||
<text name="label_display">
|
||||
Anzeige...
|
||||
</text>
|
||||
<check_box label="Kanten" name="show_edges"/>
|
||||
<check_box label="Texturen" name="show_textures"/>
|
||||
<check_box label="UV-Hilfe" name="show_uv_guide"/>
|
||||
<check_box label="Physik" name="show_physics"/>
|
||||
<check_box label="Skingew." name="show_skin_weight"/>
|
||||
<check_box label="Gelenke" name="show_joint_positions"/>
|
||||
<text name="exploder_label" width="105">
|
||||
Vorschaudehnung:
|
||||
</text>
|
||||
<slider name="physics_explode" width="80"/>
|
||||
</panel>
|
||||
<text name="warning_title" width="60">
|
||||
HINWEIS:
|
||||
</text>
|
||||
<text name="warning_message">
|
||||
Sie haben keine Berechtigung zum Hochladen von Netzmodellen. [[VURL] Weitere Infos], wie Sie sich zertifizieren lassen können.
|
||||
Sie haben keine Berechtigung zum Hochladen von Netzmodellen. [[VURL] Infos] zur Zertifizierung.
|
||||
</text>
|
||||
<text name="status">
|
||||
[STATUS]
|
||||
</text>
|
||||
</panel>
|
||||
</panel>
|
||||
<text name="lod_label">
|
||||
Vorschau:
|
||||
</text>
|
||||
<panel name="right_panel">
|
||||
<text name="lod_label">
|
||||
Vorschau:
|
||||
<combo_box name="preview_lod_combo" tool_tip="Dargestelltes LOD in der Vorschau">
|
||||
<combo_item name="high">Hoch</combo_item>
|
||||
<combo_item name="medium">Mittel</combo_item>
|
||||
<combo_item name="low">Niedrig</combo_item>
|
||||
<combo_item name="lowest">Niedrigstes </combo_item>
|
||||
</combo_box>
|
||||
<text name="physics_explode_label" width="105">
|
||||
Vorschaudehnung:
|
||||
</text>
|
||||
<text name="label_display">
|
||||
Anzeigen:
|
||||
</text>
|
||||
<check_box label="Kanten" name="show_edges"/>
|
||||
<check_box label="Texturen" name="show_textures"/>
|
||||
<check_box label="UV-Hilfe" name="show_uv_guide"/>
|
||||
<check_box label="Physik" name="show_physics"/>
|
||||
<check_box label="Skingewichte" name="show_skin_weight"/>
|
||||
<check_box label="Gelenkpos.-Übersteuer." name="show_joint_overrides"/>
|
||||
<check_box label="Gelenke" name="show_joint_positions"/>
|
||||
<text name="exploder_label" width="105">
|
||||
Vorschaudehnung:
|
||||
</text>
|
||||
</panel>
|
||||
<panel name="lower_right_panel">
|
||||
</panel>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
can_drag_on_left="false"
|
||||
can_minimize="true"
|
||||
can_resize="true"
|
||||
height="575"
|
||||
min_height="600"
|
||||
height="590"
|
||||
min_height="590"
|
||||
width="960"
|
||||
min_width="960"
|
||||
name="Model Preview"
|
||||
|
|
@ -43,11 +43,11 @@
|
|||
<string name="simplifying">Simplifying...</string>
|
||||
<string name="tbd">TBD</string>
|
||||
|
||||
<!-- Warnings from model loader-->
|
||||
<!-- Warnings and info from model loader-->
|
||||
<string name="TooManyJoint">Skinning disabled due to too many joints: [JOINTS], maximum: [MAX]</string>
|
||||
<string name="UnrecognizedJoint">Rigged to unrecognized joint name [NAME]</string>
|
||||
<string name="UnknownJoints">Skinning disabled due to [COUNT] unknown joints</string>
|
||||
|
||||
<string name="ModelLoaded">Model [MODEL_NAME] loaded</string>
|
||||
|
||||
<panel
|
||||
follows="top|left"
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
left="3"
|
||||
name="left_panel"
|
||||
top_pad="0"
|
||||
width="630">
|
||||
width="635">
|
||||
<panel
|
||||
follows="all"
|
||||
height="50"
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
follows="top|left"
|
||||
layout="topleft"
|
||||
height="15"
|
||||
left="15"
|
||||
left="2"
|
||||
name="name_label"
|
||||
text_color="White"
|
||||
top="0"
|
||||
|
|
@ -87,9 +87,9 @@
|
|||
</panel>
|
||||
<tab_container
|
||||
follows="top|left"
|
||||
top_pad="15"
|
||||
top_pad="0"
|
||||
left="0"
|
||||
height="300"
|
||||
height="330"
|
||||
width="635"
|
||||
name="import_tab"
|
||||
tab_position="top"
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="275"
|
||||
height="306"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="lod_tab_border"
|
||||
|
|
@ -742,7 +742,7 @@
|
|||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="275"
|
||||
height="306"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="physics_tab_border"
|
||||
|
|
@ -1117,7 +1117,7 @@
|
|||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="275"
|
||||
height="306"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="border"
|
||||
|
|
@ -1168,131 +1168,96 @@
|
|||
label="Include textures"
|
||||
left="20"
|
||||
top_pad="20"/>
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
name="border"
|
||||
top_pad="20"
|
||||
width="579"/>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="20"
|
||||
name="include_label"
|
||||
text_color="White"
|
||||
top_pad="20"
|
||||
width="150">
|
||||
For avatar models only:
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Include skin weight"
|
||||
name="upload_skin"
|
||||
top_pad="15"/>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="17"
|
||||
left="40"
|
||||
name="skin_too_many_joints"
|
||||
text_color="Orange"
|
||||
top_pad="-2"
|
||||
width="300">
|
||||
Too many skinned joints
|
||||
</text>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="17"
|
||||
left="40"
|
||||
name="skin_unknown_joint"
|
||||
text_color="Orange"
|
||||
top_pad="-17"
|
||||
width="300">
|
||||
Model has an unknown joint(s)
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Include joint positions"
|
||||
name="upload_joints"
|
||||
left_delta="-20"
|
||||
top_pad="1"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Lock scale if joint position defined"
|
||||
name="lock_scale_if_joint_position"
|
||||
top_pad="16"/>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="pelvis_offset_label"
|
||||
text_color="White"
|
||||
top_pad="16"
|
||||
width="175">
|
||||
Z offset (raise or lower avatar):
|
||||
</text>
|
||||
<spinner
|
||||
follows="top|left"
|
||||
height="20"
|
||||
min_val="-3.00"
|
||||
max_val="3.0"
|
||||
name="pelvis_offset"
|
||||
top_delta="-3"
|
||||
left_pad="5"
|
||||
value="0.0"
|
||||
width="80"/>
|
||||
<panel
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
border="true"
|
||||
left="400"
|
||||
height="165"
|
||||
top="100"
|
||||
width="200"
|
||||
name="avatar_model_hint_panel"
|
||||
>
|
||||
<text
|
||||
left="5"
|
||||
width="190"
|
||||
height="165"
|
||||
name="avatar_model_hint_text"
|
||||
wrap="true"
|
||||
word_wrap="true"
|
||||
type="string">
|
||||
Tip:
|
||||
Too many items use the default (right hand) unnecessarily.
|
||||
|
||||
Please consider using an attachment point close to the item's position on the body.
|
||||
</text>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
label="Overrides"
|
||||
layout="topleft"
|
||||
name="overrides_panel"
|
||||
title="Overrides">
|
||||
name="avatar_panel"
|
||||
title="Avatar">
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="275"
|
||||
height="306"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="log_tab_border"
|
||||
name="avatar_tab_border"
|
||||
top_pad="0"
|
||||
width="619" />
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Include skin weight"
|
||||
label_text.text_color="White"
|
||||
name="upload_skin"
|
||||
top="8"
|
||||
left="10"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Include joint positions"
|
||||
label_text.text_color="White"
|
||||
name="upload_joints"
|
||||
left_delta="0"
|
||||
top_pad="7"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
height="15"
|
||||
label="Lock scale if joint position defined"
|
||||
label_text.text_color="White"
|
||||
label_text.wrap="true"
|
||||
label_text.width="180"
|
||||
name="lock_scale_if_joint_position"
|
||||
top_pad="7"/>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
left="225"
|
||||
name="pelvis_offset_label"
|
||||
text_color="White"
|
||||
top="8"
|
||||
width="200">
|
||||
Z offset (raise or lower avatar):
|
||||
</text>
|
||||
<spinner
|
||||
follows="top|left"
|
||||
height="20"
|
||||
min_val="-3.00"
|
||||
max_val="3.0"
|
||||
name="pelvis_offset"
|
||||
top_pad="10"
|
||||
value="0.0"
|
||||
width="80"/>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="17"
|
||||
left="425"
|
||||
name="skin_too_many_joints"
|
||||
text_color="Orange"
|
||||
top="7"
|
||||
width="195"
|
||||
word_wrap="true">
|
||||
Too many skinned joints
|
||||
</text>
|
||||
<text
|
||||
follows="top|left"
|
||||
height="32"
|
||||
left="425"
|
||||
name="skin_unknown_joint"
|
||||
text_color="Orange"
|
||||
top="8"
|
||||
width="195"
|
||||
word_wrap="true">
|
||||
Model has an unknown joint(s)
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="6"
|
||||
left="10"
|
||||
name="joints_descr"
|
||||
top="4"
|
||||
width="300">
|
||||
top="73"
|
||||
width="150">
|
||||
Joints:
|
||||
</text>
|
||||
<scroll_list
|
||||
|
|
@ -1304,27 +1269,27 @@ Please consider using an attachment point close to the item's position on the bo
|
|||
draw_stripes="false"
|
||||
commit_on_selection_change="true"
|
||||
heading_height="23"
|
||||
height="238"
|
||||
left="6"
|
||||
height="199"
|
||||
left_delta="0"
|
||||
top_pad="0"
|
||||
width="200"/>
|
||||
width="205"/>
|
||||
<text
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left="6"
|
||||
left_delta="0"
|
||||
name="conflicts_description"
|
||||
top_pad="2"
|
||||
width="200">
|
||||
width="205">
|
||||
[CONFLICTS] conflicts in [JOINTS_COUNT] joints
|
||||
</text>
|
||||
<text
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
height="15"
|
||||
left_pad="5"
|
||||
left_pad="10"
|
||||
name="pos_overrides_descr"
|
||||
top="4"
|
||||
top="73"
|
||||
width="300">
|
||||
Position overrides for joint '[JOINT]':
|
||||
</text>
|
||||
|
|
@ -1339,24 +1304,48 @@ Please consider using an attachment point close to the item's position on the bo
|
|||
height="100"
|
||||
left_delta="0"
|
||||
top_pad="0"
|
||||
width="330">
|
||||
width="385">
|
||||
<scroll_list.columns
|
||||
label="Model"
|
||||
name="model_name"
|
||||
relative_width="0.40" />
|
||||
relative_width="0.49" />
|
||||
<scroll_list.columns
|
||||
label="X"
|
||||
name="axis_x"
|
||||
relative_width="0.20" />
|
||||
relative_width="0.17" />
|
||||
<scroll_list.columns
|
||||
label="Y"
|
||||
name="axis_y"
|
||||
relative_width="0.20" />
|
||||
relative_width="0.17" />
|
||||
<scroll_list.columns
|
||||
label="Z"
|
||||
name="axis_z"
|
||||
relative_width="0.20" />
|
||||
relative_width="0.17" />
|
||||
</scroll_list>
|
||||
<panel
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
border="true"
|
||||
left="410"
|
||||
height="110"
|
||||
top_pad="5"
|
||||
width="200"
|
||||
name="avatar_model_hint_panel"
|
||||
>
|
||||
<text
|
||||
left="5"
|
||||
width="190"
|
||||
height="110"
|
||||
name="avatar_model_hint_text"
|
||||
wrap="true"
|
||||
word_wrap="true"
|
||||
type="string">
|
||||
Tip:
|
||||
Too many items use the default (right hand) unnecessarily.
|
||||
|
||||
Please consider using an attachment point close to the item's position on the body.
|
||||
</text>
|
||||
</panel>
|
||||
</panel>
|
||||
<panel
|
||||
label="Log"
|
||||
|
|
@ -1365,7 +1354,7 @@ Please consider using an attachment point close to the item's position on the bo
|
|||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="275"
|
||||
height="306"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="log_tab_border"
|
||||
|
|
@ -1395,7 +1384,7 @@ Please consider using an attachment point close to the item's position on the bo
|
|||
<panel
|
||||
follows="top|left|bottom"
|
||||
layout="topleft"
|
||||
height="197"
|
||||
height="195"
|
||||
left="4"
|
||||
border="true"
|
||||
name="weights_and_warning_panel"
|
||||
|
|
@ -1629,113 +1618,6 @@ Analysed:
|
|||
[PHU]
|
||||
</text>-->
|
||||
</panel>
|
||||
<panel
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
left_pad="90"
|
||||
height="100"
|
||||
border="true"
|
||||
name="preview_controls_panel"
|
||||
width="260">
|
||||
<panel
|
||||
name="preview_controls_inner_panel"
|
||||
height="18" >
|
||||
<text
|
||||
height="18"
|
||||
layout="topleft"
|
||||
name="preview_controls_title"
|
||||
left="3"
|
||||
width="150">
|
||||
Preview controls
|
||||
</text>
|
||||
<combo_box
|
||||
can_resize="false"
|
||||
follows="top|left"
|
||||
left="-85"
|
||||
top_delta="-2"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
name="preview_lod_combo"
|
||||
width="80"
|
||||
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="low"> Low </combo_item>
|
||||
<combo_item name="lowest"> Lowest </combo_item>
|
||||
</combo_box>
|
||||
</panel>
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
follows="top|left"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
left="3"
|
||||
name="preview_controls_border"
|
||||
top_pad="5"
|
||||
halign="center"
|
||||
width="250"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
label="Edges"
|
||||
layout="topleft"
|
||||
name="show_edges"
|
||||
width="70"
|
||||
left="0"
|
||||
top_pad="10"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
label="Textures"
|
||||
layout="topleft"
|
||||
name="show_textures"
|
||||
left_pad="0"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
label="UV guide"
|
||||
layout="topleft"
|
||||
name="show_uv_guide"
|
||||
left_pad="0"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="10"
|
||||
left="0"
|
||||
width="70"
|
||||
label="Physics"
|
||||
name="show_physics"/>
|
||||
<text
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
left_pad="2"
|
||||
height="16"
|
||||
width="80"
|
||||
name="exploder_label">
|
||||
Explode hulls
|
||||
</text>
|
||||
<slider
|
||||
name="physics_explode"
|
||||
show_text="false"
|
||||
top_delta="1"
|
||||
follows="top|left"
|
||||
valign="center"
|
||||
left_pad="2"
|
||||
min_val="0.0"
|
||||
max_val="3.0"
|
||||
width="100"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
top_pad="15"
|
||||
label="Weights"
|
||||
layout="topleft"
|
||||
width="70"
|
||||
name="show_skin_weight"
|
||||
left="0"/>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
label="Joints"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
name="show_joint_positions"
|
||||
left_pad="0"/>
|
||||
</panel>
|
||||
<!-- ========== NOTE MESSAGE ========== -->
|
||||
<text
|
||||
font="SansSerif"
|
||||
|
|
@ -1744,7 +1626,7 @@ Analysed:
|
|||
name="warning_title"
|
||||
top_pad="5"
|
||||
text_color="DrYellow"
|
||||
visible="false"
|
||||
visible="true"
|
||||
width="40">
|
||||
NOTE:
|
||||
</text>
|
||||
|
|
@ -1757,11 +1639,16 @@ Analysed:
|
|||
parse_urls="true"
|
||||
top_delta="0"
|
||||
wrap="true"
|
||||
width="462"
|
||||
visible="false">
|
||||
width="530"
|
||||
visible="true">
|
||||
You dont have rights to upload mesh models. [[VURL] Find out how] to get certified.
|
||||
</text>
|
||||
<text text_color="Yellow" layout="topleft" top_pad="-1" left="6" name="status">
|
||||
<text
|
||||
text_color="Yellow"
|
||||
layout="topleft"
|
||||
top_pad="-2"
|
||||
left="6"
|
||||
name="status">
|
||||
[STATUS]
|
||||
</text>
|
||||
</panel>
|
||||
|
|
@ -1813,10 +1700,10 @@ Analysed:
|
|||
layout="topleft"
|
||||
text_color="White"
|
||||
top="5"
|
||||
left_pad="20"
|
||||
left_pad="10"
|
||||
name="label_display"
|
||||
width="50">
|
||||
Display...
|
||||
width="100">
|
||||
Display:
|
||||
</text>
|
||||
<check_box
|
||||
follows="top|left"
|
||||
|
|
@ -1856,7 +1743,7 @@ Analysed:
|
|||
label="Joint position overrides"
|
||||
label_text.text_color="White"
|
||||
word_wrap="down"
|
||||
width="130"
|
||||
width="150"
|
||||
layout="topleft"
|
||||
name="show_joint_overrides"
|
||||
top_pad="8">
|
||||
|
|
@ -1867,7 +1754,7 @@ Analysed:
|
|||
label_text.text_color="White"
|
||||
layout="topleft"
|
||||
name="show_joint_positions"
|
||||
top_pad="17">
|
||||
top_pad="8">
|
||||
</check_box>
|
||||
<text
|
||||
follows="top|left"
|
||||
|
|
|
|||
|
|
@ -19,5 +19,6 @@
|
|||
name="Preview Tabs"
|
||||
tab_position="bottom"
|
||||
top="0"
|
||||
width="448" />
|
||||
width="448"
|
||||
enable_tabs_flashing="true"/>
|
||||
</multi_floater>
|
||||
|
|
|
|||
Loading…
Reference in New Issue