From 282fcf20ec59c95c85f4e59202e258c104386939 Mon Sep 17 00:00:00 2001 From: Saracen Date: Fri, 5 Apr 2019 20:10:17 +0100 Subject: [PATCH 001/547] Add display name field to the log in screen. --- .../qml/LoginDialog/LinkAccountBody.qml | 84 +++++++++++++++---- .../qml/LoginDialog/LoggingInBody.qml | 2 + 2 files changed, 68 insertions(+), 18 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index 4dd05f594d..ff2fd17bc6 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -85,27 +85,31 @@ Item { UserActivityLogger.logAction("encourageLoginDialog", data); } bodyLoader.setSource("LoggingInBody.qml", { "loginDialog": loginDialog, "root": root, "bodyLoader": bodyLoader, "withSteam": linkAccountBody.withSteam, - "withOculus": linkAccountBody.withOculus, "linkSteam": linkAccountBody.linkSteam, "linkOculus": linkAccountBody.linkOculus }); + "withOculus": linkAccountBody.withOculus, "linkSteam": linkAccountBody.linkSteam, "linkOculus": linkAccountBody.linkOculus, + "displayName":displayNameField.text }); } function init() { // going to/from sign in/up dialog. loginErrorMessage.text = linkAccountBody.errorString; loginErrorMessage.visible = (linkAccountBody.errorString !== ""); - if (loginErrorMessageTextMetrics.width > emailField.width) { + if (loginErrorMessageTextMetrics.width > displayNameField.width) { loginErrorMessage.wrapMode = Text.WordWrap; - errorContainer.height = (loginErrorMessageTextMetrics.width / emailField.width) * loginErrorMessageTextMetrics.height; + errorContainer.height = (loginErrorMessageTextMetrics.width / displayNameField.width) * loginErrorMessageTextMetrics.height; } loginButton.text = (!linkAccountBody.linkSteam && !linkAccountBody.linkOculus) ? "Log In" : "Link Account"; loginButton.color = hifi.buttons.blue; + displayNameField.placeholderText = "Display Name (optional)"; + var savedDisplayName = Settings.getValue("Avatar/displayName", ""); + displayNameField.text = savedDisplayName; emailField.placeholderText = "Username or Email"; var savedUsername = Settings.getValue("keepMeLoggedIn/savedUsername", ""); emailField.text = keepMeLoggedInCheckbox.checked ? savedUsername === "Unknown user" ? "" : savedUsername : ""; if (linkAccountBody.linkSteam || linkAccountBody.linkOculus) { loginButton.width = (passwordField.width - hifi.dimensions.contentSpacing.x) / 2; - loginButton.anchors.right = emailField.right; + loginButton.anchors.right = displayName.right; } else { - loginButton.anchors.left = emailField.left; + loginButton.anchors.left = displayName.left; } loginContainer.visible = true; } @@ -125,14 +129,14 @@ Item { Item { id: loginContainer - width: emailField.width - height: errorContainer.height + emailField.height + passwordField.height + 5.5 * hifi.dimensions.contentSpacing.y + + width: displayNameField.width + height: errorContainer.height + displayNameField.height + emailField.height + passwordField.height + 5.5 * hifi.dimensions.contentSpacing.y + keepMeLoggedInCheckbox.height + loginButton.height + cantAccessTextMetrics.height + continueButton.height anchors { top: parent.top topMargin: root.bannerHeight + 0.25 * parent.height left: parent.left - leftMargin: (parent.width - emailField.width) / 2 + leftMargin: (parent.width - displayNameField.width) / 2 } Item { @@ -140,9 +144,9 @@ Item { width: parent.width height: loginErrorMessageTextMetrics.height anchors { - bottom: emailField.top; + bottom: displayNameField.top; bottomMargin: hifi.dimensions.contentSpacing.y; - left: emailField.left; + left: displayNameField.left; } TextMetrics { id: loginErrorMessageTextMetrics @@ -163,7 +167,7 @@ Item { } HifiControlsUit.TextField { - id: emailField + id: displayNameField width: root.bannerWidth height: linkAccountBody.textFieldHeight font.pixelSize: linkAccountBody.textFieldFontSize @@ -172,6 +176,45 @@ Item { top: parent.top topMargin: errorContainer.height } + placeholderText: "Display Name (optional)" + activeFocusOnPress: true + Keys.onPressed: { + switch (event.key) { + case Qt.Key_Tab: + event.accepted = true; + emailField.focus = true; + break; + case Qt.Key_Backtab: + event.accepted = true; + passwordField.focus = true; + break; + case Qt.Key_Enter: + case Qt.Key_Return: + event.accepted = true; + if (keepMeLoggedInCheckbox.checked) { + Settings.setValue("keepMeLoggedIn/savedUsername", emailField.text); + } + linkAccountBody.login(); + break; + } + } + onFocusChanged: { + root.text = ""; + if (focus) { + root.isPassword = false; + } + } + } + HifiControlsUit.TextField { + id: emailField + width: root.bannerWidth + height: linkAccountBody.textFieldHeight + font.pixelSize: linkAccountBody.textFieldFontSize + styleRenderType: Text.QtRendering + anchors { + top: displayNameField.bottom + topMargin: 1.5 * hifi.dimensions.contentSpacing.y + } placeholderText: "Username or Email" activeFocusOnPress: true Keys.onPressed: { @@ -182,7 +225,7 @@ Item { break; case Qt.Key_Backtab: event.accepted = true; - passwordField.focus = true; + displayNameField.focus = true; break; case Qt.Key_Enter: case Qt.Key_Return: @@ -257,6 +300,9 @@ Item { Keys.onPressed: { switch (event.key) { case Qt.Key_Tab: + event.accepted = true; + displayNameField.focus = true; + break; case Qt.Key_Backtab: event.accepted = true; emailField.focus = true; @@ -350,7 +396,7 @@ Item { anchors { top: loginButton.bottom topMargin: hifi.dimensions.contentSpacing.y - left: emailField.left + left: displayName.left } font.family: linkAccountBody.fontFamily font.pixelSize: linkAccountBody.textFieldFontSize @@ -381,13 +427,13 @@ Item { } HifiControlsUit.Button { id: continueButton; - width: emailField.width; + width: displayName.width; height: d.minHeightButton color: hifi.buttons.none; anchors { top: cantAccessText.bottom topMargin: hifi.dimensions.contentSpacing.y - left: emailField.left + left: displayName.left } text: qsTr("CONTINUE WITH STEAM") fontFamily: linkAccountBody.fontFamily @@ -420,7 +466,8 @@ Item { } bodyLoader.setSource("LoggingInBody.qml", { "loginDialog": loginDialog, "root": root, "bodyLoader": bodyLoader, - "withSteam": linkAccountBody.withSteam, "withOculus": linkAccountBody.withOculus, "linkSteam": linkAccountBody.linkSteam, "linkOculus": linkAccountBody.linkOculus }); + "withSteam": linkAccountBody.withSteam, "withOculus": linkAccountBody.withOculus, "linkSteam": linkAccountBody.linkSteam, "linkOculus": linkAccountBody.linkOculus, + "displayName":displayNameField.text}); } Component.onCompleted: { if (linkAccountBody.linkSteam || linkAccountBody.linkOculus) { @@ -535,7 +582,7 @@ Item { onFocusEnabled: { if (!linkAccountBody.lostFocus) { Qt.callLater(function() { - emailField.forceActiveFocus(); + displayName.forceActiveFocus(); }); } } @@ -543,6 +590,7 @@ Item { linkAccountBody.lostFocus = !root.isTablet && !root.isOverlay; if (linkAccountBody.lostFocus) { Qt.callLater(function() { + displayName.focus = false; emailField.focus = false; passwordField.focus = false; }); @@ -558,7 +606,7 @@ Item { d.resize(); init(); Qt.callLater(function() { - emailField.forceActiveFocus(); + displayName.forceActiveFocus(); }); } diff --git a/interface/resources/qml/LoginDialog/LoggingInBody.qml b/interface/resources/qml/LoginDialog/LoggingInBody.qml index 583f00583b..a0029dc40b 100644 --- a/interface/resources/qml/LoginDialog/LoggingInBody.qml +++ b/interface/resources/qml/LoginDialog/LoggingInBody.qml @@ -31,6 +31,7 @@ Item { property bool linkSteam: linkSteam property bool linkOculus: linkOculus property bool createOculus: createOculus + property string displayName: "" readonly property bool loginDialogPoppedUp: loginDialog.getLoginDialogPoppedUp() @@ -161,6 +162,7 @@ Item { } } + MyAvatar.displayName = displayName; successTimer.start(); } From 36af2c8e62d94bd91a07a3a9970d4c71fa70d99f Mon Sep 17 00:00:00 2001 From: Saracen Date: Tue, 16 Apr 2019 13:56:02 +0100 Subject: [PATCH 002/547] Change 'displayName' to 'displayNameField'. --- .../qml/LoginDialog/LinkAccountBody.qml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml index ff2fd17bc6..94349a25f5 100644 --- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml +++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml @@ -107,9 +107,9 @@ Item { emailField.text = keepMeLoggedInCheckbox.checked ? savedUsername === "Unknown user" ? "" : savedUsername : ""; if (linkAccountBody.linkSteam || linkAccountBody.linkOculus) { loginButton.width = (passwordField.width - hifi.dimensions.contentSpacing.x) / 2; - loginButton.anchors.right = displayName.right; + loginButton.anchors.right = displayNameField.right; } else { - loginButton.anchors.left = displayName.left; + loginButton.anchors.left = displayNameField.left; } loginContainer.visible = true; } @@ -396,7 +396,7 @@ Item { anchors { top: loginButton.bottom topMargin: hifi.dimensions.contentSpacing.y - left: displayName.left + left: displayNameField.left } font.family: linkAccountBody.fontFamily font.pixelSize: linkAccountBody.textFieldFontSize @@ -427,13 +427,13 @@ Item { } HifiControlsUit.Button { id: continueButton; - width: displayName.width; + width: displayNameField.width; height: d.minHeightButton color: hifi.buttons.none; anchors { top: cantAccessText.bottom topMargin: hifi.dimensions.contentSpacing.y - left: displayName.left + left: displayNameField.left } text: qsTr("CONTINUE WITH STEAM") fontFamily: linkAccountBody.fontFamily @@ -582,7 +582,7 @@ Item { onFocusEnabled: { if (!linkAccountBody.lostFocus) { Qt.callLater(function() { - displayName.forceActiveFocus(); + displayNameField.forceActiveFocus(); }); } } @@ -590,7 +590,7 @@ Item { linkAccountBody.lostFocus = !root.isTablet && !root.isOverlay; if (linkAccountBody.lostFocus) { Qt.callLater(function() { - displayName.focus = false; + displayNameField.focus = false; emailField.focus = false; passwordField.focus = false; }); @@ -606,7 +606,7 @@ Item { d.resize(); init(); Qt.callLater(function() { - displayName.forceActiveFocus(); + displayNameField.forceActiveFocus(); }); } From d99af64410f6fac8fa05f516fd061373ee74f3a5 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 29 Apr 2019 11:07:36 -0700 Subject: [PATCH 003/547] fix wearables not disappearing with avatar --- .../src/avatars-renderer/Avatar.cpp | 19 ++++++++++++++++++- .../src/avatars-renderer/Avatar.h | 2 +- libraries/render/src/render/Item.cpp | 6 +++++- libraries/render/src/render/Item.h | 6 ++++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 204ed79660..0f11b13101 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -2111,6 +2111,7 @@ void Avatar::updateAttachmentRenderIDs() { void Avatar::updateDescendantRenderIDs() { _subItemLock.withWriteLock([&] { + auto oldDescendantRenderIDs = _descendantRenderIDs; _descendantRenderIDs.clear(); auto entityTreeRenderer = DependencyManager::get(); EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr; @@ -2125,13 +2126,29 @@ void Avatar::updateDescendantRenderIDs() { render::ItemIDs renderableSubItems; uint32_t numRenderableSubItems = renderer->metaFetchMetaSubItems(renderableSubItems); if (numRenderableSubItems > 0) { - _descendantRenderIDs.insert(_descendantRenderIDs.end(), renderableSubItems.begin(), renderableSubItems.end()); + for (auto& renderID : renderableSubItems) { + _descendantRenderIDs.insert(renderID); + oldDescendantRenderIDs.erase(renderID); + } } } } } }); }); + + render::Transaction transaction; + for (auto& oldDescendantRenderID : oldDescendantRenderIDs) { + transaction.updateItem(oldDescendantRenderID, [](render::PayloadProxyInterface& self) { + self.setOverrideSubMetaCulled(false); + }); + } + for (auto& descendantRenderIDs : _descendantRenderIDs) { + transaction.updateItem(descendantRenderIDs, [](render::PayloadProxyInterface& self) { + self.setOverrideSubMetaCulled(true); + }); + } + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); } }); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index a196c018d2..3820309f17 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -776,7 +776,7 @@ protected: void updateAttachmentRenderIDs(); render::ItemIDs _attachmentRenderIDs; void updateDescendantRenderIDs(); - render::ItemIDs _descendantRenderIDs; + render::ItemIDSet _descendantRenderIDs; uint32_t _lastAncestorChainRenderableVersion { 0 }; }; diff --git a/libraries/render/src/render/Item.cpp b/libraries/render/src/render/Item.cpp index 532964777f..d5dde7f86b 100644 --- a/libraries/render/src/render/Item.cpp +++ b/libraries/render/src/render/Item.cpp @@ -123,7 +123,11 @@ namespace render { if (!payload) { return ItemKey::Builder::opaqueShape().withTypeMeta(); } - return payload->getKey(); + if (payload->overrideSubMetaCulled()) { + return ItemKey::Builder(payload->getKey()).withSubMetaCulled(); + } else { + return payload->getKey(); + } } template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload) { diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index 79557e3e44..e3f10365db 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -599,6 +599,12 @@ public: virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) = 0; + + bool overrideSubMetaCulled() const { return _overrideSubMetaCulled; } + void setOverrideSubMetaCulled(bool overrideSubMetaCulled) { _overrideSubMetaCulled = overrideSubMetaCulled; } + +protected: + bool _overrideSubMetaCulled { false }; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); From 0bcd8b81e138e6f47e0f0a7690bc9c5c94e006cf Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Tue, 30 Apr 2019 10:31:09 -0700 Subject: [PATCH 004/547] trying and failing to fix models --- .../src/avatars-renderer/Avatar.cpp | 35 +++++++++---------- .../src/avatars-renderer/Avatar.h | 3 +- .../src/RenderableEntityItem.cpp | 15 +++++--- .../src/RenderableEntityItem.h | 4 ++- .../src/RenderableMaterialEntityItem.cpp | 3 +- .../src/RenderableModelEntityItem.cpp | 12 ++++++- .../src/RenderableModelEntityItem.h | 1 + .../RenderableParticleEffectEntityItem.cpp | 14 +++++--- .../src/RenderablePolyLineEntityItem.cpp | 9 ++++- .../src/RenderablePolyVoxEntityItem.cpp | 10 ++++++ .../src/RenderablePolyVoxEntityItem.h | 2 +- libraries/entities/src/EntityItem.cpp | 11 ++++++ libraries/entities/src/EntityItem.h | 5 +++ .../render-utils/src/MeshPartPayload.cpp | 8 +++++ libraries/render-utils/src/MeshPartPayload.h | 7 ++-- libraries/render-utils/src/Model.cpp | 16 ++++++++- libraries/render-utils/src/Model.h | 3 ++ libraries/render/src/render/Item.cpp | 6 +--- libraries/render/src/render/Item.h | 8 +---- 19 files changed, 122 insertions(+), 50 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 0f11b13101..c44b88cbf6 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -2111,7 +2111,8 @@ void Avatar::updateAttachmentRenderIDs() { void Avatar::updateDescendantRenderIDs() { _subItemLock.withWriteLock([&] { - auto oldDescendantRenderIDs = _descendantRenderIDs; + auto oldRenderingDescendantEntityIDs = _renderingDescendantEntityIDs; + _renderingDescendantEntityIDs.clear(); _descendantRenderIDs.clear(); auto entityTreeRenderer = DependencyManager::get(); EntityTreePointer entityTree = entityTreeRenderer ? entityTreeRenderer->getTree() : nullptr; @@ -2121,34 +2122,30 @@ void Avatar::updateDescendantRenderIDs() { if (object && object->getNestableType() == NestableType::Entity) { EntityItemPointer entity = std::static_pointer_cast(object); if (entity->isVisible()) { - auto renderer = entityTreeRenderer->renderableForEntityId(object->getID()); + auto id = object->getID(); + _renderingDescendantEntityIDs.insert(id); + oldRenderingDescendantEntityIDs.erase(id); + entity->setCullWithParent(true); + + auto renderer = entityTreeRenderer->renderableForEntityId(id); if (renderer) { render::ItemIDs renderableSubItems; uint32_t numRenderableSubItems = renderer->metaFetchMetaSubItems(renderableSubItems); if (numRenderableSubItems > 0) { - for (auto& renderID : renderableSubItems) { - _descendantRenderIDs.insert(renderID); - oldDescendantRenderIDs.erase(renderID); - } + _descendantRenderIDs.insert(_descendantRenderIDs.end(), renderableSubItems.begin(), renderableSubItems.end()); } } } } }); - }); - render::Transaction transaction; - for (auto& oldDescendantRenderID : oldDescendantRenderIDs) { - transaction.updateItem(oldDescendantRenderID, [](render::PayloadProxyInterface& self) { - self.setOverrideSubMetaCulled(false); - }); - } - for (auto& descendantRenderIDs : _descendantRenderIDs) { - transaction.updateItem(descendantRenderIDs, [](render::PayloadProxyInterface& self) { - self.setOverrideSubMetaCulled(true); - }); - } - AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + for (auto& oldRenderingDescendantEntityID : oldRenderingDescendantEntityIDs) { + auto entity = entityTree->findEntityByEntityItemID(oldRenderingDescendantEntityID); + if (entity) { + entity->setCullWithParent(false); + } + } + }); } }); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 3820309f17..890cd78bb8 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -776,7 +776,8 @@ protected: void updateAttachmentRenderIDs(); render::ItemIDs _attachmentRenderIDs; void updateDescendantRenderIDs(); - render::ItemIDSet _descendantRenderIDs; + render::ItemIDs _descendantRenderIDs; + std::unordered_set _renderingDescendantEntityIDs; uint32_t _lastAncestorChainRenderableVersion { 0 }; }; diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index fb6fbad2ac..184ac60524 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -186,16 +186,20 @@ render::hifi::Layer EntityRenderer::getHifiRenderLayer() const { } ItemKey EntityRenderer::getKey() { + auto builder = ItemKey::Builder().withTypeShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); if (isTransparent()) { - return ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + builder.withTransparent(); } - // This allows shapes to cast shadows if (_canCastShadow) { - return ItemKey::Builder::opaqueShape().withTypeMeta().withTagBits(getTagMask()).withShadowCaster().withLayer(getHifiRenderLayer()); - } else { - return ItemKey::Builder::opaqueShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + builder.withShadowCaster(); } + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); } uint32_t EntityRenderer::metaFetchMetaSubItems(ItemIDs& subItems) { @@ -430,6 +434,7 @@ void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transa setRenderLayer(entity->getRenderLayer()); setPrimitiveMode(entity->getPrimitiveMode()); _canCastShadow = entity->getCanCastShadow(); + setCullWithParent(entity->getCullWithParent()); _cauterized = entity->getCauterized(); _needsRenderUpdate = false; }); diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h index 39f9ad091e..0d4ea93fd9 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.h +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -107,7 +107,8 @@ protected: virtual void setIsVisibleInSecondaryCamera(bool value) { _isVisibleInSecondaryCamera = value; } virtual void setRenderLayer(RenderLayer value) { _renderLayer = value; } virtual void setPrimitiveMode(PrimitiveMode value) { _primitiveMode = value; } - + virtual void setCullWithParent(bool value) { _cullWithParent = value; } + template T withReadLockResult(const std::function& f) { T result; @@ -139,6 +140,7 @@ protected: bool _visible { false }; bool _isVisibleInSecondaryCamera { false }; bool _canCastShadow { false }; + bool _cullWithParent { false }; RenderLayer _renderLayer { RenderLayer::WORLD }; PrimitiveMode _primitiveMode { PrimitiveMode::SOLID }; bool _cauterized { false }; diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index 9a634a85ad..60b823937f 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -230,8 +230,7 @@ void MaterialEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPo } ItemKey MaterialEntityRenderer::getKey() { - ItemKey::Builder builder; - builder.withTypeShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + auto builder = ItemKey::Builder().withTypeShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); if (!_visible) { builder.withInvisible(); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index bfbbe12ea6..abe72a44e0 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1051,8 +1051,10 @@ ModelEntityRenderer::ModelEntityRenderer(const EntityItemPointer& entity) : Pare void ModelEntityRenderer::setKey(bool didVisualGeometryRequestSucceed) { auto builder = ItemKey::Builder().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); - if (_model && _model->isGroupCulled()) { + if (!_cullWithParent && _model && _model->isGroupCulled()) { builder.withMetaCullGroup(); + } else if (_cullWithParent) { + builder.withoutSubMetaCulled(); } if (didVisualGeometryRequestSucceed) { @@ -1503,6 +1505,14 @@ void ModelEntityRenderer::setPrimitiveMode(PrimitiveMode value) { } } +void ModelEntityRenderer::setCullWithParent(bool value) { + Parent::setCullWithParent(value); + setKey(_didLastVisualGeometryRequestSucceed); + if (_model) { + _model->setCullWithParent(_cullWithParent); + } +} + // NOTE: this only renders the "meta" portion of the Model, namely it renders debugging items void ModelEntityRenderer::doRender(RenderArgs* args) { DETAILED_PROFILE_RANGE(render_detail, "MetaModelRender"); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index ee6e7d0b04..7782ffa367 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -164,6 +164,7 @@ protected: void setIsVisibleInSecondaryCamera(bool value) override; void setRenderLayer(RenderLayer value) override; void setPrimitiveMode(PrimitiveMode value) override; + void setCullWithParent(bool value) override; private: void animate(const TypedEntityPointer& entity); diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index d517ecd026..0b46e593ae 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -177,11 +177,17 @@ void ParticleEffectEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEn ItemKey ParticleEffectEntityRenderer::getKey() { // FIXME: implement isTransparent() for particles and an opaque pipeline - if (_visible) { - return ItemKey::Builder::transparentShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); - } else { - return ItemKey::Builder().withInvisible().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()).build(); + auto builder = ItemKey::Builder::transparentShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (!_visible) { + builder.withInvisible(); } + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); } ShapeKey ParticleEffectEntityRenderer::getShapeKey() { diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp index 2430643ce2..b32a478e99 100644 --- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp @@ -71,7 +71,14 @@ void PolyLineEntityRenderer::buildPipeline() { } ItemKey PolyLineEntityRenderer::getKey() { - return ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + // FIXME: implement isTransparent() for polylines and an opaque pipeline + auto builder = ItemKey::Builder::transparentShape().withTypeMeta().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); } ShapeKey PolyLineEntityRenderer::getShapeKey() { diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 183d2881f3..d432ab814e 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -1612,6 +1612,16 @@ PolyVoxEntityRenderer::PolyVoxEntityRenderer(const EntityItemPointer& entity) : _params = std::make_shared(sizeof(glm::vec4), nullptr); } +ItemKey PolyVoxEntityRenderer::getKey() { + auto builder = ItemKey::Builder::opaqueShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); + + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + + return builder.build(); +} + ShapeKey PolyVoxEntityRenderer::getShapeKey() { auto builder = ShapeKey::Builder().withCustom(CUSTOM_PIPELINE_NUMBER); if (_primitiveMode == PrimitiveMode::LINES) { diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h index 7aea87535e..47a0df380d 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h @@ -173,7 +173,7 @@ public: } protected: - virtual ItemKey getKey() override { return ItemKey::Builder::opaqueShape().withTagBits(getTagMask()).withLayer(getHifiRenderLayer()); } + virtual ItemKey getKey() override; virtual ShapeKey getShapeKey() override; virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override; virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override; diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index e1ede9192a..f556a747e9 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3061,6 +3061,17 @@ void EntityItem::setCanCastShadow(bool value) { } } +bool EntityItem::getCullWithParent() const { + return _cullWithParent; +} + +void EntityItem::setCullWithParent(bool value) { + if (_cullWithParent != value) { + _cullWithParent = value; + emit requestRenderUpdate(); + } +} + bool EntityItem::isChildOfMyAvatar() const { QUuid ancestorID = findAncestorOfType(NestableType::Avatar); return !ancestorID.isNull() && (ancestorID == Physics::getSessionUUID() || ancestorID == AVATAR_SELF_ID); diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 29a1a8d73c..73eb863e56 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -303,6 +303,9 @@ public: bool getCanCastShadow() const; void setCanCastShadow(bool value); + bool getCullWithParent() const; + void setCullWithParent(bool value); + void setCauterized(bool value); bool getCauterized() const; @@ -752,6 +755,8 @@ protected: QHash _grabActions; + bool _cullWithParent { false }; + private: static std::function _getBillboardRotationOperator; static std::function _getPrimaryViewFrustumPositionOperator; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 7be5f93a95..a9c0ab3140 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -92,6 +92,10 @@ void MeshPartPayload::updateKey(const render::ItemKey& key) { builder.withTransparent(); } + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + _itemKey = builder.build(); } @@ -337,6 +341,10 @@ void ModelMeshPartPayload::updateKey(const render::ItemKey& key) { builder.withTransparent(); } + if (_cullWithParent) { + builder.withSubMetaCulled(); + } + _itemKey = builder.build(); } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 641fc81487..fc9e0ab97e 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -43,7 +43,7 @@ public: // Render Item interface virtual render::ItemKey getKey() const; virtual render::Item::Bound getBound() const; - virtual render::ShapeKey getShapeKey() const; // shape interface + virtual render::ShapeKey getShapeKey() const; virtual void render(RenderArgs* args); // ModelMeshPartPayload functions to perform render @@ -73,8 +73,11 @@ public: void addMaterial(graphics::MaterialLayer material); void removeMaterial(graphics::MaterialPointer material); + void setCullWithParent(bool value) { _cullWithParent = value; } + protected: render::ItemKey _itemKey{ render::ItemKey::Builder::opaqueShape().build() }; + bool _cullWithParent { false }; }; namespace render { @@ -103,7 +106,7 @@ public: void updateTransformForSkinnedMesh(const Transform& renderTransform, const Transform& boundTransform); // Render Item interface - render::ShapeKey getShapeKey() const override; // shape interface + render::ShapeKey getShapeKey() const override; void render(RenderArgs* args) override; void setShapeKey(bool invalidateShapeKey, PrimitiveMode primitiveMode, bool useDualQuaternionSkinning); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index e2d78a8d94..1f0f78911a 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -151,7 +151,7 @@ void Model::setOffset(const glm::vec3& offset) { } void Model::calculateTextureInfo() { - if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItemsMap.isEmpty()) { + if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItems.isEmpty()) { size_t textureSize = 0; int textureCount = 0; bool allTexturesLoaded = true; @@ -954,6 +954,20 @@ void Model::setCauterized(bool cauterized, const render::ScenePointer& scene) { } } +void Model::setCullWithParent(bool cullWithParent) { + if (_cullWithParent != cullWithParent) { + _cullWithParent = cullWithParent; + + render::Transaction transaction; + foreach(auto item, _modelMeshRenderItemsMap.keys()) { + transaction.updateItem(item, [cullWithParent](ModelMeshPartPayload& data) { + data.setCullWithParent(cullWithParent); + }); + } + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + } +} + const render::ItemKey Model::getRenderItemKeyGlobalFlags() const { return _renderItemKeyGlobalFlags; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 1431b5e3f9..31838697ad 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -129,6 +129,8 @@ public: bool isCauterized() const { return _cauterized; } void setCauterized(bool value, const render::ScenePointer& scene); + void setCullWithParent(bool value); + // Access the current RenderItemKey Global Flags used by the model and applied to the render items representing the parts of the model. const render::ItemKey getRenderItemKeyGlobalFlags() const; @@ -506,6 +508,7 @@ protected: // render::ItemKey _renderItemKeyGlobalFlags; bool _cauterized { false }; + bool _cullWithParent { false }; bool shouldInvalidatePayloadShapeKey(int meshIndex); diff --git a/libraries/render/src/render/Item.cpp b/libraries/render/src/render/Item.cpp index d5dde7f86b..532964777f 100644 --- a/libraries/render/src/render/Item.cpp +++ b/libraries/render/src/render/Item.cpp @@ -123,11 +123,7 @@ namespace render { if (!payload) { return ItemKey::Builder::opaqueShape().withTypeMeta(); } - if (payload->overrideSubMetaCulled()) { - return ItemKey::Builder(payload->getKey()).withSubMetaCulled(); - } else { - return payload->getKey(); - } + return payload->getKey(); } template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload) { diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index e3f10365db..7265c12957 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -599,12 +599,6 @@ public: virtual Item::Bound getBound() = 0; virtual void render(RenderArgs* args) = 0; virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) = 0; - - bool overrideSubMetaCulled() const { return _overrideSubMetaCulled; } - void setOverrideSubMetaCulled(bool overrideSubMetaCulled) { _overrideSubMetaCulled = overrideSubMetaCulled; } - -protected: - bool _overrideSubMetaCulled { false }; }; template <> const ItemKey payloadGetKey(const PayloadProxyInterface::Pointer& payload); @@ -615,7 +609,7 @@ template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer typedef Item::PayloadPointer PayloadPointer; -typedef std::vector< PayloadPointer > Payloads; +typedef std::vector Payloads; // A map of items by ShapeKey to optimize rendering pipeline assignments using ShapeBounds = std::unordered_map; From dbd9299e859bca50e7876de9da6e031dd1dba4d2 Mon Sep 17 00:00:00 2001 From: Oren Hurvitz Date: Thu, 28 Mar 2019 11:53:56 +0200 Subject: [PATCH 005/547] The "Clear Disk Caches" command also clears the KTX cache (on the next restart) --- interface/src/Menu.cpp | 12 ++++++++++-- interface/src/Menu.h | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 4cf78c23ee..6caf3c670d 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -632,8 +632,16 @@ Menu::Menu() { QString("hifi/tablet/TabletNetworkingPreferences.qml"), "NetworkingPreferencesDialog"); }); addActionToQMenuAndActionHash(networkMenu, MenuOption::ReloadContent, 0, qApp, SLOT(reloadResourceCaches())); - addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCache, 0, - DependencyManager::get().data(), SLOT(clearCache())); + + action = addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCaches); + connect(action, &QAction::triggered, [] { + // This cache is cleared immediately + DependencyManager::get()->clearCache(); + + // Clear the KTX cache on the next restart. It can't be cleared immediately because its files might be in use. + Setting::Handle(KTXCache::SETTING_VERSION_NAME, KTXCache::INVALID_VERSION).set(KTXCache::INVALID_VERSION); + }); + addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::DisableActivityLogger, 0, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 70687786a9..b8a72c3e93 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -56,7 +56,7 @@ namespace MenuOption { const QString CalibrateCamera = "Calibrate Camera"; const QString CenterPlayerInView = "Center Player In View"; const QString Chat = "Chat..."; - const QString ClearDiskCache = "Clear Disk Cache"; + const QString ClearDiskCaches = "Clear Disk Caches (requires restart)"; const QString Collisions = "Collisions"; const QString Connexion = "Activate 3D Connexion Devices"; const QString Console = "Console..."; From ef163c836da400ba131a1525c296c2572deaa353 Mon Sep 17 00:00:00 2001 From: Oren Hurvitz Date: Fri, 26 Jul 2019 15:25:24 +0300 Subject: [PATCH 006/547] Enable QtWebEngine to store its cache on disk In the past, QtWebEngine stored the cache on disk automatically. But apparently due to a recent change to Qt, this has changed: a Web Engine Profile that is constructed without a Storage Name is placed in "Off the Record" mode, which means that the cache is stored only in memory. Therefore, we must assign a Storage Name and disable "Off the Record" mode. --- libraries/ui/src/ui/types/FileTypeProfile.cpp | 3 +++ libraries/ui/src/ui/types/HFWebEngineProfile.cpp | 1 + 2 files changed, 4 insertions(+) diff --git a/libraries/ui/src/ui/types/FileTypeProfile.cpp b/libraries/ui/src/ui/types/FileTypeProfile.cpp index 073460903e..d8d977f00a 100644 --- a/libraries/ui/src/ui/types/FileTypeProfile.cpp +++ b/libraries/ui/src/ui/types/FileTypeProfile.cpp @@ -24,6 +24,9 @@ FileTypeProfile::FileTypeProfile(QQmlContext* parent) : static const QString WEB_ENGINE_USER_AGENT = "Chrome/48.0 (HighFidelityInterface)"; setHttpUserAgent(WEB_ENGINE_USER_AGENT); + setStorageName(QML_WEB_ENGINE_STORAGE_NAME); + setOffTheRecord(false); + auto requestInterceptor = new RequestInterceptor(this); setRequestInterceptor(requestInterceptor); } diff --git a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp index ef1d009f09..c2c1007527 100644 --- a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp +++ b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp @@ -22,6 +22,7 @@ static const QString QML_WEB_ENGINE_STORAGE_NAME = "qmlWebEngine"; HFWebEngineProfile::HFWebEngineProfile(QQmlContext* parent) : Parent(parent) { setStorageName(QML_WEB_ENGINE_STORAGE_NAME); + setOffTheRecord(false); // we use the HFWebEngineRequestInterceptor to make sure that web requests are authenticated for the interface user setRequestInterceptor(new RequestInterceptor(this)); From d7ef7a052daf37385ebe64b5288a490435527387 Mon Sep 17 00:00:00 2001 From: Oren Hurvitz Date: Mon, 18 Jun 2018 14:53:32 +0300 Subject: [PATCH 007/547] The "Clear Disk Caches" command also deletes the HTTP cache used by QtWebEngine Note that this only clears the HTTP cache (used for files), but not the directory used for persistent data such as Cookies, Local Databases, etc. There's no Qt API to do that. Fortunately, this directory should be small. --- interface/src/Menu.cpp | 8 +++++++- libraries/ui/src/ui/types/FileTypeProfile.cpp | 19 ++++++++++++++++++ libraries/ui/src/ui/types/FileTypeProfile.h | 4 ++++ .../ui/src/ui/types/HFWebEngineProfile.cpp | 20 +++++++++++++++++++ .../ui/src/ui/types/HFWebEngineProfile.h | 4 ++++ 5 files changed, 54 insertions(+), 1 deletion(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 6caf3c670d..2450762789 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include "Application.h" #include "AccountManager.h" @@ -635,8 +637,12 @@ Menu::Menu() { action = addActionToQMenuAndActionHash(networkMenu, MenuOption::ClearDiskCaches); connect(action, &QAction::triggered, [] { - // This cache is cleared immediately + // The following caches are cleared immediately DependencyManager::get()->clearCache(); +#ifndef Q_OS_ANDROID + FileTypeProfile::clearCache(); + HFWebEngineProfile::clearCache(); +#endif // Clear the KTX cache on the next restart. It can't be cleared immediately because its files might be in use. Setting::Handle(KTXCache::SETTING_VERSION_NAME, KTXCache::INVALID_VERSION).set(KTXCache::INVALID_VERSION); diff --git a/libraries/ui/src/ui/types/FileTypeProfile.cpp b/libraries/ui/src/ui/types/FileTypeProfile.cpp index d8d977f00a..d08aac5fe4 100644 --- a/libraries/ui/src/ui/types/FileTypeProfile.cpp +++ b/libraries/ui/src/ui/types/FileTypeProfile.cpp @@ -11,6 +11,8 @@ #include "FileTypeProfile.h" +#include +#include #include #include "RequestFilters.h" @@ -18,6 +20,9 @@ #if !defined(Q_OS_ANDROID) static const QString QML_WEB_ENGINE_STORAGE_NAME = "qmlWebEngine"; +static std::set FileTypeProfile_instances; +static std::mutex FileTypeProfile_mutex; + FileTypeProfile::FileTypeProfile(QQmlContext* parent) : ContextAwareProfile(parent) { @@ -29,6 +34,14 @@ FileTypeProfile::FileTypeProfile(QQmlContext* parent) : auto requestInterceptor = new RequestInterceptor(this); setRequestInterceptor(requestInterceptor); + + std::lock_guard lock(FileTypeProfile_mutex); + FileTypeProfile_instances.insert(this); +} + +FileTypeProfile::~FileTypeProfile() { + std::lock_guard lock(FileTypeProfile_mutex); + FileTypeProfile_instances.erase(this); } void FileTypeProfile::RequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { @@ -40,5 +53,11 @@ void FileTypeProfile::registerWithContext(QQmlContext* context) { context->setContextProperty("FileTypeProfile", new FileTypeProfile(context)); } +void FileTypeProfile::clearCache() { + std::lock_guard lock(FileTypeProfile_mutex); + foreach (auto instance, FileTypeProfile_instances) { + instance->clearHttpCache(); + } +} #endif \ No newline at end of file diff --git a/libraries/ui/src/ui/types/FileTypeProfile.h b/libraries/ui/src/ui/types/FileTypeProfile.h index 7ddfdd0aed..8d8b921846 100644 --- a/libraries/ui/src/ui/types/FileTypeProfile.h +++ b/libraries/ui/src/ui/types/FileTypeProfile.h @@ -25,8 +25,12 @@ class FileTypeProfile : public ContextAwareProfile { public: static void registerWithContext(QQmlContext* parent); + static void clearCache(); + protected: FileTypeProfile(QQmlContext* parent); + virtual ~FileTypeProfile(); + class RequestInterceptor : public Parent::RequestInterceptor { public: RequestInterceptor(ContextAwareProfile* parent) : Parent::RequestInterceptor(parent) {} diff --git a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp index c2c1007527..a618411f1b 100644 --- a/libraries/ui/src/ui/types/HFWebEngineProfile.cpp +++ b/libraries/ui/src/ui/types/HFWebEngineProfile.cpp @@ -11,6 +11,8 @@ #include "HFWebEngineProfile.h" +#include +#include #include #include "RequestFilters.h" @@ -19,6 +21,9 @@ static const QString QML_WEB_ENGINE_STORAGE_NAME = "qmlWebEngine"; +static std::set HFWebEngineProfile_instances; +static std::mutex HFWebEngineProfile_mutex; + HFWebEngineProfile::HFWebEngineProfile(QQmlContext* parent) : Parent(parent) { setStorageName(QML_WEB_ENGINE_STORAGE_NAME); @@ -26,6 +31,14 @@ HFWebEngineProfile::HFWebEngineProfile(QQmlContext* parent) : Parent(parent) // we use the HFWebEngineRequestInterceptor to make sure that web requests are authenticated for the interface user setRequestInterceptor(new RequestInterceptor(this)); + + std::lock_guard lock(HFWebEngineProfile_mutex); + HFWebEngineProfile_instances.insert(this); +} + +HFWebEngineProfile::~HFWebEngineProfile() { + std::lock_guard lock(HFWebEngineProfile_mutex); + HFWebEngineProfile_instances.erase(this); } void HFWebEngineProfile::RequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo& info) { @@ -36,4 +49,11 @@ void HFWebEngineProfile::registerWithContext(QQmlContext* context) { context->setContextProperty("HFWebEngineProfile", new HFWebEngineProfile(context)); } +void HFWebEngineProfile::clearCache() { + std::lock_guard lock(HFWebEngineProfile_mutex); + foreach (auto instance, HFWebEngineProfile_instances) { + instance->clearHttpCache(); + } +} + #endif diff --git a/libraries/ui/src/ui/types/HFWebEngineProfile.h b/libraries/ui/src/ui/types/HFWebEngineProfile.h index 6b84ad6f80..872cb31901 100644 --- a/libraries/ui/src/ui/types/HFWebEngineProfile.h +++ b/libraries/ui/src/ui/types/HFWebEngineProfile.h @@ -23,8 +23,12 @@ class HFWebEngineProfile : public ContextAwareProfile { public: static void registerWithContext(QQmlContext* parent); + static void clearCache(); + protected: HFWebEngineProfile(QQmlContext* parent); + virtual ~HFWebEngineProfile(); + class RequestInterceptor : public Parent::RequestInterceptor { public: RequestInterceptor(ContextAwareProfile* parent) : Parent::RequestInterceptor(parent) {} From df5684c4375193108fb64d2eee748d1ddd8db18b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 10 Sep 2019 11:00:36 -0700 Subject: [PATCH 008/547] Introduce hfm::Shape object --- libraries/hfm/src/hfm/HFM.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 484a10aa3b..291d0fd6e3 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -287,6 +287,21 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; +class ShapeTransform { + std::vector clusters; + Extents meshExtents; + Transform modelTransform; +}; + +// The lightweight model part description. +class Shape { +public: + uint32_t mesh; + uint32_t meshPart; + uint32_t material; + uint32_t shapeTransform; +}; + /// The runtime model format. class Model { public: @@ -297,6 +312,8 @@ public: QString author; QString applicationName; ///< the name of the application that generated the model + std::vector shapes; + QVector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; From c4db6c78d8ec70ae4dfea3ff5f05773b308faf5c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 10 Sep 2019 11:32:12 -0700 Subject: [PATCH 009/547] std::vector-ize meshes/mesh parts in hfm::Model --- libraries/fbx/src/FBXSerializer.cpp | 2 +- libraries/fbx/src/GLTFSerializer.cpp | 8 +++---- libraries/fbx/src/OBJSerializer.cpp | 24 +++++++++---------- libraries/hfm/src/hfm/HFM.cpp | 2 +- libraries/hfm/src/hfm/HFM.h | 6 ++--- .../model-baker/src/model-baker/Baker.cpp | 4 ++-- libraries/render-utils/src/Model.cpp | 16 ++++++------- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f8339ddd31..de6ab545e5 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1624,7 +1624,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - hfmModel.meshes.append(extracted.mesh); + hfmModel.meshes.push_back(extracted.mesh); int meshIndex = hfmModel.meshes.size() - 1; meshIDsToMeshIndices.insert(it.key(), meshIndex); } diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index dca9e9fefa..e42b516559 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1018,7 +1018,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& if (node.defined["mesh"]) { - hfmModel.meshes.append(HFMMesh()); + hfmModel.meshes.push_back(HFMMesh()); HFMMesh& mesh = hfmModel.meshes[hfmModel.meshes.size() - 1]; if (!hfmModel.hasSkeletonJoints) { HFMCluster cluster; @@ -2038,9 +2038,9 @@ void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " jointIndices.size() =" << hfmModel.jointIndices.size(); qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.count(); qCDebug(modelformat) << "---------------- Meshes ----------------"; - qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.count(); + qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.size(); qCDebug(modelformat) << " blendshapeChannelNames = " << hfmModel.blendshapeChannelNames; - foreach(HFMMesh mesh, hfmModel.meshes) { + for (const HFMMesh& mesh : hfmModel.meshes) { qCDebug(modelformat) << "\n"; qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; @@ -2054,7 +2054,7 @@ void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; - qCDebug(modelformat) << " parts.count() =" << mesh.parts.count(); + qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; foreach(HFMBlendshape bshape, mesh.blendshapes) { qCDebug(modelformat) << "\n"; diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 416f343a47..5f60fe7927 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -492,8 +492,8 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa float& scaleGuess, bool combineParts) { FaceGroup faces; HFMMesh& mesh = hfmModel.meshes[0]; - mesh.parts.append(HFMMeshPart()); - HFMMeshPart& meshPart = mesh.parts.last(); + mesh.parts.push_back(HFMMeshPart()); + HFMMeshPart& meshPart = mesh.parts.back(); bool sawG = false; bool result = true; int originalFaceCountForDebugging = 0; @@ -501,7 +501,7 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa bool anyVertexColor { false }; int vertexCount { 0 }; - setMeshPartDefaults(meshPart, QString("dontknow") + QString::number(mesh.parts.count())); + setMeshPartDefaults(meshPart, QString("dontknow") + QString::number(mesh.parts.size())); while (true) { int tokenType = tokenizer.nextToken(); @@ -676,7 +676,7 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V _url = url; bool combineParts = mapping.value("combineParts").toBool(); hfmModel.meshExtents.reset(); - hfmModel.meshes.append(HFMMesh()); + hfmModel.meshes.push_back(HFMMesh()); try { // call parseOBJGroup as long as it's returning true. Each successful call will @@ -706,8 +706,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V mesh.clusters.append(cluster); QMap materialMeshIdMap; - QVector hfmMeshParts; - for (int i = 0, meshPartCount = 0; i < mesh.parts.count(); i++, meshPartCount++) { + std::vector hfmMeshParts; + for (uint32_t i = 0, meshPartCount = 0; i < (uint32_t)mesh.parts.size(); i++, meshPartCount++) { HFMMeshPart& meshPart = mesh.parts[i]; FaceGroup faceGroup = faceGroups[meshPartCount]; bool specifiesUV = false; @@ -718,8 +718,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V // Create a new HFMMesh for this material mapping. materialMeshIdMap.insert(face.materialName, materialMeshIdMap.count()); - hfmMeshParts.append(HFMMeshPart()); - HFMMeshPart& meshPartNew = hfmMeshParts.last(); + hfmMeshParts.push_back(HFMMeshPart()); + HFMMeshPart& meshPartNew = hfmMeshParts.back(); meshPartNew.quadIndices = QVector(meshPart.quadIndices); // Copy over quad indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.quadTrianglesIndices = QVector(meshPart.quadTrianglesIndices); // Copy over quad triangulated indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.triangleIndices = QVector(meshPart.triangleIndices); // Copy over triangle indices. @@ -752,9 +752,9 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } // clean up old mesh parts. - int unmodifiedMeshPartCount = mesh.parts.count(); + int unmodifiedMeshPartCount = mesh.parts.size(); mesh.parts.clear(); - mesh.parts = QVector(hfmMeshParts); + mesh.parts = hfmMeshParts; for (int i = 0, meshPartCount = 0; i < unmodifiedMeshPartCount; i++, meshPartCount++) { FaceGroup faceGroup = faceGroups[meshPartCount]; @@ -1003,7 +1003,7 @@ void hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << "---------------- hfmModel ----------------"; qCDebug(modelformat) << " hasSkeletonJoints =" << hfmModel.hasSkeletonJoints; qCDebug(modelformat) << " offset =" << hfmModel.offset; - qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.count(); + qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.size(); foreach (HFMMesh mesh, hfmModel.meshes) { qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.count(); qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); @@ -1021,7 +1021,7 @@ void hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); qCDebug(modelformat) << " meshExtents =" << mesh.meshExtents; qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; - qCDebug(modelformat) << " parts.count() =" << mesh.parts.count(); + qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); foreach (HFMMeshPart meshPart, mesh.parts) { qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index 236445bfda..b297db4bcb 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -76,7 +76,7 @@ QStringList HFMModel::getJointNames() const { } bool HFMModel::hasBlendedMeshes() const { - if (!meshes.isEmpty()) { + if (!meshes.empty()) { foreach (const HFMMesh& mesh, meshes) { if (!mesh.blendshapes.isEmpty()) { return true; diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 291d0fd6e3..fcbdd32150 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -228,7 +228,7 @@ public: class Mesh { public: - QVector parts; + std::vector parts; QVector vertices; QVector normals; @@ -314,11 +314,11 @@ public: std::vector shapes; + std::vector meshes; + QVector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; - - QVector meshes; QVector scripts; QHash materials; diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index c896613df5..e1b2ff97cf 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -32,7 +32,7 @@ namespace baker { void run(const BakeContextPointer& context, const Input& input, Output& output) { const auto& hfmModelIn = input; - output.edit0() = hfmModelIn->meshes.toStdVector(); + output.edit0() = hfmModelIn->meshes; output.edit1() = hfmModelIn->originalURL; output.edit2() = hfmModelIn->meshIndicesToModelNames; auto& blendshapesPerMesh = output.edit3(); @@ -107,7 +107,7 @@ namespace baker { void run(const BakeContextPointer& context, const Input& input, Output& output) { auto hfmModelOut = input.get0(); - hfmModelOut->meshes = QVector::fromStdVector(input.get1()); + hfmModelOut->meshes = input.get1(); hfmModelOut->joints = QVector::fromStdVector(input.get2()); hfmModelOut->jointRotationOffsets = input.get3(); hfmModelOut->jointIndices = input.get4(); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 74cf1ffa39..e4fefacb96 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -734,7 +734,7 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe for (int partID = 0; partID < numParts; partID++) { HFMMeshPart part; part.triangleIndices = buffer_helpers::bufferToVector(mesh._mesh->getIndexBuffer(), "part.triangleIndices"); - mesh.parts << part; + mesh.parts.push_back(part); } { foreach (const glm::vec3& vertex, mesh.vertices) { @@ -745,7 +745,7 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe mesh.meshExtents.maximum = glm::max(mesh.meshExtents.maximum, transformedVertex); } } - hfmModel.meshes << mesh; + hfmModel.meshes.push_back(mesh); } calculateTriangleSets(hfmModel); } @@ -762,9 +762,9 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { } const HFMModel& hfmModel = getHFMModel(); - int numberOfMeshes = hfmModel.meshes.size(); + uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); int shapeID = 0; - for (int i = 0; i < numberOfMeshes; i++) { + for (uint32_t i = 0; i < numberOfMeshes; i++) { const HFMMesh& hfmMesh = hfmModel.meshes.at(i); if (auto mesh = hfmMesh._mesh) { result.append(mesh); @@ -795,20 +795,20 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { void Model::calculateTriangleSets(const HFMModel& hfmModel) { PROFILE_RANGE(render, __FUNCTION__); - int numberOfMeshes = hfmModel.meshes.size(); + uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); _triangleSetsValid = true; _modelSpaceMeshTriangleSets.clear(); _modelSpaceMeshTriangleSets.resize(numberOfMeshes); - for (int i = 0; i < numberOfMeshes; i++) { + for (uint32_t i = 0; i < numberOfMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); - const int numberOfParts = mesh.parts.size(); + const uint32_t numberOfParts = mesh.parts.size(); auto& meshTriangleSets = _modelSpaceMeshTriangleSets[i]; meshTriangleSets.resize(numberOfParts); - for (int j = 0; j < numberOfParts; j++) { + for (uint32_t j = 0; j < numberOfParts; j++) { const HFMMeshPart& part = mesh.parts.at(j); auto& partTriangleSet = meshTriangleSets[j]; From b944db3e7904da8233c124ff0f3a0a1ecf55c3dd Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 11 Sep 2019 16:50:21 -0700 Subject: [PATCH 010/547] std::vector-ize joints and materials in hfm::Model --- interface/src/avatar/AvatarDoctor.cpp | 4 ++-- .../src/avatars-renderer/SkeletonModel.cpp | 2 +- libraries/baking/src/MaterialBaker.cpp | 2 +- libraries/baking/src/MaterialBaker.h | 2 +- libraries/baking/src/ModelBaker.cpp | 2 +- libraries/fbx/src/FBXSerializer.cpp | 9 ++++++--- libraries/fbx/src/GLTFSerializer.cpp | 6 +++--- libraries/fbx/src/OBJSerializer.cpp | 13 +++++++------ libraries/hfm/src/hfm/HFM.h | 4 ++-- libraries/model-baker/src/model-baker/Baker.cpp | 4 ++-- 10 files changed, 26 insertions(+), 22 deletions(-) diff --git a/interface/src/avatar/AvatarDoctor.cpp b/interface/src/avatar/AvatarDoctor.cpp index 01a40e89fd..a12b4dfcc0 100644 --- a/interface/src/avatar/AvatarDoctor.cpp +++ b/interface/src/avatar/AvatarDoctor.cpp @@ -99,12 +99,12 @@ void AvatarDoctor::startDiagnosing() { } // RIG - if (avatarModel.joints.isEmpty()) { + if (avatarModel.joints.empty()) { addError("Avatar has no rig.", "no-rig"); } else { auto jointNames = avatarModel.getJointNames(); - if (avatarModel.joints.length() > NETWORKED_JOINTS_LIMIT) { + if (avatarModel.joints.size() > NETWORKED_JOINTS_LIMIT) { addError(tr( "Avatar has over %n bones.", "", NETWORKED_JOINTS_LIMIT), "maximum-bone-limit"); } // Avatar does not have Hips bone mapped diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index 40b65c54a1..d082d515fc 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -312,7 +312,7 @@ void SkeletonModel::computeBoundingShape() { } const HFMModel& hfmModel = getHFMModel(); - if (hfmModel.joints.isEmpty() || _rig.indexOfJoint("Hips") == -1) { + if (hfmModel.joints.empty() || _rig.indexOfJoint("Hips") == -1) { // rootJointIndex == -1 if the avatar model has no skeleton return; } diff --git a/libraries/baking/src/MaterialBaker.cpp b/libraries/baking/src/MaterialBaker.cpp index 9a1b1b2d24..d177ddf358 100644 --- a/libraries/baking/src/MaterialBaker.cpp +++ b/libraries/baking/src/MaterialBaker.cpp @@ -258,7 +258,7 @@ void MaterialBaker::addTexture(const QString& materialName, image::TextureUsage: } }; -void MaterialBaker::setMaterials(const QHash& materials, const QString& baseURL) { +void MaterialBaker::setMaterials(const std::vector& materials, const QString& baseURL) { _materialResource = NetworkMaterialResourcePointer(new NetworkMaterialResource(), [](NetworkMaterialResource* ptr) { ptr->deleteLater(); }); for (auto& material : materials) { _materialResource->parsedMaterials.names.push_back(material.name.toStdString()); diff --git a/libraries/baking/src/MaterialBaker.h b/libraries/baking/src/MaterialBaker.h index 04782443f0..bb47941af6 100644 --- a/libraries/baking/src/MaterialBaker.h +++ b/libraries/baking/src/MaterialBaker.h @@ -32,7 +32,7 @@ public: bool isURL() const { return _isURL; } QString getBakedMaterialData() const { return _bakedMaterialData; } - void setMaterials(const QHash& materials, const QString& baseURL); + void setMaterials(const std::vector& materials, const QString& baseURL); void setMaterials(const NetworkMaterialResourcePointer& materialResource); NetworkMaterialResourcePointer getNetworkMaterialResource() const { return _materialResource; } diff --git a/libraries/baking/src/ModelBaker.cpp b/libraries/baking/src/ModelBaker.cpp index 9d6a368e1c..38ebf6dfce 100644 --- a/libraries/baking/src/ModelBaker.cpp +++ b/libraries/baking/src/ModelBaker.cpp @@ -259,7 +259,7 @@ void ModelBaker::bakeSourceCopy() { return; } - if (!_hfmModel->materials.isEmpty()) { + if (!_hfmModel->materials.empty()) { _materialBaker = QSharedPointer( new MaterialBaker(_modelURL.fileName(), true, _bakedOutputDir), &MaterialBaker::deleteLater diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index de6ab545e5..81444f8c6b 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1357,11 +1357,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - hfmModel.joints.append(joint); + hfmModel.joints.push_back(joint); } // NOTE: shapeVertices are in joint-frame - hfmModel.shapeVertices.resize(std::max(1, hfmModel.joints.size()) ); + hfmModel.shapeVertices.resize(std::max((size_t)1, hfmModel.joints.size()) ); hfmModel.bindExtents.reset(); hfmModel.meshExtents.reset(); @@ -1400,7 +1400,10 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } #endif - hfmModel.materials = _hfmMaterials; + + for (auto materialIt = _hfmMaterials.cbegin(); materialIt != _hfmMaterials.cend(); ++materialIt) { + hfmModel.materials.push_back(materialIt.value()); + } // see if any materials have texture children bool materialsHaveTextures = checkMaterialsHaveTextures(_hfmMaterials, _textureFilenames, _connectionChildMap); diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index e42b516559..4c4050c935 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1002,8 +1002,8 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& for (int i = 0; i < materialIDs.size(); ++i) { QString& matid = materialIDs[i]; - hfmModel.materials[matid] = HFMMaterial(); - HFMMaterial& hfmMaterial = hfmModel.materials[matid]; + hfmModel.materials.emplace_back(); + HFMMaterial& hfmMaterial = hfmModel.materials.back(); hfmMaterial._material = std::make_shared(); hfmMaterial.name = hfmMaterial.materialID = matid; setHFMMaterial(hfmMaterial, _file.materials[i]); @@ -2036,7 +2036,7 @@ void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " meshExtents.size() = " << hfmModel.meshExtents.size(); qCDebug(modelformat) << " jointIndices.size() =" << hfmModel.jointIndices.size(); - qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.count(); + qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.size(); qCDebug(modelformat) << "---------------- Meshes ----------------"; qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.size(); qCDebug(modelformat) << " blendshapeChannelNames = " << hfmModel.blendshapeChannelNames; diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 5f60fe7927..d6be066674 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -892,11 +892,12 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V continue; } - HFMMaterial& hfmMaterial = hfmModel.materials[materialID] = HFMMaterial(objMaterial.diffuseColor, - objMaterial.specularColor, - objMaterial.emissiveColor, - objMaterial.shininess, - objMaterial.opacity); + hfmModel.materials.emplace_back(objMaterial.diffuseColor, + objMaterial.specularColor, + objMaterial.emissiveColor, + objMaterial.shininess, + objMaterial.opacity); + HFMMaterial& hfmMaterial = hfmModel.materials.back(); hfmMaterial.name = materialID; hfmMaterial.materialID = materialID; @@ -1046,7 +1047,7 @@ void hfmDebugDump(const HFMModel& hfmModel) { } qCDebug(modelformat) << " jointIndices =" << hfmModel.jointIndices; - qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.count(); + qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.size(); foreach (HFMJoint joint, hfmModel.joints) { diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index fcbdd32150..b49e53ad4c 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -316,12 +316,12 @@ public: std::vector meshes; - QVector joints; + std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; QVector scripts; - QHash materials; + std::vector materials; glm::mat4 offset; // This includes offset, rotation, and scale as specified by the FST file diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index e1b2ff97cf..50221c4481 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -40,7 +40,7 @@ namespace baker { for (int i = 0; i < hfmModelIn->meshes.size(); i++) { blendshapesPerMesh.push_back(hfmModelIn->meshes[i].blendshapes.toStdVector()); } - output.edit4() = hfmModelIn->joints.toStdVector(); + output.edit4() = hfmModelIn->joints; } }; @@ -108,7 +108,7 @@ namespace baker { void run(const BakeContextPointer& context, const Input& input, Output& output) { auto hfmModelOut = input.get0(); hfmModelOut->meshes = input.get1(); - hfmModelOut->joints = QVector::fromStdVector(input.get2()); + hfmModelOut->joints = input.get2(); hfmModelOut->jointRotationOffsets = input.get3(); hfmModelOut->jointIndices = input.get4(); hfmModelOut->flowData = input.get5(); From ccdfb11de2e3ae33d3b563650cc0299034e89ad6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 11 Sep 2019 16:56:29 -0700 Subject: [PATCH 011/547] Re-order hfm::Model variables and add shapeTransforms list --- libraries/hfm/src/hfm/HFM.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index b49e53ad4c..33b02819d2 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -315,14 +315,14 @@ public: std::vector shapes; std::vector meshes; + std::vector materials; + std::vector shapeTransforms; std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; QVector scripts; - std::vector materials; - glm::mat4 offset; // This includes offset, rotation, and scale as specified by the FST file glm::vec3 neckPivot; From d948e434ddbbc0706cecc934a9bc0dbb1ac8bb27 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 13 Sep 2019 09:54:46 -0700 Subject: [PATCH 012/547] DyanamicTransform concept --- libraries/hfm/src/hfm/HFM.h | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 33b02819d2..959fc0dc28 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -287,10 +287,22 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; -class ShapeTransform { - std::vector clusters; - Extents meshExtents; - Transform modelTransform; +class TransformNode { + uint32_t parent { 0 }; + Transform transform; +}; + +// Formerly contained in hfm::Mesh +class Deformer { + std::vector indices; + std::vector weights; +}; + +class DynamicTransform { + std::vector deformers; + std::vector clusters; // affect the deformer of the same index + std::vector blendshapes; + // There is also the modelTransform, which for now is left in hfm::Mesh }; // The lightweight model part description. @@ -299,7 +311,8 @@ public: uint32_t mesh; uint32_t meshPart; uint32_t material; - uint32_t shapeTransform; + uint32_t transform; // The static transform node when not taking into account rigging/skinning + uint32_t dynamicTransform; }; /// The runtime model format. @@ -316,8 +329,9 @@ public: std::vector meshes; std::vector materials; - std::vector shapeTransforms; + std::vector deformers; + std::vector transforms; std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; From c765e1af39c4c8d21061e16184d33e2774895d71 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 13 Sep 2019 14:17:12 -0700 Subject: [PATCH 013/547] Add dynamicTransforms to hfm::Model --- libraries/hfm/src/hfm/HFM.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 959fc0dc28..e718a6d4ae 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -332,6 +332,8 @@ public: std::vector deformers; std::vector transforms; + std::vector dynamicTransforms; + std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices bool hasSkeletonJoints; From b14593202ce9ba551a99425dc8e0f7b1c0ed768b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 13 Sep 2019 14:23:15 -0700 Subject: [PATCH 014/547] Give hfm::Shape keys special undefined value --- libraries/hfm/src/hfm/HFM.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index e718a6d4ae..7a0516c04a 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -302,17 +302,19 @@ class DynamicTransform { std::vector deformers; std::vector clusters; // affect the deformer of the same index std::vector blendshapes; - // There is also the modelTransform, which for now is left in hfm::Mesh + // There are also the meshExtents and modelTransform, which for now are left in hfm::Mesh }; // The lightweight model part description. class Shape { public: - uint32_t mesh; - uint32_t meshPart; - uint32_t material; - uint32_t transform; // The static transform node when not taking into account rigging/skinning - uint32_t dynamicTransform; + const static uint32_t UNDEFINED_KEY { (uint32_t)-1 }; + + uint32_t mesh { UNDEFINED_KEY }; + uint32_t meshPart { UNDEFINED_KEY }; + uint32_t material { UNDEFINED_KEY }; + uint32_t transform { UNDEFINED_KEY }; // The static transform node when not taking into account rigging/skinning + uint32_t dynamicTransform { UNDEFINED_KEY }; }; /// The runtime model format. From a166b4121673d21695afe1d499cb2d608c1a1e75 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 13 Sep 2019 15:39:29 -0700 Subject: [PATCH 015/547] Fix build warnings/errors --- interface/src/raypick/CollisionPick.cpp | 4 +-- libraries/baking/src/FBXBaker.cpp | 6 ++--- libraries/baking/src/FBXBaker.h | 2 +- libraries/baking/src/OBJBaker.cpp | 25 +++++++++++-------- libraries/baking/src/OBJBaker.h | 2 +- .../src/RenderableModelEntityItem.cpp | 4 +-- .../RenderableParticleEffectEntityItem.cpp | 8 +++--- libraries/fbx/src/FBXSerializer.cpp | 6 ++--- libraries/fbx/src/FBXSerializer_Mesh.cpp | 4 +-- libraries/fbx/src/OBJSerializer.cpp | 4 +-- libraries/render-utils/src/Model.cpp | 2 +- 11 files changed, 35 insertions(+), 32 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 2602bdb0a0..fe943d5b84 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -248,9 +248,9 @@ void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& sha shapeInfo.setParams(type, dimensions, resource->getURL().toString()); } else if (type >= SHAPE_TYPE_SIMPLE_HULL && type <= SHAPE_TYPE_STATIC_MESH) { const HFMModel& hfmModel = resource->getHFMModel(); - int numHFMMeshes = hfmModel.meshes.size(); + uint32_t numHFMMeshes = (uint32_t)hfmModel.meshes.size(); int totalNumVertices = 0; - for (int i = 0; i < numHFMMeshes; i++) { + for (uint32_t i = 0; i < numHFMMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); totalNumVertices += mesh.vertices.size(); } diff --git a/libraries/baking/src/FBXBaker.cpp b/libraries/baking/src/FBXBaker.cpp index eb02ac2241..7f508dfe15 100644 --- a/libraries/baking/src/FBXBaker.cpp +++ b/libraries/baking/src/FBXBaker.cpp @@ -90,11 +90,11 @@ void FBXBaker::replaceMeshNodeWithDraco(FBXNode& meshNode, const QByteArray& dra } } -void FBXBaker::rewriteAndBakeSceneModels(const QVector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { +void FBXBaker::rewriteAndBakeSceneModels(const std::vector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { std::vector meshIndexToRuntimeOrder; - auto meshCount = (int)meshes.size(); + auto meshCount = (uint32_t)meshes.size(); meshIndexToRuntimeOrder.resize(meshCount); - for (int i = 0; i < meshCount; i++) { + for (uint32_t i = 0; i < meshCount; i++) { meshIndexToRuntimeOrder[meshes[i].meshIndex] = i; } diff --git a/libraries/baking/src/FBXBaker.h b/libraries/baking/src/FBXBaker.h index a528de512d..6ac05e36e9 100644 --- a/libraries/baking/src/FBXBaker.h +++ b/libraries/baking/src/FBXBaker.h @@ -33,7 +33,7 @@ protected: virtual void bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) override; private: - void rewriteAndBakeSceneModels(const QVector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists); + void rewriteAndBakeSceneModels(const std::vector& meshes, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists); void replaceMeshNodeWithDraco(FBXNode& meshNode, const QByteArray& dracoMeshBytes, const std::vector& dracoMaterialList); }; diff --git a/libraries/baking/src/OBJBaker.cpp b/libraries/baking/src/OBJBaker.cpp index a2d0ab1094..4adaa01845 100644 --- a/libraries/baking/src/OBJBaker.cpp +++ b/libraries/baking/src/OBJBaker.cpp @@ -106,11 +106,16 @@ void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& h materialNode.name = MATERIAL_NODE_NAME; if (hfmModel->materials.size() == 1) { // case when no material information is provided, OBJSerializer considers it as a single default material - for (auto& materialID : hfmModel->materials.keys()) { - setMaterialNodeProperties(materialNode, materialID, hfmModel); + for (auto& material : hfmModel->materials) { + setMaterialNodeProperties(materialNode, material.name, material, hfmModel); } } else { - setMaterialNodeProperties(materialNode, meshPart.materialID, hfmModel); + for (auto& material : hfmModel->materials) { + if (material.name == meshPart.materialID) { + setMaterialNodeProperties(materialNode, meshPart.materialID, material, hfmModel); + break; + } + } } objectNode.children.append(materialNode); @@ -153,12 +158,10 @@ void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& h } // Set properties for material nodes -void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material, const hfm::Model::Pointer& hfmModel) { +void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, const QString& materialName, const hfm::Material& material, const hfm::Model::Pointer& hfmModel) { auto materialID = nextNodeID(); _materialIDs.push_back(materialID); - materialNode.properties = { materialID, material, MESH }; - - HFMMaterial currentMaterial = hfmModel->materials[material]; + materialNode.properties = { materialID, materialName, MESH }; // Setting the hierarchy: Material -> Properties70 -> P -> Properties FBXNode properties70Node; @@ -170,7 +173,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material pNodeDiffuseColor.name = P_NODE_NAME; pNodeDiffuseColor.properties.append({ "DiffuseColor", "Color", "", "A", - currentMaterial.diffuseColor[0], currentMaterial.diffuseColor[1], currentMaterial.diffuseColor[2] + material.diffuseColor[0], material.diffuseColor[1], material.diffuseColor[2] }); } properties70Node.children.append(pNodeDiffuseColor); @@ -181,7 +184,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material pNodeSpecularColor.name = P_NODE_NAME; pNodeSpecularColor.properties.append({ "SpecularColor", "Color", "", "A", - currentMaterial.specularColor[0], currentMaterial.specularColor[1], currentMaterial.specularColor[2] + material.specularColor[0], material.specularColor[1], material.specularColor[2] }); } properties70Node.children.append(pNodeSpecularColor); @@ -192,7 +195,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material pNodeShininess.name = P_NODE_NAME; pNodeShininess.properties.append({ "Shininess", "Number", "", "A", - currentMaterial.shininess + material.shininess }); } properties70Node.children.append(pNodeShininess); @@ -203,7 +206,7 @@ void OBJBaker::setMaterialNodeProperties(FBXNode& materialNode, QString material pNodeOpacity.name = P_NODE_NAME; pNodeOpacity.properties.append({ "Opacity", "Number", "", "A", - currentMaterial.opacity + material.opacity }); } properties70Node.children.append(pNodeOpacity); diff --git a/libraries/baking/src/OBJBaker.h b/libraries/baking/src/OBJBaker.h index 9d0fe53e3c..044c51d0cc 100644 --- a/libraries/baking/src/OBJBaker.h +++ b/libraries/baking/src/OBJBaker.h @@ -28,7 +28,7 @@ protected: private: void createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh); - void setMaterialNodeProperties(FBXNode& materialNode, QString material, const hfm::Model::Pointer& hfmModel); + void setMaterialNodeProperties(FBXNode& materialNode, const QString& materialName, const hfm::Material& material, const hfm::Model::Pointer& hfmModel); NodeID nextNodeID() { return _nodeID++; } NodeID _nodeID { 0 }; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 6314cc8ce4..7c9e8e5f13 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -473,11 +473,11 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { // compute meshPart local transforms QVector localTransforms; const HFMModel& hfmModel = model->getHFMModel(); - int numHFMMeshes = hfmModel.meshes.size(); + uint32_t numHFMMeshes = (uint32_t)hfmModel.meshes.size(); int totalNumVertices = 0; glm::vec3 dimensions = getScaledDimensions(); glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); - for (int i = 0; i < numHFMMeshes; i++) { + for (uint32_t i = 0; i < numHFMMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); if (mesh.clusters.size() > 0) { const HFMCluster& cluster = mesh.clusters.at(0); diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index e3528e2291..a97cc7c84c 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -490,7 +490,7 @@ void ParticleEffectEntityRenderer::fetchGeometryResource() { void ParticleEffectEntityRenderer::computeTriangles(const hfm::Model& hfmModel) { PROFILE_RANGE(render, __FUNCTION__); - int numberOfMeshes = hfmModel.meshes.size(); + uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); _hasComputedTriangles = true; _triangleInfo.triangles.clear(); @@ -500,11 +500,11 @@ void ParticleEffectEntityRenderer::computeTriangles(const hfm::Model& hfmModel) float minArea = FLT_MAX; AABox bounds; - for (int i = 0; i < numberOfMeshes; i++) { + for (uint32_t i = 0; i < numberOfMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); - const int numberOfParts = mesh.parts.size(); - for (int j = 0; j < numberOfParts; j++) { + const uint32_t numberOfParts = (uint32_t)mesh.parts.size(); + for (uint32_t j = 0; j < numberOfParts; j++) { const HFMMeshPart& part = mesh.parts.at(j); const int INDICES_PER_TRIANGLE = 3; diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 81444f8c6b..f3c620c929 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1288,7 +1288,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; joint.parentIndex = fbxModel.parentIndex; - int jointIndex = hfmModel.joints.size(); + uint32_t jointIndex = (uint32_t)hfmModel.joints.size(); joint.translation = fbxModel.translation; // these are usually in centimeters joint.preTransform = fbxModel.preTransform; @@ -1613,7 +1613,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // transform cluster vertices to joint-frame and save for later glm::mat4 meshToJoint = glm::inverse(joint.bindTransform) * modelTransform; ShapeVertices& points = hfmModel.shapeVertices.at(jointIndex); - foreach (const glm::vec3& vertex, extracted.mesh.vertices) { + for (const glm::vec3& vertex : extracted.mesh.vertices) { const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertex); points.push_back(extractTranslation(vertexTransform)); } @@ -1628,7 +1628,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } hfmModel.meshes.push_back(extracted.mesh); - int meshIndex = hfmModel.meshes.size() - 1; + uint32_t meshIndex = (uint32_t)hfmModel.meshes.size() - 1; meshIDsToMeshIndices.insert(it.key(), meshIndex); } diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 802db4b428..479e7acfc9 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -500,7 +500,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me data.extracted.partMaterialTextures.append(materialTexture); } - partIndexPlusOne = data.extracted.mesh.parts.size(); + partIndexPlusOne = (int)data.extracted.mesh.parts.size(); } // give the mesh part this index @@ -535,7 +535,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me if (partIndex == 0) { data.extracted.partMaterialTextures.append(materialTexture); data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); - partIndex = data.extracted.mesh.parts.size(); + partIndex = (int)data.extracted.mesh.parts.size(); } HFMMeshPart& part = data.extracted.mesh.parts[partIndex - 1]; diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index d6be066674..e1fc85ca2a 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -752,11 +752,11 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } // clean up old mesh parts. - int unmodifiedMeshPartCount = mesh.parts.size(); + auto unmodifiedMeshPartCount = (uint32_t)mesh.parts.size(); mesh.parts.clear(); mesh.parts = hfmMeshParts; - for (int i = 0, meshPartCount = 0; i < unmodifiedMeshPartCount; i++, meshPartCount++) { + for (uint32_t i = 0, meshPartCount = 0; i < unmodifiedMeshPartCount; i++, meshPartCount++) { FaceGroup faceGroup = faceGroups[meshPartCount]; // Now that each mesh has been created with its own unique material mappings, fill them with data (vertex data is duplicated, face data is not). diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index e4fefacb96..aa3708fb1e 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -804,7 +804,7 @@ void Model::calculateTriangleSets(const HFMModel& hfmModel) { for (uint32_t i = 0; i < numberOfMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); - const uint32_t numberOfParts = mesh.parts.size(); + const uint32_t numberOfParts = (uint32_t)mesh.parts.size(); auto& meshTriangleSets = _modelSpaceMeshTriangleSets[i]; meshTriangleSets.resize(numberOfParts); From 5837053f50c18109ee06e16e6fac148fe6c75848 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 13 Sep 2019 16:56:30 -0700 Subject: [PATCH 016/547] Fix miscellaneous build errors/warnings --- assignment-client/src/avatars/ScriptableAvatar.cpp | 4 ++-- libraries/fbx/src/GLTFSerializer.cpp | 2 +- tools/vhacd-util/src/VHACDUtil.cpp | 14 +++++++------- tools/vhacd-util/src/VHACDUtilApp.cpp | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/assignment-client/src/avatars/ScriptableAvatar.cpp b/assignment-client/src/avatars/ScriptableAvatar.cpp index 044ab86942..383f583327 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.cpp +++ b/assignment-client/src/avatars/ScriptableAvatar.cpp @@ -144,10 +144,10 @@ void ScriptableAvatar::update(float deltatime) { } _animationDetails.currentFrame = currentFrame; - const QVector& modelJoints = _bind->getHFMModel().joints; + const std::vector& modelJoints = _bind->getHFMModel().joints; QStringList animationJointNames = _animation->getJointNames(); - const int nJoints = modelJoints.size(); + const auto nJoints = (int)modelJoints.size(); if (_jointData.size() != nJoints) { _jointData.resize(nJoints); } diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 4c4050c935..4f1d871158 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1613,7 +1613,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); - mesh.meshIndex = hfmModel.meshes.size(); + mesh.meshIndex = (int)hfmModel.meshes.size(); } ++nodecount; } diff --git a/tools/vhacd-util/src/VHACDUtil.cpp b/tools/vhacd-util/src/VHACDUtil.cpp index a5ad5bc891..3410d35e6a 100644 --- a/tools/vhacd-util/src/VHACDUtil.cpp +++ b/tools/vhacd-util/src/VHACDUtil.cpp @@ -154,7 +154,7 @@ void vhacd::VHACDUtil::fattenMesh(const HFMMesh& mesh, const glm::mat4& modelOff newMeshPart.triangleIndices << index0 << index3 << index1; newMeshPart.triangleIndices << index1 << index3 << index2; newMeshPart.triangleIndices << index2 << index3 << index0; - result.parts.append(newMeshPart); + result.parts.push_back(newMeshPart); } } @@ -259,8 +259,8 @@ void vhacd::VHACDUtil::getConvexResults(VHACD::IVHACD* convexifier, HFMMesh& res VHACD::IVHACD::ConvexHull hull; convexifier->GetConvexHull(j, hull); - resultMesh.parts.append(HFMMeshPart()); - HFMMeshPart& resultMeshPart = resultMesh.parts.last(); + resultMesh.parts.push_back(HFMMeshPart()); + HFMMeshPart& resultMeshPart = resultMesh.parts.back(); int hullIndexStart = resultMesh.vertices.size(); resultMesh.vertices.reserve(hullIndexStart + hull.m_nPoints); @@ -300,8 +300,8 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, } // count the mesh-parts - int numParts = 0; - foreach (const HFMMesh& mesh, hfmModel.meshes) { + size_t numParts = 0; + for (const HFMMesh& mesh : hfmModel.meshes) { numParts += mesh.parts.size(); } if (_verbose) { @@ -311,8 +311,8 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, VHACD::IVHACD * convexifier = VHACD::CreateVHACD(); result.meshExtents.reset(); - result.meshes.append(HFMMesh()); - HFMMesh &resultMesh = result.meshes.last(); + result.meshes.push_back(HFMMesh()); + HFMMesh &resultMesh = result.meshes.back(); const uint32_t POINT_STRIDE = 3; const uint32_t TRIANGLE_STRIDE = 3; diff --git a/tools/vhacd-util/src/VHACDUtilApp.cpp b/tools/vhacd-util/src/VHACDUtilApp.cpp index 3d675f8baf..61a6b38181 100644 --- a/tools/vhacd-util/src/VHACDUtilApp.cpp +++ b/tools/vhacd-util/src/VHACDUtilApp.cpp @@ -387,7 +387,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : } if (verbose) { - int totalHulls = result.meshes[0].parts.size(); + auto totalHulls = result.meshes[0].parts.size(); qDebug() << "output file =" << outputFilename; qDebug() << "vertices =" << totalVertices; qDebug() << "triangles =" << totalTriangles; @@ -402,7 +402,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : HFMMesh result; // count the mesh-parts - unsigned int meshCount = 0; + size_t meshCount = 0; foreach (const HFMMesh& mesh, fbx.meshes) { meshCount += mesh.parts.size(); } @@ -412,7 +412,7 @@ VHACDUtilApp::VHACDUtilApp(int argc, char* argv[]) : vUtil.fattenMesh(mesh, fbx.offset, result); } - newFbx.meshes.append(result); + newFbx.meshes.push_back(result); writeOBJ(outputFilename, newFbx, outputCentimeters); } } From 46616b4efddf07bdbe0c7e6e43376f410a58a2d7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 16 Sep 2019 09:55:25 -0700 Subject: [PATCH 017/547] Fix more integer conversion warnings --- interface/src/ModelPropertiesDialog.cpp | 2 +- libraries/fbx/src/FST.cpp | 2 +- libraries/hfm/src/hfm/HFM.cpp | 4 ++-- libraries/model-baker/src/model-baker/Baker.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/ModelPropertiesDialog.cpp b/interface/src/ModelPropertiesDialog.cpp index d67341990d..bf7fd26b08 100644 --- a/interface/src/ModelPropertiesDialog.cpp +++ b/interface/src/ModelPropertiesDialog.cpp @@ -80,7 +80,7 @@ QVariantHash ModelPropertiesDialog::getMapping() const { // update the joint indices QVariantHash jointIndices; - for (int i = 0; i < _hfmModel.joints.size(); i++) { + for (size_t i = 0; i < _hfmModel.joints.size(); i++) { jointIndices.insert(_hfmModel.joints.at(i).name, QString::number(i)); } mapping.insert(JOINT_INDEX_FIELD, jointIndices); diff --git a/libraries/fbx/src/FST.cpp b/libraries/fbx/src/FST.cpp index b6f109c217..5f5b7cf637 100644 --- a/libraries/fbx/src/FST.cpp +++ b/libraries/fbx/src/FST.cpp @@ -77,7 +77,7 @@ FST* FST::createFSTFromModel(const QString& fstPath, const QString& modelFilePat mapping.insert(JOINT_FIELD, joints); QVariantHash jointIndices; - for (int i = 0; i < hfmModel.joints.size(); i++) { + for (size_t i = 0; i < (size_t)hfmModel.joints.size(); i++) { jointIndices.insert(hfmModel.joints.at(i).name, QString::number(i)); } mapping.insert(JOINT_INDEX_FIELD, jointIndices); diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index b297db4bcb..ae68c15045 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -166,11 +166,11 @@ void HFMModel::computeKdops() { glm::vec3(INV_SQRT_3, INV_SQRT_3, -INV_SQRT_3), glm::vec3(INV_SQRT_3, -INV_SQRT_3, -INV_SQRT_3) }; - if (joints.size() != (int)shapeVertices.size()) { + if (joints.size() != shapeVertices.size()) { return; } // now that all joints have been scanned compute a k-Dop bounding volume of mesh - for (int i = 0; i < joints.size(); ++i) { + for (size_t i = 0; i < joints.size(); ++i) { HFMJoint& joint = joints[i]; // NOTE: points are in joint-frame diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index 50221c4481..0c6aac6f22 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -37,7 +37,7 @@ namespace baker { output.edit2() = hfmModelIn->meshIndicesToModelNames; auto& blendshapesPerMesh = output.edit3(); blendshapesPerMesh.reserve(hfmModelIn->meshes.size()); - for (int i = 0; i < hfmModelIn->meshes.size(); i++) { + for (size_t i = 0; i < hfmModelIn->meshes.size(); i++) { blendshapesPerMesh.push_back(hfmModelIn->meshes[i].blendshapes.toStdVector()); } output.edit4() = hfmModelIn->joints; From 517bef63a9ae577983b0e9b5c8f0196b37d95704 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 16 Sep 2019 11:09:34 -0700 Subject: [PATCH 018/547] Make fields for TransformNode, Deformer, DynamicTransform public --- libraries/hfm/src/hfm/HFM.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index a015330431..31d8eda877 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -288,17 +288,20 @@ public: }; class TransformNode { +public: uint32_t parent { 0 }; Transform transform; }; // Formerly contained in hfm::Mesh class Deformer { +public: std::vector indices; std::vector weights; }; class DynamicTransform { +public: std::vector deformers; std::vector clusters; // affect the deformer of the same index std::vector blendshapes; From ac06234c3de8e3943f44b1e8358a332ca4a67d7f Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 16 Sep 2019 16:06:43 -0700 Subject: [PATCH 019/547] Make hfm::Deformer more closely resemble original model data. Leave weight-based blendshape packing to preparations step. --- libraries/hfm/src/hfm/HFM.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 31d8eda877..8e0944db43 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -296,8 +296,8 @@ public: // Formerly contained in hfm::Mesh class Deformer { public: - std::vector indices; - std::vector weights; + std::vector indices; + std::vector weights; }; class DynamicTransform { From cf8e584ced88c1410c5afc4695b0da120180e388 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 17 Sep 2019 14:23:11 -0700 Subject: [PATCH 020/547] Make the cluster jointIndex unsigned --- libraries/hfm/src/hfm/HFM.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 8e0944db43..8d6c0e79dc 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -122,8 +122,7 @@ public: /// A single binding to a joint. class Cluster { public: - - int jointIndex; + uint32_t jointIndex; glm::mat4 inverseBindMatrix; Transform inverseBindTransform; }; From de8223fee808c2ae1efec5c93b1da945b10d14ed Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 16 Sep 2019 17:44:43 -0700 Subject: [PATCH 021/547] Change BuildGraphicsMeshTask to use new deformers --- .../model-baker/src/model-baker/Baker.cpp | 10 +- .../src/model-baker/BuildGraphicsMeshTask.cpp | 134 ++++++++++++++++-- .../src/model-baker/BuildGraphicsMeshTask.h | 2 +- 3 files changed, 129 insertions(+), 17 deletions(-) diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index 3dab7f7241..1a68d3508d 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -27,7 +27,7 @@ namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet5, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector>; + using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { @@ -41,6 +41,9 @@ namespace baker { blendshapesPerMesh.push_back(hfmModelIn->meshes[i].blendshapes.toStdVector()); } output.edit4() = hfmModelIn->joints; + output.edit5() = hfmModelIn->shapes; + output.edit6() = hfmModelIn->dynamicTransforms; + output.edit7() = hfmModelIn->deformers; } }; @@ -134,6 +137,9 @@ namespace baker { const auto meshIndicesToModelNames = modelPartsIn.getN(2); const auto blendshapesPerMeshIn = modelPartsIn.getN(3); const auto jointsIn = modelPartsIn.getN(4); + const auto shapesIn = modelPartsIn.getN(5); + const auto dynamicTransformsIn = modelPartsIn.getN(6); + const auto deformersIn = modelPartsIn.getN(7); // Calculate normals and tangents for meshes and blendshapes if they do not exist // Note: Normals are never calculated here for OBJ models. OBJ files optionally define normals on a per-face basis, so for consistency normals are calculated beforehand in OBJSerializer. @@ -146,7 +152,7 @@ namespace baker { const auto tangentsPerBlendshapePerMesh = model.addJob("CalculateBlendshapeTangents", calculateBlendshapeTangentsInputs); // Build the graphics::MeshPointer for each hfm::Mesh - const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh).asVarying(); + const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, dynamicTransformsIn, deformersIn).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); // Prepare joint information diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 2467da7656..54e0e0ee2e 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -27,7 +27,84 @@ glm::vec3 normalizeDirForPacking(const glm::vec3& dir) { return dir; } -void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn) { +class ReweightedDeformers { +public: + std::vector indices; + std::vector weights; + bool trimmedToMatch { false }; +}; + +ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::DynamicTransform* dynamicTransform, const std::vector deformers, const uint16_t weightsPerVertex) { + size_t numClusterIndices = numMeshVertices * weightsPerVertex; + ReweightedDeformers reweightedDeformers; + // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. + reweightedDeformers.indices.resize(numClusterIndices, deformers.size() - 1); + reweightedDeformers.weights.resize(numClusterIndices, 0); + + std::vector weightAccumulators; + weightAccumulators.resize(numClusterIndices, 0.0f); + for (size_t i = 0; i < deformers.size(); ++i) { + const hfm::Deformer& deformer = *deformers[i]; + const hfm::Cluster& cluster = dynamicTransform->clusters[i]; + + if (deformer.indices.size() != deformer.weights.size()) { + reweightedDeformers.trimmedToMatch = true; + } + size_t numIndicesOrWeights = std::min(deformer.indices.size(), deformer.weights.size()); + for (size_t j = 0; j < numIndicesOrWeights; ++j) { + uint32_t index = deformer.indices[j]; + float weight = deformer.weights[j]; + + // look for an unused slot in the weights vector + uint32_t weightIndex = index * weightsPerVertex; + uint32_t lowestIndex = -1; + float lowestWeight = FLT_MAX; + uint16_t k = 0; + for (; k < weightsPerVertex; k++) { + if (weightAccumulators[weightIndex + k] == 0.0f) { + reweightedDeformers.indices[weightIndex + k] = i; + weightAccumulators[weightIndex + k] = weight; + break; + } + if (weightAccumulators[weightIndex + k] < lowestWeight) { + lowestIndex = k; + lowestWeight = weightAccumulators[weightIndex + k]; + } + } + if (k == weightsPerVertex && weight > lowestWeight) { + // no space for an additional weight; we must replace the lowest + weightAccumulators[weightIndex + lowestIndex] = weight; + reweightedDeformers.indices[weightIndex + lowestIndex] = i; + } + } + } + + // now that we've accumulated the most relevant weights for each vertex + // normalize and compress to 16-bits + for (size_t i = 0; i < numMeshVertices; ++i) { + size_t j = i * weightsPerVertex; + + // normalize weights into uint16_t + float totalWeight = 0.0f; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + totalWeight += weightAccumulators[k]; + } + + const float ALMOST_HALF = 0.499f; + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); + } + } else { + reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + } + } + + return reweightedDeformers; +} + +void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, const hfm::DynamicTransform* dynamicTransform, const std::vector meshDeformers) { auto graphicsMesh = std::make_shared(); // Fill tangents with a dummy value to force tangents to be present if there are normals @@ -86,13 +163,19 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Support for 4 skinning clusters: // 4 Indices are uint8 ideally, uint16 if more than 256. - const auto clusterIndiceElement = (hfmMesh.clusters.size() < UINT8_MAX ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); + const auto clusterIndiceElement = ((meshDeformers.size() < (size_t)UINT8_MAX) ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); // 4 Weights are normalized 16bits const auto clusterWeightElement = gpu::Element(gpu::VEC4, gpu::NUINT16, gpu::XYZW); + // Calculate a more condensed view of all the deformer weights + const uint16_t NUM_CLUSTERS_PER_VERT = 4; + ReweightedDeformers reweightedDeformers = getReweightedDeformers(hfmMesh.vertices.size(), dynamicTransform, meshDeformers, NUM_CLUSTERS_PER_VERT); // Cluster indices and weights must be the same sizes - const int NUM_CLUSTERS_PER_VERT = 4; - const int numVertClusters = (hfmMesh.clusterIndices.size() == hfmMesh.clusterWeights.size() ? hfmMesh.clusterIndices.size() / NUM_CLUSTERS_PER_VERT : 0); + if (reweightedDeformers.trimmedToMatch) { + HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a blendshape had different sizes and have been trimmed to match"); + } + // Record cluster sizes + const int numVertClusters = reweightedDeformers.indices.size() / NUM_CLUSTERS_PER_VERT; const int clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const int clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); @@ -181,22 +264,22 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Clusters data if (clusterIndicesSize > 0) { - if (hfmMesh.clusters.size() < UINT8_MAX) { + if (meshDeformers.size() < UINT8_MAX) { // yay! we can fit the clusterIndices within 8-bits - int32_t numIndices = hfmMesh.clusterIndices.size(); - QVector clusterIndices; - clusterIndices.resize(numIndices); + int32_t numIndices = reweightedDeformers.indices.size(); + std::vector packedDeformerIndices; + packedDeformerIndices.resize(numIndices); for (int32_t i = 0; i < numIndices; ++i) { assert(hfmMesh.clusterIndices[i] <= UINT8_MAX); - clusterIndices[i] = (uint8_t)(hfmMesh.clusterIndices[i]); + packedDeformerIndices[i] = (uint8_t)(reweightedDeformers.indices[i]); } - vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) clusterIndices.constData()); + vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) packedDeformerIndices.data()); } else { - vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) hfmMesh.clusterIndices.constData()); + vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) reweightedDeformers.indices.data()); } } if (clusterWeightsSize > 0) { - vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) hfmMesh.clusterWeights.constData()); + vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) reweightedDeformers.weights.data()); } @@ -377,6 +460,18 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& meshIndicesToModelNames = input.get2(); const auto& normalsPerMesh = input.get3(); const auto& tangentsPerMesh = input.get4(); + const auto& shapes = input.get5(); + const auto& dynamicTransforms = input.get6(); + const auto& deformers = input.get7(); + + // Currently, there is only (at most) one dynamicTransform per mesh + // An undefined shape.dynamicTransform has the value hfm::Shape::UNDEFINED_KEY + std::vector dynamicTransformPerMesh; + dynamicTransformPerMesh.resize(meshes.size(), hfm::Shape::UNDEFINED_KEY); + for (const auto& shape : shapes) { + uint32_t dynamicTransformIndex = shape.dynamicTransform; + dynamicTransformPerMesh[shape.mesh] = dynamicTransformIndex; + } auto& graphicsMeshes = output; @@ -384,9 +479,20 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const for (int i = 0; i < n; i++) { graphicsMeshes.emplace_back(); auto& graphicsMesh = graphicsMeshes[i]; - + + auto dynamicTransformIndex = dynamicTransformPerMesh[i]; + const hfm::DynamicTransform* dynamicTransform = nullptr; + std::vector meshDeformers; + if (dynamicTransformIndex != hfm::Shape::UNDEFINED_KEY) { + dynamicTransform = &dynamicTransforms[dynamicTransformIndex]; + for (const auto& deformerIndex : dynamicTransform->deformers) { + const auto& deformer = deformers[deformerIndex]; + meshDeformers.push_back(&deformer); + } + } + // Try to create the graphics::Mesh - buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i)); + buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), dynamicTransform, meshDeformers); // Choose a name for the mesh if (graphicsMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h index bb4136c086..be1e4350be 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h @@ -20,7 +20,7 @@ class BuildGraphicsMeshTask { public: - using Input = baker::VaryingSet5, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh>; + using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; From 56896e08669de4f065723593d20788853d80c0f6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 19 Sep 2019 09:26:28 -0700 Subject: [PATCH 022/547] Re-name error message to mention deformers, not blendshapes --- libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 54e0e0ee2e..543c741588 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -172,7 +172,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics ReweightedDeformers reweightedDeformers = getReweightedDeformers(hfmMesh.vertices.size(), dynamicTransform, meshDeformers, NUM_CLUSTERS_PER_VERT); // Cluster indices and weights must be the same sizes if (reweightedDeformers.trimmedToMatch) { - HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a blendshape had different sizes and have been trimmed to match"); + HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); } // Record cluster sizes const int numVertClusters = reweightedDeformers.indices.size() / NUM_CLUSTERS_PER_VERT; From 99386565b070c9b75e5fb3ba9fdef34bc4edd4e4 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 19 Sep 2019 11:15:38 -0700 Subject: [PATCH 023/547] Fix build warnings/errors --- libraries/hfm/src/hfm/HFM.cpp | 2 +- libraries/hfm/src/hfm/HFM.h | 6 ++-- .../src/model-baker/BuildGraphicsMeshTask.cpp | 36 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index ae68c15045..f68af2b1ce 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -175,7 +175,7 @@ void HFMModel::computeKdops() { // NOTE: points are in joint-frame ShapeVertices& points = shapeVertices.at(i); - glm::quat rotOffset = jointRotationOffsets.contains(i) ? glm::inverse(jointRotationOffsets[i]) : quat(); + glm::quat rotOffset = jointRotationOffsets.contains((int)i) ? glm::inverse(jointRotationOffsets[(int)i]) : quat(); if (points.size() > 0) { // compute average point glm::vec3 avgPoint = glm::vec3(0.0f); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 8d6c0e79dc..d13cf3e2d0 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -66,6 +66,8 @@ static const int DRACO_ATTRIBUTE_ORIGINAL_INDEX = DRACO_BEGIN_CUSTOM_HIFI_ATTRIB // High Fidelity Model namespace namespace hfm { +static const uint32_t UNDEFINED_KEY = (uint32_t)-1; + /// A single blendshape. class Blendshape { public: @@ -301,7 +303,7 @@ public: class DynamicTransform { public: - std::vector deformers; + std::vector deformers; std::vector clusters; // affect the deformer of the same index std::vector blendshapes; // There are also the meshExtents and modelTransform, which for now are left in hfm::Mesh @@ -310,8 +312,6 @@ public: // The lightweight model part description. class Shape { public: - const static uint32_t UNDEFINED_KEY { (uint32_t)-1 }; - uint32_t mesh { UNDEFINED_KEY }; uint32_t meshPart { UNDEFINED_KEY }; uint32_t material { UNDEFINED_KEY }; diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 543c741588..a9a544c34a 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -38,12 +38,12 @@ ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::Dy size_t numClusterIndices = numMeshVertices * weightsPerVertex; ReweightedDeformers reweightedDeformers; // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. - reweightedDeformers.indices.resize(numClusterIndices, deformers.size() - 1); + reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(deformers.size() - 1)); reweightedDeformers.weights.resize(numClusterIndices, 0); std::vector weightAccumulators; weightAccumulators.resize(numClusterIndices, 0.0f); - for (size_t i = 0; i < deformers.size(); ++i) { + for (uint16_t i = 0; i < (uint16_t)deformers.size(); ++i) { const hfm::Deformer& deformer = *deformers[i]; const hfm::Cluster& cluster = dynamicTransform->clusters[i]; @@ -175,19 +175,19 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); } // Record cluster sizes - const int numVertClusters = reweightedDeformers.indices.size() / NUM_CLUSTERS_PER_VERT; - const int clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); - const int clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); + const size_t numVertClusters = reweightedDeformers.indices.size() / NUM_CLUSTERS_PER_VERT; + const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); + const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); // Decide on where to put what seequencially in a big buffer: - const int positionsOffset = 0; - const int normalsAndTangentsOffset = positionsOffset + positionsSize; - const int colorsOffset = normalsAndTangentsOffset + normalsAndTangentsSize; - const int texCoordsOffset = colorsOffset + colorsSize; - const int texCoords1Offset = texCoordsOffset + texCoordsSize; - const int clusterIndicesOffset = texCoords1Offset + texCoords1Size; - const int clusterWeightsOffset = clusterIndicesOffset + clusterIndicesSize; - const int totalVertsSize = clusterWeightsOffset + clusterWeightsSize; + const size_t positionsOffset = 0; + const size_t normalsAndTangentsOffset = positionsOffset + positionsSize; + const size_t colorsOffset = normalsAndTangentsOffset + normalsAndTangentsSize; + const size_t texCoordsOffset = colorsOffset + colorsSize; + const size_t texCoords1Offset = texCoordsOffset + texCoordsSize; + const size_t clusterIndicesOffset = texCoords1Offset + texCoords1Size; + const size_t clusterWeightsOffset = clusterIndicesOffset + clusterIndicesSize; + const size_t totalVertsSize = clusterWeightsOffset + clusterWeightsSize; // Copy all vertex data in a single buffer auto vertBuffer = std::make_shared(); @@ -266,7 +266,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics if (clusterIndicesSize > 0) { if (meshDeformers.size() < UINT8_MAX) { // yay! we can fit the clusterIndices within 8-bits - int32_t numIndices = reweightedDeformers.indices.size(); + int32_t numIndices = (int32_t)reweightedDeformers.indices.size(); std::vector packedDeformerIndices; packedDeformerIndices.resize(numIndices); for (int32_t i = 0; i < numIndices; ++i) { @@ -289,7 +289,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics auto vertexBufferStream = std::make_shared(); gpu::BufferPointer attribBuffer; - int totalAttribBufferSize = totalVertsSize; + size_t totalAttribBufferSize = totalVertsSize; gpu::uint8 posChannel = 0; gpu::uint8 tangentChannel = posChannel; gpu::uint8 attribChannel = posChannel; @@ -465,9 +465,9 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& deformers = input.get7(); // Currently, there is only (at most) one dynamicTransform per mesh - // An undefined shape.dynamicTransform has the value hfm::Shape::UNDEFINED_KEY + // An undefined shape.dynamicTransform has the value hfm::UNDEFINED_KEY std::vector dynamicTransformPerMesh; - dynamicTransformPerMesh.resize(meshes.size(), hfm::Shape::UNDEFINED_KEY); + dynamicTransformPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); for (const auto& shape : shapes) { uint32_t dynamicTransformIndex = shape.dynamicTransform; dynamicTransformPerMesh[shape.mesh] = dynamicTransformIndex; @@ -483,7 +483,7 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const auto dynamicTransformIndex = dynamicTransformPerMesh[i]; const hfm::DynamicTransform* dynamicTransform = nullptr; std::vector meshDeformers; - if (dynamicTransformIndex != hfm::Shape::UNDEFINED_KEY) { + if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { dynamicTransform = &dynamicTransforms[dynamicTransformIndex]; for (const auto& deformerIndex : dynamicTransform->deformers) { const auto& deformer = deformers[deformerIndex]; From 5edb312346d67877736ffc762eef004045ff9508 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 23 Sep 2019 10:22:13 -0700 Subject: [PATCH 024/547] gltf wip --- libraries/fbx/src/GLTFSerializer.cpp | 1950 ++++++++++++++------------ libraries/fbx/src/GLTFSerializer.h | 77 +- libraries/hfm/src/hfm/HFM.h | 6 +- tests-manual/fbx/CMakeLists.txt | 11 + tests-manual/fbx/src/main.cpp | 77 + 5 files changed, 1199 insertions(+), 922 deletions(-) create mode 100644 tests-manual/fbx/CMakeLists.txt create mode 100644 tests-manual/fbx/src/main.cpp diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 4f1d871158..fe63159543 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -25,9 +25,13 @@ #include #include +#include +#include #include #include +#include + #include #include #include @@ -37,30 +41,57 @@ #include "FBXSerializer.h" -#define GLTF_GET_INDICIES(accCount) int index1 = (indices[n + 0] * accCount); int index2 = (indices[n + 1] * accCount); int index3 = (indices[n + 2] * accCount); +#define GLTF_GET_INDICIES(accCount) \ + int index1 = (indices[n + 0] * accCount); \ + int index2 = (indices[n + 1] * accCount); \ + int index3 = (indices[n + 2] * accCount); -#define GLTF_APPEND_ARRAY_1(newArray, oldArray) GLTF_GET_INDICIES(1) \ -newArray.append(oldArray[index1]); \ -newArray.append(oldArray[index2]); \ -newArray.append(oldArray[index3]); +#define GLTF_APPEND_ARRAY_1(newArray, oldArray) \ + GLTF_GET_INDICIES(1) \ + newArray.append(oldArray[index1]); \ + newArray.append(oldArray[index2]); \ + newArray.append(oldArray[index3]); -#define GLTF_APPEND_ARRAY_2(newArray, oldArray) GLTF_GET_INDICIES(2) \ -newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); \ -newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); \ -newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); +#define GLTF_APPEND_ARRAY_2(newArray, oldArray) \ + GLTF_GET_INDICIES(2) \ + newArray.append(oldArray[index1]); \ + newArray.append(oldArray[index1 + 1]); \ + newArray.append(oldArray[index2]); \ + newArray.append(oldArray[index2 + 1]); \ + newArray.append(oldArray[index3]); \ + newArray.append(oldArray[index3 + 1]); -#define GLTF_APPEND_ARRAY_3(newArray, oldArray) GLTF_GET_INDICIES(3) \ -newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); newArray.append(oldArray[index1 + 2]); \ -newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); newArray.append(oldArray[index2 + 2]); \ -newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); newArray.append(oldArray[index3 + 2]); +#define GLTF_APPEND_ARRAY_3(newArray, oldArray) \ + GLTF_GET_INDICIES(3) \ + newArray.append(oldArray[index1]); \ + newArray.append(oldArray[index1 + 1]); \ + newArray.append(oldArray[index1 + 2]); \ + newArray.append(oldArray[index2]); \ + newArray.append(oldArray[index2 + 1]); \ + newArray.append(oldArray[index2 + 2]); \ + newArray.append(oldArray[index3]); \ + newArray.append(oldArray[index3 + 1]); \ + newArray.append(oldArray[index3 + 2]); -#define GLTF_APPEND_ARRAY_4(newArray, oldArray) GLTF_GET_INDICIES(4) \ -newArray.append(oldArray[index1]); newArray.append(oldArray[index1 + 1]); newArray.append(oldArray[index1 + 2]); newArray.append(oldArray[index1 + 3]); \ -newArray.append(oldArray[index2]); newArray.append(oldArray[index2 + 1]); newArray.append(oldArray[index2 + 2]); newArray.append(oldArray[index2 + 3]); \ -newArray.append(oldArray[index3]); newArray.append(oldArray[index3 + 1]); newArray.append(oldArray[index3 + 2]); newArray.append(oldArray[index3 + 3]); +#define GLTF_APPEND_ARRAY_4(newArray, oldArray) \ + GLTF_GET_INDICIES(4) \ + newArray.append(oldArray[index1]); \ + newArray.append(oldArray[index1 + 1]); \ + newArray.append(oldArray[index1 + 2]); \ + newArray.append(oldArray[index1 + 3]); \ + newArray.append(oldArray[index2]); \ + newArray.append(oldArray[index2 + 1]); \ + newArray.append(oldArray[index2 + 2]); \ + newArray.append(oldArray[index2 + 3]); \ + newArray.append(oldArray[index3]); \ + newArray.append(oldArray[index3 + 1]); \ + newArray.append(oldArray[index3 + 2]); \ + newArray.append(oldArray[index3 + 3]); -bool GLTFSerializer::getStringVal(const QJsonObject& object, const QString& fieldname, - QString& value, QMap& defined) { +bool GLTFSerializer::getStringVal(const QJsonObject& object, + const QString& fieldname, + QString& value, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isString()); if (_defined) { value = object[fieldname].toString(); @@ -69,8 +100,10 @@ bool GLTFSerializer::getStringVal(const QJsonObject& object, const QString& fiel return _defined; } -bool GLTFSerializer::getBoolVal(const QJsonObject& object, const QString& fieldname, - bool& value, QMap& defined) { +bool GLTFSerializer::getBoolVal(const QJsonObject& object, + const QString& fieldname, + bool& value, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isBool()); if (_defined) { value = object[fieldname].toBool(); @@ -79,8 +112,7 @@ bool GLTFSerializer::getBoolVal(const QJsonObject& object, const QString& fieldn return _defined; } -bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldname, - int& value, QMap& defined) { +bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldname, int& value, QMap& defined) { bool _defined = (object.contains(fieldname) && !object[fieldname].isNull()); if (_defined) { value = object[fieldname].toInt(); @@ -89,8 +121,10 @@ bool GLTFSerializer::getIntVal(const QJsonObject& object, const QString& fieldna return _defined; } -bool GLTFSerializer::getDoubleVal(const QJsonObject& object, const QString& fieldname, - double& value, QMap& defined) { +bool GLTFSerializer::getDoubleVal(const QJsonObject& object, + const QString& fieldname, + double& value, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isDouble()); if (_defined) { value = object[fieldname].toDouble(); @@ -98,8 +132,10 @@ bool GLTFSerializer::getDoubleVal(const QJsonObject& object, const QString& fiel defined.insert(fieldname, _defined); return _defined; } -bool GLTFSerializer::getObjectVal(const QJsonObject& object, const QString& fieldname, - QJsonObject& value, QMap& defined) { +bool GLTFSerializer::getObjectVal(const QJsonObject& object, + const QString& fieldname, + QJsonObject& value, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isObject()); if (_defined) { value = object[fieldname].toObject(); @@ -108,12 +144,14 @@ bool GLTFSerializer::getObjectVal(const QJsonObject& object, const QString& fiel return _defined; } -bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, const QString& fieldname, - QVector& values, QMap& defined) { +bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, + const QString& fieldname, + QVector& values, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); - foreach(const QJsonValue & v, arr) { + for (const QJsonValue& v : arr) { if (!v.isNull()) { values.push_back(v.toInt()); } @@ -123,12 +161,14 @@ bool GLTFSerializer::getIntArrayVal(const QJsonObject& object, const QString& fi return _defined; } -bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, const QString& fieldname, - QVector& values, QMap& defined) { +bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, + const QString& fieldname, + QVector& values, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { QJsonArray arr = object[fieldname].toArray(); - foreach(const QJsonValue & v, arr) { + for (const QJsonValue& v : arr) { if (v.isDouble()) { values.push_back(v.toDouble()); } @@ -138,8 +178,10 @@ bool GLTFSerializer::getDoubleArrayVal(const QJsonObject& object, const QString& return _defined; } -bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, const QString& fieldname, - QJsonArray& objects, QMap& defined) { +bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, + const QString& fieldname, + QJsonArray& objects, + QMap& defined) { bool _defined = (object.contains(fieldname) && object[fieldname].isArray()); if (_defined) { objects = object[fieldname].toArray(); @@ -149,7 +191,7 @@ bool GLTFSerializer::getObjectArrayVal(const QJsonObject& object, const QString& } hifi::ByteArray GLTFSerializer::setGLBChunks(const hifi::ByteArray& data) { - int byte = 4; + int byte = 4; int jsonStart = data.indexOf("JSON", Qt::CaseSensitive); int binStart = data.indexOf("BIN", Qt::CaseSensitive); int jsonLength, binLength; @@ -173,8 +215,7 @@ hifi::ByteArray GLTFSerializer::setGLBChunks(const hifi::ByteArray& data) { return jsonChunk; } -int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) -{ +int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) { if (type == "POINTS") { return GLTFMeshPrimitivesRenderingMode::POINTS; } @@ -199,8 +240,7 @@ int GLTFSerializer::getMeshPrimitiveRenderingMode(const QString& type) return GLTFMeshPrimitivesRenderingMode::TRIANGLES; } -int GLTFSerializer::getAccessorType(const QString& type) -{ +int GLTFSerializer::getAccessorType(const QString& type) { if (type == "SCALAR") { return GLTFAccessorType::SCALAR; } @@ -225,8 +265,7 @@ int GLTFSerializer::getAccessorType(const QString& type) return GLTFAccessorType::SCALAR; } -int GLTFSerializer::getMaterialAlphaMode(const QString& type) -{ +int GLTFSerializer::getMaterialAlphaMode(const QString& type) { if (type == "OPAQUE") { return GLTFMaterialAlphaMode::OPAQUE; } @@ -239,8 +278,7 @@ int GLTFSerializer::getMaterialAlphaMode(const QString& type) return GLTFMaterialAlphaMode::OPAQUE; } -int GLTFSerializer::getCameraType(const QString& type) -{ +int GLTFSerializer::getCameraType(const QString& type) { if (type == "orthographic") { return GLTFCameraTypes::ORTHOGRAPHIC; } @@ -250,8 +288,7 @@ int GLTFSerializer::getCameraType(const QString& type) return GLTFCameraTypes::PERSPECTIVE; } -int GLTFSerializer::getImageMimeType(const QString& mime) -{ +int GLTFSerializer::getImageMimeType(const QString& mime) { if (mime == "image/jpeg") { return GLTFImageMimetype::JPEG; } @@ -261,8 +298,7 @@ int GLTFSerializer::getImageMimeType(const QString& mime) return GLTFImageMimetype::JPEG; } -int GLTFSerializer::getAnimationSamplerInterpolation(const QString& interpolation) -{ +int GLTFSerializer::getAnimationSamplerInterpolation(const QString& interpolation) { if (interpolation == "LINEAR") { return GLTFAnimationSamplerInterpolation::LINEAR; } @@ -273,8 +309,7 @@ bool GLTFSerializer::setAsset(const QJsonObject& object) { QJsonObject jsAsset; bool isAssetDefined = getObjectVal(object, "asset", jsAsset, _file.defined); if (isAssetDefined) { - if (!getStringVal(jsAsset, "version", _file.asset.version, - _file.asset.defined) || _file.asset.version != "2.0") { + if (!getStringVal(jsAsset, "version", _file.asset.version, _file.asset.defined) || _file.asset.version != "2.0") { return false; } getStringVal(jsAsset, "generator", _file.asset.generator, _file.asset.defined); @@ -283,7 +318,8 @@ bool GLTFSerializer::setAsset(const QJsonObject& object) { return isAssetDefined; } -GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::createAccessorSparseIndices(const QJsonObject& object) { +GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::createAccessorSparseIndices( + const QJsonObject& object) { GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices accessorSparseIndices; getIntVal(object, "bufferView", accessorSparseIndices.bufferView, accessorSparseIndices.defined); @@ -293,7 +329,8 @@ GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseIndices GLTFSerializer::crea return accessorSparseIndices; } -GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues GLTFSerializer::createAccessorSparseValues(const QJsonObject& object) { +GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues GLTFSerializer::createAccessorSparseValues( + const QJsonObject& object) { GLTFAccessor::GLTFAccessorSparse::GLTFAccessorSparseValues accessorSparseValues; getIntVal(object, "bufferView", accessorSparseValues.bufferView, accessorSparseValues.defined); @@ -320,7 +357,7 @@ GLTFAccessor::GLTFAccessorSparse GLTFSerializer::createAccessorSparse(const QJso bool GLTFSerializer::addAccessor(const QJsonObject& object) { GLTFAccessor accessor; - + getIntVal(object, "bufferView", accessor.bufferView, accessor.defined); getIntVal(object, "byteOffset", accessor.byteOffset, accessor.defined); getIntVal(object, "componentType", accessor.componentType, accessor.defined); @@ -346,10 +383,10 @@ bool GLTFSerializer::addAccessor(const QJsonObject& object) { bool GLTFSerializer::addAnimation(const QJsonObject& object) { GLTFAnimation animation; - + QJsonArray channels; if (getObjectArrayVal(object, "channels", channels, animation.defined)) { - foreach(const QJsonValue & v, channels) { + for (const QJsonValue& v : channels) { if (v.isObject()) { GLTFChannel channel; getIntVal(v.toObject(), "sampler", channel.sampler, channel.defined); @@ -357,14 +394,14 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { if (getObjectVal(v.toObject(), "target", jsChannel, channel.defined)) { getIntVal(jsChannel, "node", channel.target.node, channel.target.defined); getIntVal(jsChannel, "path", channel.target.path, channel.target.defined); - } + } } } } QJsonArray samplers; if (getObjectArrayVal(object, "samplers", samplers, animation.defined)) { - foreach(const QJsonValue & v, samplers) { + for (const QJsonValue& v : samplers) { if (v.isObject()) { GLTFAnimationSampler sampler; getIntVal(v.toObject(), "input", sampler.input, sampler.defined); @@ -376,7 +413,7 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { } } } - + _file.animations.push_back(animation); return true; @@ -384,20 +421,20 @@ bool GLTFSerializer::addAnimation(const QJsonObject& object) { bool GLTFSerializer::addBufferView(const QJsonObject& object) { GLTFBufferView bufferview; - + getIntVal(object, "buffer", bufferview.buffer, bufferview.defined); getIntVal(object, "byteLength", bufferview.byteLength, bufferview.defined); getIntVal(object, "byteOffset", bufferview.byteOffset, bufferview.defined); getIntVal(object, "target", bufferview.target, bufferview.defined); - + _file.bufferviews.push_back(bufferview); - + return true; } bool GLTFSerializer::addBuffer(const QJsonObject& object) { GLTFBuffer buffer; - + getIntVal(object, "byteLength", buffer.byteLength, buffer.defined); if (_url.toString().endsWith("glb")) { @@ -413,13 +450,13 @@ bool GLTFSerializer::addBuffer(const QJsonObject& object) { } } _file.buffers.push_back(buffer); - + return true; } bool GLTFSerializer::addCamera(const QJsonObject& object) { GLTFCamera camera; - + QJsonObject jsPerspective; QJsonObject jsOrthographic; QString type; @@ -439,15 +476,15 @@ bool GLTFSerializer::addCamera(const QJsonObject& object) { } else if (getStringVal(object, "type", type, camera.defined)) { camera.type = getCameraType(type); } - + _file.cameras.push_back(camera); - + return true; } bool GLTFSerializer::addImage(const QJsonObject& object) { GLTFImage image; - + QString mime; getStringVal(object, "uri", image.uri, image.defined); if (image.uri.contains("data:image/png;base64,")) { @@ -457,16 +494,18 @@ bool GLTFSerializer::addImage(const QJsonObject& object) { } if (getStringVal(object, "mimeType", mime, image.defined)) { image.mimeType = getImageMimeType(mime); - } + } getIntVal(object, "bufferView", image.bufferView, image.defined); - + _file.images.push_back(image); return true; } -bool GLTFSerializer::getIndexFromObject(const QJsonObject& object, const QString& field, - int& outidx, QMap& defined) { +bool GLTFSerializer::getIndexFromObject(const QJsonObject& object, + const QString& field, + int& outidx, + QMap& defined) { QJsonObject subobject; if (getObjectVal(object, field, subobject, defined)) { QMap tmpdefined = QMap(); @@ -491,23 +530,18 @@ bool GLTFSerializer::addMaterial(const QJsonObject& object) { getDoubleVal(object, "alphaCutoff", material.alphaCutoff, material.defined); QJsonObject jsMetallicRoughness; if (getObjectVal(object, "pbrMetallicRoughness", jsMetallicRoughness, material.defined)) { - getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", - material.pbrMetallicRoughness.baseColorFactor, + getDoubleArrayVal(jsMetallicRoughness, "baseColorFactor", material.pbrMetallicRoughness.baseColorFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "baseColorTexture", - material.pbrMetallicRoughness.baseColorTexture, + getIndexFromObject(jsMetallicRoughness, "baseColorTexture", material.pbrMetallicRoughness.baseColorTexture, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "metallicFactor", - material.pbrMetallicRoughness.metallicFactor, + getDoubleVal(jsMetallicRoughness, "metallicFactor", material.pbrMetallicRoughness.metallicFactor, material.pbrMetallicRoughness.defined); - getDoubleVal(jsMetallicRoughness, "roughnessFactor", - material.pbrMetallicRoughness.roughnessFactor, + getDoubleVal(jsMetallicRoughness, "roughnessFactor", material.pbrMetallicRoughness.roughnessFactor, material.pbrMetallicRoughness.defined); - getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", - material.pbrMetallicRoughness.metallicRoughnessTexture, - material.pbrMetallicRoughness.defined); + getIndexFromObject(jsMetallicRoughness, "metallicRoughnessTexture", + material.pbrMetallicRoughness.metallicRoughnessTexture, material.pbrMetallicRoughness.defined); } - _file.materials.push_back(material); + _file.materials.push_back(material); return true; } @@ -519,18 +553,18 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { QJsonArray jsPrimitives; object.keys(); if (getObjectArrayVal(object, "primitives", jsPrimitives, mesh.defined)) { - foreach(const QJsonValue & prim, jsPrimitives) { + for (const QJsonValue& prim : jsPrimitives) { if (prim.isObject()) { GLTFMeshPrimitive primitive; QJsonObject jsPrimitive = prim.toObject(); getIntVal(jsPrimitive, "mode", primitive.mode, primitive.defined); getIntVal(jsPrimitive, "indices", primitive.indices, primitive.defined); getIntVal(jsPrimitive, "material", primitive.material, primitive.defined); - + QJsonObject jsAttributes; if (getObjectVal(jsPrimitive, "attributes", jsAttributes, primitive.defined)) { QStringList attrKeys = jsAttributes.keys(); - foreach(const QString & attrKey, attrKeys) { + for (const QString& attrKey : attrKeys) { int attrVal; getIntVal(jsAttributes, attrKey, attrVal, primitive.attributes.defined); primitive.attributes.values.insert(attrKey, attrVal); @@ -538,14 +572,13 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { } QJsonArray jsTargets; - if (getObjectArrayVal(jsPrimitive, "targets", jsTargets, primitive.defined)) - { - foreach(const QJsonValue & tar, jsTargets) { + if (getObjectArrayVal(jsPrimitive, "targets", jsTargets, primitive.defined)) { + for (const QJsonValue& tar : jsTargets) { if (tar.isObject()) { QJsonObject jsTarget = tar.toObject(); QStringList tarKeys = jsTarget.keys(); GLTFMeshPrimitiveAttr target; - foreach(const QString & tarKey, tarKeys) { + for (const QString& tarKey : tarKeys) { int tarVal; getIntVal(jsTarget, tarKey, tarVal, target.defined); target.values.insert(tarKey, tarVal); @@ -553,7 +586,7 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { primitive.targets.push_back(target); } } - } + } mesh.primitives.push_back(primitive); } } @@ -564,9 +597,7 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { if (getObjectVal(object, "extras", jsExtras, mesh.defined)) { QJsonArray jsTargetNames; if (getObjectArrayVal(jsExtras, "targetNames", jsTargetNames, extras.defined)) { - foreach (const QJsonValue& tarName, jsTargetNames) { - extras.targetNames.push_back(tarName.toString()); - } + foreach (const QJsonValue& tarName, jsTargetNames) { extras.targetNames.push_back(tarName.toString()); } } mesh.extras = extras; } @@ -578,7 +609,7 @@ bool GLTFSerializer::addMesh(const QJsonObject& object) { bool GLTFSerializer::addNode(const QJsonObject& object) { GLTFNode node; - + getStringVal(object, "name", node.name, node.defined); getIntVal(object, "camera", node.camera, node.defined); getIntVal(object, "mesh", node.mesh, node.defined); @@ -607,7 +638,6 @@ bool GLTFSerializer::addSampler(const QJsonObject& object) { _file.samplers.push_back(sampler); return true; - } bool GLTFSerializer::addScene(const QJsonObject& object) { @@ -633,10 +663,10 @@ bool GLTFSerializer::addSkin(const QJsonObject& object) { } bool GLTFSerializer::addTexture(const QJsonObject& object) { - GLTFTexture texture; + GLTFTexture texture; getIntVal(object, "sampler", texture.sampler, texture.defined); getIntVal(object, "source", texture.source, texture.defined); - + _file.textures.push_back(texture); return true; @@ -649,8 +679,8 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { if (_url.toString().endsWith("glb") && data.indexOf("glTF") == 0 && data.contains("JSON")) { jsonChunk = setGLBChunks(data); - } - + } + QJsonDocument d = QJsonDocument::fromJson(jsonChunk); QJsonObject jsFile = d.object(); @@ -658,7 +688,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { if (success) { QJsonArray accessors; if (getObjectArrayVal(jsFile, "accessors", accessors, _file.defined)) { - foreach(const QJsonValue & accVal, accessors) { + for (const QJsonValue& accVal : accessors) { if (accVal.isObject()) { success = success && addAccessor(accVal.toObject()); } @@ -667,7 +697,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray animations; if (getObjectArrayVal(jsFile, "animations", animations, _file.defined)) { - foreach(const QJsonValue & animVal, accessors) { + for (const QJsonValue& animVal : accessors) { if (animVal.isObject()) { success = success && addAnimation(animVal.toObject()); } @@ -676,7 +706,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray bufferViews; if (getObjectArrayVal(jsFile, "bufferViews", bufferViews, _file.defined)) { - foreach(const QJsonValue & bufviewVal, bufferViews) { + for (const QJsonValue& bufviewVal : bufferViews) { if (bufviewVal.isObject()) { success = success && addBufferView(bufviewVal.toObject()); } @@ -685,7 +715,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray buffers; if (getObjectArrayVal(jsFile, "buffers", buffers, _file.defined)) { - foreach(const QJsonValue & bufVal, buffers) { + for (const QJsonValue& bufVal : buffers) { if (bufVal.isObject()) { success = success && addBuffer(bufVal.toObject()); } @@ -694,7 +724,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray cameras; if (getObjectArrayVal(jsFile, "cameras", cameras, _file.defined)) { - foreach(const QJsonValue & camVal, cameras) { + for (const QJsonValue& camVal : cameras) { if (camVal.isObject()) { success = success && addCamera(camVal.toObject()); } @@ -703,7 +733,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray images; if (getObjectArrayVal(jsFile, "images", images, _file.defined)) { - foreach(const QJsonValue & imgVal, images) { + for (const QJsonValue& imgVal : images) { if (imgVal.isObject()) { success = success && addImage(imgVal.toObject()); } @@ -712,7 +742,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray materials; if (getObjectArrayVal(jsFile, "materials", materials, _file.defined)) { - foreach(const QJsonValue & matVal, materials) { + for (const QJsonValue& matVal : materials) { if (matVal.isObject()) { success = success && addMaterial(matVal.toObject()); } @@ -721,7 +751,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray meshes; if (getObjectArrayVal(jsFile, "meshes", meshes, _file.defined)) { - foreach(const QJsonValue & meshVal, meshes) { + for (const QJsonValue& meshVal : meshes) { if (meshVal.isObject()) { success = success && addMesh(meshVal.toObject()); } @@ -730,7 +760,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray nodes; if (getObjectArrayVal(jsFile, "nodes", nodes, _file.defined)) { - foreach(const QJsonValue & nodeVal, nodes) { + for (const QJsonValue& nodeVal : nodes) { if (nodeVal.isObject()) { success = success && addNode(nodeVal.toObject()); } @@ -739,7 +769,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray samplers; if (getObjectArrayVal(jsFile, "samplers", samplers, _file.defined)) { - foreach(const QJsonValue & samVal, samplers) { + for (const QJsonValue& samVal : samplers) { if (samVal.isObject()) { success = success && addSampler(samVal.toObject()); } @@ -748,7 +778,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray scenes; if (getObjectArrayVal(jsFile, "scenes", scenes, _file.defined)) { - foreach(const QJsonValue & sceneVal, scenes) { + for (const QJsonValue& sceneVal : scenes) { if (sceneVal.isObject()) { success = success && addScene(sceneVal.toObject()); } @@ -757,7 +787,7 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray skins; if (getObjectArrayVal(jsFile, "skins", skins, _file.defined)) { - foreach(const QJsonValue & skinVal, skins) { + for (const QJsonValue& skinVal : skins) { if (skinVal.isObject()) { success = success && addSkin(skinVal.toObject()); } @@ -766,51 +796,22 @@ bool GLTFSerializer::parseGLTF(const hifi::ByteArray& data) { QJsonArray textures; if (getObjectArrayVal(jsFile, "textures", textures, _file.defined)) { - foreach(const QJsonValue & texVal, textures) { + for (const QJsonValue& texVal : textures) { if (texVal.isObject()) { success = success && addTexture(texVal.toObject()); } } } - } + } return success; } -glm::mat4 GLTFSerializer::getModelTransform(const GLTFNode& node) { - glm::mat4 tmat = glm::mat4(1.0); - - if (node.defined["matrix"] && node.matrix.size() == 16) { - tmat = glm::mat4(node.matrix[0], node.matrix[1], node.matrix[2], node.matrix[3], - node.matrix[4], node.matrix[5], node.matrix[6], node.matrix[7], - node.matrix[8], node.matrix[9], node.matrix[10], node.matrix[11], - node.matrix[12], node.matrix[13], node.matrix[14], node.matrix[15]); - } else { - - if (node.defined["scale"] && node.scale.size() == 3) { - glm::vec3 scale = glm::vec3(node.scale[0], node.scale[1], node.scale[2]); - glm::mat4 s = glm::mat4(1.0); - s = glm::scale(s, scale); - tmat = s * tmat; - } - - if (node.defined["rotation"] && node.rotation.size() == 4) { - //quat(x,y,z,w) to quat(w,x,y,z) - glm::quat rotquat = glm::quat(node.rotation[3], node.rotation[0], node.rotation[1], node.rotation[2]); - tmat = glm::mat4_cast(rotquat) * tmat; - } - - if (node.defined["translation"] && node.translation.size() == 3) { - glm::vec3 trans = glm::vec3(node.translation[0], node.translation[1], node.translation[2]); - glm::mat4 t = glm::mat4(1.0); - t = glm::translate(t, trans); - tmat = t * tmat; - } - } - return tmat; +const glm::mat4& GLTFSerializer::getModelTransform(const GLTFNode& node) { + return node.transform; } void GLTFSerializer::getSkinInverseBindMatrices(std::vector>& inverseBindMatrixValues) { - for (auto &skin : _file.skins) { + for (auto& skin : _file.skins) { GLTFAccessor& indicesAccessor = _file.accessors[skin.inverseBindMatrices]; QVector matrices; addArrayFromAccessor(indicesAccessor, matrices); @@ -827,78 +828,193 @@ void GLTFSerializer::generateTargetData(int index, float weight, QVector; +ParentIndexMap findParentIndices(const QVector& nodes) { + ParentIndexMap parentIndices; + int numNodes = nodes.size(); + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + auto& gltfNode = nodes[nodeIndex]; + for (const auto& childIndex : gltfNode.children) { + parentIndices[childIndex] = nodeIndex; + } + } + return parentIndices; +} + +bool requiresNodeReordering(const ParentIndexMap& map) { + for (const auto& entry : map) { + if (entry.first < entry.second) { + return true; + } + } + return false; +} + +int findEdgeCount(const ParentIndexMap& parentIndices, int nodeIndex) { + auto parentsEnd = parentIndices.end(); + ParentIndexMap::const_iterator itr; + int result = 0; + while (parentsEnd != (itr = parentIndices.find(nodeIndex))) { + nodeIndex = itr->second; + ++result; + } + return result; +} + +using IndexBag = std::unordered_set; +using EdgeCountMap = std::map; +EdgeCountMap findEdgeCounts(int numNodes, const ParentIndexMap& map) { + EdgeCountMap edgeCounts; + // For each item, determine how many tranversals to a root node + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + // How many steps between this node and a root node? + int edgeCount = findEdgeCount(map, nodeIndex); + // Populate the result map + edgeCounts[edgeCount].insert(nodeIndex); + } + return edgeCounts; +} + +using ReorderMap = std::unordered_map; +ReorderMap buildReorderMap(const EdgeCountMap& map) { + ReorderMap result; + int newIndex = 0; + for (const auto& entry : map) { + const IndexBag& oldIndices = entry.second; + for (const auto& oldIndex : oldIndices) { + result.insert({ oldIndex, newIndex }); + ++newIndex; + } + } + return result; +} + +void reorderNodeIndices(QVector& indices, const ReorderMap& oldToNewIndexMap) { + for (auto& index : indices) { + index = oldToNewIndexMap.at(index); + } +} + +} // namespace gltf + +void GLTFFile::populateMaterialNames() { + // Build material names + QSet usedNames; + for (const auto& material : materials) { + if (!material.name.isEmpty()) { + usedNames.insert(material.name); + } + } + + int ukcount = 0; + const QString unknown{ "Default_%1" }; + for (auto& material : materials) { + QString generatedName = unknown.arg(ukcount++); + while (usedNames.contains(generatedName)) { + generatedName = unknown.arg(ukcount++); + } + material.name = generatedName; + material.defined.insert("name", true); + usedNames.insert(generatedName); + } +} + +void GLTFFile::reorderNodes(const std::unordered_map& oldToNewIndexMap) { + int numNodes = nodes.size(); + assert(numNodes == oldToNewIndexMap.size()); + QVector newNodes; + newNodes.resize(numNodes); + for (int oldIndex = 0; oldIndex < numNodes; ++oldIndex) { + const auto& oldNode = nodes[oldIndex]; + int newIndex = oldToNewIndexMap.at(oldIndex); + auto& newNode = newNodes[newIndex]; + // Write the new node + newNode = oldNode; + // Fixup the child indices + gltf::reorderNodeIndices(newNode.children, oldToNewIndexMap); + } + newNodes.swap(nodes); + + for (auto& subScene : scenes) { + gltf::reorderNodeIndices(subScene.nodes, oldToNewIndexMap); + } +} + +// Ensure that the GLTF nodes are ordered so +void GLTFFile::sortNodes() { + // Find all the parents + auto parentIndices = gltf::findParentIndices(nodes); + // If the nodes are already in a good order, we're done + if (!gltf::requiresNodeReordering(parentIndices)) { + return; + } + + auto edgeCounts = gltf::findEdgeCounts(nodes.size(), parentIndices); + auto oldToNewIndexMap = gltf::buildReorderMap(edgeCounts); + reorderNodes(oldToNewIndexMap); + assert(!gltf::requiresNodeReordering(gltf::findParentIndices(nodes))); +} + +void GLTFNode::normalizeTransform() { + if (defined["matrix"] && matrix.size() == 16) { + transform = glm::make_mat4(matrix.constData()); + } else { + transform = glm::mat4(1.0); + if (defined["scale"] && scale.size() == 3) { + glm::vec3 scaleVec = glm::make_vec3(scale.data()); + transform = glm::scale(transform, scaleVec); + } + + if (defined["rotation"] && rotation.size() == 4) { + glm::quat rotQ = glm::make_quat(rotation.data()); + transform = glm::mat4_cast(rotQ) * transform; + } + + if (defined["translation"] && translation.size() == 3) { + glm::vec3 transV = glm::make_vec3(translation.data()); + transform = glm::translate(glm::mat4(1.0), transV) * transform; + } + } +} + +void GLTFFile::normalizeNodeTransforms() { + for (auto& node : nodes) { + node.normalizeTransform(); + } +} + bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mapping, const hifi::URL& url) { int numNodes = _file.nodes.size(); - - //Build dependencies - QVector parents; - QVector sortedNodes; - parents.fill(-1, numNodes); - sortedNodes.reserve(numNodes); - int nodecount = 0; - foreach(auto &node, _file.nodes) { - foreach(int child, node.children) { - parents[child] = nodecount; + hfmModel.transforms.resize(numNodes); + + auto parentIndices = gltf::findParentIndices(_file.nodes); + const auto parentsEnd = parentIndices.end(); + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + auto& gltfNode = _file.nodes[nodeIndex]; + auto& hmfTransform = hfmModel.transforms[nodeIndex]; + auto parentItr = parentIndices.find(nodeIndex); + if (parentItr != parentsEnd ) { + hmfTransform.parent = parentItr->second; } - sortedNodes.push_back(nodecount); - ++nodecount; + hmfTransform.transform = getModelTransform(gltfNode); } // Build transforms - nodecount = 0; - foreach(auto &node, _file.nodes) { - // collect node transform - _file.nodes[nodecount].transforms.push_back(getModelTransform(node)); - int parentIndex = parents[nodecount]; - while (parentIndex != -1) { - const auto& parentNode = _file.nodes[parentIndex]; - // collect transforms for a node's parents, grandparents, etc. - _file.nodes[nodecount].transforms.push_back(getModelTransform(parentNode)); - parentIndex = parents[parentIndex]; - } - ++nodecount; - } - - - // since parent indices must exist in the sorted list before any of their children, sortedNodes might not be initialized in the correct order - // therefore we need to re-initialize the order in which nodes will be parsed - QVector hasBeenSorted; - hasBeenSorted.fill(false, numNodes); - int i = 0; // initial index - while (i < numNodes) { - int currentNode = sortedNodes[i]; - int parentIndex = parents[currentNode]; - if (parentIndex == -1 || hasBeenSorted[parentIndex]) { - hasBeenSorted[currentNode] = true; - ++i; - } else { - int j = i + 1; // index of node to be sorted - while (j < numNodes) { - int nextNode = sortedNodes[j]; - parentIndex = parents[nextNode]; - if (parentIndex == -1 || hasBeenSorted[parentIndex]) { - // swap with currentNode - hasBeenSorted[nextNode] = true; - sortedNodes[i] = nextNode; - sortedNodes[j] = currentNode; - ++i; - currentNode = sortedNodes[i]; - } - ++j; - } + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + auto& gltfNode = _file.nodes[nodeIndex]; + //gltfNode.transforms.push_back(getModelTransform(gltfNode)); + gltf::ParentIndexMap::const_iterator parentItr; + int curNode = nodeIndex; + while (parentsEnd != (parentItr = parentIndices.find(curNode))) { + curNode = parentItr->second; + auto& ancestorNode = _file.nodes[curNode]; + //gltfNode.transforms.push_back(getModelTransform(ancestorNode)); } } - - // Build map from original to new indices - QVector originalToNewNodeIndexMap; - originalToNewNodeIndexMap.fill(-1, numNodes); - for (int i = 0; i < numNodes; ++i) { - originalToNewNodeIndexMap[sortedNodes[i]] = i; - } - - // Build joints HFMJoint joint; joint.distanceToParent = 0; @@ -906,24 +1022,24 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& QVector globalTransforms; globalTransforms.resize(numNodes); - for (int nodeIndex : sortedNodes) { + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { auto& node = _file.nodes[nodeIndex]; - - joint.parentIndex = parents[nodeIndex]; - if (joint.parentIndex != -1) { - joint.parentIndex = originalToNewNodeIndexMap[joint.parentIndex]; + auto parentItr = parentIndices.find(nodeIndex); + if (parentsEnd == parentItr) { + joint.parentIndex = -1; + } else { + joint.parentIndex = parentItr->second; } - joint.transform = node.transforms.first(); + + joint.transform = getModelTransform(node); joint.translation = extractTranslation(joint.transform); joint.rotation = glmExtractRotation(joint.transform); glm::vec3 scale = extractScale(joint.transform); joint.postTransform = glm::scale(glm::mat4(), scale); - - joint.parentIndex = parents[nodeIndex]; globalTransforms[nodeIndex] = joint.transform; + if (joint.parentIndex != -1) { globalTransforms[nodeIndex] = globalTransforms[joint.parentIndex] * globalTransforms[nodeIndex]; - joint.parentIndex = originalToNewNodeIndexMap[joint.parentIndex]; } joint.name = node.name; @@ -932,7 +1048,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } hfmModel.shapeVertices.resize(hfmModel.joints.size()); - // get offset transform from mapping float unitScaleFactor = 1.0f; float offsetScale = mapping.value("scale", 1.0f).toFloat() * unitScaleFactor; @@ -953,7 +1068,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& getSkinInverseBindMatrices(inverseBindValues); for (int jointIndex = 0; jointIndex < numNodes; ++jointIndex) { - int nodeIndex = sortedNodes[jointIndex]; + int nodeIndex = jointIndex; auto joint = hfmModel.joints[jointIndex]; for (int s = 0; s < _file.skins.size(); ++s) { @@ -984,638 +1099,559 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } - - // Build materials - QVector materialIDs; - QString unknown = "Default"; - int ukcount = 0; - foreach(auto material, _file.materials) { - if (!material.defined["name"]) { - QString name = unknown + QString::number(++ukcount); - material.name = name; - material.defined.insert("name", true); - } - - QString mid = material.name; - materialIDs.push_back(mid); - } - - for (int i = 0; i < materialIDs.size(); ++i) { - QString& matid = materialIDs[i]; + for (const auto& material : _file.materials) { + const QString& matid = material.name; hfmModel.materials.emplace_back(); HFMMaterial& hfmMaterial = hfmModel.materials.back(); hfmMaterial._material = std::make_shared(); - hfmMaterial.name = hfmMaterial.materialID = matid; - setHFMMaterial(hfmMaterial, _file.materials[i]); + hfmMaterial.materialID = hfmMaterial.name; + setHFMMaterial(hfmMaterial, material); } - - // Build meshes - nodecount = 0; + int meshCount = _file.meshes.size(); + hfmModel.meshes.resize(meshCount); hfmModel.meshExtents.reset(); - for (int nodeIndex : sortedNodes) { - auto& node = _file.nodes[nodeIndex]; - if (node.defined["mesh"]) { - hfmModel.meshes.push_back(HFMMesh()); - HFMMesh& mesh = hfmModel.meshes[hfmModel.meshes.size() - 1]; - if (!hfmModel.hasSkeletonJoints) { + hfmModel.meshes.resize(meshCount); + for (int meshIndex = 0; meshIndex < meshCount; ++meshIndex) { + const auto& gltfMesh = _file.meshes[meshIndex]; + auto& mesh = hfmModel.meshes[meshIndex]; + mesh.meshIndex = meshIndex; +#if 0 + if (!hfmModel.hasSkeletonJoints) { + HFMCluster cluster; + cluster.jointIndex = nodeIndex; + cluster.inverseBindMatrix = glm::mat4(); + cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); + mesh.clusters.append(cluster); + } else { // skinned model + for (int j = 0; j < numNodes; ++j) { HFMCluster cluster; - cluster.jointIndex = nodecount; - cluster.inverseBindMatrix = glm::mat4(); + cluster.jointIndex = j; + cluster.inverseBindMatrix = jointInverseBindTransforms[j]; cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); mesh.clusters.append(cluster); - } else { // skinned model - for (int j = 0; j < numNodes; ++j) { - HFMCluster cluster; - cluster.jointIndex = j; - cluster.inverseBindMatrix = jointInverseBindTransforms[j]; - cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - mesh.clusters.append(cluster); - } } - HFMCluster root; - root.jointIndex = 0; - root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; - root.inverseBindTransform = Transform(root.inverseBindMatrix); - mesh.clusters.append(root); + } + HFMCluster root; + root.jointIndex = 0; + root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; + root.inverseBindTransform = Transform(root.inverseBindMatrix); + mesh.clusters.append(root); +#endif - QList meshAttributes; - foreach(auto &primitive, _file.meshes[node.mesh].primitives) { - QList keys = primitive.attributes.values.keys(); - foreach (auto &key, keys) { - if (!meshAttributes.contains(key)) { - meshAttributes.push_back(key); - } - } + QSet meshAttributes; + for(const auto &primitive : gltfMesh.primitives) { + for (const auto& attribute : primitive.attributes.values.keys()) { + meshAttributes.insert(attribute); + } + } + + for(auto &primitive : gltfMesh.primitives) { + HFMMeshPart part = HFMMeshPart(); + + int indicesAccessorIdx = primitive.indices; + + GLTFAccessor& indicesAccessor = _file.accessors[indicesAccessorIdx]; + + // Buffers + constexpr int VERTEX_STRIDE = 3; + constexpr int NORMAL_STRIDE = 3; + constexpr int TEX_COORD_STRIDE = 2; + + QVector indices; + QVector vertices; + QVector normals; + QVector tangents; + QVector texcoords; + QVector texcoords2; + QVector colors; + QVector joints; + QVector weights; + + static int tangentStride = 4; + static int colorStride = 3; + static int jointStride = 4; + static int weightStride = 4; + + bool success = addArrayFromAccessor(indicesAccessor, indices); + + if (!success) { + qWarning(modelformat) << "There was a problem reading glTF INDICES data for model " << _url; + continue; } - foreach(auto &primitive, _file.meshes[node.mesh].primitives) { - HFMMeshPart part = HFMMeshPart(); + // Increment the triangle indices by the current mesh vertex count so each mesh part can all reference the same buffers within the mesh + int prevMeshVerticesCount = mesh.vertices.count(); - int indicesAccessorIdx = primitive.indices; + QList keys = primitive.attributes.values.keys(); + QVector clusterJoints; + QVector clusterWeights; - GLTFAccessor& indicesAccessor = _file.accessors[indicesAccessorIdx]; + for(auto &key : keys) { + int accessorIdx = primitive.attributes.values[key]; + GLTFAccessor& accessor = _file.accessors[accessorIdx]; + const auto vertexAttribute = GLTFVertexAttribute::fromString(key); + switch (vertexAttribute) { + case GLTFVertexAttribute::POSITION: + success = addArrayFromAttribute(vertexAttribute, accessor, vertices); + break; - // Buffers - QVector indices; - QVector vertices; - int verticesStride = 3; - QVector normals; - int normalStride = 3; - QVector tangents; - int tangentStride = 4; - QVector texcoords; - int texCoordStride = 2; - QVector texcoords2; - int texCoord2Stride = 2; - QVector colors; - int colorStride = 3; - QVector joints; - int jointStride = 4; - QVector weights; - int weightStride = 4; + case GLTFVertexAttribute::NORMAL: + success = addArrayFromAttribute(vertexAttribute, accessor, normals); + break; - bool success = addArrayFromAccessor(indicesAccessor, indices); + case GLTFVertexAttribute::TANGENT: + success = addArrayFromAttribute(vertexAttribute, accessor, tangents); + tangentStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); + break; + case GLTFVertexAttribute::TEXCOORD_0: + success = addArrayFromAttribute(vertexAttribute, accessor, texcoords); + break; + + case GLTFVertexAttribute::TEXCOORD_1: + success = addArrayFromAttribute(vertexAttribute, accessor, texcoords2); + break; + + case GLTFVertexAttribute::COLOR_0: + success = addArrayFromAttribute(vertexAttribute, accessor, colors); + colorStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); + break; + + case GLTFVertexAttribute::JOINTS_0: + success = addArrayFromAttribute(vertexAttribute, accessor, colors); + jointStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); + break; + + case GLTFVertexAttribute::WEIGHTS_0: + success = addArrayFromAttribute(vertexAttribute, accessor, colors); + weightStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); + break; + } if (!success) { - qWarning(modelformat) << "There was a problem reading glTF INDICES data for model " << _url; continue; } + } - // Increment the triangle indices by the current mesh vertex count so each mesh part can all reference the same buffers within the mesh - int prevMeshVerticesCount = mesh.vertices.count(); + // Validation stage + if (indices.count() == 0) { + qWarning(modelformat) << "Missing indices for model " << _url; + continue; + } + if (vertices.count() == 0) { + qWarning(modelformat) << "Missing vertices for model " << _url; + continue; + } - QList keys = primitive.attributes.values.keys(); - QVector clusterJoints; - QVector clusterWeights; + int partVerticesCount = vertices.size() / 3; - foreach(auto &key, keys) { - int accessorIdx = primitive.attributes.values[key]; + // generate the normals if they don't exist + // FIXME move to GLTF post-load processing + if (normals.size() == 0) { + QVector newIndices; + QVector newVertices; + QVector newNormals; + QVector newTexcoords; + QVector newTexcoords2; + QVector newColors; + QVector newJoints; + QVector newWeights; - GLTFAccessor& accessor = _file.accessors[accessorIdx]; + for (int n = 0; n < indices.size(); n = n + 3) { + int v1_index = (indices[n + 0] * 3); + int v2_index = (indices[n + 1] * 3); + int v3_index = (indices[n + 2] * 3); - if (key == "POSITION") { - if (accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF POSITION data for model " << _url; - continue; - } + glm::vec3 v1 = glm::vec3(vertices[v1_index], vertices[v1_index + 1], vertices[v1_index + 2]); + glm::vec3 v2 = glm::vec3(vertices[v2_index], vertices[v2_index + 1], vertices[v2_index + 2]); + glm::vec3 v3 = glm::vec3(vertices[v3_index], vertices[v3_index + 1], vertices[v3_index + 2]); - success = addArrayFromAccessor(accessor, vertices); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF POSITION data for model " << _url; - continue; - } - } else if (key == "NORMAL") { - if (accessor.type != GLTFAccessorType::VEC3) { - qWarning(modelformat) << "Invalid accessor type on glTF NORMAL data for model " << _url; - continue; - } + newVertices.append(v1.x); + newVertices.append(v1.y); + newVertices.append(v1.z); + newVertices.append(v2.x); + newVertices.append(v2.y); + newVertices.append(v2.z); + newVertices.append(v3.x); + newVertices.append(v3.y); + newVertices.append(v3.z); - success = addArrayFromAccessor(accessor, normals); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF NORMAL data for model " << _url; - continue; - } - } else if (key == "TANGENT") { - if (accessor.type == GLTFAccessorType::VEC4) { - tangentStride = 4; - } else if (accessor.type == GLTFAccessorType::VEC3) { - tangentStride = 3; - } else { - qWarning(modelformat) << "Invalid accessor type on glTF TANGENT data for model " << _url; - continue; - } + glm::vec3 norm = glm::normalize(glm::cross(v2 - v1, v3 - v1)); - success = addArrayFromAccessor(accessor, tangents); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF TANGENT data for model " << _url; - tangentStride = 0; - continue; - } - } else if (key == "TEXCOORD_0") { - success = addArrayFromAccessor(accessor, texcoords); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_0 data for model " << _url; - continue; - } + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); + newNormals.append(norm.x); + newNormals.append(norm.y); + newNormals.append(norm.z); - if (accessor.type != GLTFAccessorType::VEC2) { - qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_0 data for model " << _url; - continue; - } - } else if (key == "TEXCOORD_1") { - success = addArrayFromAccessor(accessor, texcoords2); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_1 data for model " << _url; - continue; - } - - if (accessor.type != GLTFAccessorType::VEC2) { - qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_1 data for model " << _url; - continue; - } - } else if (key == "COLOR_0") { - if (accessor.type == GLTFAccessorType::VEC4) { - colorStride = 4; - } else if (accessor.type == GLTFAccessorType::VEC3) { - colorStride = 3; - } else { - qWarning(modelformat) << "Invalid accessor type on glTF COLOR_0 data for model " << _url; - continue; - } - - success = addArrayFromAccessor(accessor, colors); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF COLOR_0 data for model " << _url; - continue; - } - } else if (key == "JOINTS_0") { - if (accessor.type == GLTFAccessorType::VEC4) { - jointStride = 4; - } else if (accessor.type == GLTFAccessorType::VEC3) { - jointStride = 3; - } else if (accessor.type == GLTFAccessorType::VEC2) { - jointStride = 2; - } else if (accessor.type == GLTFAccessorType::SCALAR) { - jointStride = 1; - } else { - qWarning(modelformat) << "Invalid accessor type on glTF JOINTS_0 data for model " << _url; - continue; - } - - success = addArrayFromAccessor(accessor, joints); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF JOINTS_0 data for model " << _url; - continue; - } - } else if (key == "WEIGHTS_0") { - if (accessor.type == GLTFAccessorType::VEC4) { - weightStride = 4; - } else if (accessor.type == GLTFAccessorType::VEC3) { - weightStride = 3; - } else if (accessor.type == GLTFAccessorType::VEC2) { - weightStride = 2; - } else if (accessor.type == GLTFAccessorType::SCALAR) { - weightStride = 1; - } else { - qWarning(modelformat) << "Invalid accessor type on glTF WEIGHTS_0 data for model " << _url; - continue; - } - - success = addArrayFromAccessor(accessor, weights); - if (!success) { - qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; - continue; - } - } - } - - // Validation stage - if (indices.count() == 0) { - qWarning(modelformat) << "Missing indices for model " << _url; - continue; - } - if (vertices.count() == 0) { - qWarning(modelformat) << "Missing vertices for model " << _url; - continue; - } - - int partVerticesCount = vertices.size() / 3; - - // generate the normals if they don't exist - if (normals.size() == 0) { - QVector newIndices; - QVector newVertices; - QVector newNormals; - QVector newTexcoords; - QVector newTexcoords2; - QVector newColors; - QVector newJoints; - QVector newWeights; - - for (int n = 0; n < indices.size(); n = n + 3) { - int v1_index = (indices[n + 0] * 3); - int v2_index = (indices[n + 1] * 3); - int v3_index = (indices[n + 2] * 3); - - glm::vec3 v1 = glm::vec3(vertices[v1_index], vertices[v1_index + 1], vertices[v1_index + 2]); - glm::vec3 v2 = glm::vec3(vertices[v2_index], vertices[v2_index + 1], vertices[v2_index + 2]); - glm::vec3 v3 = glm::vec3(vertices[v3_index], vertices[v3_index + 1], vertices[v3_index + 2]); - - newVertices.append(v1.x); - newVertices.append(v1.y); - newVertices.append(v1.z); - newVertices.append(v2.x); - newVertices.append(v2.y); - newVertices.append(v2.z); - newVertices.append(v3.x); - newVertices.append(v3.y); - newVertices.append(v3.z); - - glm::vec3 norm = glm::normalize(glm::cross(v2 - v1, v3 - v1)); - - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - - if (texcoords.size() == partVerticesCount * texCoordStride) { - GLTF_APPEND_ARRAY_2(newTexcoords, texcoords) - } - - if (texcoords2.size() == partVerticesCount * texCoord2Stride) { - GLTF_APPEND_ARRAY_2(newTexcoords2, texcoords2) - } - - if (colors.size() == partVerticesCount * colorStride) { - if (colorStride == 4) { - GLTF_APPEND_ARRAY_4(newColors, colors) - } else { - GLTF_APPEND_ARRAY_3(newColors, colors) - } - } - - if (joints.size() == partVerticesCount * jointStride) { - if (jointStride == 4) { - GLTF_APPEND_ARRAY_4(newJoints, joints) - } else if (jointStride == 3) { - GLTF_APPEND_ARRAY_3(newJoints, joints) - } else if (jointStride == 2) { - GLTF_APPEND_ARRAY_2(newJoints, joints) - } else { - GLTF_APPEND_ARRAY_1(newJoints, joints) - } - } - - if (weights.size() == partVerticesCount * weightStride) { - if (weightStride == 4) { - GLTF_APPEND_ARRAY_4(newWeights, weights) - } else if (weightStride == 3) { - GLTF_APPEND_ARRAY_3(newWeights, weights) - } else if (weightStride == 2) { - GLTF_APPEND_ARRAY_2(newWeights, weights) - } else { - GLTF_APPEND_ARRAY_1(newWeights, weights) - } - } - newIndices.append(n); - newIndices.append(n + 1); - newIndices.append(n + 2); + if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { + GLTF_APPEND_ARRAY_2(newTexcoords, texcoords) } - vertices = newVertices; - normals = newNormals; - tangents = QVector(); - texcoords = newTexcoords; - texcoords2 = newTexcoords2; - colors = newColors; - joints = newJoints; - weights = newWeights; - indices = newIndices; + if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { + GLTF_APPEND_ARRAY_2(newTexcoords2, texcoords2) + } - partVerticesCount = vertices.size() / 3; + if (colors.size() == partVerticesCount * colorStride) { + if (colorStride == 4) { + GLTF_APPEND_ARRAY_4(newColors, colors) + } else { + GLTF_APPEND_ARRAY_3(newColors, colors) + } + } + + if (joints.size() == partVerticesCount * jointStride) { + if (jointStride == 4) { + GLTF_APPEND_ARRAY_4(newJoints, joints) + } else if (jointStride == 3) { + GLTF_APPEND_ARRAY_3(newJoints, joints) + } else if (jointStride == 2) { + GLTF_APPEND_ARRAY_2(newJoints, joints) + } else { + GLTF_APPEND_ARRAY_1(newJoints, joints) + } + } + + if (weights.size() == partVerticesCount * weightStride) { + if (weightStride == 4) { + GLTF_APPEND_ARRAY_4(newWeights, weights) + } else if (weightStride == 3) { + GLTF_APPEND_ARRAY_3(newWeights, weights) + } else if (weightStride == 2) { + GLTF_APPEND_ARRAY_2(newWeights, weights) + } else { + GLTF_APPEND_ARRAY_1(newWeights, weights) + } + } + newIndices.append(n); + newIndices.append(n + 1); + newIndices.append(n + 2); } - QVector validatedIndices; - for (int n = 0; n < indices.count(); ++n) { - if (indices[n] < partVerticesCount) { - validatedIndices.push_back(indices[n] + prevMeshVerticesCount); + vertices = newVertices; + normals = newNormals; + tangents = QVector(); + texcoords = newTexcoords; + texcoords2 = newTexcoords2; + colors = newColors; + joints = newJoints; + weights = newWeights; + indices = newIndices; + + partVerticesCount = vertices.size() / 3; + } + + QVector validatedIndices; + for (int n = 0; n < indices.count(); ++n) { + if (indices[n] < partVerticesCount) { + validatedIndices.push_back(indices[n] + prevMeshVerticesCount); + } else { + validatedIndices = QVector(); + break; + } + } + + if (validatedIndices.size() == 0) { + qWarning(modelformat) << "Indices out of range for model " << _url; + continue; + } + + part.triangleIndices.append(validatedIndices); + + mesh.vertices.reserve(partVerticesCount); + for (int n = 0; n < vertices.size(); n = n + VERTEX_STRIDE) { + mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); + } + + mesh.normals.reserve(partVerticesCount); + for (int n = 0; n < normals.size(); n = n + NORMAL_STRIDE) { + mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); + } + + // TODO: add correct tangent generation + if (tangents.size() == partVerticesCount * tangentStride) { + mesh.tangents.reserve(partVerticesCount); + for (int n = 0; n < tangents.size(); n += tangentStride) { + float tanW = tangentStride == 4 ? tangents[n + 3] : 1; + mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); + } + } else if (meshAttributes.contains("TANGENT")) { + mesh.tangents.resize(partVerticesCount); + } + + if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { + mesh.texCoords.reserve(partVerticesCount); + for (int n = 0; n < texcoords.size(); n = n + 2) { + mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + } + } else if (meshAttributes.contains("TEXCOORD_0")) { + mesh.texCoords.resize(partVerticesCount); + } + + if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { + mesh.texCoords1.reserve(partVerticesCount); + for (int n = 0; n < texcoords2.size(); n = n + 2) { + mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); + } + } else if (meshAttributes.contains("TEXCOORD_1")) { + mesh.texCoords1.resize(partVerticesCount); + } + + if (colors.size() == partVerticesCount * colorStride) { + mesh.colors.reserve(partVerticesCount); + for (int n = 0; n < colors.size(); n += colorStride) { + mesh.colors.push_back(glm::vec3(colors[n], colors[n + 1], colors[n + 2])); + } + } else if (meshAttributes.contains("COLOR_0")) { + mesh.colors.reserve(partVerticesCount); + for (int i = 0; i < partVerticesCount; ++i) { + mesh.colors.push_back(glm::vec3(1.0f, 1.0f, 1.0f)); + } + } + + if (joints.size() == partVerticesCount * jointStride) { + for (int n = 0; n < joints.size(); n += jointStride) { + clusterJoints.push_back(joints[n]); + if (jointStride > 1) { + clusterJoints.push_back(joints[n + 1]); + if (jointStride > 2) { + clusterJoints.push_back(joints[n + 2]); + if (jointStride > 3) { + clusterJoints.push_back(joints[n + 3]); + } else { + clusterJoints.push_back(0); + } + } else { + clusterJoints.push_back(0); + clusterJoints.push_back(0); + } } else { - validatedIndices = QVector(); + clusterJoints.push_back(0); + clusterJoints.push_back(0); + clusterJoints.push_back(0); + } + } + } else if (meshAttributes.contains("JOINTS_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + for (int j = 0; j < 4; ++j) { + clusterJoints.push_back(0); + } + } + } + + if (weights.size() == partVerticesCount * weightStride) { + for (int n = 0; n < weights.size(); n += weightStride) { + clusterWeights.push_back(weights[n]); + if (weightStride > 1) { + clusterWeights.push_back(weights[n + 1]); + if (weightStride > 2) { + clusterWeights.push_back(weights[n + 2]); + if (weightStride > 3) { + clusterWeights.push_back(weights[n + 3]); + } else { + clusterWeights.push_back(0.0f); + } + } else { + clusterWeights.push_back(0.0f); + clusterWeights.push_back(0.0f); + } + } else { + clusterWeights.push_back(0.0f); + clusterWeights.push_back(0.0f); + clusterWeights.push_back(0.0f); + } + } + } else if (meshAttributes.contains("WEIGHTS_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + clusterWeights.push_back(1.0f); + for (int j = 1; j < 4; ++j) { + clusterWeights.push_back(0.0f); + } + } + } + +#if 0 + // Build weights (adapted from FBXSerializer.cpp) + if (hfmModel.hasSkeletonJoints) { + int prevMeshClusterIndexCount = mesh.clusterIndices.count(); + int prevMeshClusterWeightCount = mesh.clusterWeights.count(); + const int WEIGHTS_PER_VERTEX = 4; + const float ALMOST_HALF = 0.499f; + int numVertices = mesh.vertices.size() - prevMeshVerticesCount; + + // Append new cluster indices and weights for this mesh part + for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { + mesh.clusterIndices.push_back(mesh.clusters.size() - 1); + mesh.clusterWeights.push_back(0); + } + + for (int c = 0; c < clusterJoints.size(); ++c) { + mesh.clusterIndices[prevMeshClusterIndexCount + c] = + originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; + } + + // normalize and compress to 16-bits + for (int i = 0; i < numVertices; ++i) { + int j = i * WEIGHTS_PER_VERTEX; + + float totalWeight = 0.0f; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + totalWeight += clusterWeights[k]; + } + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { + mesh.clusterWeights[prevMeshClusterWeightCount + k] = (uint16_t)(weightScalingFactor * clusterWeights[k] + ALMOST_HALF); + } + } else { + mesh.clusterWeights[prevMeshClusterWeightCount + j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + } + for (int clusterIndex = 0; clusterIndex < mesh.clusters.size() - 1; ++clusterIndex) { + ShapeVertices& points = hfmModel.shapeVertices.at(clusterIndex); + glm::vec3 globalMeshScale = extractScale(globalTransforms[nodeIndex]); + const glm::mat4 meshToJoint = glm::scale(glm::mat4(), globalMeshScale) * jointInverseBindTransforms[clusterIndex]; + + const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; + if (mesh.clusterWeights[j] >= EXPANSION_WEIGHT_THRESHOLD) { + // TODO: fix transformed vertices being pushed back + auto& vertex = mesh.vertices[i]; + const glm::mat4 vertexTransform = meshToJoint * (glm::translate(glm::mat4(), vertex)); + glm::vec3 transformedVertex = hfmModel.joints[clusterIndex].translation * (extractTranslation(vertexTransform)); + points.push_back(transformedVertex); + } + } + } + } +#endif + +#if 0 + if (primitive.defined["material"]) { + part.materialID = materialIDs[primitive.material]; + } +#endif + + mesh.parts.push_back(part); + + // populate the texture coordinates if they don't exist + if (mesh.texCoords.size() == 0 && !hfmModel.hasSkeletonJoints) { + for (int i = 0; i < part.triangleIndices.size(); ++i) { mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); } + } + + // Build morph targets (blend shapes) + if (!primitive.targets.isEmpty()) { + + // Build list of blendshapes from FST + typedef QPair WeightedIndex; + hifi::VariantHash blendshapeMappings = mapping.value("bs").toHash(); + QMultiHash blendshapeIndices; + + for (int i = 0;; ++i) { + hifi::ByteArray blendshapeName = FACESHIFT_BLENDSHAPES[i]; + if (blendshapeName.isEmpty()) { break; } - } - - if (validatedIndices.size() == 0) { - qWarning(modelformat) << "Indices out of range for model " << _url; - continue; - } - - part.triangleIndices.append(validatedIndices); - - for (int n = 0; n < vertices.size(); n = n + verticesStride) { - mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); - } - - for (int n = 0; n < normals.size(); n = n + normalStride) { - mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); - } - - // TODO: add correct tangent generation - if (tangents.size() == partVerticesCount * tangentStride) { - for (int n = 0; n < tangents.size(); n += tangentStride) { - float tanW = tangentStride == 4 ? tangents[n + 3] : 1; - mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); + QList mappings = blendshapeMappings.values(blendshapeName); + foreach (const QVariant& mapping, mappings) { + QVariantList blendshapeMapping = mapping.toList(); + blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), WeightedIndex(i, blendshapeMapping.at(1).toFloat())); } - } else { - if (meshAttributes.contains("TANGENT")) { - for (int i = 0; i < partVerticesCount; ++i) { - mesh.tangents.push_back(glm::vec3(0.0f, 0.0f, 0.0f)); + } + + // glTF morph targets may or may not have names. if they are labeled, add them based on + // the corresponding names from the FST. otherwise, just add them in the order they are given + mesh.blendshapes.resize(blendshapeMappings.size()); + auto values = blendshapeIndices.values(); + auto keys = blendshapeIndices.keys(); + auto names = gltfMesh.extras.targetNames; + QVector weights = gltfMesh.weights; + + for (int weightedIndex = 0; weightedIndex < values.size(); ++weightedIndex) { + float weight = 0.1f; + int indexFromMapping = weightedIndex; + int targetIndex = weightedIndex; + hfmModel.blendshapeChannelNames.push_back("target_" + QString::number(weightedIndex)); + + if (!names.isEmpty()) { + targetIndex = names.indexOf(keys[weightedIndex]); + indexFromMapping = values[weightedIndex].first; + weight = weight * values[weightedIndex].second; + hfmModel.blendshapeChannelNames[weightedIndex] = keys[weightedIndex]; + } + HFMBlendshape& blendshape = mesh.blendshapes[indexFromMapping]; + blendshape.indices = part.triangleIndices; + auto target = primitive.targets[targetIndex]; + + QVector normals; + QVector vertices; + + if (weights.size() == primitive.targets.size()) { + int targetWeight = weights[targetIndex]; + if (targetWeight != 0) { + weight = weight * targetWeight; } } - } - if (texcoords.size() == partVerticesCount * texCoordStride) { - for (int n = 0; n < texcoords.size(); n = n + 2) { - mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); + if (target.values.contains((QString) "NORMAL")) { + generateTargetData(target.values.value((QString) "NORMAL"), weight, normals); } - } else { - if (meshAttributes.contains("TEXCOORD_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - mesh.texCoords.push_back(glm::vec2(0.0f, 0.0f)); - } + if (target.values.contains((QString) "POSITION")) { + generateTargetData(target.values.value((QString) "POSITION"), weight, vertices); } - } - - if (texcoords2.size() == partVerticesCount * texCoord2Stride) { - for (int n = 0; n < texcoords2.size(); n = n + 2) { - mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); - } - } else { - if (meshAttributes.contains("TEXCOORD_1")) { - for (int i = 0; i < partVerticesCount; ++i) { - mesh.texCoords1.push_back(glm::vec2(0.0f, 0.0f)); - } - } - } - - if (colors.size() == partVerticesCount * colorStride) { - for (int n = 0; n < colors.size(); n += colorStride) { - mesh.colors.push_back(glm::vec3(colors[n], colors[n + 1], colors[n + 2])); - } - } else { - if (meshAttributes.contains("COLOR_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - mesh.colors.push_back(glm::vec3(1.0f, 1.0f, 1.0f)); - } - } - } - - if (joints.size() == partVerticesCount * jointStride) { - for (int n = 0; n < joints.size(); n += jointStride) { - clusterJoints.push_back(joints[n]); - if (jointStride > 1) { - clusterJoints.push_back(joints[n + 1]); - if (jointStride > 2) { - clusterJoints.push_back(joints[n + 2]); - if (jointStride > 3) { - clusterJoints.push_back(joints[n + 3]); - } else { - clusterJoints.push_back(0); - } - } else { - clusterJoints.push_back(0); - clusterJoints.push_back(0); - } + bool isNewBlendshape = blendshape.vertices.size() < vertices.size(); + int count = 0; + for (int i : blendshape.indices) { + if (isNewBlendshape) { + blendshape.vertices.push_back(vertices[i]); + blendshape.normals.push_back(normals[i]); } else { - clusterJoints.push_back(0); - clusterJoints.push_back(0); - clusterJoints.push_back(0); - } - } - } else { - if (meshAttributes.contains("JOINTS_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - for (int j = 0; j < 4; ++j) { - clusterJoints.push_back(0); - } + blendshape.vertices[count] = blendshape.vertices[count] + vertices[i]; + blendshape.normals[count] = blendshape.normals[count] + normals[i]; + ++count; } } } - - if (weights.size() == partVerticesCount * weightStride) { - for (int n = 0; n < weights.size(); n += weightStride) { - clusterWeights.push_back(weights[n]); - if (weightStride > 1) { - clusterWeights.push_back(weights[n + 1]); - if (weightStride > 2) { - clusterWeights.push_back(weights[n + 2]); - if (weightStride > 3) { - clusterWeights.push_back(weights[n + 3]); - } else { - clusterWeights.push_back(0.0f); - } - } else { - clusterWeights.push_back(0.0f); - clusterWeights.push_back(0.0f); - } - } else { - clusterWeights.push_back(0.0f); - clusterWeights.push_back(0.0f); - clusterWeights.push_back(0.0f); - } - } - } else { - if (meshAttributes.contains("WEIGHTS_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - clusterWeights.push_back(1.0f); - for (int j = 1; j < 4; ++j) { - clusterWeights.push_back(0.0f); - } - } - } - } - - // Build weights (adapted from FBXSerializer.cpp) - if (hfmModel.hasSkeletonJoints) { - int prevMeshClusterIndexCount = mesh.clusterIndices.count(); - int prevMeshClusterWeightCount = mesh.clusterWeights.count(); - const int WEIGHTS_PER_VERTEX = 4; - const float ALMOST_HALF = 0.499f; - int numVertices = mesh.vertices.size() - prevMeshVerticesCount; - - // Append new cluster indices and weights for this mesh part - for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { - mesh.clusterIndices.push_back(mesh.clusters.size() - 1); - mesh.clusterWeights.push_back(0); - } - - for (int c = 0; c < clusterJoints.size(); ++c) { - mesh.clusterIndices[prevMeshClusterIndexCount + c] = - originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; - } - - // normalize and compress to 16-bits - for (int i = 0; i < numVertices; ++i) { - int j = i * WEIGHTS_PER_VERTEX; - - float totalWeight = 0.0f; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - totalWeight += clusterWeights[k]; - } - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - mesh.clusterWeights[prevMeshClusterWeightCount + k] = (uint16_t)(weightScalingFactor * clusterWeights[k] + ALMOST_HALF); - } - } else { - mesh.clusterWeights[prevMeshClusterWeightCount + j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); - } - for (int clusterIndex = 0; clusterIndex < mesh.clusters.size() - 1; ++clusterIndex) { - ShapeVertices& points = hfmModel.shapeVertices.at(clusterIndex); - glm::vec3 globalMeshScale = extractScale(globalTransforms[nodeIndex]); - const glm::mat4 meshToJoint = glm::scale(glm::mat4(), globalMeshScale) * jointInverseBindTransforms[clusterIndex]; - - const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; - if (mesh.clusterWeights[j] >= EXPANSION_WEIGHT_THRESHOLD) { - // TODO: fix transformed vertices being pushed back - auto& vertex = mesh.vertices[i]; - const glm::mat4 vertexTransform = meshToJoint * (glm::translate(glm::mat4(), vertex)); - glm::vec3 transformedVertex = hfmModel.joints[clusterIndex].translation * (extractTranslation(vertexTransform)); - points.push_back(transformedVertex); - } - } - } - } - - if (primitive.defined["material"]) { - part.materialID = materialIDs[primitive.material]; - } - mesh.parts.push_back(part); - - // populate the texture coordinates if they don't exist - if (mesh.texCoords.size() == 0 && !hfmModel.hasSkeletonJoints) { - for (int i = 0; i < part.triangleIndices.size(); ++i) { mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); } - } - - // Build morph targets (blend shapes) - if (!primitive.targets.isEmpty()) { - - // Build list of blendshapes from FST - typedef QPair WeightedIndex; - hifi::VariantHash blendshapeMappings = mapping.value("bs").toHash(); - QMultiHash blendshapeIndices; - - for (int i = 0;; ++i) { - hifi::ByteArray blendshapeName = FACESHIFT_BLENDSHAPES[i]; - if (blendshapeName.isEmpty()) { - break; - } - QList mappings = blendshapeMappings.values(blendshapeName); - foreach (const QVariant& mapping, mappings) { - QVariantList blendshapeMapping = mapping.toList(); - blendshapeIndices.insert(blendshapeMapping.at(0).toByteArray(), WeightedIndex(i, blendshapeMapping.at(1).toFloat())); - } - } - - // glTF morph targets may or may not have names. if they are labeled, add them based on - // the corresponding names from the FST. otherwise, just add them in the order they are given - mesh.blendshapes.resize(blendshapeMappings.size()); - auto values = blendshapeIndices.values(); - auto keys = blendshapeIndices.keys(); - auto names = _file.meshes[node.mesh].extras.targetNames; - QVector weights = _file.meshes[node.mesh].weights; - - for (int weightedIndex = 0; weightedIndex < values.size(); ++weightedIndex) { - float weight = 0.1f; - int indexFromMapping = weightedIndex; - int targetIndex = weightedIndex; - hfmModel.blendshapeChannelNames.push_back("target_" + QString::number(weightedIndex)); - - if (!names.isEmpty()) { - targetIndex = names.indexOf(keys[weightedIndex]); - indexFromMapping = values[weightedIndex].first; - weight = weight * values[weightedIndex].second; - hfmModel.blendshapeChannelNames[weightedIndex] = keys[weightedIndex]; - } - HFMBlendshape& blendshape = mesh.blendshapes[indexFromMapping]; - blendshape.indices = part.triangleIndices; - auto target = primitive.targets[targetIndex]; - - QVector normals; - QVector vertices; - - if (weights.size() == primitive.targets.size()) { - int targetWeight = weights[targetIndex]; - if (targetWeight != 0) { - weight = weight * targetWeight; - } - } - - if (target.values.contains((QString) "NORMAL")) { - generateTargetData(target.values.value((QString) "NORMAL"), weight, normals); - } - if (target.values.contains((QString) "POSITION")) { - generateTargetData(target.values.value((QString) "POSITION"), weight, vertices); - } - bool isNewBlendshape = blendshape.vertices.size() < vertices.size(); - int count = 0; - for (int i : blendshape.indices) { - if (isNewBlendshape) { - blendshape.vertices.push_back(vertices[i]); - blendshape.normals.push_back(normals[i]); - } else { - blendshape.vertices[count] = blendshape.vertices[count] + vertices[i]; - blendshape.normals[count] = blendshape.normals[count] + normals[i]; - ++count; - } - } - } - } - - foreach(const glm::vec3& vertex, mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(globalTransforms[nodeIndex] * glm::vec4(vertex, 1.0f)); - mesh.meshExtents.addPoint(transformedVertex); - hfmModel.meshExtents.addPoint(transformedVertex); - } } - // Add epsilon to mesh extents to compensate for planar meshes - mesh.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); - mesh.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); - hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); - hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); - - mesh.meshIndex = (int)hfmModel.meshes.size(); +#if 0 + for(const glm::vec3& vertex : mesh.vertices) { + glm::vec3 transformedVertex = glm::vec3(globalTransforms[nodeIndex] * glm::vec4(vertex, 1.0f)); + mesh.meshExtents.addPoint(transformedVertex); + hfmModel.meshExtents.addPoint(transformedVertex); + } +#endif + } + + // Add epsilon to mesh extents to compensate for planar meshes + mesh.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); + mesh.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); + hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); + hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); + + } + + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + const auto& node = _file.nodes[nodeIndex]; + if (-1 == node.mesh) { + continue; + } + + const auto& mesh = _file.meshes[node.mesh]; + int primCount = (int)mesh.primitives.size(); + for (int primIndex = 0; primIndex < primCount; ++primIndex) { + const auto& primitive = mesh.primitives[primIndex]; + hfmModel.shapes.push_back({}); + auto& hfmShape = hfmModel.shapes.back(); + hfmShape.transform = nodeIndex; + hfmShape.mesh = node.mesh; + hfmShape.meshPart = primIndex; + hfmShape.material = primitive.material; } - ++nodecount; } return true; @@ -1637,9 +1673,8 @@ std::unique_ptr GLTFSerializer::getFactory() const { } HFMModel::Pointer GLTFSerializer::read(const hifi::ByteArray& data, const hifi::VariantHash& mapping, const hifi::URL& url) { - _url = url; - + // Normalize url for local files hifi::URL normalizeUrl = DependencyManager::get()->normalizeURL(_url); if (normalizeUrl.scheme().isEmpty() || (normalizeUrl.scheme() == "file")) { @@ -1649,6 +1684,9 @@ HFMModel::Pointer GLTFSerializer::read(const hifi::ByteArray& data, const hifi:: if (parseGLTF(data)) { //_file.dump(); + _file.sortNodes(); + _file.populateMaterialNames(); + _file.normalizeNodeTransforms(); auto hfmModelPtr = std::make_shared(); HFMModel& hfmModel = *hfmModelPtr; buildGeometry(hfmModel, mapping, _url); @@ -1672,7 +1710,7 @@ bool GLTFSerializer::readBinary(const QString& url, hifi::ByteArray& outdata) { hifi::URL binaryUrl = _url.resolved(url); std::tie(success, outdata) = requestData(binaryUrl); } - + return success; } @@ -1685,8 +1723,8 @@ bool GLTFSerializer::doesResourceExist(const QString& url) { } std::tuple GLTFSerializer::requestData(hifi::URL& url) { - auto request = DependencyManager::get()->createResourceRequest( - nullptr, url, true, -1, "GLTFSerializer::requestData"); + auto request = + DependencyManager::get()->createResourceRequest(nullptr, url, true, -1, "GLTFSerializer::requestData"); if (!request) { return std::make_tuple(false, hifi::ByteArray()); @@ -1705,19 +1743,16 @@ std::tuple GLTFSerializer::requestData(hifi::URL& url) { } hifi::ByteArray GLTFSerializer::requestEmbeddedData(const QString& url) { - QString binaryUrl = url.split(",")[1]; + QString binaryUrl = url.split(",")[1]; return binaryUrl.isEmpty() ? hifi::ByteArray() : QByteArray::fromBase64(binaryUrl.toUtf8()); } - QNetworkReply* GLTFSerializer::request(hifi::URL& url, bool isTest) { if (!qApp) { return nullptr; } bool aboutToQuit{ false }; - auto connection = QObject::connect(qApp, &QCoreApplication::aboutToQuit, [&] { - aboutToQuit = true; - }); + auto connection = QObject::connect(qApp, &QCoreApplication::aboutToQuit, [&] { aboutToQuit = true; }); QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest netRequest(url); netRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); @@ -1726,18 +1761,18 @@ QNetworkReply* GLTFSerializer::request(hifi::URL& url, bool isTest) { netReply->deleteLater(); return nullptr; } - QEventLoop loop; // Create an event loop that will quit when we get the finished signal + QEventLoop loop; // Create an event loop that will quit when we get the finished signal QObject::connect(netReply, SIGNAL(finished()), &loop, SLOT(quit())); - loop.exec(); // Nothing is going to happen on this whole run thread until we get this + loop.exec(); // Nothing is going to happen on this whole run thread until we get this QObject::disconnect(connection); - return netReply; // trying to sync later on. + return netReply; // trying to sync later on. } HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { HFMTexture fbxtex = HFMTexture(); fbxtex.texcoordSet = 0; - + if (texture.defined["source"]) { QString url = _file.images[texture.source].uri; @@ -1745,10 +1780,10 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { hifi::URL textureUrl = _url.resolved(url); fbxtex.name = fname; fbxtex.filename = textureUrl.toEncoded(); - + if (_url.toString().endsWith("glb") && !_glbBinary.isEmpty()) { int bufferView = _file.images[texture.source].bufferView; - + GLTFBufferView& imagesBufferview = _file.bufferviews[bufferView]; int offset = imagesBufferview.byteOffset; int length = imagesBufferview.byteLength; @@ -1758,19 +1793,15 @@ HFMTexture GLTFSerializer::getHFMTexture(const GLTFTexture& texture) { } if (url.contains("data:image/jpeg;base64,") || url.contains("data:image/png;base64,")) { - fbxtex.content = requestEmbeddedData(url); + fbxtex.content = requestEmbeddedData(url); } } return fbxtex; } void GLTFSerializer::setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& material) { - - if (material.defined["emissiveFactor"] && material.emissiveFactor.size() == 3) { - glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], - material.emissiveFactor[1], - material.emissiveFactor[2]); + glm::vec3 emissive = glm::vec3(material.emissiveFactor[0], material.emissiveFactor[1], material.emissiveFactor[2]); fbxmat._material->setEmissive(emissive); } @@ -1778,12 +1809,12 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& mat fbxmat.emissiveTexture = getHFMTexture(_file.textures[material.emissiveTexture]); fbxmat.useEmissiveMap = true; } - + if (material.defined["normalTexture"]) { fbxmat.normalTexture = getHFMTexture(_file.textures[material.normalTexture]); fbxmat.useNormalMap = true; } - + if (material.defined["occlusionTexture"]) { fbxmat.occlusionTexture = getHFMTexture(_file.textures[material.occlusionTexture]); fbxmat.useOcclusionMap = true; @@ -1791,7 +1822,7 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& mat if (material.defined["pbrMetallicRoughness"]) { fbxmat.isPBSMaterial = true; - + if (material.pbrMetallicRoughness.defined["metallicFactor"]) { fbxmat.metallic = material.pbrMetallicRoughness.metallicFactor; } @@ -1811,23 +1842,20 @@ void GLTFSerializer::setHFMMaterial(HFMMaterial& fbxmat, const GLTFMaterial& mat if (material.pbrMetallicRoughness.defined["roughnessFactor"]) { fbxmat._material->setRoughness(material.pbrMetallicRoughness.roughnessFactor); } - if (material.pbrMetallicRoughness.defined["baseColorFactor"] && + if (material.pbrMetallicRoughness.defined["baseColorFactor"] && material.pbrMetallicRoughness.baseColorFactor.size() == 4) { - glm::vec3 dcolor = glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], - material.pbrMetallicRoughness.baseColorFactor[1], - material.pbrMetallicRoughness.baseColorFactor[2]); + glm::vec3 dcolor = + glm::vec3(material.pbrMetallicRoughness.baseColorFactor[0], material.pbrMetallicRoughness.baseColorFactor[1], + material.pbrMetallicRoughness.baseColorFactor[2]); fbxmat.diffuseColor = dcolor; fbxmat._material->setAlbedo(dcolor); fbxmat._material->setOpacity(material.pbrMetallicRoughness.baseColorFactor[3]); - } + } } - } -template -bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int count, - QVector& outarray, int accessorType) { - +template +bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int count, QVector& outarray, int accessorType) { QDataStream blobstream(bin); blobstream.setByteOrder(QDataStream::LittleEndian); blobstream.setVersion(QDataStream::Qt_5_9); @@ -1836,31 +1864,31 @@ bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int c int bufferCount = 0; switch (accessorType) { - case GLTFAccessorType::SCALAR: - bufferCount = 1; - break; - case GLTFAccessorType::VEC2: - bufferCount = 2; - break; - case GLTFAccessorType::VEC3: - bufferCount = 3; - break; - case GLTFAccessorType::VEC4: - bufferCount = 4; - break; - case GLTFAccessorType::MAT2: - bufferCount = 4; - break; - case GLTFAccessorType::MAT3: - bufferCount = 9; - break; - case GLTFAccessorType::MAT4: - bufferCount = 16; - break; - default: - qWarning(modelformat) << "Unknown accessorType: " << accessorType; - blobstream.unsetDevice(); - return false; + case GLTFAccessorType::SCALAR: + bufferCount = 1; + break; + case GLTFAccessorType::VEC2: + bufferCount = 2; + break; + case GLTFAccessorType::VEC3: + bufferCount = 3; + break; + case GLTFAccessorType::VEC4: + bufferCount = 4; + break; + case GLTFAccessorType::MAT2: + bufferCount = 4; + break; + case GLTFAccessorType::MAT3: + bufferCount = 9; + break; + case GLTFAccessorType::MAT4: + bufferCount = 16; + break; + default: + qWarning(modelformat) << "Unknown accessorType: " << accessorType; + blobstream.unsetDevice(); + return false; } for (int i = 0; i < count; ++i) { for (int j = 0; j < bufferCount; ++j) { @@ -1878,31 +1906,137 @@ bool GLTFSerializer::readArray(const hifi::ByteArray& bin, int byteOffset, int c blobstream.unsetDevice(); return true; } -template -bool GLTFSerializer::addArrayOfType(const hifi::ByteArray& bin, int byteOffset, int count, - QVector& outarray, int accessorType, int componentType) { - +template +bool GLTFSerializer::addArrayOfType(const hifi::ByteArray& bin, + int byteOffset, + int count, + QVector& outarray, + int accessorType, + int componentType) { switch (componentType) { - case GLTFAccessorComponentType::BYTE: {} - case GLTFAccessorComponentType::UNSIGNED_BYTE: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::SHORT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::UNSIGNED_INT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::UNSIGNED_SHORT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } - case GLTFAccessorComponentType::FLOAT: { - return readArray(bin, byteOffset, count, outarray, accessorType); - } + case GLTFAccessorComponentType::BYTE: { + } + case GLTFAccessorComponentType::UNSIGNED_BYTE: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::SHORT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::UNSIGNED_INT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::UNSIGNED_SHORT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } + case GLTFAccessorComponentType::FLOAT: { + return readArray(bin, byteOffset, count, outarray, accessorType); + } } return false; } + +template +bool GLTFSerializer::addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttribute, GLTFAccessor& accessor, QVector& outarray) { + switch (vertexAttribute) { + case GLTFVertexAttribute::POSITION: + if (accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF POSITION data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF POSITION data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::NORMAL: + if (accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF NORMAL data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF NORMAL data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::TANGENT: + if (accessor.type != GLTFAccessorType::VEC4 && accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF TANGENT data for model " << _url; + return false; + } + break; + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF TANGENT data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::TEXCOORD_0: + if (accessor.type != GLTFAccessorType::VEC2) { + qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_0 data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_0 data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::TEXCOORD_1: + if (accessor.type != GLTFAccessorType::VEC2) { + qWarning(modelformat) << "Invalid accessor type on glTF TEXCOORD_1 data for model " << _url; + return false; + } + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF TEXCOORD_1 data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::COLOR_0: + if (accessor.type != GLTFAccessorType::VEC4 && accessor.type != GLTFAccessorType::VEC3) { + qWarning(modelformat) << "Invalid accessor type on glTF COLOR_0 data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF COLOR_0 data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::JOINTS_0: + if (accessor.type < GLTFAccessorType::SCALAR || accessor.type > GLTFAccessorType::VEC4) { + qWarning(modelformat) << "Invalid accessor type on glTF JOINTS_0 data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF JOINTS_0 data for model " << _url; + return false; + } + break; + + case GLTFVertexAttribute::WEIGHTS_0: + if (accessor.type < GLTFAccessorType::SCALAR || accessor.type > GLTFAccessorType::VEC4) { + qWarning(modelformat) << "Invalid accessor type on glTF WEIGHTS_0 data for model " << _url; + return false; + } + + if (!addArrayFromAccessor(accessor, outarray)) { + qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; + } + } + + return true; +} + template bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& outarray) { bool success = true; @@ -1948,7 +2082,7 @@ bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& ou if (success) { for (int i = 0; i < accessor.sparse.count; ++i) { - if ((i * 3) + 2 < out_sparse_values_array.size()) { + if ((i * 3) + 2 < out_sparse_values_array.size()) { if ((out_sparse_indices_array[i] * 3) + 2 < outarray.length()) { for (int j = 0; j < 3; ++j) { outarray[(out_sparse_indices_array[i] * 3) + j] = out_sparse_values_array[(i * 3) + j]; @@ -1970,14 +2104,16 @@ bool GLTFSerializer::addArrayFromAccessor(GLTFAccessor& accessor, QVector& ou return success; } -void GLTFSerializer::retriangulate(const QVector& inIndices, const QVector& in_vertices, - const QVector& in_normals, QVector& outIndices, - QVector& out_vertices, QVector& out_normals) { +void GLTFSerializer::retriangulate(const QVector& inIndices, + const QVector& in_vertices, + const QVector& in_normals, + QVector& outIndices, + QVector& out_vertices, + QVector& out_normals) { for (int i = 0; i < inIndices.size(); i = i + 3) { - int idx1 = inIndices[i]; - int idx2 = inIndices[i+1]; - int idx3 = inIndices[i+2]; + int idx2 = inIndices[i + 1]; + int idx3 = inIndices[i + 2]; out_vertices.push_back(in_vertices[idx1]); out_vertices.push_back(in_vertices[idx2]); @@ -1988,8 +2124,8 @@ void GLTFSerializer::retriangulate(const QVector& inIndices, const QVector< out_normals.push_back(in_normals[idx3]); outIndices.push_back(i); - outIndices.push_back(i+1); - outIndices.push_back(i+2); + outIndices.push_back(i + 1); + outIndices.push_back(i + 2); } } @@ -1998,7 +2134,7 @@ void GLTFSerializer::glTFDebugDump() { for (GLTFNode node : _file.nodes) { if (node.defined["mesh"]) { qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " node_transforms" << node.transforms; + qCDebug(modelformat) << " node_transform" << node.transform; qCDebug(modelformat) << "\n"; } } @@ -2051,12 +2187,12 @@ void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); - qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); - qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); - qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; + //qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); + //qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); + //qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; - foreach(HFMBlendshape bshape, mesh.blendshapes) { + for (HFMBlendshape bshape : mesh.blendshapes) { qCDebug(modelformat) << "\n"; qCDebug(modelformat) << " bshape.indices.count() =" << bshape.indices.count(); qCDebug(modelformat) << " bshape.vertices.count() =" << bshape.vertices.count(); @@ -2064,37 +2200,37 @@ void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << "\n"; } qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; - foreach(HFMMeshPart meshPart, mesh.parts) { + for (HFMMeshPart meshPart : mesh.parts) { qCDebug(modelformat) << "\n"; qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); - qCDebug(modelformat) << " materialID =" << meshPart.materialID; + //qCDebug(modelformat) << " materialID =" << meshPart.materialID; qCDebug(modelformat) << "\n"; - } qCDebug(modelformat) << "---------------- Meshes (clusters)--------"; - qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); - foreach(HFMCluster cluster, mesh.clusters) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; - qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; - qCDebug(modelformat) << "\n"; - } - qCDebug(modelformat) << "\n"; + //qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); + //for(HFMCluster cluster : mesh.clusters) { + // qCDebug(modelformat) << "\n"; + // qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; + // qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; + // qCDebug(modelformat) << "\n"; + //} + //qCDebug(modelformat) << "\n"; } qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; - foreach(HFMAnimationFrame anim, hfmModel.animationFrames) { + for (HFMAnimationFrame anim : hfmModel.animationFrames) { qCDebug(modelformat) << " anim.translations = " << anim.translations; qCDebug(modelformat) << " anim.rotations = " << anim.rotations; } QList mitomona_keys = hfmModel.meshIndicesToModelNames.keys(); - foreach(int key, mitomona_keys) { - qCDebug(modelformat) << " meshIndicesToModelNames key =" << key << " val =" << hfmModel.meshIndicesToModelNames[key]; + for (int key : mitomona_keys) { + qCDebug(modelformat) << " meshIndicesToModelNames key =" << key + << " val =" << hfmModel.meshIndicesToModelNames[key]; } qCDebug(modelformat) << "---------------- Materials ----------------"; - foreach(HFMMaterial mat, hfmModel.materials) { + for (HFMMaterial mat : hfmModel.materials) { qCDebug(modelformat) << "\n"; qCDebug(modelformat) << " mat.materialID =" << mat.materialID; qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; diff --git a/libraries/fbx/src/GLTFSerializer.h b/libraries/fbx/src/GLTFSerializer.h index 4d72805863..78dc9b9a37 100755 --- a/libraries/fbx/src/GLTFSerializer.h +++ b/libraries/fbx/src/GLTFSerializer.h @@ -38,14 +38,14 @@ struct GLTFAsset { struct GLTFNode { QString name; - int camera; - int mesh; + int camera{ -1 }; + int mesh{ -1 }; QVector children; QVector translation; QVector rotation; QVector scale; QVector matrix; - QVector transforms; + glm::mat4 transform; int skin; QVector skeletons; QString jointName; @@ -85,6 +85,8 @@ struct GLTFNode { qCDebug(modelformat) << "skeletons: " << skeletons; } } + + void normalizeTransform(); }; // Meshes @@ -460,15 +462,56 @@ struct GLTFMaterial { // Accesors namespace GLTFAccessorType { - enum Values { - SCALAR = 0, - VEC2, - VEC3, - VEC4, - MAT2, - MAT3, - MAT4 + enum Value { + SCALAR = 1, + VEC2 = 2, + VEC3 = 3, + VEC4 = 4, + MAT2 = 5, + MAT3 = 9, + MAT4 = 16 }; + + inline int count(Value value) { + if (value == MAT2) { + return 4; + } + return (int)value; + } +} + +namespace GLTFVertexAttribute { + enum Value { + UNKNOWN = -1, + POSITION = 0, + NORMAL, + TANGENT, + TEXCOORD_0, + TEXCOORD_1, + COLOR_0, + JOINTS_0, + WEIGHTS_0, + }; + inline Value fromString(const QString& key) { + if (key == "POSITION") { + return POSITION; + } else if (key == "NORMAL") { + return NORMAL; + } else if (key == "TANGENT") { + return TANGENT; + } else if (key == "TEXCOORD_0") { + return TEXCOORD_0; + } else if (key == "TEXCOORD_1") { + return TEXCOORD_1; + } else if (key == "COLOR_0") { + return COLOR_0; + } else if (key == "JOINTS_0") { + return JOINTS_0; + } else if (key == "WEIGHTS_0") { + return WEIGHTS_0; + } + return UNKNOWN; + } } namespace GLTFAccessorComponentType { enum Values { @@ -760,6 +803,13 @@ struct GLTFFile { foreach(auto tex, textures) tex.dump(); } } + + + void populateMaterialNames(); + void sortNodes(); + void normalizeNodeTransforms(); +private: + void reorderNodes(const std::unordered_map& reorderMap); }; class GLTFSerializer : public QObject, public HFMSerializer { @@ -774,7 +824,7 @@ private: hifi::URL _url; hifi::ByteArray _glbBinary; - glm::mat4 getModelTransform(const GLTFNode& node); + const glm::mat4& getModelTransform(const GLTFNode& node); void getSkinInverseBindMatrices(std::vector>& inverseBindMatrixValues); void generateTargetData(int index, float weight, QVector& returnVector); @@ -843,6 +893,9 @@ private: template bool addArrayFromAccessor(GLTFAccessor& accessor, QVector& outarray); + template + bool addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttribute, GLTFAccessor& accessor, QVector& outarray); + void retriangulate(const QVector& in_indices, const QVector& in_vertices, const QVector& in_normals, QVector& out_indices, QVector& out_vertices, QVector& out_normals); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 8e0944db43..497bb60568 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -122,8 +122,7 @@ public: /// A single binding to a joint. class Cluster { public: - - int jointIndex; + uint32_t jointIndex; glm::mat4 inverseBindMatrix; Transform inverseBindTransform; }; @@ -289,7 +288,8 @@ public: class TransformNode { public: - uint32_t parent { 0 }; + static const uint32_t INVALID_PARENT_INDEX{ (uint32_t)-1 }; + uint32_t parent { INVALID_PARENT_INDEX }; Transform transform; }; diff --git a/tests-manual/fbx/CMakeLists.txt b/tests-manual/fbx/CMakeLists.txt new file mode 100644 index 0000000000..7221f081fe --- /dev/null +++ b/tests-manual/fbx/CMakeLists.txt @@ -0,0 +1,11 @@ +set(TARGET_NAME fbx-test) +# This is not a testcase -- just set it up as a regular hifi project +setup_hifi_project(Quick Gui) +setup_memory_debugger() +set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") + +file(GLOB_RECURSE GLB_TEST_FILES "c:/Users/bdavi/git/glTF-Sample-Models/2.0/*.glb") +list(JOIN GLB_TEST_FILES "|" GLB_TEST_FILES) +target_compile_definitions(${TARGET_NAME} PRIVATE -DGLB_TEST_FILES="${GLB_TEST_FILES}") +link_hifi_libraries(shared graphics networking image gpu hfm fbx) +package_libraries_for_deployment() diff --git a/tests-manual/fbx/src/main.cpp b/tests-manual/fbx/src/main.cpp new file mode 100644 index 0000000000..66c3a4f30e --- /dev/null +++ b/tests-manual/fbx/src/main.cpp @@ -0,0 +1,77 @@ +// +// Created by Bradley Austin Davis on 2018/01/11 +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include +#include + +#include + +#include +#include +#include +#include + +#include + +// Currently only used by testing code +inline std::list splitString(const std::string& source, const char delimiter = ' ') { + std::list result; + size_t start = 0, next; + + while (std::string::npos != (next = source.find(delimiter, start))) { + std::string sub = source.substr(start, next - start); + if (!sub.empty()) { + result.push_back(sub); + } + start = next + 1; + } + if (source.size() > start) { + result.push_back(source.substr(start)); + } + return result; +} + +std::list getGlbTestFiles() { + return splitString(GLB_TEST_FILES, '|'); +} + +QtMessageHandler originalHandler; + +void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { +#if defined(Q_OS_WIN) + OutputDebugStringA(message.toStdString().c_str()); + OutputDebugStringA("\n"); +#endif + originalHandler(type, context, message); +} + +QByteArray readFileBytes(const std::string& filename) { + QFile file(filename.c_str()); + file.open(QFile::ReadOnly); + QByteArray result = file.readAll(); + file.close(); + return result; +} + +void processFile(const std::string& filename) { + qDebug() << filename.c_str(); + GLTFSerializer().read(readFileBytes(filename), {}, QUrl::fromLocalFile(filename.c_str())); +} + +int main(int argc, char** argv) { + QCoreApplication app{ argc, argv }; + originalHandler = qInstallMessageHandler(messageHandler); + + DependencyManager::set(false); + + //processFile("c:/Users/bdavi/git/glTF-Sample-Models/2.0/Box/glTF-Binary/Box.glb"); + + for (const auto& testFile : getGlbTestFiles()) { + processFile(testFile); + } +} From 85b22be68b0a7151e02e8cd63d7dd6383e31d296 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Mon, 23 Sep 2019 16:42:34 -0700 Subject: [PATCH 025/547] Fixing warnings --- libraries/fbx/src/FBXSerializer.cpp | 4 ++-- libraries/fbx/src/GLTFSerializer.cpp | 26 +++++++++++--------------- libraries/hfm/src/hfm/HFM.h | 3 ++- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f3c620c929..4ce12d30e4 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1480,7 +1480,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // of skinning information in FBX QString jointID = _connectionChildMap.value(clusterID); hfmCluster.jointIndex = modelIDs.indexOf(jointID); - if (hfmCluster.jointIndex == -1) { + if (hfmCluster.jointIndex == HFMCluster::INVALID_JOINT_INDEX) { qCDebug(modelformat) << "Joint not in model list: " << jointID; hfmCluster.jointIndex = 0; } @@ -1514,7 +1514,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const { HFMCluster cluster; cluster.jointIndex = modelIDs.indexOf(modelID); - if (cluster.jointIndex == -1) { + if (cluster.jointIndex == HFMCluster::INVALID_JOINT_INDEX) { qCDebug(modelformat) << "Model not in model list: " << modelID; cluster.jointIndex = 0; } diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index fe63159543..29b65e98c0 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1002,22 +1002,8 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } - // Build transforms - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - auto& gltfNode = _file.nodes[nodeIndex]; - //gltfNode.transforms.push_back(getModelTransform(gltfNode)); - gltf::ParentIndexMap::const_iterator parentItr; - int curNode = nodeIndex; - while (parentsEnd != (parentItr = parentIndices.find(curNode))) { - curNode = parentItr->second; - auto& ancestorNode = _file.nodes[curNode]; - //gltfNode.transforms.push_back(getModelTransform(ancestorNode)); - } - } - // Build joints HFMJoint joint; - joint.distanceToParent = 0; hfmModel.jointIndices["x"] = numNodes; QVector globalTransforms; globalTransforms.resize(numNodes); @@ -1104,7 +1090,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& hfmModel.materials.emplace_back(); HFMMaterial& hfmMaterial = hfmModel.materials.back(); hfmMaterial._material = std::make_shared(); - hfmMaterial.materialID = hfmMaterial.name; + hfmMaterial.materialID = matid; setHFMMaterial(hfmMaterial, material); } @@ -1229,6 +1215,10 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& success = addArrayFromAttribute(vertexAttribute, accessor, colors); weightStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); break; + + default: + success = false; + break; } if (!success) { continue; @@ -2031,9 +2021,15 @@ bool GLTFSerializer::addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttr if (!addArrayFromAccessor(accessor, outarray)) { qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; + return false; } + + default: + qWarning(modelformat) << "Unexpected attribute type" << _url; + return false; } + return true; } diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 497bb60568..39c123e9df 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -122,7 +122,8 @@ public: /// A single binding to a joint. class Cluster { public: - uint32_t jointIndex; + static const uint32_t INVALID_JOINT_INDEX{ (uint32_t)-1 }; + uint32_t jointIndex{ INVALID_JOINT_INDEX }; glm::mat4 inverseBindMatrix; Transform inverseBindTransform; }; From 725d4ee6432b883e95c444bea30153f2e800e8b6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 24 Sep 2019 10:57:16 -0700 Subject: [PATCH 026/547] Fix build warnings --- libraries/fbx/src/FBXSerializer.cpp | 4 ++-- libraries/hfm/src/hfm/HFM.h | 3 ++- .../model-baker/src/model-baker/BuildGraphicsMeshTask.cpp | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f3c620c929..e6b4a62b51 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1480,7 +1480,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // of skinning information in FBX QString jointID = _connectionChildMap.value(clusterID); hfmCluster.jointIndex = modelIDs.indexOf(jointID); - if (hfmCluster.jointIndex == -1) { + if (hfmCluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { qCDebug(modelformat) << "Joint not in model list: " << jointID; hfmCluster.jointIndex = 0; } @@ -1514,7 +1514,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const { HFMCluster cluster; cluster.jointIndex = modelIDs.indexOf(modelID); - if (cluster.jointIndex == -1) { + if (cluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { qCDebug(modelformat) << "Model not in model list: " << modelID; cluster.jointIndex = 0; } diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index d13cf3e2d0..51c5f929d8 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -124,7 +124,8 @@ public: /// A single binding to a joint. class Cluster { public: - uint32_t jointIndex; + static const uint32_t INVALID_JOINT_INDEX { (uint32_t)-1 }; + uint32_t jointIndex { INVALID_JOINT_INDEX }; glm::mat4 inverseBindMatrix; Transform inverseBindTransform; }; diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index a9a544c34a..ea05b81d1f 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -45,7 +45,6 @@ ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::Dy weightAccumulators.resize(numClusterIndices, 0.0f); for (uint16_t i = 0; i < (uint16_t)deformers.size(); ++i) { const hfm::Deformer& deformer = *deformers[i]; - const hfm::Cluster& cluster = dynamicTransform->clusters[i]; if (deformer.indices.size() != deformer.weights.size()) { reweightedDeformers.trimmedToMatch = true; From c4a1fe9a006ef3a17ea5f3a8842991a53cfa56a8 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 24 Sep 2019 11:05:33 -0700 Subject: [PATCH 027/547] Warnings --- libraries/fbx/src/GLTFSerializer.cpp | 18 +++++++++++------- libraries/hfm/src/hfm/HFM.cpp | 2 +- libraries/hfm/src/hfm/HFM.h | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 29b65e98c0..774c63e8dd 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1094,20 +1094,25 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& setHFMMaterial(hfmMaterial, material); } + + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + } + + int meshCount = _file.meshes.size(); hfmModel.meshes.resize(meshCount); hfmModel.meshExtents.reset(); - - hfmModel.meshes.resize(meshCount); for (int meshIndex = 0; meshIndex < meshCount; ++meshIndex) { const auto& gltfMesh = _file.meshes[meshIndex]; auto& mesh = hfmModel.meshes[meshIndex]; mesh.meshIndex = meshIndex; -#if 0 + if (!hfmModel.hasSkeletonJoints) { HFMCluster cluster; +#if 0 cluster.jointIndex = nodeIndex; +#endif cluster.inverseBindMatrix = glm::mat4(); cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); mesh.clusters.append(cluster); @@ -1125,7 +1130,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; root.inverseBindTransform = Transform(root.inverseBindMatrix); mesh.clusters.append(root); -#endif QSet meshAttributes; for(const auto &primitive : gltfMesh.primitives) { @@ -1466,7 +1470,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } -#if 0 // Build weights (adapted from FBXSerializer.cpp) if (hfmModel.hasSkeletonJoints) { int prevMeshClusterIndexCount = mesh.clusterIndices.count(); @@ -1481,10 +1484,12 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.clusterWeights.push_back(0); } +#if 0 for (int c = 0; c < clusterJoints.size(); ++c) { mesh.clusterIndices[prevMeshClusterIndexCount + c] = originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; } +#endif // normalize and compress to 16-bits for (int i = 0; i < numVertices; ++i) { @@ -1518,7 +1523,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } } -#endif #if 0 if (primitive.defined["material"]) { @@ -1622,9 +1626,9 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); - } + for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { const auto& node = _file.nodes[nodeIndex]; if (-1 == node.mesh) { diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index ae68c15045..3a61ebb6b9 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -175,7 +175,7 @@ void HFMModel::computeKdops() { // NOTE: points are in joint-frame ShapeVertices& points = shapeVertices.at(i); - glm::quat rotOffset = jointRotationOffsets.contains(i) ? glm::inverse(jointRotationOffsets[i]) : quat(); + glm::quat rotOffset = jointRotationOffsets.contains((int)i) ? glm::inverse(jointRotationOffsets[i]) : quat(); if (points.size() > 0) { // compute average point glm::vec3 avgPoint = glm::vec3(0.0f); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 39c123e9df..1a3a5ecdb2 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -124,7 +124,7 @@ class Cluster { public: static const uint32_t INVALID_JOINT_INDEX{ (uint32_t)-1 }; uint32_t jointIndex{ INVALID_JOINT_INDEX }; - glm::mat4 inverseBindMatrix; + glm::mat4 inverseBindMatrix{ glm::mat4{ 1.0 } }; Transform inverseBindTransform; }; From 911fd27fc53a7c171887a6f3268930eb8fa35d2d Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 24 Sep 2019 15:34:51 -0700 Subject: [PATCH 028/547] wip --- libraries/fbx/src/GLTFSerializer.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 774c63e8dd..3d78202092 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1472,8 +1472,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& // Build weights (adapted from FBXSerializer.cpp) if (hfmModel.hasSkeletonJoints) { - int prevMeshClusterIndexCount = mesh.clusterIndices.count(); - int prevMeshClusterWeightCount = mesh.clusterWeights.count(); const int WEIGHTS_PER_VERTEX = 4; const float ALMOST_HALF = 0.499f; int numVertices = mesh.vertices.size() - prevMeshVerticesCount; @@ -1485,6 +1483,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } #if 0 + int prevMeshClusterIndexCount = mesh.clusterIndices.count(); for (int c = 0; c < clusterJoints.size(); ++c) { mesh.clusterIndices[prevMeshClusterIndexCount + c] = originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; @@ -1492,6 +1491,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& #endif // normalize and compress to 16-bits + int prevMeshClusterWeightCount = mesh.clusterWeights.count(); for (int i = 0; i < numVertices; ++i) { int j = i * WEIGHTS_PER_VERTEX; @@ -1507,20 +1507,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } else { mesh.clusterWeights[prevMeshClusterWeightCount + j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); } - for (int clusterIndex = 0; clusterIndex < mesh.clusters.size() - 1; ++clusterIndex) { - ShapeVertices& points = hfmModel.shapeVertices.at(clusterIndex); - glm::vec3 globalMeshScale = extractScale(globalTransforms[nodeIndex]); - const glm::mat4 meshToJoint = glm::scale(glm::mat4(), globalMeshScale) * jointInverseBindTransforms[clusterIndex]; - - const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; - if (mesh.clusterWeights[j] >= EXPANSION_WEIGHT_THRESHOLD) { - // TODO: fix transformed vertices being pushed back - auto& vertex = mesh.vertices[i]; - const glm::mat4 vertexTransform = meshToJoint * (glm::translate(glm::mat4(), vertex)); - glm::vec3 transformedVertex = hfmModel.joints[clusterIndex].translation * (extractTranslation(vertexTransform)); - points.push_back(transformedVertex); - } - } } } From af460d7f5fbbe9a2a6aaea3dba504045a809707a Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 25 Sep 2019 15:22:29 -0700 Subject: [PATCH 029/547] Add hfm::Shape::transformedExtents. Mark select hfm fields as deprecated. --- libraries/hfm/src/hfm/HFM.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 51c5f929d8..d4d6dd33d0 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -158,7 +158,7 @@ public: QVector quadTrianglesIndices; // original indices from the FBX mesh of the quad converted as triangles QVector triangleIndices; // original indices from the FBX mesh - QString materialID; + QString materialID; // DEPRECATED }; class Material { @@ -238,14 +238,14 @@ public: QVector colors; QVector texCoords; QVector texCoords1; - QVector clusterIndices; - QVector clusterWeights; + QVector clusterIndices; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::deformers, hfm::Deformer) + QVector clusterWeights; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::deformers, hfm::Deformer) QVector originalIndices; - QVector clusters; + QVector clusters; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::clusters) - Extents meshExtents; - glm::mat4 modelTransform; + Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) + glm::mat4 modelTransform; // DEPRECATED (see hfm::Shape::transform, hfm::TransformNode, hfm::Model::transforms) QVector blendshapes; @@ -317,6 +317,8 @@ public: uint32_t meshPart { UNDEFINED_KEY }; uint32_t material { UNDEFINED_KEY }; uint32_t transform { UNDEFINED_KEY }; // The static transform node when not taking into account rigging/skinning + // TODO: Have all serializers calculate hfm::Shape::transformedExtents in world space where they previously calculated hfm::Mesh::meshExtents. Change all code that uses hfm::Mesh::meshExtents to use this instead. + Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after the transform node and parent transform nodes are applied, while not taking into account rigging/skinning uint32_t dynamicTransform { UNDEFINED_KEY }; }; From 2077da6f371bdba5cdb7fb13c8f89dc67085dde4 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 26 Sep 2019 17:02:42 -0700 Subject: [PATCH 030/547] Create ReweightDeformersTask --- .../model-baker/src/model-baker/Baker.cpp | 8 +- .../model-baker/src/model-baker/BakerTypes.h | 8 ++ .../src/model-baker/BuildGraphicsMeshTask.cpp | 110 +++------------- .../src/model-baker/BuildGraphicsMeshTask.h | 6 +- .../src/model-baker/ReweightDeformersTask.cpp | 119 ++++++++++++++++++ .../src/model-baker/ReweightDeformersTask.h | 29 +++++ 6 files changed, 180 insertions(+), 100 deletions(-) create mode 100644 libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp create mode 100644 libraries/model-baker/src/model-baker/ReweightDeformersTask.h diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index 1a68d3508d..a567537105 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -13,6 +13,7 @@ #include "BakerTypes.h" #include "ModelMath.h" +#include "ReweightDeformersTask.h" #include "BuildGraphicsMeshTask.h" #include "CalculateMeshNormalsTask.h" #include "CalculateMeshTangentsTask.h" @@ -151,8 +152,13 @@ namespace baker { const auto calculateBlendshapeTangentsInputs = CalculateBlendshapeTangentsTask::Input(normalsPerBlendshapePerMesh, blendshapesPerMeshIn, meshesIn).asVarying(); const auto tangentsPerBlendshapePerMesh = model.addJob("CalculateBlendshapeTangents", calculateBlendshapeTangentsInputs); + // Skinning weight calculations + // NOTE: Due to limitations in the current graphics::MeshPointer representation, the output list of ReweightedDeformers is per-mesh. An element is empty if there are no deformers for the mesh of the same index. + const auto reweightDeformersInputs = ReweightDeformersTask::Input(meshesIn, shapesIn, dynamicTransformsIn, deformersIn).asVarying(); + const auto reweightedDeformers = model.addJob("ReweightDeformers", reweightDeformersInputs); + // Build the graphics::MeshPointer for each hfm::Mesh - const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, dynamicTransformsIn, deformersIn).asVarying(); + const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, dynamicTransformsIn, reweightedDeformers).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); // Prepare joint information diff --git a/libraries/model-baker/src/model-baker/BakerTypes.h b/libraries/model-baker/src/model-baker/BakerTypes.h index 3d16afab2e..8760fa6db4 100644 --- a/libraries/model-baker/src/model-baker/BakerTypes.h +++ b/libraries/model-baker/src/model-baker/BakerTypes.h @@ -36,6 +36,14 @@ namespace baker { using TangentsPerBlendshape = std::vector>; using MeshIndicesToModelNames = QHash; + + class ReweightedDeformers { + public: + std::vector indices; + std::vector weights; + uint16_t weightsPerVertex { 0 }; + bool trimmedToMatch { false }; + }; }; #endif // hifi_BakerTypes_h diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index ea05b81d1f..deacd6a977 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -2,8 +2,8 @@ // BuildGraphicsMeshTask.h // model-baker/src/model-baker // -// Created by Sabrina Shanman on 2018/12/06. -// Copyright 2018 High Fidelity, Inc. +// Created by Sabrina Shanman on 2019/09/16. +// Copyright 2019 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -27,83 +27,7 @@ glm::vec3 normalizeDirForPacking(const glm::vec3& dir) { return dir; } -class ReweightedDeformers { -public: - std::vector indices; - std::vector weights; - bool trimmedToMatch { false }; -}; - -ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::DynamicTransform* dynamicTransform, const std::vector deformers, const uint16_t weightsPerVertex) { - size_t numClusterIndices = numMeshVertices * weightsPerVertex; - ReweightedDeformers reweightedDeformers; - // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. - reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(deformers.size() - 1)); - reweightedDeformers.weights.resize(numClusterIndices, 0); - - std::vector weightAccumulators; - weightAccumulators.resize(numClusterIndices, 0.0f); - for (uint16_t i = 0; i < (uint16_t)deformers.size(); ++i) { - const hfm::Deformer& deformer = *deformers[i]; - - if (deformer.indices.size() != deformer.weights.size()) { - reweightedDeformers.trimmedToMatch = true; - } - size_t numIndicesOrWeights = std::min(deformer.indices.size(), deformer.weights.size()); - for (size_t j = 0; j < numIndicesOrWeights; ++j) { - uint32_t index = deformer.indices[j]; - float weight = deformer.weights[j]; - - // look for an unused slot in the weights vector - uint32_t weightIndex = index * weightsPerVertex; - uint32_t lowestIndex = -1; - float lowestWeight = FLT_MAX; - uint16_t k = 0; - for (; k < weightsPerVertex; k++) { - if (weightAccumulators[weightIndex + k] == 0.0f) { - reweightedDeformers.indices[weightIndex + k] = i; - weightAccumulators[weightIndex + k] = weight; - break; - } - if (weightAccumulators[weightIndex + k] < lowestWeight) { - lowestIndex = k; - lowestWeight = weightAccumulators[weightIndex + k]; - } - } - if (k == weightsPerVertex && weight > lowestWeight) { - // no space for an additional weight; we must replace the lowest - weightAccumulators[weightIndex + lowestIndex] = weight; - reweightedDeformers.indices[weightIndex + lowestIndex] = i; - } - } - } - - // now that we've accumulated the most relevant weights for each vertex - // normalize and compress to 16-bits - for (size_t i = 0; i < numMeshVertices; ++i) { - size_t j = i * weightsPerVertex; - - // normalize weights into uint16_t - float totalWeight = 0.0f; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - totalWeight += weightAccumulators[k]; - } - - const float ALMOST_HALF = 0.499f; - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); - } - } else { - reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); - } - } - - return reweightedDeformers; -} - -void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, const hfm::DynamicTransform* dynamicTransform, const std::vector meshDeformers) { +void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, uint16_t numDeformerControllers, const baker::ReweightedDeformers reweightedDeformers) { auto graphicsMesh = std::make_shared(); // Fill tangents with a dummy value to force tangents to be present if there are normals @@ -162,19 +86,16 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Support for 4 skinning clusters: // 4 Indices are uint8 ideally, uint16 if more than 256. - const auto clusterIndiceElement = ((meshDeformers.size() < (size_t)UINT8_MAX) ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); + const auto clusterIndiceElement = ((numDeformerControllers < (uint16_t)UINT8_MAX) ? gpu::Element(gpu::VEC4, gpu::UINT8, gpu::XYZW) : gpu::Element(gpu::VEC4, gpu::UINT16, gpu::XYZW)); // 4 Weights are normalized 16bits const auto clusterWeightElement = gpu::Element(gpu::VEC4, gpu::NUINT16, gpu::XYZW); - // Calculate a more condensed view of all the deformer weights - const uint16_t NUM_CLUSTERS_PER_VERT = 4; - ReweightedDeformers reweightedDeformers = getReweightedDeformers(hfmMesh.vertices.size(), dynamicTransform, meshDeformers, NUM_CLUSTERS_PER_VERT); // Cluster indices and weights must be the same sizes if (reweightedDeformers.trimmedToMatch) { HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); } // Record cluster sizes - const size_t numVertClusters = reweightedDeformers.indices.size() / NUM_CLUSTERS_PER_VERT; + const size_t numVertClusters = reweightedDeformers.indices.size() / reweightedDeformers.weightsPerVertex; const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); @@ -263,7 +184,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // Clusters data if (clusterIndicesSize > 0) { - if (meshDeformers.size() < UINT8_MAX) { + if (numDeformerControllers < (uint16_t)UINT8_MAX) { // yay! we can fit the clusterIndices within 8-bits int32_t numIndices = (int32_t)reweightedDeformers.indices.size(); std::vector packedDeformerIndices; @@ -461,7 +382,7 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& tangentsPerMesh = input.get4(); const auto& shapes = input.get5(); const auto& dynamicTransforms = input.get6(); - const auto& deformers = input.get7(); + const auto& reweightedDeformersPerMesh = input.get7(); // Currently, there is only (at most) one dynamicTransform per mesh // An undefined shape.dynamicTransform has the value hfm::UNDEFINED_KEY @@ -478,20 +399,17 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const for (int i = 0; i < n; i++) { graphicsMeshes.emplace_back(); auto& graphicsMesh = graphicsMeshes[i]; + const auto& reweightedDeformers = reweightedDeformersPerMesh[i]; - auto dynamicTransformIndex = dynamicTransformPerMesh[i]; - const hfm::DynamicTransform* dynamicTransform = nullptr; - std::vector meshDeformers; - if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { - dynamicTransform = &dynamicTransforms[dynamicTransformIndex]; - for (const auto& deformerIndex : dynamicTransform->deformers) { - const auto& deformer = deformers[deformerIndex]; - meshDeformers.push_back(&deformer); - } + uint16_t numDeformerControllers = 0; + if (reweightedDeformers.weightsPerVertex != 0) { + uint32_t dynamicTransformIndex = dynamicTransformPerMesh[i]; + const hfm::DynamicTransform& dynamicTransform = dynamicTransforms[dynamicTransformIndex]; + numDeformerControllers = (uint16_t)dynamicTransform.deformers.size(); } // Try to create the graphics::Mesh - buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), dynamicTransform, meshDeformers); + buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), numDeformerControllers, reweightedDeformers); // Choose a name for the mesh if (graphicsMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h index be1e4350be..1bb9b9be0c 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h @@ -2,8 +2,8 @@ // BuildGraphicsMeshTask.h // model-baker/src/model-baker // -// Created by Sabrina Shanman on 2018/12/06. -// Copyright 2018 High Fidelity, Inc. +// Created by Sabrina Shanman on 2019/09/16. +// Copyright 2019 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -20,7 +20,7 @@ class BuildGraphicsMeshTask { public: - using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp new file mode 100644 index 0000000000..2dd5030c78 --- /dev/null +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp @@ -0,0 +1,119 @@ +// +// ReweightDeformersTask.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/09/26. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "ReweightDeformersTask.h" + +baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::DynamicTransform* dynamicTransform, const std::vector deformers, const uint16_t weightsPerVertex) { + size_t numClusterIndices = numMeshVertices * weightsPerVertex; + baker::ReweightedDeformers reweightedDeformers; + reweightedDeformers.weightsPerVertex = weightsPerVertex; + // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. + reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(deformers.size() - 1)); + reweightedDeformers.weights.resize(numClusterIndices, 0); + + std::vector weightAccumulators; + weightAccumulators.resize(numClusterIndices, 0.0f); + for (uint16_t i = 0; i < (uint16_t)deformers.size(); ++i) { + const hfm::Deformer& deformer = *deformers[i]; + + if (deformer.indices.size() != deformer.weights.size()) { + reweightedDeformers.trimmedToMatch = true; + } + size_t numIndicesOrWeights = std::min(deformer.indices.size(), deformer.weights.size()); + for (size_t j = 0; j < numIndicesOrWeights; ++j) { + uint32_t index = deformer.indices[j]; + float weight = deformer.weights[j]; + + // look for an unused slot in the weights vector + uint32_t weightIndex = index * weightsPerVertex; + uint32_t lowestIndex = -1; + float lowestWeight = FLT_MAX; + uint16_t k = 0; + for (; k < weightsPerVertex; k++) { + if (weightAccumulators[weightIndex + k] == 0.0f) { + reweightedDeformers.indices[weightIndex + k] = i; + weightAccumulators[weightIndex + k] = weight; + break; + } + if (weightAccumulators[weightIndex + k] < lowestWeight) { + lowestIndex = k; + lowestWeight = weightAccumulators[weightIndex + k]; + } + } + if (k == weightsPerVertex && weight > lowestWeight) { + // no space for an additional weight; we must replace the lowest + weightAccumulators[weightIndex + lowestIndex] = weight; + reweightedDeformers.indices[weightIndex + lowestIndex] = i; + } + } + } + + // now that we've accumulated the most relevant weights for each vertex + // normalize and compress to 16-bits + for (size_t i = 0; i < numMeshVertices; ++i) { + size_t j = i * weightsPerVertex; + + // normalize weights into uint16_t + float totalWeight = 0.0f; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + totalWeight += weightAccumulators[k]; + } + + const float ALMOST_HALF = 0.499f; + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); + } + } else { + reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + } + } + + return reweightedDeformers; +} + +void ReweightDeformersTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { + const uint16_t NUM_WEIGHTS_PER_VERTEX { 4 }; + + const auto& meshes = input.get0(); + const auto& shapes = input.get1(); + const auto& dynamicTransforms = input.get2(); + const auto& deformers = input.get3(); + auto& reweightedDeformers = output; + + // Currently, there is only (at most) one dynamicTransform per mesh + // An undefined shape.dynamicTransform has the value hfm::UNDEFINED_KEY + std::vector dynamicTransformPerMesh; + dynamicTransformPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); + for (const auto& shape : shapes) { + uint32_t dynamicTransformIndex = shape.dynamicTransform; + dynamicTransformPerMesh[shape.mesh] = dynamicTransformIndex; + } + + reweightedDeformers.reserve(meshes.size()); + for (size_t i = 0; i < meshes.size(); ++i) { + const auto& mesh = meshes[i]; + uint32_t dynamicTransformIndex = dynamicTransformPerMesh[i]; + + const hfm::DynamicTransform* dynamicTransform = nullptr; + std::vector meshDeformers; + if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { + dynamicTransform = &dynamicTransforms[dynamicTransformIndex]; + for (const auto& deformerIndex : dynamicTransform->deformers) { + const auto& deformer = deformers[deformerIndex]; + meshDeformers.push_back(&deformer); + } + } + + reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), dynamicTransform, meshDeformers, NUM_WEIGHTS_PER_VERTEX)); + } +} diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.h b/libraries/model-baker/src/model-baker/ReweightDeformersTask.h new file mode 100644 index 0000000000..98befa8000 --- /dev/null +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.h @@ -0,0 +1,29 @@ +// +// ReweightDeformersTask.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/09/26. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_ReweightDeformersTask_h +#define hifi_ReweightDeformersTask_h + +#include + +#include "Engine.h" +#include "BakerTypes.h" + +class ReweightDeformersTask { +public: + using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; + using Output = std::vector; + using JobModel = baker::Job::ModelIO; + + void run(const baker::BakeContextPointer& context, const Input& input, Output& output); +}; + +#endif // hifi_ReweightDeformersTask_h From 9518aa9ed03433065ee2d5aa7087baabcfdf698f Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Fri, 27 Sep 2019 08:33:55 -0700 Subject: [PATCH 031/547] . --- libraries/fbx/src/GLTFSerializer.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 3d78202092..7fdbcce141 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1482,14 +1482,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.clusterWeights.push_back(0); } -#if 0 - int prevMeshClusterIndexCount = mesh.clusterIndices.count(); - for (int c = 0; c < clusterJoints.size(); ++c) { - mesh.clusterIndices[prevMeshClusterIndexCount + c] = - originalToNewNodeIndexMap[_file.skins[node.skin].joints[clusterJoints[c]]]; - } -#endif - // normalize and compress to 16-bits int prevMeshClusterWeightCount = mesh.clusterWeights.count(); for (int i = 0; i < numVertices; ++i) { @@ -1510,12 +1502,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } -#if 0 - if (primitive.defined["material"]) { - part.materialID = materialIDs[primitive.material]; - } -#endif - mesh.parts.push_back(part); // populate the texture coordinates if they don't exist From cd94dc15f9fd4d05368704246c70b118f7f623aa Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 27 Sep 2019 16:13:55 -0700 Subject: [PATCH 032/547] Add CollectShapeVerticesTask --- .../model-baker/src/model-baker/Baker.cpp | 11 ++- .../model-baker/CollectShapeVerticesTask.cpp | 92 +++++++++++++++++++ .../model-baker/CollectShapeVerticesTask.h | 30 ++++++ 3 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp create mode 100644 libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index a567537105..ccb5e1816f 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -14,6 +14,7 @@ #include "BakerTypes.h" #include "ModelMath.h" #include "ReweightDeformersTask.h" +#include "CollectShapeVerticesTask.h" #include "BuildGraphicsMeshTask.h" #include "CalculateMeshNormalsTask.h" #include "CalculateMeshTangentsTask.h" @@ -105,7 +106,7 @@ namespace baker { class BuildModelTask { public: - using Input = VaryingSet6, std::vector, QMap, QHash, FlowData>; + using Input = VaryingSet7, std::vector, QMap, QHash, FlowData, std::vector>; using Output = hfm::Model::Pointer; using JobModel = Job::ModelIO; @@ -116,6 +117,9 @@ namespace baker { hfmModelOut->jointRotationOffsets = input.get3(); hfmModelOut->jointIndices = input.get4(); hfmModelOut->flowData = input.get5(); + hfmModelOut->shapeVertices = input.get6(); + // These depend on the ShapeVertices + // TODO: Create a task for this rather than calculating it here hfmModelOut->computeKdops(); output = hfmModelOut; } @@ -156,6 +160,9 @@ namespace baker { // NOTE: Due to limitations in the current graphics::MeshPointer representation, the output list of ReweightedDeformers is per-mesh. An element is empty if there are no deformers for the mesh of the same index. const auto reweightDeformersInputs = ReweightDeformersTask::Input(meshesIn, shapesIn, dynamicTransformsIn, deformersIn).asVarying(); const auto reweightedDeformers = model.addJob("ReweightDeformers", reweightDeformersInputs); + // Shape vertices are included/rejected based on skinning weight, and thus must use the reweighted deformers. + const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, dynamicTransformsIn, reweightedDeformers).asVarying(); + const auto shapeVerticesPerJoint = model.addJob("CollectShapeVertices", collectShapeVerticesInputs); // Build the graphics::MeshPointer for each hfm::Mesh const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, dynamicTransformsIn, reweightedDeformers).asVarying(); @@ -191,7 +198,7 @@ namespace baker { const auto blendshapesPerMeshOut = model.addJob("BuildBlendshapes", buildBlendshapesInputs); const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); const auto meshesOut = model.addJob("BuildMeshes", buildMeshesInputs); - const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData).asVarying(); + const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData, shapeVerticesPerJoint).asVarying(); const auto hfmModelOut = model.addJob("BuildModel", buildModelInputs); output = Output(hfmModelOut, materialMapping, dracoMeshes, dracoErrors, materialList); diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp new file mode 100644 index 0000000000..755b61b7df --- /dev/null +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -0,0 +1,92 @@ +// +// CollectShapeVerticesTask.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/09/27. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "CollectShapeVerticesTask.h" + +#include + +// Used to track and avoid duplicate shape vertices, as multiple shapes can have the same mesh and dynamicTransform +class VertexSource { +public: + uint32_t mesh; + uint32_t dynamicTransform; + + bool operator==(const VertexSource& other) const { + return mesh == other.mesh && + dynamicTransform == other.dynamicTransform; + } +}; + +void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { + const auto& meshes = input.get0(); + const auto& shapes = input.get1(); + const auto& joints = input.get2(); + const auto& dynamicTransforms = input.get3(); + const auto& reweightedDeformers = input.get4(); + auto& shapeVerticesPerJoint = output; + + shapeVerticesPerJoint.reserve(joints.size()); + std::vector> vertexSourcesPerJoint; + vertexSourcesPerJoint.resize(joints.size()); + for (size_t i = 0; i < shapes.size(); ++i) { + const auto& shape = shapes[i]; + const uint32_t dynamicTransformKey = shape.dynamicTransform; + if (dynamicTransformKey == hfm::UNDEFINED_KEY) { + continue; + } + + VertexSource vertexSource; + vertexSource.mesh = shape.mesh; + vertexSource.dynamicTransform = dynamicTransformKey; + + const auto& dynamicTransform = dynamicTransforms[dynamicTransformKey]; + for (size_t j = 0; j < dynamicTransform.clusters.size(); ++j) { + const auto& cluster = dynamicTransform.clusters[j]; + const uint32_t jointIndex = cluster.jointIndex; + + auto& vertexSources = vertexSourcesPerJoint[jointIndex]; + if (std::find(vertexSources.cbegin(), vertexSources.cend(), vertexSource) == vertexSources.cend()) { + vertexSources.push_back(vertexSource); + auto& shapeVertices = shapeVerticesPerJoint[jointIndex]; + + const uint16_t deformerIndex = dynamicTransform.deformers[j]; + const auto& mesh = meshes[shape.mesh]; + const auto& vertices = mesh.vertices; + const auto& reweightedDeformer = reweightedDeformers[shape.mesh]; + const glm::mat4 meshToJoint = cluster.inverseBindMatrix; + + const uint16_t weightsPerVertex = reweightedDeformer.weightsPerVertex; + if (weightsPerVertex == 0) { + for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { + const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); + shapeVertices.push_back(extractTranslation(vertexTransform)); + } + } else { + for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { + for (uint16_t weightIndex = 0; weightIndex < weightsPerVertex; ++weightIndex) { + const size_t index = vertexIndex*4 + weightIndex; + const uint16_t clusterIndex = reweightedDeformer.indices[index]; + const uint16_t clusterWeight = reweightedDeformer.weights[index]; + // Remember vertices associated with this joint with at least 1/4 weight + const uint16_t EXPANSION_WEIGHT_THRESHOLD = std::numeric_limits::max() / 4; + if (clusterIndex != j || clusterWeight < EXPANSION_WEIGHT_THRESHOLD) { + continue; + } + + const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); + shapeVertices.push_back(extractTranslation(vertexTransform)); + } + } + } + } + } + } +} diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h new file mode 100644 index 0000000000..3111dcadc1 --- /dev/null +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h @@ -0,0 +1,30 @@ +// +// CollectShapeVerticesTask.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/09/27. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CollectShapeVerticesTask_h +#define hifi_CollectShapeVerticesTask_h + +#include + +#include "Engine.h" +#include "BakerTypes.h" + +class CollectShapeVerticesTask { +public: + using Input = baker::VaryingSet5, std::vector, std::vector, std::vector, std::vector>; + using Output = std::vector; + using JobModel = baker::Job::ModelIO; + + void run(const baker::BakeContextPointer& context, const Input& input, Output& output); +}; + +#endif // hifi_CollectShapeVerticesTask_h + From b4c50b3f48fde359affe672ae9890ae86a8d21c1 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 27 Sep 2019 17:46:12 -0700 Subject: [PATCH 033/547] Remove unused parameter from getReweightedDeformers --- .../model-baker/src/model-baker/ReweightDeformersTask.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp index 2dd5030c78..98f9d419ba 100644 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp @@ -11,7 +11,7 @@ #include "ReweightDeformersTask.h" -baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const hfm::DynamicTransform* dynamicTransform, const std::vector deformers, const uint16_t weightsPerVertex) { +baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const std::vector deformers, const uint16_t weightsPerVertex) { size_t numClusterIndices = numMeshVertices * weightsPerVertex; baker::ReweightedDeformers reweightedDeformers; reweightedDeformers.weightsPerVertex = weightsPerVertex; @@ -114,6 +114,6 @@ void ReweightDeformersTask::run(const baker::BakeContextPointer& context, const } } - reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), dynamicTransform, meshDeformers, NUM_WEIGHTS_PER_VERTEX)); + reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), meshDeformers, NUM_WEIGHTS_PER_VERTEX)); } } From f773bdeca264d629cbacb3fd83d085f11c55b8cb Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 30 Sep 2019 09:07:42 -0700 Subject: [PATCH 034/547] Remove unused variable --- .../model-baker/src/model-baker/CollectShapeVerticesTask.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp index 755b61b7df..8aeb0145d5 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -57,7 +57,6 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con vertexSources.push_back(vertexSource); auto& shapeVertices = shapeVerticesPerJoint[jointIndex]; - const uint16_t deformerIndex = dynamicTransform.deformers[j]; const auto& mesh = meshes[shape.mesh]; const auto& vertices = mesh.vertices; const auto& reweightedDeformer = reweightedDeformers[shape.mesh]; From 6eed3e43bcafc67484c7d0694d71f4c9199125ec Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 2 Oct 2019 12:47:04 -0700 Subject: [PATCH 035/547] Fix skinning deformer data being added to graphics::Mesh even if the mesh has no skinning --- .../model-baker/src/model-baker/ReweightDeformersTask.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp index 98f9d419ba..097833e110 100644 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp @@ -12,8 +12,12 @@ #include "ReweightDeformersTask.h" baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const std::vector deformers, const uint16_t weightsPerVertex) { - size_t numClusterIndices = numMeshVertices * weightsPerVertex; baker::ReweightedDeformers reweightedDeformers; + if (deformers.size() == 0) { + return reweightedDeformers; + } + + size_t numClusterIndices = numMeshVertices * weightsPerVertex; reweightedDeformers.weightsPerVertex = weightsPerVertex; // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(deformers.size() - 1)); From 001718224eece68d2f95493c0b29c7b92c6d0324 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 2 Oct 2019 14:39:00 -0700 Subject: [PATCH 036/547] fine tune the recent changes to be able to return to rendering of the hfm::Mesh loaded, not the shapes yet --- .../model-baker/src/model-baker/BuildGraphicsMeshTask.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index deacd6a977..8c27968de9 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -95,7 +95,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); } // Record cluster sizes - const size_t numVertClusters = reweightedDeformers.indices.size() / reweightedDeformers.weightsPerVertex; + const size_t numVertClusters = (reweightedDeformers.weightsPerVertex ? hfmMesh.clusterIndices.size() / reweightedDeformers.weightsPerVertex : 0); const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); @@ -404,8 +404,10 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const uint16_t numDeformerControllers = 0; if (reweightedDeformers.weightsPerVertex != 0) { uint32_t dynamicTransformIndex = dynamicTransformPerMesh[i]; - const hfm::DynamicTransform& dynamicTransform = dynamicTransforms[dynamicTransformIndex]; - numDeformerControllers = (uint16_t)dynamicTransform.deformers.size(); + if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { + const hfm::DynamicTransform& dynamicTransform = dynamicTransforms[dynamicTransformIndex]; + numDeformerControllers = (uint16_t)dynamicTransform.deformers.size(); + } } // Try to create the graphics::Mesh From bac22c69c1ed645b3b1adfc494936c8e5c27c948 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 11 Sep 2019 17:17:30 -0700 Subject: [PATCH 037/547] Move ExtractedMesh out of HFM --- libraries/fbx/src/FBXSerializer.h | 9 ++++++++- libraries/hfm/src/hfm/HFM.h | 9 --------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.h b/libraries/fbx/src/FBXSerializer.h index 7d41f98444..c9468708a6 100644 --- a/libraries/fbx/src/FBXSerializer.h +++ b/libraries/fbx/src/FBXSerializer.h @@ -100,7 +100,14 @@ public: {} }; -class ExtractedMesh; +class ExtractedMesh { +public: + hfm::Mesh mesh; + QMultiHash newIndices; + QVector > blendshapeIndexMaps; + QVector > partMaterialTextures; + QHash texcoordSetMap; +}; class FBXSerializer : public HFMSerializer { public: diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index d4d6dd33d0..29c4af9ec9 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -381,15 +381,6 @@ public: }; -class ExtractedMesh { -public: - hfm::Mesh mesh; - QMultiHash newIndices; - QVector > blendshapeIndexMaps; - QVector > partMaterialTextures; - QHash texcoordSetMap; -}; - typedef hfm::Blendshape HFMBlendshape; typedef hfm::JointShapeInfo HFMJointShapeInfo; typedef hfm::Joint HFMJoint; From ff5fef9c3a18326d45529cc3c4b269b395cf190c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 12 Sep 2019 10:58:52 -0700 Subject: [PATCH 038/547] Update FBXSerializer to reference shapes, support instancing (deformers WIP) --- libraries/fbx/src/FBXSerializer.cpp | 527 ++++++++++++----------- libraries/fbx/src/FBXSerializer.h | 1 + libraries/fbx/src/FBXSerializer_Mesh.cpp | 10 +- 3 files changed, 276 insertions(+), 262 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index e6b4a62b51..e8388451d4 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -145,40 +145,19 @@ public: bool isLimbNode; // is this FBXModel transform is a "LimbNode" i.e. a joint }; -glm::mat4 getGlobalTransform(const QMultiMap& _connectionParentMap, - const QHash& fbxModels, QString nodeID, bool mixamoHack, const QString& url) { - glm::mat4 globalTransform; - QVector visitedNodes; // Used to prevent following a cycle - while (!nodeID.isNull()) { - visitedNodes.append(nodeID); // Append each node we visit - - const FBXModel& fbxModel = fbxModels.value(nodeID); - globalTransform = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(fbxModel.preRotation * - fbxModel.rotation * fbxModel.postRotation) * fbxModel.postTransform * globalTransform; - if (fbxModel.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); - globalTransform = globalTransform * geometricOffset; - } - - if (mixamoHack) { - // there's something weird about the models from Mixamo Fuse; they don't skin right with the full transform - return globalTransform; - } - QList parentIDs = _connectionParentMap.values(nodeID); - nodeID = QString(); - foreach (const QString& parentID, parentIDs) { - if (visitedNodes.contains(parentID)) { - qCWarning(modelformat) << "Ignoring loop detected in FBX connection map for" << url; - continue; - } - +std::vector getModelIDsForMeshID(const QString& meshID, const QHash& fbxModels, const QMultiMap& _connectionParentMap) { + std::vector modelsForMesh; + if (fbxModels.contains(meshID)) { + modelsForMesh.push_back(meshID); + } else { + // This mesh may have more than one parent model, with different material and transform, representing a different instance of the mesh + for (const auto& parentID : _connectionParentMap.values(meshID)) { if (fbxModels.contains(parentID)) { - nodeID = parentID; - break; + modelsForMesh.push_back(parentID); } } } - return globalTransform; + return modelsForMesh; } class ExtractedBlendshape { @@ -404,7 +383,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const QVector blendshapes; QHash fbxModels; - QHash clusters; + QHash fbxClusters; QHash animationCurves; QHash typeFlags; @@ -1058,9 +1037,9 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - // skip empty clusters + // skip empty fbxClusters if (cluster.indices.size() > 0 && cluster.weights.size() > 0) { - clusters.insert(getID(object.properties), cluster); + fbxClusters.insert(getID(object.properties), cluster); } } else if (object.properties.last() == "BlendShapeChannel") { @@ -1233,13 +1212,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const QVector modelIDs; QSet remainingFBXModels; for (QHash::const_iterator fbxModel = fbxModels.constBegin(); fbxModel != fbxModels.constEnd(); fbxModel++) { - // models with clusters must be parented to the cluster top + // models with fbxClusters must be parented to the cluster top // Unless the model is a root node. bool isARootNode = !modelIDs.contains(_connectionParentMap.value(fbxModel.key())); if (!isARootNode) { foreach(const QString& deformerID, _connectionChildMap.values(fbxModel.key())) { foreach(const QString& clusterID, _connectionChildMap.values(deformerID)) { - if (!clusters.contains(clusterID)) { + if (!fbxClusters.contains(clusterID)) { continue; } QString topID = getTopModelID(_connectionParentMap, fbxModels, _connectionChildMap.value(clusterID), url); @@ -1283,8 +1262,15 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // convert the models to joints hfmModel.hasSkeletonJoints = false; + + // Note that these transform nodes are initially defined in world space + bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; + hfmModel.transforms.reserve(modelIDs.size()); + std::vector globalTransforms; + globalTransforms.reserve(modelIDs.size()); - foreach (const QString& modelID, modelIDs) { + int jointIndex = 0; + for (const QString& modelID : modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; joint.parentIndex = fbxModel.parentIndex; @@ -1358,6 +1344,42 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } hfmModel.joints.push_back(joint); + + // Now that we've initialized the joint, we can define the transform + // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate + glm::mat4 localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; + if (joint.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + localTransform = localTransform * geometricOffset; + } + glm::mat4 globalTransform; + if (joint.parentIndex != -1 && joint.parentIndex < jointIndex) { + hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; + glm::mat4& parentGlobalTransform = globalTransforms[joint.parentIndex]; + if (needMixamoHack) { + // there's something weird about the models from Mixamo Fuse; they don't skin right with the full transform + globalTransform = localTransform; + localTransform = globalTransform * glm::inverse(parentGlobalTransform); + } else { + if (parentJoint.hasGeometricOffset) { + // Per the FBX standard, geometric offsets should not propagate to children + glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); + globalTransform = localTransform * parentGlobalTransform * glm::inverse(parentGeometricOffset); + localTransform = globalTransform * glm::inverse(parentGlobalTransform); + } else { + globalTransform = localTransform * parentGlobalTransform; + } + } + } else { + globalTransform = localTransform; + } + hfm::TransformNode transformNode; + transformNode.parent = joint.parentIndex == -1 ? hfm::UNDEFINED_KEY : joint.parentIndex; + transformNode.transform = Transform(localTransform); + globalTransforms.push_back(globalTransform); + hfmModel.transforms.push_back(transformNode); + + ++jointIndex; } // NOTE: shapeVertices are in joint-frame @@ -1401,235 +1423,222 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } #endif + std::unordered_map materialNameToID; for (auto materialIt = _hfmMaterials.cbegin(); materialIt != _hfmMaterials.cend(); ++materialIt) { + materialNameToID[materialIt.key().toStdString()] = hfmModel.materials.size(); hfmModel.materials.push_back(materialIt.value()); } // see if any materials have texture children bool materialsHaveTextures = checkMaterialsHaveTextures(_hfmMaterials, _textureFilenames, _connectionChildMap); + // Note that the transforms in the TransformNodes are initially in world-space, and need to be converted to parent-space + std::vector transformNodes; + for (QMap::iterator it = meshes.begin(); it != meshes.end(); it++) { - ExtractedMesh& extracted = it.value(); + const QString& meshID = it.key(); + const ExtractedMesh& extracted = it.value(); + const auto& partMaterialTextures = extracted.partMaterialTextures; + const auto& newIndices = extracted.newIndices; - extracted.mesh.meshExtents.reset(); - - // accumulate local transforms - QString modelID = fbxModels.contains(it.key()) ? it.key() : _connectionParentMap.value(it.key()); - glm::mat4 modelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); - - // compute the mesh extents from the transformed vertices - foreach (const glm::vec3& vertex, extracted.mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(modelTransform * glm::vec4(vertex, 1.0f)); - hfmModel.meshExtents.minimum = glm::min(hfmModel.meshExtents.minimum, transformedVertex); - hfmModel.meshExtents.maximum = glm::max(hfmModel.meshExtents.maximum, transformedVertex); - - extracted.mesh.meshExtents.minimum = glm::min(extracted.mesh.meshExtents.minimum, transformedVertex); - extracted.mesh.meshExtents.maximum = glm::max(extracted.mesh.meshExtents.maximum, transformedVertex); - extracted.mesh.modelTransform = modelTransform; - } - - // look for textures, material properties - // allocate the Part material library - // NOTE: extracted.partMaterialTextures is empty for FBX_DRACO_MESH_VERSION >= 2. In that case, the mesh part's materialID string is already defined. - int materialIndex = 0; - int textureIndex = 0; - QList children = _connectionChildMap.values(modelID); - for (int i = children.size() - 1; i >= 0; i--) { - - const QString& childID = children.at(i); - if (_hfmMaterials.contains(childID)) { - // the pure material associated with this part - HFMMaterial material = _hfmMaterials.value(childID); - - for (int j = 0; j < extracted.partMaterialTextures.size(); j++) { - if (extracted.partMaterialTextures.at(j).first == materialIndex) { - HFMMeshPart& part = extracted.mesh.parts[j]; - part.materialID = material.materialID; - } - } - - materialIndex++; - } else if (_textureFilenames.contains(childID)) { - // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") - // I'm leaving the second parameter blank right now as this code may never be used. - HFMTexture texture = getTexture(childID, ""); - for (int j = 0; j < extracted.partMaterialTextures.size(); j++) { - int partTexture = extracted.partMaterialTextures.at(j).second; - if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { - // TODO: DO something here that replaces this legacy code - // Maybe create a material just for this part with the correct textures? - // extracted.mesh.parts[j].diffuseTexture = texture; - } - } - textureIndex++; - } - } - - // find the clusters with which the mesh is associated - QVector clusterIDs; - foreach (const QString& childID, _connectionChildMap.values(it.key())) { - foreach (const QString& clusterID, _connectionChildMap.values(childID)) { - if (!clusters.contains(clusterID)) { - continue; - } - HFMCluster hfmCluster; - const Cluster& cluster = clusters[clusterID]; - clusterIDs.append(clusterID); - - // see http://stackoverflow.com/questions/13566608/loading-skinning-information-from-fbx for a discussion - // of skinning information in FBX - QString jointID = _connectionChildMap.value(clusterID); - hfmCluster.jointIndex = modelIDs.indexOf(jointID); - if (hfmCluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { - qCDebug(modelformat) << "Joint not in model list: " << jointID; - hfmCluster.jointIndex = 0; - } - - hfmCluster.inverseBindMatrix = glm::inverse(cluster.transformLink) * modelTransform; - - // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and - // sometimes floating point fuzz can be introduced after the inverse. - hfmCluster.inverseBindMatrix[0][3] = 0.0f; - hfmCluster.inverseBindMatrix[1][3] = 0.0f; - hfmCluster.inverseBindMatrix[2][3] = 0.0f; - hfmCluster.inverseBindMatrix[3][3] = 1.0f; - - hfmCluster.inverseBindTransform = Transform(hfmCluster.inverseBindMatrix); - - extracted.mesh.clusters.append(hfmCluster); - - // override the bind rotation with the transform link - HFMJoint& joint = hfmModel.joints[hfmCluster.jointIndex]; - joint.inverseBindRotation = glm::inverse(extractRotation(cluster.transformLink)); - joint.bindTransform = cluster.transformLink; - joint.bindTransformFoundInCluster = true; - - // update the bind pose extents - glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * joint.bindTransform); - hfmModel.bindExtents.addPoint(bindTranslation); - } - } - - // the last cluster is the root cluster - { - HFMCluster cluster; - cluster.jointIndex = modelIDs.indexOf(modelID); - if (cluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { - qCDebug(modelformat) << "Model not in model list: " << modelID; - cluster.jointIndex = 0; - } - extracted.mesh.clusters.append(cluster); - } - - // whether we're skinned depends on how many clusters are attached - if (clusterIDs.size() > 1) { - // this is a multi-mesh joint - const int WEIGHTS_PER_VERTEX = 4; - int numClusterIndices = extracted.mesh.vertices.size() * WEIGHTS_PER_VERTEX; - extracted.mesh.clusterIndices.fill(extracted.mesh.clusters.size() - 1, numClusterIndices); - QVector weightAccumulators; - weightAccumulators.fill(0.0f, numClusterIndices); - - for (int i = 0; i < clusterIDs.size(); i++) { - QString clusterID = clusterIDs.at(i); - const Cluster& cluster = clusters[clusterID]; - const HFMCluster& hfmCluster = extracted.mesh.clusters.at(i); - int jointIndex = hfmCluster.jointIndex; - HFMJoint& joint = hfmModel.joints[jointIndex]; - - glm::mat4 meshToJoint = glm::inverse(joint.bindTransform) * modelTransform; - ShapeVertices& points = hfmModel.shapeVertices.at(jointIndex); - - for (int j = 0; j < cluster.indices.size(); j++) { - int oldIndex = cluster.indices.at(j); - float weight = cluster.weights.at(j); - for (QMultiHash::const_iterator it = extracted.newIndices.constFind(oldIndex); - it != extracted.newIndices.end() && it.key() == oldIndex; it++) { - int newIndex = it.value(); - - // remember vertices with at least 1/4 weight - // FIXME: vertices with no weightpainting won't get recorded here - const float EXPANSION_WEIGHT_THRESHOLD = 0.25f; - if (weight >= EXPANSION_WEIGHT_THRESHOLD) { - // transform to joint-frame and save for later - const glm::mat4 vertexTransform = meshToJoint * glm::translate(extracted.mesh.vertices.at(newIndex)); - points.push_back(extractTranslation(vertexTransform)); - } - - // look for an unused slot in the weights vector - int weightIndex = newIndex * WEIGHTS_PER_VERTEX; - int lowestIndex = -1; - float lowestWeight = FLT_MAX; - int k = 0; - for (; k < WEIGHTS_PER_VERTEX; k++) { - if (weightAccumulators[weightIndex + k] == 0.0f) { - extracted.mesh.clusterIndices[weightIndex + k] = i; - weightAccumulators[weightIndex + k] = weight; - break; - } - if (weightAccumulators[weightIndex + k] < lowestWeight) { - lowestIndex = k; - lowestWeight = weightAccumulators[weightIndex + k]; - } - } - if (k == WEIGHTS_PER_VERTEX && weight > lowestWeight) { - // no space for an additional weight; we must replace the lowest - weightAccumulators[weightIndex + lowestIndex] = weight; - extracted.mesh.clusterIndices[weightIndex + lowestIndex] = i; - } - } - } - } - - // now that we've accumulated the most relevant weights for each vertex - // normalize and compress to 16-bits - extracted.mesh.clusterWeights.fill(0, numClusterIndices); - int numVertices = extracted.mesh.vertices.size(); - for (int i = 0; i < numVertices; ++i) { - int j = i * WEIGHTS_PER_VERTEX; - - // normalize weights into uint16_t - float totalWeight = 0.0f; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - totalWeight += weightAccumulators[k]; - } - - const float ALMOST_HALF = 0.499f; - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - extracted.mesh.clusterWeights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); - } - } else { - extracted.mesh.clusterWeights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); - } - } - } else { - // this is a single-joint mesh - const HFMCluster& firstHFMCluster = extracted.mesh.clusters.at(0); - int jointIndex = firstHFMCluster.jointIndex; - HFMJoint& joint = hfmModel.joints[jointIndex]; - - // transform cluster vertices to joint-frame and save for later - glm::mat4 meshToJoint = glm::inverse(joint.bindTransform) * modelTransform; - ShapeVertices& points = hfmModel.shapeVertices.at(jointIndex); - for (const glm::vec3& vertex : extracted.mesh.vertices) { - const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertex); - points.push_back(extractTranslation(vertexTransform)); - } - - // Apply geometric offset, if present, by transforming the vertices directly - if (joint.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); - for (int i = 0; i < extracted.mesh.vertices.size(); i++) { - extracted.mesh.vertices[i] = transformPoint(geometricOffset, extracted.mesh.vertices[i]); - } - } - } - - hfmModel.meshes.push_back(extracted.mesh); - uint32_t meshIndex = (uint32_t)hfmModel.meshes.size() - 1; + uint32_t meshIndex = (uint32_t)hfmModel.meshes.size(); meshIDsToMeshIndices.insert(it.key(), meshIndex); + hfmModel.meshes.push_back(extracted.mesh); + hfm::Mesh& mesh = hfmModel.meshes.back(); + + std::vector instanceModelIDs = getModelIDsForMeshID(meshID, fbxModels, _connectionParentMap); + // meshShapes will be added to hfmModel at the very end + std::vector meshShapes; + meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); + for (const QString& modelID : instanceModelIDs) { + // The transform node has the same indexing order as the joints + const uint32_t transformNodeIndex = (uint32_t)modelIDs.indexOf(modelID); + + // accumulate local transforms + glm::mat4 modelTransform = globalTransforms[transformNodeIndex]; + // compute the mesh extents from the transformed vertices + for (const glm::vec3& vertex : mesh.vertices) { + glm::vec3 transformedVertex = glm::vec3(modelTransform * glm::vec4(vertex, 1.0f)); + hfmModel.meshExtents.minimum = glm::min(hfmModel.meshExtents.minimum, transformedVertex); + hfmModel.meshExtents.maximum = glm::max(hfmModel.meshExtents.maximum, transformedVertex); + } + + // partShapes will be added to meshShapes at the very end + std::vector partShapes { mesh.parts.size() }; + for (uint32_t i = 0; i < (uint32_t)partShapes.size(); ++i) { + hfm::Shape& shape = partShapes[i]; + shape.mesh = meshIndex; + shape.meshPart = i; + shape.transform = transformNodeIndex; + glm::mat4 shapeGlobalTransform = globalTransforms[transformNodeIndex]; + + shape.transformedExtents.reset(); + // compute the shape extents from the transformed vertices + for (const glm::vec3& vertex : mesh.vertices) { + glm::vec3 transformedVertex = glm::vec3(shapeGlobalTransform * glm::vec4(vertex, 1.0f)); + shape.transformedExtents.minimum = glm::min(shape.transformedExtents.minimum, transformedVertex); + shape.transformedExtents.maximum = glm::max(shape.transformedExtents.maximum, transformedVertex); + } + } + + // For FBX_DRACO_MESH_VERSION < 2, or unbaked models, get materials from the partMaterialTextures + int materialIndex = 0; + int textureIndex = 0; + QList children = _connectionChildMap.values(modelID); + for (int i = children.size() - 1; i >= 0; i--) { + const QString& childID = children.at(i); + if (_hfmMaterials.contains(childID)) { + // the pure material associated with this part + const HFMMaterial& material = _hfmMaterials.value(childID); + for (int j = 0; j < partMaterialTextures.size(); j++) { + if (partMaterialTextures.at(j).first == materialIndex) { + hfm::Shape& shape = partShapes[j]; + shape.material = materialNameToID[material.materialID.toStdString()]; + } + } + materialIndex++; + } else if (_textureFilenames.contains(childID)) { + // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") + // I'm leaving the second parameter blank right now as this code may never be used. + HFMTexture texture = getTexture(childID, ""); + for (int j = 0; j < partMaterialTextures.size(); j++) { + int partTexture = partMaterialTextures.at(j).second; + if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { + // TODO: DO something here that replaces this legacy code + // Maybe create a material just for this part with the correct textures? + // material.albedoTexture = texture; + // partShapes[j].material = materialIndex; + } + } + textureIndex++; + } + } + // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart + if (!extracted.materialIDPerMeshPart.empty()) { + for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { + hfm::Shape& shape = partShapes[i]; + const std::string& materialID = extracted.materialIDPerMeshPart[i]; + auto materialIt = materialNameToID.find(materialID); + if (materialIt != materialNameToID.end()) { + shape.material = materialIt->second; + } + } + } + + // find the clusters with which the mesh is associated + QVector clusterIDs; + for (const QString& childID : _connectionChildMap.values(meshID)) { + for (const QString& clusterID : _connectionChildMap.values(childID)) { + if (!fbxClusters.contains(clusterID)) { + continue; + } + clusterIDs.append(clusterID); + } + } + + auto rootJointIndex = modelIDs.indexOf(modelID); + if (rootJointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { + qCDebug(modelformat) << "Model not in model list: " << modelID; + rootJointIndex = 0; + } + + // whether we're skinned depends on how many clusters are attached + if (clusterIDs.size() > 1) { + hfm::DynamicTransform dynamicTransform; + auto& clusters = dynamicTransform.clusters; + std::vector deformers; + for (const auto& clusterID : clusterIDs) { + HFMCluster hfmCluster; + const Cluster& fbxCluster = fbxClusters[clusterID]; + + // see http://stackoverflow.com/questions/13566608/loading-skinning-information-from-fbx for a discussion + // of skinning information in FBX + QString jointID = _connectionChildMap.value(clusterID); + hfmCluster.jointIndex = modelIDs.indexOf(jointID); + if (hfmCluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { + qCDebug(modelformat) << "Joint not in model list: " << jointID; + hfmCluster.jointIndex = 0; + } + + hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * modelTransform; + + // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and + // sometimes floating point fuzz can be introduced after the inverse. + hfmCluster.inverseBindMatrix[0][3] = 0.0f; + hfmCluster.inverseBindMatrix[1][3] = 0.0f; + hfmCluster.inverseBindMatrix[2][3] = 0.0f; + hfmCluster.inverseBindMatrix[3][3] = 1.0f; + + hfmCluster.inverseBindTransform = Transform(hfmCluster.inverseBindMatrix); + + clusters.push_back(hfmCluster); + + // override the bind rotation with the transform link + HFMJoint& joint = hfmModel.joints[hfmCluster.jointIndex]; + joint.inverseBindRotation = glm::inverse(extractRotation(fbxCluster.transformLink)); + joint.bindTransform = fbxCluster.transformLink; + joint.bindTransformFoundInCluster = true; + + // update the bind pose extents + glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * joint.bindTransform); + hfmModel.bindExtents.addPoint(bindTranslation); + + // the last cluster is the root cluster + HFMCluster cluster; + cluster.jointIndex = rootJointIndex; + clusters.push_back(cluster); + } + + // Skinned mesh instances have a dynamic transform + dynamicTransform.deformers.reserve(clusterIDs.size()); + clusters.reserve(clusterIDs.size()); + for (const auto& clusterID : clusterIDs) { + const Cluster& fbxCluster = fbxClusters[clusterID]; + dynamicTransform.deformers.emplace_back(); + deformers.emplace_back(); + hfm::Deformer& deformer = deformers.back(); + size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); + deformer.indices.reserve(indexWeightPairs); + deformer.weights.reserve(indexWeightPairs); + for (size_t i = 0; i < indexWeightPairs; i++) { + int oldIndex = fbxCluster.indices[i]; + uint32_t newIndex = (uint32_t)extracted.newIndices.value(oldIndex); + deformer.indices.push_back(newIndex); + deformer.indices.push_back((float)fbxCluster.weights[i]); + } + } + + // Store this model's deformers, this dynamic transform's deformer IDs + uint32_t deformerMinID = (uint32_t)hfmModel.deformers.size(); + hfmModel.deformers.insert(hfmModel.deformers.end(), deformers.cbegin(), deformers.cend()); + dynamicTransform.deformers.resize(deformers.size()); + std::iota(dynamicTransform.deformers.begin(), dynamicTransform.deformers.end(), deformerMinID); + + // Store the model's dynamic transform, and put its ID in the shapes + hfmModel.dynamicTransforms.push_back(dynamicTransform); + uint32_t dynamicTransformID = (uint32_t)(hfmModel.dynamicTransforms.size() - 1); + for (hfm::Shape& shape : partShapes) { + shape.dynamicTransform = dynamicTransformID; + } + } else { + // this is a single-joint mesh + HFMJoint& joint = hfmModel.joints[rootJointIndex]; + + // Apply geometric offset, if present, by transforming the vertices directly + if (joint.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + for (int i = 0; i < mesh.vertices.size(); i++) { + mesh.vertices[i] = transformPoint(geometricOffset, mesh.vertices[i]); + } + } + } + + // Store the parts for this mesh (or instance of this mesh, as the case may be) + meshShapes.insert(meshShapes.cend(), partShapes.cbegin(), partShapes.cend()); + } + + // Store the shapes for the mesh (or multiple instances of the mesh, as the case may be) + hfmModel.shapes.insert(hfmModel.shapes.cend(), meshShapes.cbegin(), meshShapes.cend()); } // attempt to map any meshes to a named model @@ -1651,9 +1660,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const if (applyUpAxisZRotation) { hfmModelPtr->meshExtents.transform(glm::mat4_cast(upAxisZRotation)); hfmModelPtr->bindExtents.transform(glm::mat4_cast(upAxisZRotation)); - for (auto &mesh : hfmModelPtr->meshes) { - mesh.modelTransform *= glm::mat4_cast(upAxisZRotation); - mesh.meshExtents.transform(glm::mat4_cast(upAxisZRotation)); + for (auto &shape : hfmModelPtr->shapes) { + auto transformIndex = shape.transform; + auto& transformNode = hfmModelPtr->transforms[transformIndex]; + transformNode.transform.postRotate(upAxisZRotation); + shape.transformedExtents.transform(glm::mat4_cast(upAxisZRotation)); } } return hfmModelPtr; diff --git a/libraries/fbx/src/FBXSerializer.h b/libraries/fbx/src/FBXSerializer.h index c9468708a6..2044d82710 100644 --- a/libraries/fbx/src/FBXSerializer.h +++ b/libraries/fbx/src/FBXSerializer.h @@ -103,6 +103,7 @@ public: class ExtractedMesh { public: hfm::Mesh mesh; + std::vector materialIDPerMeshPart; QMultiHash newIndices; QVector > blendshapeIndexMaps; QVector > partMaterialTextures; diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 479e7acfc9..a89be38fe3 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -355,7 +355,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me // Check for additional metadata unsigned int dracoMeshNodeVersion = 1; - std::vector dracoMaterialList; + std::vector dracoMaterialList; for (const auto& dracoChild : child.children) { if (dracoChild.name == "FBXDracoMeshVersion") { if (!dracoChild.properties.isEmpty()) { @@ -364,7 +364,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } else if (dracoChild.name == "MaterialList") { dracoMaterialList.reserve(dracoChild.properties.size()); for (const auto& materialID : dracoChild.properties) { - dracoMaterialList.push_back(materialID.toString()); + dracoMaterialList.push_back(materialID.toString().toStdString()); } } } @@ -467,6 +467,8 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } } + ExtractedMesh& extracted = data.extracted; + extracted.materialIDPerMeshPart.resize(dracoMaterialList.size()); for (uint32_t i = 0; i < dracoMesh->num_faces(); ++i) { // grab the material ID and texture ID for this face, if we have it auto& dracoFace = dracoMesh->face(draco::FaceIndex(i)); @@ -487,13 +489,13 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); - HFMMeshPart& part = data.extracted.mesh.parts.back(); + HFMMeshPart& part = extracted.mesh.parts.back(); // Figure out what material this part is if (dracoMeshNodeVersion >= 2) { // Define the materialID now if (materialID < dracoMaterialList.size()) { - part.materialID = dracoMaterialList[materialID]; + extracted.materialIDPerMeshPart[materialID] = dracoMaterialList[materialID]; } } else { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap From ba6833df8fcf0468411ebcf25d4ecfd5fec8b51c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 3 Oct 2019 10:49:14 -0700 Subject: [PATCH 039/547] Make small improvements to FBXSerializer code changes --- libraries/fbx/src/FBXSerializer.cpp | 61 +++++++++++------------- libraries/fbx/src/FBXSerializer_Mesh.cpp | 19 ++++---- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index e8388451d4..424c06b1c4 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1263,13 +1263,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // convert the models to joints hfmModel.hasSkeletonJoints = false; - // Note that these transform nodes are initially defined in world space bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; hfmModel.transforms.reserve(modelIDs.size()); std::vector globalTransforms; globalTransforms.reserve(modelIDs.size()); - int jointIndex = 0; for (const QString& modelID : modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; @@ -1378,13 +1376,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const transformNode.transform = Transform(localTransform); globalTransforms.push_back(globalTransform); hfmModel.transforms.push_back(transformNode); - - ++jointIndex; } - // NOTE: shapeVertices are in joint-frame - hfmModel.shapeVertices.resize(std::max((size_t)1, hfmModel.joints.size()) ); - hfmModel.bindExtents.reset(); hfmModel.meshExtents.reset(); @@ -1482,35 +1475,37 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // For FBX_DRACO_MESH_VERSION < 2, or unbaked models, get materials from the partMaterialTextures - int materialIndex = 0; - int textureIndex = 0; - QList children = _connectionChildMap.values(modelID); - for (int i = children.size() - 1; i >= 0; i--) { - const QString& childID = children.at(i); - if (_hfmMaterials.contains(childID)) { - // the pure material associated with this part - const HFMMaterial& material = _hfmMaterials.value(childID); - for (int j = 0; j < partMaterialTextures.size(); j++) { - if (partMaterialTextures.at(j).first == materialIndex) { - hfm::Shape& shape = partShapes[j]; - shape.material = materialNameToID[material.materialID.toStdString()]; + if (!partMaterialTextures.empty()) { + int materialIndex = 0; + int textureIndex = 0; + QList children = _connectionChildMap.values(modelID); + for (int i = children.size() - 1; i >= 0; i--) { + const QString& childID = children.at(i); + if (_hfmMaterials.contains(childID)) { + // the pure material associated with this part + const HFMMaterial& material = _hfmMaterials.value(childID); + for (int j = 0; j < partMaterialTextures.size(); j++) { + if (partMaterialTextures.at(j).first == materialIndex) { + hfm::Shape& shape = partShapes[j]; + shape.material = materialNameToID[material.materialID.toStdString()]; + } } - } - materialIndex++; - } else if (_textureFilenames.contains(childID)) { - // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") - // I'm leaving the second parameter blank right now as this code may never be used. - HFMTexture texture = getTexture(childID, ""); - for (int j = 0; j < partMaterialTextures.size(); j++) { - int partTexture = partMaterialTextures.at(j).second; - if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { - // TODO: DO something here that replaces this legacy code - // Maybe create a material just for this part with the correct textures? - // material.albedoTexture = texture; - // partShapes[j].material = materialIndex; + materialIndex++; + } else if (_textureFilenames.contains(childID)) { + // NOTE (Sabrina 2019/01/11): getTextures now takes in the materialID as a second parameter, because FBX material nodes can sometimes have uv transform information (ex: "Maya|uv_scale") + // I'm leaving the second parameter blank right now as this code may never be used. + HFMTexture texture = getTexture(childID, ""); + for (int j = 0; j < partMaterialTextures.size(); j++) { + int partTexture = partMaterialTextures.at(j).second; + if (partTexture == textureIndex && !(partTexture == 0 && materialsHaveTextures)) { + // TODO: DO something here that replaces this legacy code + // Maybe create a material just for this part with the correct textures? + // material.albedoTexture = texture; + // partShapes[j].material = materialIndex; + } } + textureIndex++; } - textureIndex++; } } // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index a89be38fe3..f19cd7c526 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -369,6 +369,11 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } } + if (dracoMeshNodeVersion >= 2) { + // Define the materialIDs now + data.extracted.materialIDPerMeshPart = dracoMaterialList; + } + // load the draco mesh from the FBX and create a draco::Mesh draco::Decoder decoder; draco::DecoderBuffer decodedBuffer; @@ -467,8 +472,6 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } } - ExtractedMesh& extracted = data.extracted; - extracted.materialIDPerMeshPart.resize(dracoMaterialList.size()); for (uint32_t i = 0; i < dracoMesh->num_faces(); ++i) { // grab the material ID and texture ID for this face, if we have it auto& dracoFace = dracoMesh->face(draco::FaceIndex(i)); @@ -489,18 +492,14 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); - HFMMeshPart& part = extracted.mesh.parts.back(); + HFMMeshPart& part = data.extracted.mesh.parts.back(); - // Figure out what material this part is - if (dracoMeshNodeVersion >= 2) { - // Define the materialID now - if (materialID < dracoMaterialList.size()) { - extracted.materialIDPerMeshPart[materialID] = dracoMaterialList[materialID]; - } - } else { + // Figure out if this is the older way of defining the per-part material for baked FBX + if (dracoMeshNodeVersion < 2) { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap data.extracted.partMaterialTextures.append(materialTexture); } + // in dracoMeshNodeVersion >= 2, fbx meshes have their per-part materials already defined in data.extracted.materialIDPerMeshPart partIndexPlusOne = (int)data.extracted.mesh.parts.size(); } From 4a8cdee38ab0485fc399b2f5ccadc660b173fff8 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 3 Oct 2019 14:30:03 -0700 Subject: [PATCH 040/547] Update HFM format and deprecate hfm::TransformNode --- libraries/hfm/src/hfm/HFM.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 29c4af9ec9..08410f17f2 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -118,6 +118,9 @@ public: glm::vec3 geometricTranslation; glm::quat geometricRotation; glm::vec3 geometricScaling; + + // globalTransform is the transform of the joint with all parent transforms applied, plus the geometric offset + glm::mat4 globalTransform; }; @@ -245,7 +248,7 @@ public: QVector clusters; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::clusters) Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) - glm::mat4 modelTransform; // DEPRECATED (see hfm::Shape::transform, hfm::TransformNode, hfm::Model::transforms) + glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) QVector blendshapes; @@ -289,6 +292,7 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; +// DEPRECATED in favor of using hfm::Joint class TransformNode { public: uint32_t parent { 0 }; @@ -316,9 +320,9 @@ public: uint32_t mesh { UNDEFINED_KEY }; uint32_t meshPart { UNDEFINED_KEY }; uint32_t material { UNDEFINED_KEY }; - uint32_t transform { UNDEFINED_KEY }; // The static transform node when not taking into account rigging/skinning + uint32_t transform { UNDEFINED_KEY }; // The hfm::Joint associated with this shape, containing transform information // TODO: Have all serializers calculate hfm::Shape::transformedExtents in world space where they previously calculated hfm::Mesh::meshExtents. Change all code that uses hfm::Mesh::meshExtents to use this instead. - Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after the transform node and parent transform nodes are applied, while not taking into account rigging/skinning + Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after transform information is applied, while not taking into account rigging/skinning uint32_t dynamicTransform { UNDEFINED_KEY }; }; From e8d421fa3549330b0972f46d8c5f1d578eb9d4d2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 3 Oct 2019 14:30:20 -0700 Subject: [PATCH 041/547] Fix transforms and other issues with FBXSerializer --- libraries/fbx/src/FBXSerializer.cpp | 83 ++++++++++++----------------- 1 file changed, 33 insertions(+), 50 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 424c06b1c4..e7d6000c28 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1264,9 +1264,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfmModel.hasSkeletonJoints = false; bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; - hfmModel.transforms.reserve(modelIDs.size()); - std::vector globalTransforms; - globalTransforms.reserve(modelIDs.size()); for (const QString& modelID : modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; @@ -1341,41 +1338,28 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - hfmModel.joints.push_back(joint); // Now that we've initialized the joint, we can define the transform // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate - glm::mat4 localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; + joint.globalTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; + if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { + hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; + joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; + if (parentJoint.hasGeometricOffset) { + // Per the FBX standard, geometric offset should not propagate to children. + // However, we must be careful when modifying the behavior of FBXSerializer. + // So, we leave this here, as a breakpoint for debugging, or stub for implementation. + // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; + // glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); + // globalTransform = globalTransform * glm::inverse(geometricOffset); + } + } if (joint.hasGeometricOffset) { glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); - localTransform = localTransform * geometricOffset; + joint.globalTransform = joint.globalTransform * geometricOffset; } - glm::mat4 globalTransform; - if (joint.parentIndex != -1 && joint.parentIndex < jointIndex) { - hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; - glm::mat4& parentGlobalTransform = globalTransforms[joint.parentIndex]; - if (needMixamoHack) { - // there's something weird about the models from Mixamo Fuse; they don't skin right with the full transform - globalTransform = localTransform; - localTransform = globalTransform * glm::inverse(parentGlobalTransform); - } else { - if (parentJoint.hasGeometricOffset) { - // Per the FBX standard, geometric offsets should not propagate to children - glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); - globalTransform = localTransform * parentGlobalTransform * glm::inverse(parentGeometricOffset); - localTransform = globalTransform * glm::inverse(parentGlobalTransform); - } else { - globalTransform = localTransform * parentGlobalTransform; - } - } - } else { - globalTransform = localTransform; - } - hfm::TransformNode transformNode; - transformNode.parent = joint.parentIndex == -1 ? hfm::UNDEFINED_KEY : joint.parentIndex; - transformNode.transform = Transform(localTransform); - globalTransforms.push_back(globalTransform); - hfmModel.transforms.push_back(transformNode); + + hfmModel.joints.push_back(joint); } hfmModel.bindExtents.reset(); @@ -1418,7 +1402,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const std::unordered_map materialNameToID; for (auto materialIt = _hfmMaterials.cbegin(); materialIt != _hfmMaterials.cend(); ++materialIt) { - materialNameToID[materialIt.key().toStdString()] = hfmModel.materials.size(); + materialNameToID[materialIt.key().toStdString()] = (uint32_t)hfmModel.materials.size(); hfmModel.materials.push_back(materialIt.value()); } @@ -1445,13 +1429,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); for (const QString& modelID : instanceModelIDs) { // The transform node has the same indexing order as the joints - const uint32_t transformNodeIndex = (uint32_t)modelIDs.indexOf(modelID); + const uint32_t transformIndex = (uint32_t)modelIDs.indexOf(modelID); // accumulate local transforms - glm::mat4 modelTransform = globalTransforms[transformNodeIndex]; + glm::mat4 globalTransform = hfmModel.joints[transformIndex].globalTransform; // compute the mesh extents from the transformed vertices for (const glm::vec3& vertex : mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(modelTransform * glm::vec4(vertex, 1.0f)); + glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); hfmModel.meshExtents.minimum = glm::min(hfmModel.meshExtents.minimum, transformedVertex); hfmModel.meshExtents.maximum = glm::max(hfmModel.meshExtents.maximum, transformedVertex); } @@ -1462,13 +1446,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfm::Shape& shape = partShapes[i]; shape.mesh = meshIndex; shape.meshPart = i; - shape.transform = transformNodeIndex; - glm::mat4 shapeGlobalTransform = globalTransforms[transformNodeIndex]; + shape.transform = transformIndex; shape.transformedExtents.reset(); // compute the shape extents from the transformed vertices for (const glm::vec3& vertex : mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(shapeGlobalTransform * glm::vec4(vertex, 1.0f)); + glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); shape.transformedExtents.minimum = glm::min(shape.transformedExtents.minimum, transformedVertex); shape.transformedExtents.maximum = glm::max(shape.transformedExtents.maximum, transformedVertex); } @@ -1555,7 +1538,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfmCluster.jointIndex = 0; } - hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * modelTransform; + hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * globalTransform; // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and // sometimes floating point fuzz can be introduced after the inverse. @@ -1577,13 +1560,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // update the bind pose extents glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * joint.bindTransform); hfmModel.bindExtents.addPoint(bindTranslation); - - // the last cluster is the root cluster - HFMCluster cluster; - cluster.jointIndex = rootJointIndex; - clusters.push_back(cluster); } + // the last cluster is the root cluster + HFMCluster cluster; + cluster.jointIndex = rootJointIndex; + clusters.push_back(cluster); + // Skinned mesh instances have a dynamic transform dynamicTransform.deformers.reserve(clusterIDs.size()); clusters.reserve(clusterIDs.size()); @@ -1595,7 +1578,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); deformer.indices.reserve(indexWeightPairs); deformer.weights.reserve(indexWeightPairs); - for (size_t i = 0; i < indexWeightPairs; i++) { + for (int i = 0; i < (int)indexWeightPairs; i++) { int oldIndex = fbxCluster.indices[i]; uint32_t newIndex = (uint32_t)extracted.newIndices.value(oldIndex); deformer.indices.push_back(newIndex); @@ -1655,12 +1638,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const if (applyUpAxisZRotation) { hfmModelPtr->meshExtents.transform(glm::mat4_cast(upAxisZRotation)); hfmModelPtr->bindExtents.transform(glm::mat4_cast(upAxisZRotation)); - for (auto &shape : hfmModelPtr->shapes) { - auto transformIndex = shape.transform; - auto& transformNode = hfmModelPtr->transforms[transformIndex]; - transformNode.transform.postRotate(upAxisZRotation); + for (auto& shape : hfmModelPtr->shapes) { shape.transformedExtents.transform(glm::mat4_cast(upAxisZRotation)); } + for (auto& joint : hfmModelPtr->joints) { + joint.globalTransform = joint.globalTransform * glm::mat4_cast(upAxisZRotation); + } } return hfmModelPtr; } From 41de373570d4587635c18b188ed93ffc49b8b7d7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 3 Oct 2019 15:17:26 -0700 Subject: [PATCH 042/547] Fix not allocating shapeVerticesPerJoint in CollectShapeVerticesTask.cpp --- .../model-baker/src/model-baker/CollectShapeVerticesTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp index 8aeb0145d5..36c2aa04a6 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -33,7 +33,7 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con const auto& reweightedDeformers = input.get4(); auto& shapeVerticesPerJoint = output; - shapeVerticesPerJoint.reserve(joints.size()); + shapeVerticesPerJoint.resize(joints.size()); std::vector> vertexSourcesPerJoint; vertexSourcesPerJoint.resize(joints.size()); for (size_t i = 0; i < shapes.size(); ++i) { From b15771e9fefb32306a1d697569514925ba13d121 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 3 Oct 2019 16:47:41 -0700 Subject: [PATCH 043/547] Fix build warnings and wrong use of indexOf --- libraries/fbx/src/FBXSerializer.cpp | 5 ++--- libraries/fbx/src/FBXSerializer_Mesh.cpp | 1 - 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index e7d6000c28..78bc1836c3 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1416,7 +1416,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const const QString& meshID = it.key(); const ExtractedMesh& extracted = it.value(); const auto& partMaterialTextures = extracted.partMaterialTextures; - const auto& newIndices = extracted.newIndices; uint32_t meshIndex = (uint32_t)hfmModel.meshes.size(); meshIDsToMeshIndices.insert(it.key(), meshIndex); @@ -1515,7 +1514,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } auto rootJointIndex = modelIDs.indexOf(modelID); - if (rootJointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { + if (rootJointIndex == -1) { qCDebug(modelformat) << "Model not in model list: " << modelID; rootJointIndex = 0; } @@ -1533,7 +1532,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // of skinning information in FBX QString jointID = _connectionChildMap.value(clusterID); hfmCluster.jointIndex = modelIDs.indexOf(jointID); - if (hfmCluster.jointIndex == hfm::Cluster::INVALID_JOINT_INDEX) { + if (hfmCluster.jointIndex == -1) { qCDebug(modelformat) << "Joint not in model list: " << jointID; hfmCluster.jointIndex = 0; } diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index f19cd7c526..7c6be5740a 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -492,7 +492,6 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); - HFMMeshPart& part = data.extracted.mesh.parts.back(); // Figure out if this is the older way of defining the per-part material for baked FBX if (dracoMeshNodeVersion < 2) { From 09a8d69555837696397476f539af1adcfc14b692 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 4 Oct 2019 18:02:45 -0700 Subject: [PATCH 044/547] landing on the new code base --- libraries/fbx/src/FBXSerializer.cpp | 46 ++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 78bc1836c3..1752c2f024 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -145,6 +145,42 @@ public: bool isLimbNode; // is this FBXModel transform is a "LimbNode" i.e. a joint }; + +glm::mat4 getGlobalTransform(const QMultiMap& _connectionParentMap, + const QHash& fbxModels, QString nodeID, bool mixamoHack, const QString& url) { + glm::mat4 globalTransform; + QVector visitedNodes; // Used to prevent following a cycle + while (!nodeID.isNull()) { + visitedNodes.append(nodeID); // Append each node we visit + + const FBXModel& fbxModel = fbxModels.value(nodeID); + globalTransform = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(fbxModel.preRotation * + fbxModel.rotation * fbxModel.postRotation) * fbxModel.postTransform * globalTransform; + if (fbxModel.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); + globalTransform = globalTransform * geometricOffset; + } + + if (mixamoHack) { + // there's something weird about the models from Mixamo Fuse; they don't skin right with the full transform + return globalTransform; + } + QList parentIDs = _connectionParentMap.values(nodeID); + nodeID = QString(); + foreach(const QString& parentID, parentIDs) { + if (visitedNodes.contains(parentID)) { + qCWarning(modelformat) << "Ignoring loop detected in FBX connection map for" << url; + continue; + } + if (fbxModels.contains(parentID)) { + nodeID = parentID; + break; + } + } + } + return globalTransform; +} + std::vector getModelIDsForMeshID(const QString& meshID, const QHash& fbxModels, const QMultiMap& _connectionParentMap) { std::vector modelsForMesh; if (fbxModels.contains(meshID)) { @@ -1344,7 +1380,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.globalTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; - joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; + // joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; + joint.globalTransform = parentJoint.globalTransform * joint.globalTransform; if (parentJoint.hasGeometricOffset) { // Per the FBX standard, geometric offset should not propagate to children. // However, we must be careful when modifying the behavior of FBXSerializer. @@ -1359,6 +1396,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.globalTransform = joint.globalTransform * geometricOffset; } + // accumulate local transforms + // QString modelID = fbxModels.contains(it.key()) ? it.key() : _connectionParentMap.value(it.key()); + glm::mat4 anotherModelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); + /* if (anotherModelTransform != joint.globalTransform) { + joint.globalTransform = anotherModelTransform; + } +*/ hfmModel.joints.push_back(joint); } From 521ce3936bc689639c558e9a893756bb79738c6c Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 7 Oct 2019 15:19:23 -0700 Subject: [PATCH 045/547] I changed names! Renaming the Geometry to NetworkModel, the GeometryResource to ModelResource, i think there is no need for the 2, only one would be enough in my opinion... --- interface/src/avatar/AvatarDoctor.cpp | 4 +- interface/src/avatar/AvatarDoctor.h | 2 +- interface/src/raypick/CollisionPick.cpp | 6 +- interface/src/raypick/CollisionPick.h | 6 +- .../src/avatars-renderer/Avatar.cpp | 2 +- .../src/avatars-renderer/SkeletonModel.cpp | 2 +- .../src/RenderableModelEntityItem.cpp | 6 +- .../src/RenderableModelEntityItem.h | 2 +- .../RenderableParticleEffectEntityItem.cpp | 6 +- .../src/RenderableParticleEffectEntityItem.h | 4 +- libraries/entities/src/ZoneEntityItem.cpp | 4 +- libraries/entities/src/ZoneEntityItem.h | 2 +- libraries/fbx/src/FBXSerializer.cpp | 24 ++-- libraries/hfm/src/hfm/HFM.h | 1 + .../src/material-networking/MaterialCache.h | 2 +- .../src/model-networking/ModelCache.cpp | 119 +++++++++--------- .../src/model-networking/ModelCache.h | 46 +++---- .../render-utils/src/CauterizedModel.cpp | 2 +- .../render-utils/src/MeshPartPayload.cpp | 8 +- libraries/render-utils/src/Model.cpp | 24 ++-- libraries/render-utils/src/Model.h | 8 +- 21 files changed, 150 insertions(+), 130 deletions(-) diff --git a/interface/src/avatar/AvatarDoctor.cpp b/interface/src/avatar/AvatarDoctor.cpp index a12b4dfcc0..4ff6fb7553 100644 --- a/interface/src/avatar/AvatarDoctor.cpp +++ b/interface/src/avatar/AvatarDoctor.cpp @@ -79,7 +79,7 @@ void AvatarDoctor::startDiagnosing() { _missingTextureCount = 0; _unsupportedTextureCount = 0; - const auto resource = DependencyManager::get()->getGeometryResource(_avatarFSTFileUrl); + const auto resource = DependencyManager::get()->getModelResource(_avatarFSTFileUrl); resource->refresh(); const auto resourceLoaded = [this, resource](bool success) { @@ -297,7 +297,7 @@ void AvatarDoctor::startDiagnosing() { if (resource->isLoaded()) { resourceLoaded(!resource->isFailed()); } else { - connect(resource.data(), &GeometryResource::finished, this, resourceLoaded); + connect(resource.data(), &ModelResource::finished, this, resourceLoaded); } } else { addError("Model file cannot be opened", "missing-file"); diff --git a/interface/src/avatar/AvatarDoctor.h b/interface/src/avatar/AvatarDoctor.h index 1465a5defc..1e3c84e02f 100644 --- a/interface/src/avatar/AvatarDoctor.h +++ b/interface/src/avatar/AvatarDoctor.h @@ -53,7 +53,7 @@ private: int _materialMappingCount = 0; int _materialMappingLoadedCount = 0; - GeometryResource::Pointer _model; + ModelResource::Pointer _model; bool _isDiagnosing = false; }; diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index fe943d5b84..9f8510c603 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -134,7 +134,7 @@ bool CollisionPick::getShapeInfoReady(const CollisionRegion& pick) { return _mathPick.loaded; } -void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { +void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { ShapeType type = shapeInfo.getType(); glm::vec3 dimensions = pick.transform.getScale(); QString modelURL = (resource ? resource->getURL().toString() : ""); @@ -147,7 +147,7 @@ void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, } } -void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { +void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { // This code was copied and modified from RenderableModelEntityItem::computeShapeInfo // TODO: Move to some shared code area (in entities-renderer? model-networking?) // after we verify this is working and do a diff comparison with RenderableModelEntityItem::computeShapeInfo @@ -381,7 +381,7 @@ CollisionPick::CollisionPick(const PickFilter& filter, float maxDistance, bool e _scaleWithParent(scaleWithParent), _physicsEngine(physicsEngine) { if (collisionRegion.shouldComputeShapeInfo()) { - _cachedResource = DependencyManager::get()->getCollisionGeometryResource(collisionRegion.modelURL); + _cachedResource = DependencyManager::get()->getCollisionModelResource(collisionRegion.modelURL); } _mathPick.loaded = isLoaded(); } diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 24317bf19a..115ee1727e 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -63,14 +63,14 @@ protected: bool isLoaded() const; // Returns true if _mathPick.shapeInfo is valid. Otherwise, attempts to get the _mathPick ready for use. bool getShapeInfoReady(const CollisionRegion& pick); - void computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); - void computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + void computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); + void computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); void filterIntersections(std::vector& intersections) const; bool _scaleWithParent; PhysicsEnginePointer _physicsEngine; - QSharedPointer _cachedResource; + QSharedPointer _cachedResource; // Options for what information to get from collision results bool _includeNormals; diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 75a7693de8..e9ae278710 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -955,7 +955,7 @@ void Avatar::simulateAttachments(float deltaTime) { bool texturesLoaded = _attachmentModelsTexturesLoaded.at(i); // Watch for texture loading - if (!texturesLoaded && model->getGeometry() && model->getGeometry()->areTexturesLoaded()) { + if (!texturesLoaded && model->getNetworkModel() && model->getNetworkModel()->areTexturesLoaded()) { _attachmentModelsTexturesLoaded[i] = true; model->updateRenderItems(); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp index ac9819803e..bda7fab0a4 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/SkeletonModel.cpp @@ -177,7 +177,7 @@ void SkeletonModel::simulate(float deltaTime, bool fullUpdate) { // FIXME: This texture loading logic should probably live in Avatar, to mirror RenderableModelEntityItem, // but Avatars don't get updates in the same way - if (!_texturesLoaded && getGeometry() && getGeometry()->areTexturesLoaded()) { + if (!_texturesLoaded && getNetworkModel() && getNetworkModel()->areTexturesLoaded()) { _texturesLoaded = true; updateRenderItems(); } diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 7c9e8e5f13..e75b28f9ed 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -282,7 +282,7 @@ bool RenderableModelEntityItem::findDetailedParabolaIntersection(const glm::vec3 } void RenderableModelEntityItem::fetchCollisionGeometryResource() { - _collisionGeometryResource = DependencyManager::get()->getCollisionGeometryResource(getCollisionShapeURL()); + _collisionGeometryResource = DependencyManager::get()->getCollisionModelResource(getCollisionShapeURL()); } bool RenderableModelEntityItem::unableToLoadCollisionShape() { @@ -504,7 +504,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { meshes.push_back(hfmMesh._mesh); } } else { - meshes = model->getGeometry()->getMeshes(); + meshes = model->getNetworkModel()->getMeshes(); } int32_t numMeshes = (int32_t)(meshes.size()); @@ -1431,7 +1431,7 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce } } - if (!_texturesLoaded && model->getGeometry() && model->getGeometry()->areTexturesLoaded()) { + if (!_texturesLoaded && model->getNetworkModel() && model->getNetworkModel()->areTexturesLoaded()) { withWriteLock([&] { _texturesLoaded = true; }); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index c32dad901f..d9a8c08890 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -120,7 +120,7 @@ private: bool readyToAnimate() const; void fetchCollisionGeometryResource(); - GeometryResource::Pointer _collisionGeometryResource; + ModelResource::Pointer _collisionGeometryResource; std::vector _jointMap; QVariantMap _originalTextures; bool _jointMapCompleted { false }; diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp index a97cc7c84c..853a8385f0 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp @@ -194,7 +194,7 @@ float importanceSample3DDimension(float startDim) { } ParticleEffectEntityRenderer::CpuParticle ParticleEffectEntityRenderer::createParticle(uint64_t now, const Transform& baseTransform, const particle::Properties& particleProperties, - const ShapeType& shapeType, const GeometryResource::Pointer& geometryResource, + const ShapeType& shapeType, const ModelResource::Pointer& geometryResource, const TriangleInfo& triangleInfo) { CpuParticle particle; @@ -379,7 +379,7 @@ void ParticleEffectEntityRenderer::stepSimulation() { particle::Properties particleProperties; ShapeType shapeType; - GeometryResource::Pointer geometryResource; + ModelResource::Pointer geometryResource; withReadLock([&] { particleProperties = _particleProperties; shapeType = _shapeType; @@ -482,7 +482,7 @@ void ParticleEffectEntityRenderer::fetchGeometryResource() { if (hullURL.isEmpty()) { _geometryResource.reset(); } else { - _geometryResource = DependencyManager::get()->getCollisionGeometryResource(hullURL); + _geometryResource = DependencyManager::get()->getCollisionModelResource(hullURL); } } diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h index cc907f2b1d..d585104f5c 100644 --- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h +++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.h @@ -89,7 +89,7 @@ private: } _triangleInfo; static CpuParticle createParticle(uint64_t now, const Transform& baseTransform, const particle::Properties& particleProperties, - const ShapeType& shapeType, const GeometryResource::Pointer& geometryResource, + const ShapeType& shapeType, const ModelResource::Pointer& geometryResource, const TriangleInfo& triangleInfo); void stepSimulation(); @@ -108,7 +108,7 @@ private: QString _compoundShapeURL; void fetchGeometryResource(); - GeometryResource::Pointer _geometryResource; + ModelResource::Pointer _geometryResource; NetworkTexturePointer _networkTexture; ScenePointer _scene; diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 0771d9ad54..d54998e74f 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -345,7 +345,7 @@ bool ZoneEntityItem::findDetailedParabolaIntersection(const glm::vec3& origin, c } bool ZoneEntityItem::contains(const glm::vec3& point) const { - GeometryResource::Pointer resource = _shapeResource; + ModelResource::Pointer resource = _shapeResource; if (_shapeType == SHAPE_TYPE_COMPOUND && resource) { if (resource->isLoaded()) { const HFMModel& hfmModel = resource->getHFMModel(); @@ -462,7 +462,7 @@ void ZoneEntityItem::fetchCollisionGeometryResource() { if (hullURL.isEmpty()) { _shapeResource.reset(); } else { - _shapeResource = DependencyManager::get()->getCollisionGeometryResource(hullURL); + _shapeResource = DependencyManager::get()->getCollisionModelResource(hullURL); } } diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index 34ad47f095..d6647e701e 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -167,7 +167,7 @@ protected: static bool _zonesArePickable; void fetchCollisionGeometryResource(); - GeometryResource::Pointer _shapeResource; + ModelResource::Pointer _shapeResource; }; diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 1752c2f024..0299648294 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1377,11 +1377,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // Now that we've initialized the joint, we can define the transform // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate - joint.globalTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; + joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; + joint.globalTransform = joint.localTransform; if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; - // joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; - joint.globalTransform = parentJoint.globalTransform * joint.globalTransform; + // SG Change: i think this not correct and the [parent]*[local] is the correct answer here + //joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; + joint.globalTransform = parentJoint.globalTransform * joint.localTransform; if (parentJoint.hasGeometricOffset) { // Per the FBX standard, geometric offset should not propagate to children. // However, we must be careful when modifying the behavior of FBXSerializer. @@ -1396,13 +1398,21 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.globalTransform = joint.globalTransform * geometricOffset; } - // accumulate local transforms + // TODO: Remove these lines, just here to make sure we are not breaking the transform computation // QString modelID = fbxModels.contains(it.key()) ? it.key() : _connectionParentMap.value(it.key()); glm::mat4 anotherModelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); - /* if (anotherModelTransform != joint.globalTransform) { - joint.globalTransform = anotherModelTransform; + auto col0 = (glm::epsilonNotEqual(anotherModelTransform[0], joint.globalTransform[0], 0.001f)); + auto col1 = (glm::epsilonNotEqual(anotherModelTransform[1], joint.globalTransform[1], 0.001f)); + auto col2 = (glm::epsilonNotEqual(anotherModelTransform[2], joint.globalTransform[2], 0.001f)); + auto col3 = (glm::epsilonNotEqual(anotherModelTransform[3], joint.globalTransform[3], 0.001f)); + if ( glm::any(col0) + || glm::any(col1) + || glm::any(col2) + || glm::any(col3)) { + anotherModelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); + // joint.globalTransform = anotherModelTransform; } -*/ + hfmModel.joints.push_back(joint); } diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 08410f17f2..96030672f2 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -120,6 +120,7 @@ public: glm::vec3 geometricScaling; // globalTransform is the transform of the joint with all parent transforms applied, plus the geometric offset + glm::mat4 localTransform; glm::mat4 globalTransform; }; diff --git a/libraries/material-networking/src/material-networking/MaterialCache.h b/libraries/material-networking/src/material-networking/MaterialCache.h index aa103adb1e..31bbd02198 100644 --- a/libraries/material-networking/src/material-networking/MaterialCache.h +++ b/libraries/material-networking/src/material-networking/MaterialCache.h @@ -50,7 +50,7 @@ public: Textures getTextures() { return _textures; } protected: - friend class Geometry; + friend class NetworkModel; Textures _textures; diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 1fcfcfcc70..e1df0f95c7 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -203,23 +203,23 @@ QUrl resolveTextureBaseUrl(const QUrl& url, const QUrl& textureBaseUrl) { return textureBaseUrl.isValid() ? textureBaseUrl : url; } -GeometryResource::GeometryResource(const GeometryResource& other) : +ModelResource::ModelResource(const ModelResource& other) : Resource(other), - Geometry(other), + NetworkModel(other), _modelLoader(other._modelLoader), _mappingPair(other._mappingPair), _textureBaseURL(other._textureBaseURL), _combineParts(other._combineParts), _isCacheable(other._isCacheable) { - if (other._geometryResource) { + if (other._modelResource) { _startedLoading = false; } } -void GeometryResource::downloadFinished(const QByteArray& data) { +void ModelResource::downloadFinished(const QByteArray& data) { if (_effectiveBaseURL.fileName().toLower().endsWith(".fst")) { - PROFILE_ASYNC_BEGIN(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); + PROFILE_ASYNC_BEGIN(resource_parse_geometry, "ModelResource::downloadFinished", _url.toString(), { { "url", _url.toString() } }); // store parsed contents of FST file _mapping = FSTReader::readMapping(data); @@ -267,19 +267,19 @@ void GeometryResource::downloadFinished(const QByteArray& data) { auto modelCache = DependencyManager::get(); GeometryExtra extra { GeometryMappingPair(base, _mapping), _textureBaseURL, false }; - // Get the raw GeometryResource - _geometryResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); + // Get the raw ModelResource + _modelResource = modelCache->getResource(url, QUrl(), &extra, std::hash()(extra)).staticCast(); // Avoid caching nested resources - their references will be held by the parent - _geometryResource->_isCacheable = false; + _modelResource->_isCacheable = false; - if (_geometryResource->isLoaded()) { - onGeometryMappingLoaded(!_geometryResource->getURL().isEmpty()); + if (_modelResource->isLoaded()) { + onGeometryMappingLoaded(!_modelResource->getURL().isEmpty()); } else { if (_connection) { disconnect(_connection); } - _connection = connect(_geometryResource.data(), &Resource::finished, this, &GeometryResource::onGeometryMappingLoaded); + _connection = connect(_modelResource.data(), &Resource::finished, this, &ModelResource::onGeometryMappingLoaded); } } } else { @@ -291,32 +291,32 @@ void GeometryResource::downloadFinished(const QByteArray& data) { } } -void GeometryResource::onGeometryMappingLoaded(bool success) { - if (success && _geometryResource) { - _hfmModel = _geometryResource->_hfmModel; - _materialMapping = _geometryResource->_materialMapping; - _meshParts = _geometryResource->_meshParts; - _meshes = _geometryResource->_meshes; - _materials = _geometryResource->_materials; +void ModelResource::onGeometryMappingLoaded(bool success) { + if (success && _modelResource) { + _hfmModel = _modelResource->_hfmModel; + _materialMapping = _modelResource->_materialMapping; + _meshParts = _modelResource->_meshParts; + _meshes = _modelResource->_meshes; + _materials = _modelResource->_materials; // Avoid holding onto extra references - _geometryResource.reset(); + _modelResource.reset(); // Make sure connection will not trigger again disconnect(_connection); // FIXME Should not have to do this } - PROFILE_ASYNC_END(resource_parse_geometry, "GeometryResource::downloadFinished", _url.toString()); + PROFILE_ASYNC_END(resource_parse_geometry, "ModelResource::downloadFinished", _url.toString()); finishedLoading(success); } -void GeometryResource::setExtra(void* extra) { +void ModelResource::setExtra(void* extra) { const GeometryExtra* geometryExtra = static_cast(extra); _mappingPair = geometryExtra ? geometryExtra->mapping : GeometryMappingPair(QUrl(), QVariantHash()); _textureBaseURL = geometryExtra ? resolveTextureBaseUrl(_url, geometryExtra->textureBaseUrl) : QUrl(); _combineParts = geometryExtra ? geometryExtra->combineParts : true; } -void GeometryResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const MaterialMapping& materialMapping) { +void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const MaterialMapping& materialMapping) { // Assume ownership of the processed HFMModel _hfmModel = hfmModel; _materialMapping = materialMapping; @@ -348,12 +348,12 @@ void GeometryResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const M finishedLoading(true); } -void GeometryResource::deleter() { +void ModelResource::deleter() { resetTextures(); Resource::deleter(); } -void GeometryResource::setTextures() { +void ModelResource::setTextures() { if (_hfmModel) { for (const HFMMaterial& material : _hfmModel->materials) { _materials.push_back(std::make_shared(material, _textureBaseURL)); @@ -361,7 +361,7 @@ void GeometryResource::setTextures() { } } -void GeometryResource::resetTextures() { +void ModelResource::resetTextures() { _materials.clear(); } @@ -377,17 +377,17 @@ ModelCache::ModelCache() { } QSharedPointer ModelCache::createResource(const QUrl& url) { - return QSharedPointer(new GeometryResource(url, _modelLoader), &GeometryResource::deleter); + return QSharedPointer(new ModelResource(url, _modelLoader), &ModelResource::deleter); } QSharedPointer ModelCache::createResourceCopy(const QSharedPointer& resource) { - return QSharedPointer(new GeometryResource(*resource.staticCast()), &GeometryResource::deleter); + return QSharedPointer(new ModelResource(*resource.staticCast()), &ModelResource::deleter); } -GeometryResource::Pointer ModelCache::getGeometryResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { +ModelResource::Pointer ModelCache::getModelResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { bool combineParts = true; GeometryExtra geometryExtra = { mapping, textureBaseUrl, combineParts }; - GeometryResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); + ModelResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); if (resource) { if (resource->isLoaded() && resource->shouldSetTextures()) { resource->setTextures(); @@ -396,12 +396,12 @@ GeometryResource::Pointer ModelCache::getGeometryResource(const QUrl& url, const return resource; } -GeometryResource::Pointer ModelCache::getCollisionGeometryResource(const QUrl& url, +ModelResource::Pointer ModelCache::getCollisionModelResource(const QUrl& url, const GeometryMappingPair& mapping, const QUrl& textureBaseUrl) { bool combineParts = false; GeometryExtra geometryExtra = { mapping, textureBaseUrl, combineParts }; - GeometryResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); + ModelResource::Pointer resource = getResource(url, QUrl(), &geometryExtra, std::hash()(geometryExtra)).staticCast(); if (resource) { if (resource->isLoaded() && resource->shouldSetTextures()) { resource->setTextures(); @@ -410,7 +410,7 @@ GeometryResource::Pointer ModelCache::getCollisionGeometryResource(const QUrl& u return resource; } -const QVariantMap Geometry::getTextures() const { +const QVariantMap NetworkModel::getTextures() const { QVariantMap textures; for (const auto& material : _materials) { for (const auto& texture : material->_textures) { @@ -424,22 +424,22 @@ const QVariantMap Geometry::getTextures() const { } // FIXME: The materials should only be copied when modified, but the Model currently caches the original -Geometry::Geometry(const Geometry& geometry) { - _hfmModel = geometry._hfmModel; - _materialMapping = geometry._materialMapping; - _meshes = geometry._meshes; - _meshParts = geometry._meshParts; +NetworkModel::NetworkModel(const NetworkModel& networkModel) { + _hfmModel = networkModel._hfmModel; + _materialMapping = networkModel._materialMapping; + _meshes = networkModel._meshes; + _meshParts = networkModel._meshParts; - _materials.reserve(geometry._materials.size()); - for (const auto& material : geometry._materials) { + _materials.reserve(networkModel._materials.size()); + for (const auto& material : networkModel._materials) { _materials.push_back(std::make_shared(*material)); } - _animGraphOverrideUrl = geometry._animGraphOverrideUrl; - _mapping = geometry._mapping; + _animGraphOverrideUrl = networkModel._animGraphOverrideUrl; + _mapping = networkModel._mapping; } -void Geometry::setTextures(const QVariantMap& textureMap) { +void NetworkModel::setTextures(const QVariantMap& textureMap) { if (_meshes->size() > 0) { for (auto& material : _materials) { // Check if any material textures actually changed @@ -447,7 +447,7 @@ void Geometry::setTextures(const QVariantMap& textureMap) { [&textureMap](const NetworkMaterial::Textures::value_type& it) { return it.second.texture && textureMap.contains(it.second.name); })) { // FIXME: The Model currently caches the materials (waste of space!) - // so they must be copied in the Geometry copy-ctor + // so they must be copied in the NetworkModel copy-ctor // if (material->isOriginal()) { // // Copy the material to avoid mutating the cached version // material = std::make_shared(*material); @@ -461,11 +461,11 @@ void Geometry::setTextures(const QVariantMap& textureMap) { // If we only use cached textures, they should all be loaded areTexturesLoaded(); } else { - qCWarning(modelnetworking) << "Ignoring setTextures(); geometry not ready"; + qCWarning(modelnetworking) << "Ignoring setTextures(); NetworkModel not ready"; } } -bool Geometry::areTexturesLoaded() const { +bool NetworkModel::areTexturesLoaded() const { if (!_areTexturesLoaded) { for (auto& material : _materials) { if (material->isMissingTexture()) { @@ -500,30 +500,35 @@ bool Geometry::areTexturesLoaded() const { return true; } -const std::shared_ptr Geometry::getShapeMaterial(int partID) const { - if ((partID >= 0) && (partID < (int)_meshParts->size())) { +const std::shared_ptr NetworkModel::getShapeMaterial(int partID) const { + /* if ((partID >= 0) && (partID < (int)_meshParts->size())) { int materialID = _meshParts->at(partID)->materialID; if ((materialID >= 0) && (materialID < (int)_materials.size())) { return _materials[materialID]; } + }*/ + + auto materialID = getHFMModel().shapes[partID].material; + if ((materialID >= 0) && (materialID < (int)_materials.size())) { + return _materials[materialID]; } return nullptr; } -void GeometryResourceWatcher::startWatching() { - connect(_resource.data(), &Resource::finished, this, &GeometryResourceWatcher::resourceFinished); - connect(_resource.data(), &Resource::onRefresh, this, &GeometryResourceWatcher::resourceRefreshed); +void ModelResourceWatcher::startWatching() { + connect(_resource.data(), &Resource::finished, this, &ModelResourceWatcher::resourceFinished); + connect(_resource.data(), &Resource::onRefresh, this, &ModelResourceWatcher::resourceRefreshed); if (_resource->isLoaded()) { resourceFinished(!_resource->getURL().isEmpty()); } } -void GeometryResourceWatcher::stopWatching() { - disconnect(_resource.data(), &Resource::finished, this, &GeometryResourceWatcher::resourceFinished); - disconnect(_resource.data(), &Resource::onRefresh, this, &GeometryResourceWatcher::resourceRefreshed); +void ModelResourceWatcher::stopWatching() { + disconnect(_resource.data(), &Resource::finished, this, &ModelResourceWatcher::resourceFinished); + disconnect(_resource.data(), &Resource::onRefresh, this, &ModelResourceWatcher::resourceRefreshed); } -void GeometryResourceWatcher::setResource(GeometryResource::Pointer resource) { +void ModelResourceWatcher::setResource(ModelResource::Pointer resource) { if (_resource) { stopWatching(); } @@ -537,14 +542,14 @@ void GeometryResourceWatcher::setResource(GeometryResource::Pointer resource) { } } -void GeometryResourceWatcher::resourceFinished(bool success) { +void ModelResourceWatcher::resourceFinished(bool success) { if (success) { - _geometryRef = std::make_shared(*_resource); + _networkModelRef = std::make_shared(*_resource); } emit finished(success); } -void GeometryResourceWatcher::resourceRefreshed() { +void ModelResourceWatcher::resourceRefreshed() { // FIXME: Model is not set up to handle a refresh // _instance.reset(); } diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index 5b78c18184..9fdae339f7 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -27,14 +27,14 @@ class MeshPart; using GeometryMappingPair = std::pair; Q_DECLARE_METATYPE(GeometryMappingPair) -class Geometry { +class NetworkModel { public: - using Pointer = std::shared_ptr; - using WeakPointer = std::weak_ptr; + using Pointer = std::shared_ptr; + using WeakPointer = std::weak_ptr; - Geometry() = default; - Geometry(const Geometry& geometry); - virtual ~Geometry() = default; + NetworkModel() = default; + NetworkModel(const NetworkModel& geometry); + virtual ~NetworkModel() = default; // Immutable over lifetime using GeometryMeshes = std::vector>; @@ -76,22 +76,22 @@ private: }; /// A geometry loaded from the network. -class GeometryResource : public Resource, public Geometry { +class ModelResource : public Resource, public NetworkModel { Q_OBJECT public: - using Pointer = QSharedPointer; + using Pointer = QSharedPointer; - GeometryResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) {} - GeometryResource(const GeometryResource& other); + ModelResource(const QUrl& url, const ModelLoader& modelLoader) : Resource(url), _modelLoader(modelLoader) {} + ModelResource(const ModelResource& other); - QString getType() const override { return "Geometry"; } + QString getType() const override { return "Model"; } virtual void deleter() override; virtual void downloadFinished(const QByteArray& data) override; void setExtra(void* extra) override; - virtual bool areTexturesLoaded() const override { return isLoaded() && Geometry::areTexturesLoaded(); } + virtual bool areTexturesLoaded() const override { return isLoaded() && NetworkModel::areTexturesLoaded(); } private slots: void onGeometryMappingLoaded(bool success); @@ -115,21 +115,21 @@ private: QUrl _textureBaseURL; bool _combineParts; - GeometryResource::Pointer _geometryResource; + ModelResource::Pointer _modelResource; QMetaObject::Connection _connection; bool _isCacheable{ true }; }; -class GeometryResourceWatcher : public QObject { +class ModelResourceWatcher : public QObject { Q_OBJECT public: - using Pointer = std::shared_ptr; + using Pointer = std::shared_ptr; - GeometryResourceWatcher() = delete; - GeometryResourceWatcher(Geometry::Pointer& geometryPtr) : _geometryRef(geometryPtr) {} + ModelResourceWatcher() = delete; + ModelResourceWatcher(NetworkModel::Pointer& geometryPtr) : _networkModelRef(geometryPtr) {} - void setResource(GeometryResource::Pointer resource); + void setResource(ModelResource::Pointer resource); QUrl getURL() const { return (bool)_resource ? _resource->getURL() : QUrl(); } int getResourceDownloadAttempts() { return _resource ? _resource->getDownloadAttempts() : 0; } @@ -147,8 +147,8 @@ private slots: void resourceRefreshed(); private: - GeometryResource::Pointer _resource; - Geometry::Pointer& _geometryRef; + ModelResource::Pointer _resource; + NetworkModel::Pointer& _networkModelRef; }; /// Stores cached model geometries. @@ -158,18 +158,18 @@ class ModelCache : public ResourceCache, public Dependency { public: - GeometryResource::Pointer getGeometryResource(const QUrl& url, + ModelResource::Pointer getModelResource(const QUrl& url, const GeometryMappingPair& mapping = GeometryMappingPair(QUrl(), QVariantHash()), const QUrl& textureBaseUrl = QUrl()); - GeometryResource::Pointer getCollisionGeometryResource(const QUrl& url, + ModelResource::Pointer getCollisionModelResource(const QUrl& url, const GeometryMappingPair& mapping = GeometryMappingPair(QUrl(), QVariantHash()), const QUrl& textureBaseUrl = QUrl()); protected: - friend class GeometryResource; + friend class ModelResource; virtual QSharedPointer createResource(const QUrl& url) override; QSharedPointer createResourceCopy(const QSharedPointer& resource) override; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 9cdefa0545..6e8f37d354 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -87,7 +87,7 @@ void CauterizedModel::createRenderItemSet() { for (int partIndex = 0; partIndex < numParts; partIndex++) { auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); _modelMeshRenderItems << std::static_pointer_cast(ptr); - auto material = getGeometry()->getShapeMaterial(shapeID); + auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); shapeID++; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 1a6e5dbadc..fcf0ffaa48 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -202,9 +202,13 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in assert(model && model->isLoaded()); + auto shape = model->getHFMModel().shapes[shapeIndex]; + assert(shape.mesh == meshIndex); + assert(shape.meshPart == partIndex); + bool useDualQuaternionSkinning = model->getUseDualQuaternionSkinning(); - auto& modelMesh = model->getGeometry()->getMeshes().at(_meshIndex); + auto& modelMesh = model->getNetworkModel()->getMeshes().at(_meshIndex); _meshNumVertices = (int)modelMesh->getNumVertices(); const Model::MeshState& state = model->getMeshState(_meshIndex); @@ -263,7 +267,7 @@ void ModelMeshPartPayload::initCache(const ModelPointer& model) { _hasTangents = !mesh.tangents.isEmpty(); } - auto networkMaterial = model->getGeometry()->getShapeMaterial(_shapeID); + auto networkMaterial = model->getNetworkModel()->getShapeMaterial(_shapeID); if (networkMaterial) { addMaterial(graphics::MaterialLayer(networkMaterial, 0)); } diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index aa3708fb1e..f9e980b2ac 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -42,7 +42,7 @@ using namespace std; int nakedModelPointerTypeId = qRegisterMetaType(); -int weakGeometryResourceBridgePointerTypeId = qRegisterMetaType(); +int weakGeometryResourceBridgePointerTypeId = qRegisterMetaType(); int vec3VectorTypeId = qRegisterMetaType>(); int normalTypeVecTypeId = qRegisterMetaType>("QVector"); float Model::FAKE_DIMENSION_PLACEHOLDER = -1.0f; @@ -71,7 +71,7 @@ Model::Model(QObject* parent, SpatiallyNestable* spatiallyNestableOverride) : setSnapModelToRegistrationPoint(true, glm::vec3(0.5f)); - connect(&_renderWatcher, &GeometryResourceWatcher::finished, this, &Model::loadURLFinished); + connect(&_renderWatcher, &ModelResourceWatcher::finished, this, &Model::loadURLFinished); } Model::~Model() { @@ -151,7 +151,7 @@ void Model::setOffset(const glm::vec3& offset) { } void Model::calculateTextureInfo() { - if (!_hasCalculatedTextureInfo && isLoaded() && getGeometry()->areTexturesLoaded() && !_modelMeshRenderItemsMap.isEmpty()) { + if (!_hasCalculatedTextureInfo && isLoaded() && getNetworkModel()->areTexturesLoaded() && !_modelMeshRenderItemsMap.isEmpty()) { size_t textureSize = 0; int textureCount = 0; bool allTexturesLoaded = true; @@ -178,12 +178,12 @@ int Model::getRenderInfoTextureCount() { } bool Model::shouldInvalidatePayloadShapeKey(int meshIndex) { - if (!getGeometry()) { + if (!getNetworkModel()) { return true; } const HFMModel& hfmModel = getHFMModel(); - const auto& networkMeshes = getGeometry()->getMeshes(); + const auto& networkMeshes = getNetworkModel()->getMeshes(); // if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown // to false to rebuild out mesh groups. if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size() || meshIndex >= (int)_meshStates.size()) { @@ -643,8 +643,8 @@ glm::mat4 Model::getWorldToHFMMatrix() const { // TODO: deprecate and remove MeshProxyList Model::getMeshes() const { MeshProxyList result; - const Geometry::Pointer& renderGeometry = getGeometry(); - const Geometry::GeometryMeshes& meshes = renderGeometry->getMeshes(); + const NetworkModel::Pointer& renderGeometry = getNetworkModel(); + const NetworkModel::GeometryMeshes& meshes = renderGeometry->getMeshes(); if (!isLoaded()) { return result; @@ -772,7 +772,7 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { auto& materialName = _modelMeshMaterialNames[shapeID]; - result.appendMaterial(graphics::MaterialLayer(getGeometry()->getShapeMaterial(shapeID), 0), shapeID, materialName); + result.appendMaterial(graphics::MaterialLayer(getNetworkModel()->getShapeMaterial(shapeID), 0), shapeID, materialName); { std::unique_lock lock(_materialMappingMutex); @@ -1196,7 +1196,7 @@ void Model::setURL(const QUrl& url) { invalidCalculatedMeshBoxes(); deleteGeometry(); - auto resource = DependencyManager::get()->getGeometryResource(url); + auto resource = DependencyManager::get()->getModelResource(url); if (resource) { resource->setLoadPriority(this, _loadingPriority); _renderWatcher.setResource(resource); @@ -1487,7 +1487,7 @@ void Model::createRenderItemSet() { int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); - auto material = getGeometry()->getShapeMaterial(shapeID); + auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); shapeID++; @@ -1680,7 +1680,7 @@ void Model::removeMaterial(graphics::MaterialPointer material, const std::string AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); } -class CollisionRenderGeometry : public Geometry { +class CollisionRenderGeometry : public NetworkModel { public: CollisionRenderGeometry(graphics::MeshPointer mesh) { _hfmModel = std::make_shared(); @@ -1838,7 +1838,7 @@ void Blender::run() { bool Model::maybeStartBlender() { if (isLoaded()) { - QThreadPool::globalInstance()->start(new Blender(getThisPointer(), getGeometry()->getConstHFMModelPointer(), + QThreadPool::globalInstance()->start(new Blender(getThisPointer(), getNetworkModel()->getConstHFMModelPointer(), ++_blendNumber, _blendshapeCoefficients)); return true; } diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 2ea1f87fae..79ddaeb68d 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -178,7 +178,7 @@ public: virtual void updateClusterMatrices(); /// Returns a reference to the shared geometry. - const Geometry::Pointer& getGeometry() const { return _renderGeometry; } + const NetworkModel::Pointer& getNetworkModel() const { return _renderGeometry; } const QVariantMap getTextures() const { assert(isLoaded()); return _renderGeometry->getTextures(); } Q_INVOKABLE virtual void setTextures(const QVariantMap& textures); @@ -391,9 +391,9 @@ protected: /// \return true if joint exists bool getJointPosition(int jointIndex, glm::vec3& position) const; - Geometry::Pointer _renderGeometry; // only ever set by its watcher + NetworkModel::Pointer _renderGeometry; // only ever set by its watcher - GeometryResourceWatcher _renderWatcher; + ModelResourceWatcher _renderWatcher; SpatiallyNestable* _spatiallyNestableOverride; @@ -515,7 +515,7 @@ private: }; Q_DECLARE_METATYPE(ModelPointer) -Q_DECLARE_METATYPE(Geometry::WeakPointer) +Q_DECLARE_METATYPE(NetworkModel::WeakPointer) Q_DECLARE_METATYPE(BlendshapeOffset) /// Handle management of pending models that need blending From da4ffcd91b5f7f0348a46015b65b1a27a81d6498 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 4 Oct 2019 14:51:55 -0700 Subject: [PATCH 046/547] GLTF WIP --- libraries/fbx/src/GLTFSerializer.cpp | 29 +++++++--------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 7fdbcce141..70e765c23a 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1005,8 +1005,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& // Build joints HFMJoint joint; hfmModel.jointIndices["x"] = numNodes; - QVector globalTransforms; - globalTransforms.resize(numNodes); for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { auto& node = _file.nodes[nodeIndex]; @@ -1022,10 +1020,12 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& joint.rotation = glmExtractRotation(joint.transform); glm::vec3 scale = extractScale(joint.transform); joint.postTransform = glm::scale(glm::mat4(), scale); - globalTransforms[nodeIndex] = joint.transform; - if (joint.parentIndex != -1) { - globalTransforms[nodeIndex] = globalTransforms[joint.parentIndex] * globalTransforms[nodeIndex]; + joint.globalTransform = joint.transform; + // Nodes are sorted, so we can apply the full transform just by getting the global transform of the already defined parent + if (joint.parentIndex != -1 && joint.parentIndex != nodeIndex) { + const auto& parentJoint = hfmModel.joints[(size_t)nodeIndex]; + joint.globalTransform = parentJoint.globalTransform * joint.globalTransform; } joint.name = node.name; @@ -1368,7 +1368,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); } - // TODO: add correct tangent generation if (tangents.size() == partVerticesCount * tangentStride) { mesh.tangents.reserve(partVerticesCount); for (int n = 0; n < tangents.size(); n += tangentStride) { @@ -1582,22 +1581,8 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } } - } - -#if 0 - for(const glm::vec3& vertex : mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(globalTransforms[nodeIndex] * glm::vec4(vertex, 1.0f)); - mesh.meshExtents.addPoint(transformedVertex); - hfmModel.meshExtents.addPoint(transformedVertex); - } -#endif + } } - - // Add epsilon to mesh extents to compensate for planar meshes - mesh.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); - mesh.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); - hfmModel.meshExtents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); - hfmModel.meshExtents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); } @@ -1611,7 +1596,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& int primCount = (int)mesh.primitives.size(); for (int primIndex = 0; primIndex < primCount; ++primIndex) { const auto& primitive = mesh.primitives[primIndex]; - hfmModel.shapes.push_back({}); + hfmModel.shapes.emplace_back(); auto& hfmShape = hfmModel.shapes.back(); hfmShape.transform = nodeIndex; hfmShape.mesh = node.mesh; From 09f584818b0b9dae93a03f4dd7020689f795b09d Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 4 Oct 2019 14:15:44 -0700 Subject: [PATCH 047/547] Add extent calculation utilities, CalculateExtentsTask, make tangent calculation more lenient --- libraries/hfm/src/hfm/HFMModelMath.cpp | 66 +++++++++++++++++++ libraries/hfm/src/hfm/HFMModelMath.h | 30 +++++++++ .../model-baker/src/model-baker/Baker.cpp | 17 ++++- .../src/model-baker/CalculateExtentsTask.cpp | 41 ++++++++++++ .../src/model-baker/CalculateExtentsTask.h | 29 ++++++++ .../model-baker/CalculateMeshTangentsTask.cpp | 2 +- 6 files changed, 181 insertions(+), 4 deletions(-) create mode 100644 libraries/hfm/src/hfm/HFMModelMath.cpp create mode 100644 libraries/hfm/src/hfm/HFMModelMath.h create mode 100644 libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp create mode 100644 libraries/model-baker/src/model-baker/CalculateExtentsTask.h diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp new file mode 100644 index 0000000000..8812163fe2 --- /dev/null +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -0,0 +1,66 @@ +// +// HFMModelMath.cpp +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/10/04. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "HFMModelMath.h" + +namespace hfm { + +void forEachIndex(const hfm::MeshPart& meshPart, std::function func) { + for (int i = 0; i <= meshPart.quadIndices.size() - 4; i += 4) { + func((uint32_t)meshPart.quadIndices[i]); + func((uint32_t)meshPart.quadIndices[i+1]); + func((uint32_t)meshPart.quadIndices[i+2]); + func((uint32_t)meshPart.quadIndices[i+3]); + } + for (int i = 0; i <= meshPart.triangleIndices.size() - 3; i += 3) { + func((uint32_t)meshPart.triangleIndices[i]); + func((uint32_t)meshPart.triangleIndices[i+1]); + func((uint32_t)meshPart.triangleIndices[i+2]); + } +} + +void thickenFlatExtents(Extents& extents) { + // Add epsilon to extents to compensate for flat plane + extents.minimum -= glm::vec3(EPSILON, EPSILON, EPSILON); + extents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); +} + +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints) { + auto& shapeExtents = shape.transformedExtents; + shapeExtents.reset(); + + const auto& mesh = meshes[shape.mesh]; + const auto& meshPart = mesh.parts[shape.meshPart]; + + glm::mat4 globalTransform = joints[shape.transform].globalTransform; + forEachIndex(meshPart, [&](int32_t idx){ + if (mesh.vertices.size() <= idx) { + return; + } + const glm::vec3& vertex = mesh.vertices[idx]; + const glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); + shapeExtents.addPoint(vertex); + }); + + thickenFlatExtents(shapeExtents); +} + +void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes) { + modelExtents.reset(); + + for (size_t i = 0; i < shapes.size(); ++i) { + const auto& shape = shapes[i]; + const auto& shapeExtents = shape.transformedExtents; + modelExtents.addExtents(shapeExtents); + } +} + +}; diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h new file mode 100644 index 0000000000..d1e3c09763 --- /dev/null +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -0,0 +1,30 @@ +// +// HFMModelMath.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/10/04. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_hfm_ModelMath_h +#define hifi_hfm_ModelMath_h + +#include "HFM.h" + +namespace hfm { + +void forEachIndex(const hfm::MeshPart& meshPart, std::function func); + +void initializeExtents(Extents& extents); + +// This can't be moved to model-baker until +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints); + +void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); + +}; + +#endif // #define hifi_hfm_ModelMath_h diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index ccb5e1816f..1b7242f2d4 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -21,6 +21,7 @@ #include "CalculateBlendshapeNormalsTask.h" #include "CalculateBlendshapeTangentsTask.h" #include "PrepareJointsTask.h" +#include "CalculateExtentsTask.h" #include "BuildDracoMeshTask.h" #include "ParseFlowDataTask.h" @@ -29,7 +30,7 @@ namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector>; + using Output = VaryingSet9, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector, Extents>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { @@ -46,6 +47,7 @@ namespace baker { output.edit5() = hfmModelIn->shapes; output.edit6() = hfmModelIn->dynamicTransforms; output.edit7() = hfmModelIn->deformers; + output.edit8() = hfmModelIn->meshExtents; } }; @@ -106,7 +108,7 @@ namespace baker { class BuildModelTask { public: - using Input = VaryingSet7, std::vector, QMap, QHash, FlowData, std::vector>; + using Input = VaryingSet9, std::vector, QMap, QHash, FlowData, std::vector, std::vector, Extents>; using Output = hfm::Model::Pointer; using JobModel = Job::ModelIO; @@ -118,6 +120,8 @@ namespace baker { hfmModelOut->jointIndices = input.get4(); hfmModelOut->flowData = input.get5(); hfmModelOut->shapeVertices = input.get6(); + hfmModelOut->shapes = input.get7(); + hfmModelOut->meshExtents = input.get8(); // These depend on the ShapeVertices // TODO: Create a task for this rather than calculating it here hfmModelOut->computeKdops(); @@ -145,6 +149,7 @@ namespace baker { const auto shapesIn = modelPartsIn.getN(5); const auto dynamicTransformsIn = modelPartsIn.getN(6); const auto deformersIn = modelPartsIn.getN(7); + const auto modelExtentsIn = modelPartsIn.getN(8); // Calculate normals and tangents for meshes and blendshapes if they do not exist // Note: Normals are never calculated here for OBJ models. OBJ files optionally define normals on a per-face basis, so for consistency normals are calculated beforehand in OBJSerializer. @@ -175,6 +180,12 @@ namespace baker { const auto jointRotationOffsets = jointInfoOut.getN(1); const auto jointIndices = jointInfoOut.getN(2); + // Use transform information to compute extents + const auto calculateExtentsInputs = CalculateExtentsTask::Input(modelExtentsIn, meshesIn, shapesIn, jointsOut).asVarying(); + const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); + const auto modelExtentsOut = calculateExtentsOutputs.getN(0); + const auto shapesOut = calculateExtentsOutputs.getN(1); + // Parse material mapping const auto parseMaterialMappingInputs = ParseMaterialMappingTask::Input(mapping, materialMappingBaseURL).asVarying(); const auto materialMapping = model.addJob("ParseMaterialMapping", parseMaterialMappingInputs); @@ -198,7 +209,7 @@ namespace baker { const auto blendshapesPerMeshOut = model.addJob("BuildBlendshapes", buildBlendshapesInputs); const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); const auto meshesOut = model.addJob("BuildMeshes", buildMeshesInputs); - const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData, shapeVerticesPerJoint).asVarying(); + const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData, shapeVerticesPerJoint, shapesOut, modelExtentsOut).asVarying(); const auto hfmModelOut = model.addJob("BuildModel", buildModelInputs); output = Output(hfmModelOut, materialMapping, dracoMeshes, dracoErrors, materialList); diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp new file mode 100644 index 0000000000..e237cdb402 --- /dev/null +++ b/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp @@ -0,0 +1,41 @@ +// +// CalculateExtentsTask.cpp +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/10/04. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "CalculateExtentsTask.h" + +#include "hfm/HFMModelMath.h" + +void CalculateExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { + const auto& modelExtentsIn = input.get0(); + const auto& meshes = input.get1(); + const auto& shapesIn = input.get2(); + const auto& joints = input.get3(); + auto& modelExtentsOut = output.edit0(); + auto& shapesOut = output.edit1(); + + shapesOut.reserve(shapesIn.size()); + for (size_t i = 0; i < shapesIn.size(); ++i) { + shapesOut.push_back(shapesIn[i]); + auto& shapeOut = shapesOut.back(); + + auto& shapeExtents = shapeOut.transformedExtents; + if (shapeExtents.isValid()) { + continue; + } + + hfm::calculateExtentsForShape(shapeOut, meshes, joints); + } + + modelExtentsOut = modelExtentsIn; + if (!modelExtentsOut.isValid()) { + hfm::calculateExtentsForModel(modelExtentsOut, shapesOut); + } +} diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.h b/libraries/model-baker/src/model-baker/CalculateExtentsTask.h new file mode 100644 index 0000000000..006688ec5a --- /dev/null +++ b/libraries/model-baker/src/model-baker/CalculateExtentsTask.h @@ -0,0 +1,29 @@ +// +// CalculateExtentsTask.h +// model-baker/src/model-baker +// +// Created by Sabrina Shanman on 2019/10/04. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_CalculateExtentsTask_h +#define hifi_CalculateExtentsTask_h + +#include "Engine.h" +#include "hfm/HFM.h" + +// Calculates any undefined extents in the shapes and the model. Precalculated extents will be left alone. +// Bind extents will currently not be calculated +class CalculateExtentsTask { +public: + using Input = baker::VaryingSet4, std::vector, std::vector>; + using Output = baker::VaryingSet2>; + using JobModel = baker::Job::ModelIO; + + void run(const baker::BakeContextPointer& context, const Input& input, Output& output); +}; + +#endif // hifi_CalculateExtentsTask_h diff --git a/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp index 297d8cbde7..6147ce72e7 100644 --- a/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp +++ b/libraries/model-baker/src/model-baker/CalculateMeshTangentsTask.cpp @@ -30,7 +30,7 @@ void CalculateMeshTangentsTask::run(const baker::BakeContextPointer& context, co // Otherwise confirm if we have the normals and texcoords needed if (!tangentsIn.empty()) { tangentsOut = tangentsIn.toStdVector(); - } else if (!normals.empty() && mesh.vertices.size() == mesh.texCoords.size()) { + } else if (!normals.empty() && mesh.vertices.size() <= mesh.texCoords.size()) { tangentsOut.resize(normals.size()); baker::calculateTangents(mesh, [&mesh, &normals, &tangentsOut](int firstIndex, int secondIndex, glm::vec3* outVertices, glm::vec2* outTexCoords, glm::vec3& outNormal) { From 936ac6f120fe5fe6a56e719ac122f48f6ddd2d8d Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 7 Oct 2019 18:03:33 -0700 Subject: [PATCH 048/547] REmoving more repetitions of the meshParts --- .../src/model-networking/ModelCache.cpp | 22 +++---------------- .../src/model-networking/ModelCache.h | 12 ---------- libraries/render-utils/src/Model.cpp | 1 - 3 files changed, 3 insertions(+), 32 deletions(-) diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index e1df0f95c7..2376beba30 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -295,7 +295,7 @@ void ModelResource::onGeometryMappingLoaded(bool success) { if (success && _modelResource) { _hfmModel = _modelResource->_hfmModel; _materialMapping = _modelResource->_materialMapping; - _meshParts = _modelResource->_meshParts; + // _meshParts = _modelResource->_meshParts; _meshes = _modelResource->_meshes; _materials = _modelResource->_materials; @@ -329,21 +329,13 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate } std::shared_ptr meshes = std::make_shared(); - std::shared_ptr parts = std::make_shared(); int meshID = 0; for (const HFMMesh& mesh : _hfmModel->meshes) { // Copy mesh pointers meshes->emplace_back(mesh._mesh); - int partID = 0; - for (const HFMMeshPart& part : mesh.parts) { - // Construct local parts - parts->push_back(std::make_shared(meshID, partID, (int)materialIDAtlas[part.materialID])); - partID++; - } meshID++; } _meshes = meshes; - _meshParts = parts; finishedLoading(true); } @@ -428,7 +420,6 @@ NetworkModel::NetworkModel(const NetworkModel& networkModel) { _hfmModel = networkModel._hfmModel; _materialMapping = networkModel._materialMapping; _meshes = networkModel._meshes; - _meshParts = networkModel._meshParts; _materials.reserve(networkModel._materials.size()); for (const auto& material : networkModel._materials) { @@ -500,15 +491,8 @@ bool NetworkModel::areTexturesLoaded() const { return true; } -const std::shared_ptr NetworkModel::getShapeMaterial(int partID) const { - /* if ((partID >= 0) && (partID < (int)_meshParts->size())) { - int materialID = _meshParts->at(partID)->materialID; - if ((materialID >= 0) && (materialID < (int)_materials.size())) { - return _materials[materialID]; - } - }*/ - - auto materialID = getHFMModel().shapes[partID].material; +const std::shared_ptr NetworkModel::getShapeMaterial(int shapeID) const { + auto materialID = getHFMModel().shapes[shapeID].material; if ((materialID >= 0) && (materialID < (int)_materials.size())) { return _materials[materialID]; } diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index 9fdae339f7..87dbbe975d 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -22,8 +22,6 @@ #include #include "ModelLoader.h" -class MeshPart; - using GeometryMappingPair = std::pair; Q_DECLARE_METATYPE(GeometryMappingPair) @@ -38,7 +36,6 @@ public: // Immutable over lifetime using GeometryMeshes = std::vector>; - using GeometryMeshParts = std::vector>; // Mutable, but must retain structure of vector using NetworkMaterials = std::vector>; @@ -63,7 +60,6 @@ protected: HFMModel::ConstPointer _hfmModel; MaterialMapping _materialMapping; std::shared_ptr _meshes; - std::shared_ptr _meshParts; // Copied to each geometry, mutable throughout lifetime via setTextures NetworkMaterials _materials; @@ -180,12 +176,4 @@ private: ModelLoader _modelLoader; }; -class MeshPart { -public: - MeshPart(int mesh, int part, int material) : meshID { mesh }, partID { part }, materialID { material } {} - int meshID { -1 }; - int partID { -1 }; - int materialID { -1 }; -}; - #endif // hifi_ModelCache_h diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index f9e980b2ac..f39038aa74 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -1687,7 +1687,6 @@ public: std::shared_ptr meshes = std::make_shared(); meshes->push_back(mesh); _meshes = meshes; - _meshParts = std::shared_ptr(); } }; From 1f3993c3080c93931f4e6e2e3d7639e1c2b7fe32 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 8 Oct 2019 18:13:24 -0700 Subject: [PATCH 049/547] getting the transform right for the rigid bodies --- interface/src/avatar/MyAvatar.cpp | 4 +-- libraries/fbx/src/FBXSerializer.cpp | 14 ++++----- .../render-utils/src/CauterizedModel.cpp | 12 ++++++-- .../render-utils/src/MeshPartPayload.cpp | 11 +++++-- libraries/render-utils/src/Model.cpp | 30 +++++++++++++++++-- libraries/render-utils/src/Model.h | 8 +++++ 6 files changed, 62 insertions(+), 17 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index de6ae526b4..a7fd397915 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -2496,7 +2496,7 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { if (_fullAvatarModelName.isEmpty()) { // Store the FST file name into preferences - const auto& mapping = _skeletonModel->getGeometry()->getMapping(); + const auto& mapping = _skeletonModel->getNetworkModel()->getMapping(); if (mapping.value("name").isValid()) { _fullAvatarModelName = mapping.value("name").toString(); } @@ -2504,7 +2504,7 @@ void MyAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) { initHeadBones(); _skeletonModel->setCauterizeBoneSet(_headBoneSet); - _fstAnimGraphOverrideUrl = _skeletonModel->getGeometry()->getAnimGraphOverrideUrl(); + _fstAnimGraphOverrideUrl = _skeletonModel->getNetworkModel()->getAnimGraphOverrideUrl(); initAnimGraph(); initFlowFromFST(); diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 0299648294..2fa90af9db 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -530,8 +530,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const if (object.properties.at(2) == "Mesh") { meshes.insert(getID(object.properties), extractMesh(object, meshIndex, deduplicateIndices)); } else { // object.properties.at(2) == "Shape" - ExtractedBlendshape extracted = { getID(object.properties), extractBlendshape(object) }; - blendshapes.append(extracted); + ExtractedBlendshape blendshape = { getID(object.properties), extractBlendshape(object) }; + blendshapes.append(blendshape); } } else if (object.name == "Model") { QString name = getModelName(object.properties); @@ -705,8 +705,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // add the blendshapes included in the model, if any if (mesh) { - foreach (const ExtractedBlendshape& extracted, blendshapes) { - addBlendshapes(extracted, blendshapeIndices.values(extracted.id.toLatin1()), *mesh); + foreach (const ExtractedBlendshape& blendshape, blendshapes) { + addBlendshapes(blendshape, blendshapeIndices.values(blendshape.id.toLatin1()), *mesh); } } @@ -1229,11 +1229,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // assign the blendshapes to their corresponding meshes - foreach (const ExtractedBlendshape& extracted, blendshapes) { - QString blendshapeChannelID = _connectionParentMap.value(extracted.id); + foreach (const ExtractedBlendshape& blendshape, blendshapes) { + QString blendshapeChannelID = _connectionParentMap.value(blendshape.id); QString blendshapeID = _connectionParentMap.value(blendshapeChannelID); QString meshID = _connectionParentMap.value(blendshapeID); - addBlendshapes(extracted, blendshapeChannelIndices.values(blendshapeChannelID), meshes[meshID]); + addBlendshapes(blendshape, blendshapeChannelIndices.values(blendshapeChannelID), meshes[meshID]); } // get offset transform from mapping diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 6e8f37d354..87eacc20ec 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -104,9 +104,11 @@ void CauterizedModel::updateClusterMatrices() { if (!_needsUpdateClusterMatrices || !isLoaded()) { return; } + + updateShapeStatesFromRig(); + _needsUpdateClusterMatrices = false; const HFMModel& hfmModel = getHFMModel(); - for (int i = 0; i < (int)_meshStates.size(); i++) { Model::MeshState& state = _meshStates[i]; const HFMMesh& mesh = hfmModel.meshes.at(i); @@ -221,13 +223,14 @@ void CauterizedModel::updateRenderItems() { auto itemID = self->_modelMeshRenderItemIDs[i]; auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; + const auto& shapeState = self->getShapeState(i); const auto& meshState = self->getMeshState(meshIndex); const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, + transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { CauterizedMeshPartPayload& data = static_cast(mmppData); if (useDualQuaternionSkinning) { @@ -241,7 +244,7 @@ void CauterizedModel::updateRenderItems() { } Transform renderTransform = modelTransform; - if (useDualQuaternionSkinning) { + /*if (useDualQuaternionSkinning) { if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { const auto& dq = meshState.clusterDualQuaternions[0]; Transform transform(dq.getRotation(), @@ -253,6 +256,9 @@ void CauterizedModel::updateRenderItems() { if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); } + }*/ + if (meshState.clusterMatrices.size() <= 1) { + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); } data.updateTransformForSkinnedMesh(renderTransform, modelTransform); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index fcf0ffaa48..8f992ba329 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -221,8 +221,10 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in } updateTransform(transform, offsetTransform); + Transform renderTransform = transform; - if (useDualQuaternionSkinning) { + +/* if (useDualQuaternionSkinning) { if (state.clusterDualQuaternions.size() == 1) { const auto& dq = state.clusterDualQuaternions[0]; Transform transform(dq.getRotation(), @@ -235,6 +237,10 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in renderTransform = transform.worldTransform(Transform(state.clusterMatrices[0])); } } +*/ + + const Model::ShapeState& shapeState = model->getShapeState(shapeIndex); + renderTransform = transform.worldTransform(shapeState._rootFromJointTransform); updateTransformForSkinnedMesh(renderTransform, transform); initCache(model); @@ -320,7 +326,8 @@ void ModelMeshPartPayload::updateClusterBuffer(const std::vector_modelMeshRenderItemIDs[i]; auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; + const auto& shapeState = self->getShapeState(i); const auto& meshState = self->getMeshState(meshIndex); bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, meshState, useDualQuaternionSkinning, + transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { if (useDualQuaternionSkinning) { data.updateClusterBuffer(meshState.clusterDualQuaternions); @@ -249,7 +250,7 @@ void Model::updateRenderItems() { Transform renderTransform = modelTransform; - if (useDualQuaternionSkinning) { + /*if (useDualQuaternionSkinning) { if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { const auto& dq = meshState.clusterDualQuaternions[0]; Transform transform(dq.getRotation(), @@ -261,6 +262,9 @@ void Model::updateRenderItems() { if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); } + }*/ + if (meshState.clusterMatrices.size() <= 1) { + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); } data.updateTransformForSkinnedMesh(renderTransform, modelTransform); @@ -293,6 +297,21 @@ void Model::reset() { } } +void Model::updateShapeStatesFromRig() { + const HFMModel& hfmModel = getHFMModel(); + // TODO: should all Models have a valid _rig? + { // Shapes state: + const auto& shapes = hfmModel.shapes; + _shapeStates.resize(shapes.size()); + for (int s = 0; s < shapes.size(); ++s) { + uint32_t jointId = shapes[s].transform; + if (jointId < _rig.getJointStateCount()) { + _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); + } + } + } +} + bool Model::updateGeometry() { bool needFullUpdate = false; @@ -307,6 +326,8 @@ bool Model::updateGeometry() { initJointStates(); assert(_meshStates.empty()); + updateShapeStatesFromRig(); + const HFMModel& hfmModel = getHFMModel(); int i = 0; foreach (const HFMMesh& mesh, hfmModel.meshes) { @@ -1385,6 +1406,8 @@ void Model::updateClusterMatrices() { return; } + updateShapeStatesFromRig(); + _needsUpdateClusterMatrices = false; const HFMModel& hfmModel = getHFMModel(); for (int i = 0; i < (int) _meshStates.size(); i++) { @@ -1418,6 +1441,7 @@ void Model::updateClusterMatrices() { void Model::deleteGeometry() { _deleteGeometryCounter++; + _shapeStates.clear(); _meshStates.clear(); _rig.destroyAnimGraph(); _blendedBlendshapeCoefficients.clear(); @@ -1496,7 +1520,7 @@ void Model::createRenderItemSet() { } bool Model::isRenderable() const { - return !_meshStates.empty() || (isLoaded() && _renderGeometry->getMeshes().empty()); + return (!_shapeStates.empty() && !_meshStates.empty()) || (isLoaded() && _renderGeometry->getMeshes().empty()); } std::set Model::getMeshIDsFromMaterialID(QString parentMaterialName) { diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 79ddaeb68d..85661d4b6b 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -343,6 +343,12 @@ public: const MeshState& getMeshState(int index) { return _meshStates.at(index); } + class ShapeState { + public: + glm::mat4 _rootFromJointTransform; + }; + const ShapeState& getShapeState(int index) { return _shapeStates.at(index); } + uint32_t getGeometryCounter() const { return _deleteGeometryCounter; } const QMap& getRenderItems() const { return _modelMeshRenderItemsMap; } BlendShapeOperator getModelBlendshapeOperator() const { return _modelBlendshapeOperator; } @@ -420,6 +426,8 @@ protected: glm::vec3 _registrationPoint = glm::vec3(0.5f); /// the point in model space our center is snapped to std::vector _meshStates; + std::vector _shapeStates; + void updateShapeStatesFromRig(); virtual void initJointStates(); From 9905fc076c74e7a79297b39ea7c8d627604cfb51 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 9 Oct 2019 16:44:06 -0700 Subject: [PATCH 050/547] Materials of baked models fbx are loading correctly, still using the name/id of the mateiral in the part struct --- libraries/fbx/src/FBXSerializer.cpp | 35 +++++++++++++++++++----- libraries/fbx/src/FBXSerializer_Mesh.cpp | 8 +++++- 2 files changed, 35 insertions(+), 8 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 2fa90af9db..c35a23ef3a 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1480,6 +1480,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // meshShapes will be added to hfmModel at the very end std::vector meshShapes; meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); + if (instanceModelIDs.size() > 1) { + qCDebug(modelformat) << "Mesh " << meshID << " made of " << mesh.parts.size() << " parts is instanced " << instanceModelIDs.size() << " times!!!"; + } + if (mesh.parts.size() < 1) { + qCDebug(modelformat) << "Mesh " << meshID << " made of " << mesh.parts.size() << " parts !!!!! "; + } for (const QString& modelID : instanceModelIDs) { // The transform node has the same indexing order as the joints const uint32_t transformIndex = (uint32_t)modelIDs.indexOf(modelID); @@ -1500,6 +1506,14 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const shape.mesh = meshIndex; shape.meshPart = i; shape.transform = transformIndex; + + auto matName = mesh.parts[i].materialID; + auto materialIt = materialNameToID.find(matName.toStdString()); + if (materialIt != materialNameToID.end()) { + shape.material = materialIt->second; + } else { + qCDebug(modelformat) << "Unknown material ? " << matName; + } shape.transformedExtents.reset(); // compute the shape extents from the transformed vertices @@ -1546,14 +1560,21 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart if (!extracted.materialIDPerMeshPart.empty()) { - for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { - hfm::Shape& shape = partShapes[i]; - const std::string& materialID = extracted.materialIDPerMeshPart[i]; - auto materialIt = materialNameToID.find(materialID); - if (materialIt != materialNameToID.end()) { - shape.material = materialIt->second; + /* if (partShapes.size() == extracted.materialIDPerMeshPart.size()) { + for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { + hfm::Shape& shape = partShapes[i]; + const std::string& materialID = extracted.materialIDPerMeshPart[i]; + auto materialIt = materialNameToID.find(materialID); + if (materialIt != materialNameToID.end()) { + shape.material = materialIt->second; + } } - } + } else { + for (int p = 0; p < mesh.parts.size(); p++) { + qCDebug(modelformat) << "mesh.parts[" << p <<"] is " << mesh.parts[p].materialID; + } + qCDebug(modelformat) << "partShapes is not the same size as materialIDPerMeshPart ?"; + }*/ } // find the clusters with which the mesh is associated diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 7c6be5740a..37f2c9ec1b 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -492,9 +492,15 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); + HFMMeshPart& part = data.extracted.mesh.parts.back(); // Figure out if this is the older way of defining the per-part material for baked FBX - if (dracoMeshNodeVersion < 2) { + if (dracoMeshNodeVersion >= 2) { + // Define the materialID now + if (materialID < dracoMaterialList.size()) { + part.materialID = QString(dracoMaterialList[materialID].c_str()); + } + } else { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap data.extracted.partMaterialTextures.append(materialTexture); } From 0b924eea78c92e2a32daf6adf8e8fac105478089 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 8 Oct 2019 16:28:19 -0700 Subject: [PATCH 051/547] Fix GLTF skinning crash, misc fixes and cleanup --- libraries/fbx/src/GLTFSerializer.cpp | 116 ++------------------------- 1 file changed, 8 insertions(+), 108 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 70e765c23a..20ec4ce05e 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1003,10 +1003,10 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& // Build joints - HFMJoint joint; hfmModel.jointIndices["x"] = numNodes; for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { + HFMJoint joint; auto& node = _file.nodes[nodeIndex]; auto parentItr = parentIndices.find(nodeIndex); if (parentsEnd == parentItr) { @@ -1021,12 +1021,12 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& glm::vec3 scale = extractScale(joint.transform); joint.postTransform = glm::scale(glm::mat4(), scale); - joint.globalTransform = joint.transform; // Nodes are sorted, so we can apply the full transform just by getting the global transform of the already defined parent if (joint.parentIndex != -1 && joint.parentIndex != nodeIndex) { - const auto& parentJoint = hfmModel.joints[(size_t)nodeIndex]; - joint.globalTransform = parentJoint.globalTransform * joint.globalTransform; + const auto& parentJoint = hfmModel.joints[(size_t)joint.parentIndex]; + joint.transform = parentJoint.transform * joint.transform; } + joint.globalTransform = joint.transform; joint.name = node.name; joint.isSkeletonJoint = false; @@ -1102,7 +1102,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& int meshCount = _file.meshes.size(); hfmModel.meshes.resize(meshCount); hfmModel.meshExtents.reset(); - hfmModel.meshes.resize(meshCount); for (int meshIndex = 0; meshIndex < meshCount; ++meshIndex) { const auto& gltfMesh = _file.meshes[meshIndex]; auto& mesh = hfmModel.meshes[meshIndex]; @@ -1211,12 +1210,12 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& break; case GLTFVertexAttribute::JOINTS_0: - success = addArrayFromAttribute(vertexAttribute, accessor, colors); + success = addArrayFromAttribute(vertexAttribute, accessor, joints); jointStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); break; case GLTFVertexAttribute::WEIGHTS_0: - success = addArrayFromAttribute(vertexAttribute, accessor, colors); + success = addArrayFromAttribute(vertexAttribute, accessor, weights); weightStride = GLTFAccessorType::count((GLTFAccessorType::Value)accessor.type); break; @@ -1241,106 +1240,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& int partVerticesCount = vertices.size() / 3; - // generate the normals if they don't exist - // FIXME move to GLTF post-load processing - if (normals.size() == 0) { - QVector newIndices; - QVector newVertices; - QVector newNormals; - QVector newTexcoords; - QVector newTexcoords2; - QVector newColors; - QVector newJoints; - QVector newWeights; - - for (int n = 0; n < indices.size(); n = n + 3) { - int v1_index = (indices[n + 0] * 3); - int v2_index = (indices[n + 1] * 3); - int v3_index = (indices[n + 2] * 3); - - glm::vec3 v1 = glm::vec3(vertices[v1_index], vertices[v1_index + 1], vertices[v1_index + 2]); - glm::vec3 v2 = glm::vec3(vertices[v2_index], vertices[v2_index + 1], vertices[v2_index + 2]); - glm::vec3 v3 = glm::vec3(vertices[v3_index], vertices[v3_index + 1], vertices[v3_index + 2]); - - newVertices.append(v1.x); - newVertices.append(v1.y); - newVertices.append(v1.z); - newVertices.append(v2.x); - newVertices.append(v2.y); - newVertices.append(v2.z); - newVertices.append(v3.x); - newVertices.append(v3.y); - newVertices.append(v3.z); - - glm::vec3 norm = glm::normalize(glm::cross(v2 - v1, v3 - v1)); - - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - newNormals.append(norm.x); - newNormals.append(norm.y); - newNormals.append(norm.z); - - if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { - GLTF_APPEND_ARRAY_2(newTexcoords, texcoords) - } - - if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { - GLTF_APPEND_ARRAY_2(newTexcoords2, texcoords2) - } - - if (colors.size() == partVerticesCount * colorStride) { - if (colorStride == 4) { - GLTF_APPEND_ARRAY_4(newColors, colors) - } else { - GLTF_APPEND_ARRAY_3(newColors, colors) - } - } - - if (joints.size() == partVerticesCount * jointStride) { - if (jointStride == 4) { - GLTF_APPEND_ARRAY_4(newJoints, joints) - } else if (jointStride == 3) { - GLTF_APPEND_ARRAY_3(newJoints, joints) - } else if (jointStride == 2) { - GLTF_APPEND_ARRAY_2(newJoints, joints) - } else { - GLTF_APPEND_ARRAY_1(newJoints, joints) - } - } - - if (weights.size() == partVerticesCount * weightStride) { - if (weightStride == 4) { - GLTF_APPEND_ARRAY_4(newWeights, weights) - } else if (weightStride == 3) { - GLTF_APPEND_ARRAY_3(newWeights, weights) - } else if (weightStride == 2) { - GLTF_APPEND_ARRAY_2(newWeights, weights) - } else { - GLTF_APPEND_ARRAY_1(newWeights, weights) - } - } - newIndices.append(n); - newIndices.append(n + 1); - newIndices.append(n + 2); - } - - vertices = newVertices; - normals = newNormals; - tangents = QVector(); - texcoords = newTexcoords; - texcoords2 = newTexcoords2; - colors = newColors; - joints = newJoints; - weights = newWeights; - indices = newIndices; - - partVerticesCount = vertices.size() / 3; - } - QVector validatedIndices; for (int n = 0; n < indices.count(); ++n) { if (indices[n] < partVerticesCount) { @@ -1476,13 +1375,13 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& int numVertices = mesh.vertices.size() - prevMeshVerticesCount; // Append new cluster indices and weights for this mesh part + int prevMeshClusterWeightCount = mesh.clusterWeights.count(); for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { mesh.clusterIndices.push_back(mesh.clusters.size() - 1); mesh.clusterWeights.push_back(0); } // normalize and compress to 16-bits - int prevMeshClusterWeightCount = mesh.clusterWeights.count(); for (int i = 0; i < numVertices; ++i) { int j = i * WEIGHTS_PER_VERTEX; @@ -1984,6 +1883,7 @@ bool GLTFSerializer::addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttr qWarning(modelformat) << "There was a problem reading glTF WEIGHTS_0 data for model " << _url; return false; } + break; default: qWarning(modelformat) << "Unexpected attribute type" << _url; From 726a91cdb98f0b0c6df5091bc1a49f8fe61b7ab1 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 9 Oct 2019 13:07:43 -0700 Subject: [PATCH 052/547] Fix un-transformed vertex being added to extents instead of transformed one --- libraries/hfm/src/hfm/HFMModelMath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 8812163fe2..e6ba042e9c 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -47,7 +47,7 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m } const glm::vec3& vertex = mesh.vertices[idx]; const glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); - shapeExtents.addPoint(vertex); + shapeExtents.addPoint(transformedVertex); }); thickenFlatExtents(shapeExtents); From d3ed0bc71bd76ebc9cefb31de6fe07285c4d20fe Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 9 Oct 2019 14:30:16 -0700 Subject: [PATCH 053/547] Remove unused joint/transform calculation in GLTFSerializer --- libraries/fbx/src/GLTFSerializer.cpp | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 20ec4ce05e..415b0f75a9 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -987,24 +987,11 @@ void GLTFFile::normalizeNodeTransforms() { bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mapping, const hifi::URL& url) { int numNodes = _file.nodes.size(); - hfmModel.transforms.resize(numNodes); - auto parentIndices = gltf::findParentIndices(_file.nodes); - const auto parentsEnd = parentIndices.end(); - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - auto& gltfNode = _file.nodes[nodeIndex]; - auto& hmfTransform = hfmModel.transforms[nodeIndex]; - auto parentItr = parentIndices.find(nodeIndex); - if (parentItr != parentsEnd ) { - hmfTransform.parent = parentItr->second; - } - hmfTransform.transform = getModelTransform(gltfNode); - } - - // Build joints hfmModel.jointIndices["x"] = numNodes; - + auto parentIndices = gltf::findParentIndices(_file.nodes); + const auto parentsEnd = parentIndices.end(); for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { HFMJoint joint; auto& node = _file.nodes[nodeIndex]; @@ -1032,7 +1019,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& joint.isSkeletonJoint = false; hfmModel.joints.push_back(joint); } - hfmModel.shapeVertices.resize(hfmModel.joints.size()); // get offset transform from mapping float unitScaleFactor = 1.0f; From 9fd3d44a0d8dd416b05fbed58ddab560bc9563b6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 9 Oct 2019 15:53:28 -0700 Subject: [PATCH 054/547] Make GLTF joint.globalTransform more correct --- libraries/fbx/src/GLTFSerializer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 415b0f75a9..af021e6509 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1008,12 +1008,13 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& glm::vec3 scale = extractScale(joint.transform); joint.postTransform = glm::scale(glm::mat4(), scale); + joint.globalTransform = joint.transform; // Nodes are sorted, so we can apply the full transform just by getting the global transform of the already defined parent if (joint.parentIndex != -1 && joint.parentIndex != nodeIndex) { const auto& parentJoint = hfmModel.joints[(size_t)joint.parentIndex]; joint.transform = parentJoint.transform * joint.transform; + joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; } - joint.globalTransform = joint.transform; joint.name = node.name; joint.isSkeletonJoint = false; From bf65711e04d1f4cc35261e55f295a33e8898c80b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 10 Oct 2019 11:14:58 -0700 Subject: [PATCH 055/547] Fix build warning with cluster.jointIndex in FBXSerializer --- libraries/fbx/src/FBXSerializer.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 78bc1836c3..68268af5bd 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1428,7 +1428,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); for (const QString& modelID : instanceModelIDs) { // The transform node has the same indexing order as the joints - const uint32_t transformIndex = (uint32_t)modelIDs.indexOf(modelID); + int indexOfModelID = modelIDs.indexOf(modelID); + if (indexOfModelID == -1) { + qCDebug(modelformat) << "Model not in model list: " << modelID; + } + const uint32_t transformIndex = (indexOfModelID == -1) ? 0 : (uint32_t)indexOfModelID; // accumulate local transforms glm::mat4 globalTransform = hfmModel.joints[transformIndex].globalTransform; @@ -1513,12 +1517,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - auto rootJointIndex = modelIDs.indexOf(modelID); - if (rootJointIndex == -1) { - qCDebug(modelformat) << "Model not in model list: " << modelID; - rootJointIndex = 0; - } - // whether we're skinned depends on how many clusters are attached if (clusterIDs.size() > 1) { hfm::DynamicTransform dynamicTransform; @@ -1531,10 +1529,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // see http://stackoverflow.com/questions/13566608/loading-skinning-information-from-fbx for a discussion // of skinning information in FBX QString jointID = _connectionChildMap.value(clusterID); - hfmCluster.jointIndex = modelIDs.indexOf(jointID); - if (hfmCluster.jointIndex == -1) { + int indexOfJointID = modelIDs.indexOf(jointID); + if (indexOfJointID == -1) { qCDebug(modelformat) << "Joint not in model list: " << jointID; hfmCluster.jointIndex = 0; + } else { + hfmCluster.jointIndex = (uint32_t)indexOfJointID; } hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * globalTransform; @@ -1563,7 +1563,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // the last cluster is the root cluster HFMCluster cluster; - cluster.jointIndex = rootJointIndex; + cluster.jointIndex = transformIndex; clusters.push_back(cluster); // Skinned mesh instances have a dynamic transform @@ -1599,7 +1599,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } else { // this is a single-joint mesh - HFMJoint& joint = hfmModel.joints[rootJointIndex]; + HFMJoint& joint = hfmModel.joints[transformIndex]; // Apply geometric offset, if present, by transforming the vertices directly if (joint.hasGeometricOffset) { From a995f2c09fa7a44741c9a8bc4fac7fa7f8bdc7fb Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 10 Oct 2019 17:09:54 -0700 Subject: [PATCH 056/547] in the middle of something --- libraries/fbx/src/FBXSerializer.cpp | 3 - libraries/hfm/src/hfm/HFM.h | 8 --- .../src/model-networking/ModelCache.cpp | 1 - .../src/CauterizedMeshPartPayload.cpp | 4 +- .../src/CauterizedMeshPartPayload.h | 2 +- .../render-utils/src/CauterizedModel.cpp | 56 ++++++++----------- .../render-utils/src/MeshPartPayload.cpp | 42 +++----------- libraries/render-utils/src/MeshPartPayload.h | 8 +-- libraries/render-utils/src/Model.cpp | 34 +++++------ libraries/render-utils/src/Model.h | 2 +- 10 files changed, 53 insertions(+), 107 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index c35a23ef3a..bec42ca01c 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1463,9 +1463,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // see if any materials have texture children bool materialsHaveTextures = checkMaterialsHaveTextures(_hfmMaterials, _textureFilenames, _connectionChildMap); - // Note that the transforms in the TransformNodes are initially in world-space, and need to be converted to parent-space - std::vector transformNodes; - for (QMap::iterator it = meshes.begin(); it != meshes.end(); it++) { const QString& meshID = it.key(); const ExtractedMesh& extracted = it.value(); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 96030672f2..f3330d9291 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -293,13 +293,6 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; -// DEPRECATED in favor of using hfm::Joint -class TransformNode { -public: - uint32_t parent { 0 }; - Transform transform; -}; - // Formerly contained in hfm::Mesh class Deformer { public: @@ -343,7 +336,6 @@ public: std::vector materials; std::vector deformers; - std::vector transforms; std::vector dynamicTransforms; std::vector joints; diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 2376beba30..8b7db5957b 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -295,7 +295,6 @@ void ModelResource::onGeometryMappingLoaded(bool success) { if (success && _modelResource) { _hfmModel = _modelResource->_hfmModel; _materialMapping = _modelResource->_materialMapping; - // _meshParts = _modelResource->_meshParts; _meshes = _modelResource->_meshes; _materials = _modelResource->_materials; diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp index a310c10136..6996ea3c29 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.cpp +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.cpp @@ -18,8 +18,8 @@ using namespace render; -CauterizedMeshPartPayload::CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) - : ModelMeshPartPayload(model, meshIndex, partIndex, shapeIndex, transform, offsetTransform) {} +CauterizedMeshPartPayload::CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform) + : ModelMeshPartPayload(model, meshIndex, partIndex, shapeIndex, transform) {} void CauterizedMeshPartPayload::updateClusterBuffer(const std::vector& clusterMatrices, const std::vector& cauterizedClusterMatrices) { diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.h b/libraries/render-utils/src/CauterizedMeshPartPayload.h index 9a6cea8b9f..87d8ce7ae9 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.h +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.h @@ -13,7 +13,7 @@ class CauterizedMeshPartPayload : public ModelMeshPartPayload { public: - CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform); // matrix palette skinning void updateClusterBuffer(const std::vector& clusterMatrices, diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 87eacc20ec..9f9acbf182 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -33,7 +33,20 @@ bool CauterizedModel::updateGeometry() { if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); const HFMModel& hfmModel = getHFMModel(); - foreach (const HFMMesh& mesh, hfmModel.meshes) { + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + for (int i = 0; i < hfmDynamicTransforms.size(); i++) { + const auto& dynT = hfmDynamicTransforms[i]; + MeshState state; + if (_useDualQuaternionSkinning) { + state.clusterDualQuaternions.resize(dynT.clusters.size()); + } else { + state.clusterMatrices.resize(dynT.clusters.size()); + } + _cauterizeMeshStates.append(state); + _meshStates.push_back(state); + } + + /* foreach (const HFMMesh& mesh, hfmModel.meshes) { Model::MeshState state; if (_useDualQuaternionSkinning) { state.clusterDualQuaternions.resize(mesh.clusters.size()); @@ -42,7 +55,7 @@ bool CauterizedModel::updateGeometry() { state.clusterMatrices.resize(mesh.clusters.size()); _cauterizeMeshStates.append(state); } - } + }*/ } return needsFullUpdate; } @@ -73,6 +86,8 @@ void CauterizedModel::createRenderItemSet() { offset.setScale(_scale); offset.postTranslate(_offset); + Transform::mult(transform, transform, offset); + // Run through all of the meshes, and place them into their segregated, but unsorted buckets int shapeID = 0; uint32_t numMeshes = (uint32_t)meshes.size(); @@ -85,7 +100,7 @@ void CauterizedModel::createRenderItemSet() { // Create the render payloads int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); + auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform); _modelMeshRenderItems << std::static_pointer_cast(ptr); auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); @@ -222,8 +237,11 @@ void CauterizedModel::updateRenderItems() { auto itemID = self->_modelMeshRenderItemIDs[i]; auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; + auto deformerIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); + + const auto& meshState = self->getMeshState(meshIndex); const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); @@ -244,38 +262,10 @@ void CauterizedModel::updateRenderItems() { } Transform renderTransform = modelTransform; - /*if (useDualQuaternionSkinning) { - if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { - const auto& dq = meshState.clusterDualQuaternions[0]; - Transform transform(dq.getRotation(), - dq.getScale(), - dq.getTranslation()); - renderTransform = modelTransform.worldTransform(transform); - } - } else { - if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { - renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); - } - }*/ - if (meshState.clusterMatrices.size() <= 1) { + if (meshState.clusterMatrices.size() <= 2) { renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); } - data.updateTransformForSkinnedMesh(renderTransform, modelTransform); - - renderTransform = modelTransform; - if (useDualQuaternionSkinning) { - if (cauterizedMeshState.clusterDualQuaternions.size() == 1 || cauterizedMeshState.clusterDualQuaternions.size() == 2) { - const auto& dq = cauterizedMeshState.clusterDualQuaternions[0]; - Transform transform(dq.getRotation(), - dq.getScale(), - dq.getTranslation()); - renderTransform = modelTransform.worldTransform(Transform(transform)); - } - } else { - if (cauterizedMeshState.clusterMatrices.size() == 1 || cauterizedMeshState.clusterMatrices.size() == 2) { - renderTransform = modelTransform.worldTransform(Transform(cauterizedMeshState.clusterMatrices[0])); - } - } + data.updateTransform(renderTransform); data.updateTransformForCauterizedMesh(renderTransform); data.setEnableCauterization(enableCauterization); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 8f992ba329..7b37c847af 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -64,11 +64,10 @@ void MeshPartPayload::updateMeshPart(const std::shared_ptr } } -void MeshPartPayload::updateTransform(const Transform& transform, const Transform& offsetTransform) { - _transform = transform; - Transform::mult(_drawTransform, _transform, offsetTransform); +void MeshPartPayload::updateTransform(const Transform& transform) { + _worldFromLocalTransform = transform; _worldBound = _localBound; - _worldBound.transform(_drawTransform); + _worldBound.transform(_worldFromLocalTransform); } void MeshPartPayload::addMaterial(graphics::MaterialLayer material) { @@ -134,7 +133,7 @@ void MeshPartPayload::bindMesh(gpu::Batch& batch) { } void MeshPartPayload::bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const { - batch.setModelTransform(_drawTransform); + batch.setModelTransform(_worldFromLocalTransform); } @@ -196,7 +195,7 @@ template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, Ren } -ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) : +ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform) : _meshIndex(meshIndex), _shapeID(shapeIndex) { @@ -220,28 +219,10 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in computeAdjustedLocalBound(state.clusterMatrices); } - updateTransform(transform, offsetTransform); - - Transform renderTransform = transform; - -/* if (useDualQuaternionSkinning) { - if (state.clusterDualQuaternions.size() == 1) { - const auto& dq = state.clusterDualQuaternions[0]; - Transform transform(dq.getRotation(), - dq.getScale(), - dq.getTranslation()); - renderTransform = transform.worldTransform(Transform(transform)); - } - } else { - if (state.clusterMatrices.size() == 1) { - renderTransform = transform.worldTransform(Transform(state.clusterMatrices[0])); - } - } -*/ - + Transform renderTransform = transform; const Model::ShapeState& shapeState = model->getShapeState(shapeIndex); renderTransform = transform.worldTransform(shapeState._rootFromJointTransform); - updateTransformForSkinnedMesh(renderTransform, transform); + updateTransform(renderTransform); initCache(model); @@ -323,13 +304,6 @@ void ModelMeshPartPayload::updateClusterBuffer(const std::vector& drawMesh, int partIndex); virtual void notifyLocationChanged() {} - void updateTransform(const Transform& transform, const Transform& offsetTransform); + void updateTransform(const Transform& transform); // Render Item interface virtual render::ItemKey getKey() const; @@ -52,8 +52,7 @@ public: virtual void bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const; // Payload resource cached values - Transform _drawTransform; - Transform _transform; + Transform _worldFromLocalTransform; int _partIndex = 0; bool _hasColorAttrib { false }; @@ -86,7 +85,7 @@ namespace render { class ModelMeshPartPayload : public MeshPartPayload { public: - ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform); typedef render::Payload Payload; typedef Payload::DataPointer Pointer; @@ -100,7 +99,6 @@ public: // dual quaternion skinning void updateClusterBuffer(const std::vector& clusterDualQuaternions); - void updateTransformForSkinnedMesh(const Transform& renderTransform, const Transform& boundTransform); // Render Item interface render::ShapeKey getShapeKey() const override; // shape interface diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 5d5de04537..0d555b605a 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -249,24 +249,10 @@ void Model::updateRenderItems() { } Transform renderTransform = modelTransform; - - /*if (useDualQuaternionSkinning) { - if (meshState.clusterDualQuaternions.size() == 1 || meshState.clusterDualQuaternions.size() == 2) { - const auto& dq = meshState.clusterDualQuaternions[0]; - Transform transform(dq.getRotation(), - dq.getScale(), - dq.getTranslation()); - renderTransform = modelTransform.worldTransform(Transform(transform)); - } - } else { - if (meshState.clusterMatrices.size() == 1 || meshState.clusterMatrices.size() == 2) { - renderTransform = modelTransform.worldTransform(Transform(meshState.clusterMatrices[0])); - } - }*/ if (meshState.clusterMatrices.size() <= 1) { renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); } - data.updateTransformForSkinnedMesh(renderTransform, modelTransform); + data.updateTransform(renderTransform); data.setCauterized(cauterized); data.updateKey(renderItemKeyGlobalFlags); @@ -305,7 +291,7 @@ void Model::updateShapeStatesFromRig() { _shapeStates.resize(shapes.size()); for (int s = 0; s < shapes.size(); ++s) { uint32_t jointId = shapes[s].transform; - if (jointId < _rig.getJointStateCount()) { + if (jointId < (uint32_t) _rig.getJointStateCount()) { _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); } } @@ -329,14 +315,24 @@ bool Model::updateGeometry() { updateShapeStatesFromRig(); const HFMModel& hfmModel = getHFMModel(); - int i = 0; - foreach (const HFMMesh& mesh, hfmModel.meshes) { + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + /* int i = 0; + for (const auto& mesh: hfmModel.meshes) { MeshState state; state.clusterDualQuaternions.resize(mesh.clusters.size()); state.clusterMatrices.resize(mesh.clusters.size()); _meshStates.push_back(state); i++; } + */ + for (int i = 0; i < hfmDynamicTransforms.size(); i++) { + const auto& dynT = hfmDynamicTransforms[i]; + MeshState state; + state.clusterDualQuaternions.resize(dynT.clusters.size()); + state.clusterMatrices.resize(dynT.clusters.size()); + _meshStates.push_back(state); + } + needFullUpdate = true; emit rigReady(); } @@ -1510,7 +1506,7 @@ void Model::createRenderItemSet() { // Create the render payloads int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); + _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform); auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 85661d4b6b..0a102630b6 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -473,7 +473,7 @@ protected: QVector> _modelMeshRenderItems; QMap _modelMeshRenderItemsMap; render::ItemIDs _modelMeshRenderItemIDs; - using ShapeInfo = struct { int meshIndex; }; + using ShapeInfo = struct { int meshIndex; int deformerIndex; }; std::vector _modelMeshRenderItemShapes; std::vector _modelMeshMaterialNames; From 99a2fedd5f28da1f9562daa857ca74f83a735ceb Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 11 Oct 2019 14:16:30 -0700 Subject: [PATCH 057/547] Quick fix for non-matching vertex attributes in GLTF mesh primitives --- libraries/fbx/src/GLTFSerializer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 7961cdb036..8d044f3e30 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1261,7 +1261,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); } } else if (meshAttributes.contains("TANGENT")) { - mesh.tangents.resize(partVerticesCount); + mesh.tangents.resize(mesh.tangents.size() + partVerticesCount); } if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { @@ -1270,7 +1270,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); } } else if (meshAttributes.contains("TEXCOORD_0")) { - mesh.texCoords.resize(partVerticesCount); + mesh.texCoords.resize(mesh.texCoords.size() + partVerticesCount); } if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { @@ -1279,7 +1279,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); } } else if (meshAttributes.contains("TEXCOORD_1")) { - mesh.texCoords1.resize(partVerticesCount); + mesh.texCoords1.resize(mesh.texCoords1.size() + partVerticesCount); } if (colors.size() == partVerticesCount * colorStride) { From 6b46f8e6c49ff2c0031327aa7f5e449dc2592c74 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 11 Oct 2019 14:51:48 -0700 Subject: [PATCH 058/547] Remove empty for loop --- libraries/fbx/src/GLTFSerializer.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 8d044f3e30..bd7fc7dd7d 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1082,10 +1082,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } - for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { - } - - int meshCount = _file.meshes.size(); hfmModel.meshes.resize(meshCount); hfmModel.meshExtents.reset(); From 8a1f3648f90622d7f5ff9ab424a38bb3d76d3a77 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 11 Oct 2019 18:06:44 -0700 Subject: [PATCH 059/547] fooling around to get the cluster working --- libraries/fbx/src/FBXSerializer.cpp | 2 +- libraries/hfm/src/hfm/HFM.h | 2 +- libraries/render-utils/src/CauterizedModel.cpp | 18 +++++++++--------- libraries/render-utils/src/MeshPartPayload.cpp | 6 +++--- libraries/render-utils/src/Model.cpp | 17 +++++++++-------- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index bec42ca01c..58a9ed2570 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1502,7 +1502,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfm::Shape& shape = partShapes[i]; shape.mesh = meshIndex; shape.meshPart = i; - shape.transform = transformIndex; + shape.joint = transformIndex; auto matName = mesh.parts[i].materialID; auto materialIt = materialNameToID.find(matName.toStdString()); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index f3330d9291..ba7e90bd92 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -314,7 +314,7 @@ public: uint32_t mesh { UNDEFINED_KEY }; uint32_t meshPart { UNDEFINED_KEY }; uint32_t material { UNDEFINED_KEY }; - uint32_t transform { UNDEFINED_KEY }; // The hfm::Joint associated with this shape, containing transform information + uint32_t joint { UNDEFINED_KEY }; // The hfm::Joint associated with this shape, containing transform information // TODO: Have all serializers calculate hfm::Shape::transformedExtents in world space where they previously calculated hfm::Mesh::meshExtents. Change all code that uses hfm::Mesh::meshExtents to use this instead. Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after transform information is applied, while not taking into account rigging/skinning uint32_t dynamicTransform { UNDEFINED_KEY }; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 9f9acbf182..9849880822 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -33,7 +33,7 @@ bool CauterizedModel::updateGeometry() { if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + /* const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; @@ -44,9 +44,8 @@ bool CauterizedModel::updateGeometry() { } _cauterizeMeshStates.append(state); _meshStates.push_back(state); - } - - /* foreach (const HFMMesh& mesh, hfmModel.meshes) { + }*/ + foreach (const HFMMesh& mesh, hfmModel.meshes) { Model::MeshState state; if (_useDualQuaternionSkinning) { state.clusterDualQuaternions.resize(mesh.clusters.size()); @@ -55,7 +54,7 @@ bool CauterizedModel::updateGeometry() { state.clusterMatrices.resize(mesh.clusters.size()); _cauterizeMeshStates.append(state); } - }*/ + } } return needsFullUpdate; } @@ -68,7 +67,7 @@ void CauterizedModel::createRenderItemSet() { // all of our mesh vectors must match in size if (meshes.size() != _meshStates.size()) { qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! We will not segregate mesh groups yet."; - return; + // return; } // We should not have any existing renderItems if we enter this section of code @@ -241,9 +240,10 @@ void CauterizedModel::updateRenderItems() { const auto& shapeState = self->getShapeState(i); - - const auto& meshState = self->getMeshState(meshIndex); - const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); + // const auto& meshState = self->getMeshState(meshIndex); + // const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); + MeshState meshState; + MeshState cauterizedMeshState; bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 7b37c847af..2fb36dad67 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -209,14 +209,14 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in auto& modelMesh = model->getNetworkModel()->getMeshes().at(_meshIndex); _meshNumVertices = (int)modelMesh->getNumVertices(); - const Model::MeshState& state = model->getMeshState(_meshIndex); + // const Model::MeshState& state = model->getMeshState(_meshIndex); updateMeshPart(modelMesh, partIndex); if (useDualQuaternionSkinning) { - computeAdjustedLocalBound(state.clusterDualQuaternions); + // computeAdjustedLocalBound(state.clusterDualQuaternions); } else { - computeAdjustedLocalBound(state.clusterMatrices); + // computeAdjustedLocalBound(state.clusterMatrices); } Transform renderTransform = transform; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 0d555b605a..662b6f190a 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -233,7 +233,8 @@ void Model::updateRenderItems() { auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); - const auto& meshState = self->getMeshState(meshIndex); + // const auto& meshState = self->getMeshState(meshIndex); + MeshState meshState; bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); @@ -290,9 +291,9 @@ void Model::updateShapeStatesFromRig() { const auto& shapes = hfmModel.shapes; _shapeStates.resize(shapes.size()); for (int s = 0; s < shapes.size(); ++s) { - uint32_t jointId = shapes[s].transform; + uint32_t jointId = shapes[s].joint; if (jointId < (uint32_t) _rig.getJointStateCount()) { - _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(shapes[s].transform); + _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(jointId); } } } @@ -316,7 +317,7 @@ bool Model::updateGeometry() { const HFMModel& hfmModel = getHFMModel(); const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; - /* int i = 0; + /* int i = 0; for (const auto& mesh: hfmModel.meshes) { MeshState state; state.clusterDualQuaternions.resize(mesh.clusters.size()); @@ -325,13 +326,13 @@ bool Model::updateGeometry() { i++; } */ - for (int i = 0; i < hfmDynamicTransforms.size(); i++) { + /*for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; state.clusterDualQuaternions.resize(dynT.clusters.size()); state.clusterMatrices.resize(dynT.clusters.size()); _meshStates.push_back(state); - } + }*/ needFullUpdate = true; emit rigReady(); @@ -1476,7 +1477,7 @@ void Model::createRenderItemSet() { // all of our mesh vectors must match in size if (meshes.size() != _meshStates.size()) { qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! " << meshes.size() << _meshStates.size() << " We will not segregate mesh groups yet."; - return; + // return; } // We should not have any existing renderItems if we enter this section of code @@ -1516,7 +1517,7 @@ void Model::createRenderItemSet() { } bool Model::isRenderable() const { - return (!_shapeStates.empty() && !_meshStates.empty()) || (isLoaded() && _renderGeometry->getMeshes().empty()); + return (!_shapeStates.empty() /* && !_meshStates.empty()*/) || (isLoaded() && _renderGeometry->getMeshes().empty()); } std::set Model::getMeshIDsFromMaterialID(QString parentMaterialName) { From 05ac9aefa8fbd9121e27c009ac9b8b06f2e3cee7 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 14 Oct 2019 02:21:01 -0700 Subject: [PATCH 060/547] the clusterMatrices should be working, but n skin index and weights are assigned yet --- libraries/animation/src/AnimSkeleton.cpp | 29 ++++ libraries/animation/src/AnimSkeleton.h | 2 + .../render-utils/src/CauterizedModel.cpp | 158 ++++++++++++++---- .../render-utils/src/MeshPartPayload.cpp | 44 +---- libraries/render-utils/src/MeshPartPayload.h | 8 +- libraries/render-utils/src/Model.cpp | 116 +++++++++---- libraries/render-utils/src/Model.h | 2 +- 7 files changed, 242 insertions(+), 117 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index b26d00d8d0..a68f5c869f 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -30,6 +30,34 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { // we make a copy of the inverseBindMatrices in order to prevent mutating the model bind pose // when we are dealing with a joint offset in the model + for (int i = 0; i < (int)hfmModel.dynamicTransforms.size(); i++) { + const auto& defor = hfmModel.dynamicTransforms[i]; + std::vector dummyClustersList; + + for (int j = 0; j < defor.clusters.size(); j++) { + std::vector bindMatrices; + // cast into a non-const reference, so we can mutate the FBXCluster + HFMCluster& cluster = const_cast(defor.clusters.at(j)); + + HFMCluster localCluster; + localCluster.jointIndex = cluster.jointIndex; + localCluster.inverseBindMatrix = cluster.inverseBindMatrix; + localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix); + + // if we have a joint offset in the fst file then multiply its inverse by the + // model cluster inverse bind matrix + if (hfmModel.jointRotationOffsets.contains(cluster.jointIndex)) { + AnimPose localOffset(hfmModel.jointRotationOffsets[cluster.jointIndex], glm::vec3()); + localCluster.inverseBindMatrix = (glm::mat4)localOffset.inverse() * cluster.inverseBindMatrix; + localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix); + } + dummyClustersList.push_back(localCluster); + } + _clusterBindMatrixOriginalValues.push_back(dummyClustersList); + } + + +/* for (int i = 0; i < (int)hfmModel.meshes.size(); i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); std::vector dummyClustersList; @@ -55,6 +83,7 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { } _clusterBindMatrixOriginalValues.push_back(dummyClustersList); } +*/ } AnimSkeleton::AnimSkeleton(const std::vector& joints, const QMap jointOffsets) { diff --git a/libraries/animation/src/AnimSkeleton.h b/libraries/animation/src/AnimSkeleton.h index efc1c1599f..526959df9a 100644 --- a/libraries/animation/src/AnimSkeleton.h +++ b/libraries/animation/src/AnimSkeleton.h @@ -70,6 +70,8 @@ public: std::vector lookUpJointIndices(const std::vector& jointNames) const; const HFMCluster getClusterBindMatricesOriginalValues(const int meshIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[meshIndex][clusterIndex]; } + // const HFMCluster getClusterBindMatricesOriginalValues(const int meshIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[meshIndex][clusterIndex]; } + protected: void buildSkeletonFromJoints(const std::vector& joints, const QMap jointOffsets); diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 9849880822..3e7c694768 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -32,8 +32,8 @@ bool CauterizedModel::updateGeometry() { bool needsFullUpdate = Model::updateGeometry(); if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); - const HFMModel& hfmModel = getHFMModel(); - /* const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + /* const HFMModel& hfmModel = getHFMModel(); + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; @@ -45,7 +45,27 @@ bool CauterizedModel::updateGeometry() { _cauterizeMeshStates.append(state); _meshStates.push_back(state); }*/ - foreach (const HFMMesh& mesh, hfmModel.meshes) { + + const HFMModel& hfmModel = getHFMModel(); + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + int i = 0; + /* for (const auto& mesh: hfmModel.meshes) { + MeshState state; + state.clusterDualQuaternions.resize(mesh.clusters.size()); + state.clusterMatrices.resize(mesh.clusters.size()); + _meshStates.push_back(state); + i++; + } + */ + for (int i = 0; i < hfmDynamicTransforms.size(); i++) { + const auto& dynT = hfmDynamicTransforms[i]; + MeshState state; + state.clusterDualQuaternions.resize(dynT.clusters.size()); + state.clusterMatrices.resize(dynT.clusters.size()); + _cauterizeMeshStates.push_back(state); + } + + /* foreach (const HFMMesh& mesh, hfmModel.meshes) { Model::MeshState state; if (_useDualQuaternionSkinning) { state.clusterDualQuaternions.resize(mesh.clusters.size()); @@ -54,7 +74,7 @@ bool CauterizedModel::updateGeometry() { state.clusterMatrices.resize(mesh.clusters.size()); _cauterizeMeshStates.append(state); } - } + }*/ } return needsFullUpdate; } @@ -64,11 +84,6 @@ void CauterizedModel::createRenderItemSet() { assert(isLoaded()); const auto& meshes = _renderGeometry->getMeshes(); - // all of our mesh vectors must match in size - if (meshes.size() != _meshStates.size()) { - qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! We will not segregate mesh groups yet."; - // return; - } // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); @@ -88,7 +103,20 @@ void CauterizedModel::createRenderItemSet() { Transform::mult(transform, transform, offset); // Run through all of the meshes, and place them into their segregated, but unsorted buckets + // Run through all of the meshes, and place them into their segregated, but unsorted buckets int shapeID = 0; + const auto& shapes = _renderGeometry->getHFMModel().shapes; + for (shapeID; shapeID < shapes.size(); shapeID++) { + const auto& shape = shapes[shapeID]; + + _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform); + + auto material = getNetworkModel()->getShapeMaterial(shapeID); + _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.dynamicTransform }); + } + +/* int shapeID = 0; uint32_t numMeshes = (uint32_t)meshes.size(); for (uint32_t i = 0; i < numMeshes; i++) { const auto& mesh = meshes.at(i); @@ -106,7 +134,7 @@ void CauterizedModel::createRenderItemSet() { _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); shapeID++; } - } + }*/ } else { Model::createRenderItemSet(); } @@ -122,6 +150,38 @@ void CauterizedModel::updateClusterMatrices() { updateShapeStatesFromRig(); _needsUpdateClusterMatrices = false; + + + const HFMModel& hfmModel = getHFMModel(); + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + for (int i = 0; i < (int)_meshStates.size(); i++) { + MeshState& state = _meshStates[i]; + const auto& deformer = hfmDynamicTransforms[i]; + + int meshIndex = i; + int clusterIndex = 0; + + for (int d = 0; d < deformer.clusters.size(); d++) { + const auto& cluster = deformer.clusters[d]; + clusterIndex = d; + + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); + + if (_useDualQuaternionSkinning) { + auto jointPose = _rig.getJointPose(cluster.jointIndex); + Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); + Transform clusterTransform; + Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); + state.clusterDualQuaternions[d] = Model::TransformDualQuaternion(clusterTransform); + } + else { + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[d]); + } + + } + } +/* const HFMModel& hfmModel = getHFMModel(); for (int i = 0; i < (int)_meshStates.size(); i++) { Model::MeshState& state = _meshStates[i]; @@ -145,7 +205,7 @@ void CauterizedModel::updateClusterMatrices() { } } } - +*/ // as an optimization, don't build cautrizedClusterMatrices if the boneSet is empty. if (!_cauterizeBoneSet.empty()) { @@ -236,42 +296,66 @@ void CauterizedModel::updateRenderItems() { auto itemID = self->_modelMeshRenderItemIDs[i]; auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; - auto deformerIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); - // const auto& meshState = self->getMeshState(meshIndex); - // const auto& cauterizedMeshState = self->getCauterizeMeshState(meshIndex); - MeshState meshState; - MeshState cauterizedMeshState; + auto deformerIndex = self->_modelMeshRenderItemShapes[i].deformerIndex; + bool isDeformed = (deformerIndex != hfm::UNDEFINED_KEY); + + + // auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; + // auto deformerIndex = self->_modelMeshRenderItemShapes[i].meshIndex; + + // const auto& shapeState = self->getShapeState(i); + bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, - primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { - CauterizedMeshPartPayload& data = static_cast(mmppData); - if (useDualQuaternionSkinning) { - data.updateClusterBuffer(meshState.clusterDualQuaternions, - cauterizedMeshState.clusterDualQuaternions); - data.computeAdjustedLocalBound(meshState.clusterDualQuaternions); - } else { - data.updateClusterBuffer(meshState.clusterMatrices, - cauterizedMeshState.clusterMatrices); - data.computeAdjustedLocalBound(meshState.clusterMatrices); - } - Transform renderTransform = modelTransform; - if (meshState.clusterMatrices.size() <= 2) { + + if (isDeformed) { + + const auto& meshState = self->getMeshState(deformerIndex); + const auto& cauterizedMeshState = self->getCauterizeMeshState(deformerIndex); + + transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, + primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { + CauterizedMeshPartPayload& data = static_cast(mmppData); + if (useDualQuaternionSkinning) { + data.updateClusterBuffer(meshState.clusterDualQuaternions, + cauterizedMeshState.clusterDualQuaternions); + } else { + data.updateClusterBuffer(meshState.clusterMatrices, + cauterizedMeshState.clusterMatrices); + } + + Transform renderTransform = modelTransform; + // if (meshState.clusterMatrices.size() <= 2) { + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + // } + data.updateTransform(renderTransform); + data.updateTransformForCauterizedMesh(renderTransform); + + data.setEnableCauterization(enableCauterization); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); + }); + } else { + transaction.updateItem(itemID, [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) { + + Transform renderTransform = modelTransform; + // if (meshState.clusterMatrices.size() <= 1) { renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - } - data.updateTransform(renderTransform); - data.updateTransformForCauterizedMesh(renderTransform); + // } + data.updateTransform(renderTransform); - data.setEnableCauterization(enableCauterization); - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); - }); + // data.setEnableCauterization(enableCauterization); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, false); + }); + + } } scene->enqueueTransaction(transaction); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 2fb36dad67..a242c94299 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -213,17 +213,13 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in updateMeshPart(modelMesh, partIndex); - if (useDualQuaternionSkinning) { - // computeAdjustedLocalBound(state.clusterDualQuaternions); - } else { - // computeAdjustedLocalBound(state.clusterMatrices); - } - Transform renderTransform = transform; const Model::ShapeState& shapeState = model->getShapeState(shapeIndex); renderTransform = transform.worldTransform(shapeState._rootFromJointTransform); updateTransform(renderTransform); + _deformerIndex = shape.dynamicTransform; + initCache(model); #if defined(Q_OS_MAC) || defined(Q_OS_ANDROID) @@ -245,7 +241,9 @@ void ModelMeshPartPayload::initCache(const ModelPointer& model) { if (_drawMesh) { auto vertexFormat = _drawMesh->getVertexFormat(); _hasColorAttrib = vertexFormat->hasAttribute(gpu::Stream::COLOR); - _isSkinned = vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_WEIGHT) && vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_INDEX); + if (_deformerIndex != hfm::UNDEFINED_KEY) { + _isSkinned = vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_WEIGHT) && vertexFormat->hasAttribute(gpu::Stream::SKIN_CLUSTER_INDEX); + } const HFMModel& hfmModel = model->getHFMModel(); const HFMMesh& mesh = hfmModel.meshes.at(_meshIndex); @@ -432,38 +430,6 @@ void ModelMeshPartPayload::render(RenderArgs* args) { args->_details._trianglesRendered += _drawPart._numIndices / INDICES_PER_TRIANGLE; } -void ModelMeshPartPayload::computeAdjustedLocalBound(const std::vector& clusterMatrices) { - _adjustedLocalBound = _localBound; - if (clusterMatrices.size() > 0) { - _adjustedLocalBound.transform(clusterMatrices.back()); - - for (int i = 0; i < (int)clusterMatrices.size() - 1; ++i) { - AABox clusterBound = _localBound; - clusterBound.transform(clusterMatrices[i]); - _adjustedLocalBound += clusterBound; - } - } -} - -void ModelMeshPartPayload::computeAdjustedLocalBound(const std::vector& clusterDualQuaternions) { - _adjustedLocalBound = _localBound; - if (clusterDualQuaternions.size() > 0) { - Transform rootTransform(clusterDualQuaternions.back().getRotation(), - clusterDualQuaternions.back().getScale(), - clusterDualQuaternions.back().getTranslation()); - _adjustedLocalBound.transform(rootTransform); - - for (int i = 0; i < (int)clusterDualQuaternions.size() - 1; ++i) { - AABox clusterBound = _localBound; - Transform transform(clusterDualQuaternions[i].getRotation(), - clusterDualQuaternions[i].getScale(), - clusterDualQuaternions[i].getTranslation()); - clusterBound.transform(transform); - _adjustedLocalBound += clusterBound; - } - } -} - void ModelMeshPartPayload::setBlendshapeBuffer(const std::unordered_map& blendshapeBuffers, const QVector& blendedMeshSizes) { if (_meshIndex < blendedMeshSizes.length() && blendedMeshSizes.at(_meshIndex) == _meshNumVertices) { auto blendshapeBuffer = blendshapeBuffers.find(_meshIndex); diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 9ddc62db40..50e06c024c 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -57,7 +57,6 @@ public: bool _hasColorAttrib { false }; graphics::Box _localBound; - graphics::Box _adjustedLocalBound; mutable graphics::Box _worldBound; std::shared_ptr _drawMesh; @@ -111,12 +110,6 @@ public: void bindMesh(gpu::Batch& batch) override; void bindTransform(gpu::Batch& batch, RenderArgs::RenderMode renderMode) const override; - // matrix palette skinning - void computeAdjustedLocalBound(const std::vector& clusterMatrices); - - // dual quaternion skinning - void computeAdjustedLocalBound(const std::vector& clusterDualQuaternions); - gpu::BufferPointer _clusterBuffer; enum class ClusterBufferType { Matrices, DualQuaternions }; @@ -124,6 +117,7 @@ public: int _meshIndex; int _shapeID; + int _deformerIndex; bool _isSkinned{ false }; bool _isBlendShaped { false }; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 662b6f190a..27e8725572 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -186,7 +186,7 @@ bool Model::shouldInvalidatePayloadShapeKey(int meshIndex) { const auto& networkMeshes = getNetworkModel()->getMeshes(); // if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown // to false to rebuild out mesh groups. - if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size() || meshIndex >= (int)_meshStates.size()) { + if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size() /* || meshIndex >= (int)_meshStates.size()*/) { _needsFixupInScene = true; // trigger remove/add cycle invalidCalculatedMeshBoxes(); // if we have to reload, we need to assume our mesh boxes are all invalid return true; @@ -233,32 +233,51 @@ void Model::updateRenderItems() { auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); - // const auto& meshState = self->getMeshState(meshIndex); - MeshState meshState; + + auto deformerIndex = self->_modelMeshRenderItemShapes[i].deformerIndex; + bool isDeformed = (deformerIndex != hfm::UNDEFINED_KEY); bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); - bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, - invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { - if (useDualQuaternionSkinning) { - data.updateClusterBuffer(meshState.clusterDualQuaternions); - data.computeAdjustedLocalBound(meshState.clusterDualQuaternions); - } else { - data.updateClusterBuffer(meshState.clusterMatrices); - data.computeAdjustedLocalBound(meshState.clusterMatrices); - } + + if (isDeformed) { - Transform renderTransform = modelTransform; - if (meshState.clusterMatrices.size() <= 1) { + const auto& meshState = self->getMeshState(deformerIndex); + // MeshState meshState; + bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); + + + transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, + invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { + if (useDualQuaternionSkinning) { + data.updateClusterBuffer(meshState.clusterDualQuaternions); + } else { + data.updateClusterBuffer(meshState.clusterMatrices); + } + + Transform renderTransform = modelTransform; + // if (meshState.clusterMatrices.size() <= 1) { + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + // } + data.updateTransform(renderTransform); + + data.setCauterized(cauterized); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); + }); + } else { + transaction.updateItem(itemID, [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) { + + Transform renderTransform = modelTransform; + // if (meshState.clusterMatrices.size() <= 1) { renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - } - data.updateTransform(renderTransform); + // } + data.updateTransform(renderTransform); - data.setCauterized(cauterized); - data.updateKey(renderItemKeyGlobalFlags); - data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); - }); + data.updateKey(renderItemKeyGlobalFlags); + data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, false); + }); + } } AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); @@ -317,8 +336,8 @@ bool Model::updateGeometry() { const HFMModel& hfmModel = getHFMModel(); const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; - /* int i = 0; - for (const auto& mesh: hfmModel.meshes) { + int i = 0; + /* for (const auto& mesh: hfmModel.meshes) { MeshState state; state.clusterDualQuaternions.resize(mesh.clusters.size()); state.clusterMatrices.resize(mesh.clusters.size()); @@ -326,13 +345,13 @@ bool Model::updateGeometry() { i++; } */ - /*for (int i = 0; i < hfmDynamicTransforms.size(); i++) { + for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; state.clusterDualQuaternions.resize(dynT.clusters.size()); state.clusterMatrices.resize(dynT.clusters.size()); _meshStates.push_back(state); - }*/ + } needFullUpdate = true; emit rigReady(); @@ -1407,8 +1426,34 @@ void Model::updateClusterMatrices() { _needsUpdateClusterMatrices = false; const HFMModel& hfmModel = getHFMModel(); + const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; for (int i = 0; i < (int) _meshStates.size(); i++) { MeshState& state = _meshStates[i]; + const auto& deformer = hfmDynamicTransforms[i]; + + int meshIndex = i; + int clusterIndex = 0; + + for (int d = 0; d < deformer.clusters.size(); d++) { + const auto& cluster = deformer.clusters[d]; + clusterIndex = d; + + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); + + if (_useDualQuaternionSkinning) { + auto jointPose = _rig.getJointPose(cluster.jointIndex); + Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); + Transform clusterTransform; + Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); + state.clusterDualQuaternions[d] = Model::TransformDualQuaternion(clusterTransform); + } + else { + auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[d]); + } + + } +/* int meshIndex = i; const HFMMesh& mesh = hfmModel.meshes.at(i); for (int j = 0; j < mesh.clusters.size(); j++) { @@ -1425,7 +1470,7 @@ void Model::updateClusterMatrices() { auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); } - } + }*/ } // post the blender if we're not currently waiting for one to finish @@ -1474,12 +1519,6 @@ void Model::createRenderItemSet() { assert(isLoaded()); const auto& meshes = _renderGeometry->getMeshes(); - // all of our mesh vectors must match in size - if (meshes.size() != _meshStates.size()) { - qCDebug(renderutils) << "WARNING!!!! Mesh Sizes don't match! " << meshes.size() << _meshStates.size() << " We will not segregate mesh groups yet."; - // return; - } - // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); @@ -1497,6 +1536,17 @@ void Model::createRenderItemSet() { // Run through all of the meshes, and place them into their segregated, but unsorted buckets int shapeID = 0; + const auto& shapes = _renderGeometry->getHFMModel().shapes; + for (shapeID; shapeID < shapes.size(); shapeID++) { + const auto& shape = shapes[shapeID]; + + _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform); + + auto material = getNetworkModel()->getShapeMaterial(shapeID); + _modelMeshMaterialNames.push_back(material ? material->getName() : ""); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.dynamicTransform }); + } +/* uint32_t numMeshes = (uint32_t)meshes.size(); for (uint32_t i = 0; i < numMeshes; i++) { const auto& mesh = meshes.at(i); @@ -1513,7 +1563,7 @@ void Model::createRenderItemSet() { _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); shapeID++; } - } + }*/ } bool Model::isRenderable() const { diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 0a102630b6..09fb9b581e 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -473,7 +473,7 @@ protected: QVector> _modelMeshRenderItems; QMap _modelMeshRenderItemsMap; render::ItemIDs _modelMeshRenderItemIDs; - using ShapeInfo = struct { int meshIndex; int deformerIndex; }; + using ShapeInfo = struct { int meshIndex; uint32_t deformerIndex{ hfm::UNDEFINED_KEY }; }; std::vector _modelMeshRenderItemShapes; std::vector _modelMeshMaterialNames; From 82247072deff0c2d0d0735dc539efa88d21e6df2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 11 Oct 2019 16:42:20 -0700 Subject: [PATCH 061/547] Create new mesh if GLTF primitive has different vertex attributes --- libraries/fbx/src/GLTFSerializer.cpp | 124 ++++++++++++++++++--------- 1 file changed, 83 insertions(+), 41 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index bd7fc7dd7d..4de937b547 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1082,14 +1082,20 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } - int meshCount = _file.meshes.size(); - hfmModel.meshes.resize(meshCount); + int gltfMeshCount = _file.meshes.size(); hfmModel.meshExtents.reset(); - for (int meshIndex = 0; meshIndex < meshCount; ++meshIndex) { - const auto& gltfMesh = _file.meshes[meshIndex]; - auto& mesh = hfmModel.meshes[meshIndex]; - mesh.meshIndex = meshIndex; + std::vector> templateShapePerPrimPerGLTFMesh; + for (int gltfMeshIndex = 0; gltfMeshIndex < gltfMeshCount; ++gltfMeshIndex) { + const auto& gltfMesh = _file.meshes[gltfMeshIndex]; + hfmModel.meshes.emplace_back(); + // NOTE: The number of hfm meshes may be greater than the number of gltf meshes, if a gltf mesh has primitives with different vertex attributes. In that case, this mesh reference may be reassigned. + hfm::Mesh* meshPtr = &hfmModel.meshes.back(); + const size_t firstMeshIndexForGLTFMesh = hfmModel.meshes.size() - 1; + meshPtr->meshIndex = gltfMeshIndex; + templateShapePerPrimPerGLTFMesh.emplace_back(); + std::vector& templateShapePerPrim = templateShapePerPrimPerGLTFMesh.back(); + // TODO: Rewrite GLTF skinning definition if (!hfmModel.hasSkeletonJoints) { HFMCluster cluster; #if 0 @@ -1097,31 +1103,70 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& #endif cluster.inverseBindMatrix = glm::mat4(); cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - mesh.clusters.append(cluster); + meshPtr->clusters.append(cluster); } else { // skinned model for (int j = 0; j < numNodes; ++j) { HFMCluster cluster; cluster.jointIndex = j; cluster.inverseBindMatrix = jointInverseBindTransforms[j]; cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - mesh.clusters.append(cluster); + meshPtr->clusters.append(cluster); } } HFMCluster root; root.jointIndex = 0; root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; root.inverseBindTransform = Transform(root.inverseBindMatrix); - mesh.clusters.append(root); + meshPtr->clusters.append(root); - QSet meshAttributes; - for(const auto &primitive : gltfMesh.primitives) { - for (const auto& attribute : primitive.attributes.values.keys()) { - meshAttributes.insert(attribute); + QSet primitiveAttributes; + if (!gltfMesh.primitives.empty()) { + for (const auto& attribute : gltfMesh.primitives[0].attributes.values.keys()) { + primitiveAttributes.insert(attribute); } } + std::vector> primitiveAttributeVariants; - for(auto &primitive : gltfMesh.primitives) { - HFMMeshPart part = HFMMeshPart(); + int primCount = (int)gltfMesh.primitives.size(); + size_t hfmMeshIndex = firstMeshIndexForGLTFMesh; + for(int primIndex = 0; primIndex < primCount; ++primIndex) { + auto& primitive = gltfMesh.primitives[primIndex]; + + QList keys = primitive.attributes.values.keys(); + QSet newPrimitiveAttributes; + for (const auto& key : keys) { + newPrimitiveAttributes.insert(key); + } + if (newPrimitiveAttributes != primitiveAttributes) { + assert(primIndex != 0); + + // We need to use a different mesh because the vertex attributes are different + auto attributeVariantIt = std::find(primitiveAttributeVariants.cbegin(), primitiveAttributeVariants.cend(), newPrimitiveAttributes); + if (attributeVariantIt == primitiveAttributeVariants.cend()) { + // Need to allocate a new mesh + hfmModel.meshes.emplace_back(); + meshPtr = &hfmModel.meshes.back(); + hfmMeshIndex = hfmModel.meshes.size() - 1; + meshPtr->meshIndex = gltfMeshIndex; + primitiveAttributeVariants.push_back(newPrimitiveAttributes); + } else { + // An hfm mesh already exists for this gltf mesh with the same vertex attributes. Use it again. + auto variantIndex = (size_t)(attributeVariantIt - primitiveAttributeVariants.cbegin()); + hfmMeshIndex = firstMeshIndexForGLTFMesh + variantIndex; + meshPtr = &hfmModel.meshes[hfmMeshIndex]; + } + primitiveAttributes = newPrimitiveAttributes; + } + // Now, allocate the part for the correct mesh... + hfm::Mesh& mesh = *meshPtr; + mesh.parts.emplace_back(); + hfm::MeshPart& part = mesh.parts.back(); + // ...and keep track of the relationship between the gltf mesh/primitive and the hfm mesh/part + templateShapePerPrim.emplace_back(); + hfm::Shape& templateShape = templateShapePerPrim.back(); + templateShape.mesh = (uint32_t)hfmMeshIndex; + templateShape.meshPart = (uint32_t)(mesh.parts.size() - 1); + templateShape.material = primitive.material; int indicesAccessorIdx = primitive.indices; @@ -1156,8 +1201,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& // Increment the triangle indices by the current mesh vertex count so each mesh part can all reference the same buffers within the mesh int prevMeshVerticesCount = mesh.vertices.count(); - - QList keys = primitive.attributes.values.keys(); QVector clusterJoints; QVector clusterWeights; @@ -1240,53 +1283,53 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& part.triangleIndices.append(validatedIndices); - mesh.vertices.reserve(partVerticesCount); + mesh.vertices.reserve(mesh.vertices.size() + partVerticesCount); for (int n = 0; n < vertices.size(); n = n + VERTEX_STRIDE) { mesh.vertices.push_back(glm::vec3(vertices[n], vertices[n + 1], vertices[n + 2])); } - mesh.normals.reserve(partVerticesCount); + mesh.normals.reserve(mesh.normals.size() + partVerticesCount); for (int n = 0; n < normals.size(); n = n + NORMAL_STRIDE) { mesh.normals.push_back(glm::vec3(normals[n], normals[n + 1], normals[n + 2])); } if (tangents.size() == partVerticesCount * tangentStride) { - mesh.tangents.reserve(partVerticesCount); + mesh.tangents.reserve(mesh.tangents.size() + partVerticesCount); for (int n = 0; n < tangents.size(); n += tangentStride) { float tanW = tangentStride == 4 ? tangents[n + 3] : 1; mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); } - } else if (meshAttributes.contains("TANGENT")) { + } else if (primitiveAttributes.contains("TANGENT")) { mesh.tangents.resize(mesh.tangents.size() + partVerticesCount); } if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { - mesh.texCoords.reserve(partVerticesCount); + mesh.texCoords.reserve(mesh.texCoords.size() + partVerticesCount); for (int n = 0; n < texcoords.size(); n = n + 2) { mesh.texCoords.push_back(glm::vec2(texcoords[n], texcoords[n + 1])); } - } else if (meshAttributes.contains("TEXCOORD_0")) { + } else if (primitiveAttributes.contains("TEXCOORD_0")) { mesh.texCoords.resize(mesh.texCoords.size() + partVerticesCount); } if (texcoords2.size() == partVerticesCount * TEX_COORD_STRIDE) { - mesh.texCoords1.reserve(partVerticesCount); + mesh.texCoords1.reserve(mesh.texCoords1.size() + partVerticesCount); for (int n = 0; n < texcoords2.size(); n = n + 2) { mesh.texCoords1.push_back(glm::vec2(texcoords2[n], texcoords2[n + 1])); } - } else if (meshAttributes.contains("TEXCOORD_1")) { + } else if (primitiveAttributes.contains("TEXCOORD_1")) { mesh.texCoords1.resize(mesh.texCoords1.size() + partVerticesCount); } if (colors.size() == partVerticesCount * colorStride) { - mesh.colors.reserve(partVerticesCount); + mesh.colors.reserve(mesh.colors.size() + partVerticesCount); for (int n = 0; n < colors.size(); n += colorStride) { mesh.colors.push_back(glm::vec3(colors[n], colors[n + 1], colors[n + 2])); } - } else if (meshAttributes.contains("COLOR_0")) { - mesh.colors.reserve(partVerticesCount); + } else if (primitiveAttributes.contains("COLOR_0")) { + mesh.colors.reserve(mesh.colors.size() + partVerticesCount); for (int i = 0; i < partVerticesCount; ++i) { - mesh.colors.push_back(glm::vec3(1.0f, 1.0f, 1.0f)); + mesh.colors.push_back(glm::vec3(1.0f)); } } @@ -1312,7 +1355,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& clusterJoints.push_back(0); } } - } else if (meshAttributes.contains("JOINTS_0")) { + } else if (primitiveAttributes.contains("JOINTS_0")) { for (int i = 0; i < partVerticesCount; ++i) { for (int j = 0; j < 4; ++j) { clusterJoints.push_back(0); @@ -1342,10 +1385,10 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& clusterWeights.push_back(0.0f); } } - } else if (meshAttributes.contains("WEIGHTS_0")) { + } else if (primitiveAttributes.contains("WEIGHTS_0")) { for (int i = 0; i < partVerticesCount; ++i) { clusterWeights.push_back(1.0f); - for (int j = 1; j < 4; ++j) { + for (int j = 0; j < 4; ++j) { clusterWeights.push_back(0.0f); } } @@ -1383,8 +1426,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } - mesh.parts.push_back(part); - // populate the texture coordinates if they don't exist if (mesh.texCoords.size() == 0 && !hfmModel.hasSkeletonJoints) { for (int i = 0; i < part.triangleIndices.size(); ++i) { mesh.texCoords.push_back(glm::vec2(0.0, 1.0)); } @@ -1468,22 +1509,23 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } + // Create the instance shapes for each transform node for (int nodeIndex = 0; nodeIndex < numNodes; ++nodeIndex) { const auto& node = _file.nodes[nodeIndex]; if (-1 == node.mesh) { continue; } - const auto& mesh = _file.meshes[node.mesh]; - int primCount = (int)mesh.primitives.size(); + const auto& gltfMesh = _file.meshes[node.mesh]; + const auto& templateShapePerPrim = templateShapePerPrimPerGLTFMesh[node.mesh]; + int primCount = (int)gltfMesh.primitives.size(); for (int primIndex = 0; primIndex < primCount; ++primIndex) { - const auto& primitive = mesh.primitives[primIndex]; - hfmModel.shapes.emplace_back(); + const auto& primitive = gltfMesh.primitives[primIndex]; + const auto& templateShape = templateShapePerPrim[primIndex]; + hfmModel.shapes.push_back(templateShape); auto& hfmShape = hfmModel.shapes.back(); + // Everything else is already defined (mesh, meshPart, material), so just define the new transform hfmShape.transform = nodeIndex; - hfmShape.mesh = node.mesh; - hfmShape.meshPart = primIndex; - hfmShape.material = primitive.material; } } From acca22e2d6b525a2bd6980ae16d2f2b67d378bef Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 14 Oct 2019 15:30:03 -0700 Subject: [PATCH 062/547] Remove unused primitive reference in GLTFSerializer --- libraries/fbx/src/GLTFSerializer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 4de937b547..9fb00d3145 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1520,7 +1520,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& const auto& templateShapePerPrim = templateShapePerPrimPerGLTFMesh[node.mesh]; int primCount = (int)gltfMesh.primitives.size(); for (int primIndex = 0; primIndex < primCount; ++primIndex) { - const auto& primitive = gltfMesh.primitives[primIndex]; const auto& templateShape = templateShapePerPrim[primIndex]; hfmModel.shapes.push_back(templateShape); auto& hfmShape = hfmModel.shapes.back(); From 108d331d86923ffd1783ad5bd3a2ede8366c16f2 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 14 Oct 2019 17:45:07 -0700 Subject: [PATCH 063/547] more --- libraries/fbx/src/FBXSerializer.cpp | 2 +- libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp | 2 +- libraries/render-utils/src/Model.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 58a9ed2570..f15443aeb5 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1653,7 +1653,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const int oldIndex = fbxCluster.indices[i]; uint32_t newIndex = (uint32_t)extracted.newIndices.value(oldIndex); deformer.indices.push_back(newIndex); - deformer.indices.push_back((float)fbxCluster.weights[i]); + deformer.weights.push_back((float)fbxCluster.weights[i]); } } diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 8c27968de9..7fefe614d4 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -95,7 +95,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); } // Record cluster sizes - const size_t numVertClusters = (reweightedDeformers.weightsPerVertex ? hfmMesh.clusterIndices.size() / reweightedDeformers.weightsPerVertex : 0); + const size_t numVertClusters = (reweightedDeformers.weightsPerVertex ? reweightedDeformers.indices.size() / reweightedDeformers.weightsPerVertex : 0); const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 27e8725572..56dadf0537 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -257,7 +257,7 @@ void Model::updateRenderItems() { Transform renderTransform = modelTransform; // if (meshState.clusterMatrices.size() <= 1) { - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); // } data.updateTransform(renderTransform); From f049ab7887af6c221abd7f6675a25c701dc761d8 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 15 Oct 2019 18:12:09 -0700 Subject: [PATCH 064/547] Understanding that CLuster can be just one for a mesh and we need the bindingMatrix to be applied correctly, differenciating intentionnally the transform for bound evaluation and the one used for render in the case of SKinned mesh because the clusterMatrices contain the extra offset from rig to model --- libraries/fbx/src/FBXSerializer.cpp | 4 ++-- .../render-utils/src/CauterizedModel.cpp | 23 +++++++++++-------- .../render-utils/src/MeshPartPayload.cpp | 5 ++++ libraries/render-utils/src/MeshPartPayload.h | 1 + libraries/render-utils/src/Model.cpp | 3 ++- 5 files changed, 24 insertions(+), 12 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f15443aeb5..8d2d1336a9 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1592,7 +1592,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // whether we're skinned depends on how many clusters are attached - if (clusterIDs.size() > 1) { + if (clusterIDs.size() > 0) { hfm::DynamicTransform dynamicTransform; auto& clusters = dynamicTransform.clusters; std::vector deformers; @@ -1670,7 +1670,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const shape.dynamicTransform = dynamicTransformID; } } else { - // this is a single-joint mesh + // this is a no cluster mesh HFMJoint& joint = hfmModel.joints[rootJointIndex]; // Apply geometric offset, if present, by transforming the vertices directly diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 3e7c694768..7d94cd61a5 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -319,7 +319,8 @@ void CauterizedModel::updateRenderItems() { const auto& meshState = self->getMeshState(deformerIndex); const auto& cauterizedMeshState = self->getCauterizeMeshState(deformerIndex); - transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, + transaction.updateItem(itemID, + [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { CauterizedMeshPartPayload& data = static_cast(mmppData); if (useDualQuaternionSkinning) { @@ -331,26 +332,30 @@ void CauterizedModel::updateRenderItems() { } Transform renderTransform = modelTransform; - // if (meshState.clusterMatrices.size() <= 2) { - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + // if (meshState.clusterMatrices.size() <= 2) { + // renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); // } data.updateTransform(renderTransform); data.updateTransformForCauterizedMesh(renderTransform); + data.updateTransformAndBound(modelTransform.worldTransform(shapeState._rootFromJointTransform)); data.setEnableCauterization(enableCauterization); data.updateKey(renderItemKeyGlobalFlags); data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning); }); } else { - transaction.updateItem(itemID, [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) { + transaction.updateItem(itemID, + [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, enableCauterization] + (ModelMeshPartPayload& mmppData) { + CauterizedMeshPartPayload& data = static_cast(mmppData); Transform renderTransform = modelTransform; - // if (meshState.clusterMatrices.size() <= 1) { - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - // } - data.updateTransform(renderTransform); - // data.setEnableCauterization(enableCauterization); + renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + data.updateTransform(renderTransform); + data.updateTransformForCauterizedMesh(renderTransform); + + data.setEnableCauterization(enableCauterization); data.updateKey(renderItemKeyGlobalFlags); data.setShapeKey(invalidatePayloadShapeKey, primitiveMode, false); }); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index a242c94299..5dc39d8674 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -70,6 +70,11 @@ void MeshPartPayload::updateTransform(const Transform& transform) { _worldBound.transform(_worldFromLocalTransform); } +void MeshPartPayload::updateTransformAndBound(const Transform& transform) { + _worldBound = _localBound; + _worldBound.transform(transform); +} + void MeshPartPayload::addMaterial(graphics::MaterialLayer material) { _drawMaterials.push(material); } diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 50e06c024c..5d351e90d4 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -39,6 +39,7 @@ public: virtual void notifyLocationChanged() {} void updateTransform(const Transform& transform); + void updateTransformAndBound(const Transform& transform ); // Render Item interface virtual render::ItemKey getKey() const; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 56dadf0537..1e258a8dd1 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -257,9 +257,10 @@ void Model::updateRenderItems() { Transform renderTransform = modelTransform; // if (meshState.clusterMatrices.size() <= 1) { - renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); + // renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); // } data.updateTransform(renderTransform); + data.updateTransformAndBound(modelTransform.worldTransform(shapeState._rootFromJointTransform)); data.setCauterized(cauterized); data.updateKey(renderItemKeyGlobalFlags); From eecaeb11551cb5f7661e829cd675aebd96004965 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 16 Oct 2019 04:02:05 -0700 Subject: [PATCH 065/547] FOund the issue why the skinning was incorrect, removed unecessary data structures in the newly added objects and renamed Deformer to SkinCluster and DYnamicTransform to SkinDeformer --- libraries/animation/src/AnimSkeleton.cpp | 4 +- libraries/fbx/src/FBXSerializer.cpp | 49 +++++++++-------- libraries/hfm/src/hfm/HFM.h | 27 +++++----- .../model-baker/src/model-baker/Baker.cpp | 14 ++--- .../src/model-baker/BuildGraphicsMeshTask.cpp | 22 ++++---- .../src/model-baker/BuildGraphicsMeshTask.h | 2 +- .../model-baker/CollectShapeVerticesTask.cpp | 20 +++---- .../model-baker/CollectShapeVerticesTask.h | 2 +- .../src/model-baker/ReweightDeformersTask.cpp | 52 +++++++++---------- .../src/model-baker/ReweightDeformersTask.h | 2 +- .../render-utils/src/CauterizedModel.cpp | 8 +-- libraries/render-utils/src/Model.cpp | 12 ++--- 12 files changed, 110 insertions(+), 104 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index a68f5c869f..bae1fb5b69 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -30,8 +30,8 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { // we make a copy of the inverseBindMatrices in order to prevent mutating the model bind pose // when we are dealing with a joint offset in the model - for (int i = 0; i < (int)hfmModel.dynamicTransforms.size(); i++) { - const auto& defor = hfmModel.dynamicTransforms[i]; + for (int i = 0; i < (int)hfmModel.skinDeformers.size(); i++) { + const auto& defor = hfmModel.skinDeformers[i]; std::vector dummyClustersList; for (int j = 0; j < defor.clusters.size(); j++) { diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 8d2d1336a9..ac01d6f31a 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1593,9 +1593,9 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // whether we're skinned depends on how many clusters are attached if (clusterIDs.size() > 0) { - hfm::DynamicTransform dynamicTransform; - auto& clusters = dynamicTransform.clusters; - std::vector deformers; + hfm::SkinDeformer skinDeformer; + auto& clusters = skinDeformer.clusters; + std::vector skinClusters; for (const auto& clusterID : clusterIDs) { HFMCluster hfmCluster; const Cluster& fbxCluster = fbxClusters[clusterID]; @@ -1639,35 +1639,40 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const clusters.push_back(cluster); // Skinned mesh instances have a dynamic transform - dynamicTransform.deformers.reserve(clusterIDs.size()); - clusters.reserve(clusterIDs.size()); + skinDeformer.skinClusterIndices.reserve(clusterIDs.size()); for (const auto& clusterID : clusterIDs) { const Cluster& fbxCluster = fbxClusters[clusterID]; - dynamicTransform.deformers.emplace_back(); - deformers.emplace_back(); - hfm::Deformer& deformer = deformers.back(); + skinDeformer.skinClusterIndices.emplace_back(); + skinClusters.emplace_back(); + hfm::SkinCluster& skinCluster = skinClusters.back(); size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); - deformer.indices.reserve(indexWeightPairs); - deformer.weights.reserve(indexWeightPairs); - for (int i = 0; i < (int)indexWeightPairs; i++) { - int oldIndex = fbxCluster.indices[i]; - uint32_t newIndex = (uint32_t)extracted.newIndices.value(oldIndex); - deformer.indices.push_back(newIndex); - deformer.weights.push_back((float)fbxCluster.weights[i]); + skinCluster.indices.reserve(indexWeightPairs); + skinCluster.weights.reserve(indexWeightPairs); + + for (int j = 0; j < fbxCluster.indices.size(); j++) { + int oldIndex = fbxCluster.indices.at(j); + float weight = fbxCluster.weights.at(j); + for (QMultiHash::const_iterator it = extracted.newIndices.constFind(oldIndex); + it != extracted.newIndices.end() && it.key() == oldIndex; it++) { + int newIndex = it.value(); + + skinCluster.indices.push_back(newIndex); + skinCluster.weights.push_back(weight); + } } } // Store this model's deformers, this dynamic transform's deformer IDs - uint32_t deformerMinID = (uint32_t)hfmModel.deformers.size(); - hfmModel.deformers.insert(hfmModel.deformers.end(), deformers.cbegin(), deformers.cend()); - dynamicTransform.deformers.resize(deformers.size()); - std::iota(dynamicTransform.deformers.begin(), dynamicTransform.deformers.end(), deformerMinID); + uint32_t deformerMinID = (uint32_t)hfmModel.skinClusters.size(); + hfmModel.skinClusters.insert(hfmModel.skinClusters.end(), skinClusters.cbegin(), skinClusters.cend()); + skinDeformer.skinClusterIndices.resize(skinClusters.size()); + std::iota(skinDeformer.skinClusterIndices.begin(), skinDeformer.skinClusterIndices.end(), deformerMinID); // Store the model's dynamic transform, and put its ID in the shapes - hfmModel.dynamicTransforms.push_back(dynamicTransform); - uint32_t dynamicTransformID = (uint32_t)(hfmModel.dynamicTransforms.size() - 1); + hfmModel.skinDeformers.push_back(skinDeformer); + uint32_t skinDeformerID = (uint32_t)(hfmModel.skinDeformers.size() - 1); for (hfm::Shape& shape : partShapes) { - shape.dynamicTransform = dynamicTransformID; + shape.skinDeformer = skinDeformerID; } } else { // this is a no cluster mesh diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ba7e90bd92..15ed876d94 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -242,17 +242,20 @@ public: QVector colors; QVector texCoords; QVector texCoords1; - QVector clusterIndices; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::deformers, hfm::Deformer) - QVector clusterWeights; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::deformers, hfm::Deformer) - QVector originalIndices; QVector clusters; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::clusters) - Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) + // Skinning cluster attributes + QVector clusterIndices; + QVector clusterWeights; + + // Blendshape attributes QVector blendshapes; + + QVector originalIndices; // Original indices of the vertices unsigned int meshIndex; // the order the meshes appeared in the object file graphics::MeshPointer _mesh; @@ -294,18 +297,16 @@ public: }; // Formerly contained in hfm::Mesh -class Deformer { +class SkinCluster { public: std::vector indices; std::vector weights; }; -class DynamicTransform { +class SkinDeformer { public: - std::vector deformers; - std::vector clusters; // affect the deformer of the same index - std::vector blendshapes; - // There are also the meshExtents and modelTransform, which for now are left in hfm::Mesh + std::vector skinClusterIndices; + std::vector clusters; }; // The lightweight model part description. @@ -317,7 +318,7 @@ public: uint32_t joint { UNDEFINED_KEY }; // The hfm::Joint associated with this shape, containing transform information // TODO: Have all serializers calculate hfm::Shape::transformedExtents in world space where they previously calculated hfm::Mesh::meshExtents. Change all code that uses hfm::Mesh::meshExtents to use this instead. Extents transformedExtents; // The precise extents of the meshPart vertices in world space, after transform information is applied, while not taking into account rigging/skinning - uint32_t dynamicTransform { UNDEFINED_KEY }; + uint32_t skinDeformer { UNDEFINED_KEY }; }; /// The runtime model format. @@ -334,9 +335,9 @@ public: std::vector meshes; std::vector materials; - std::vector deformers; - std::vector dynamicTransforms; + std::vector skinDeformers; + std::vector skinClusters; std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index ccb5e1816f..0b23c39aeb 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -29,7 +29,7 @@ namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector>; + using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { @@ -44,8 +44,8 @@ namespace baker { } output.edit4() = hfmModelIn->joints; output.edit5() = hfmModelIn->shapes; - output.edit6() = hfmModelIn->dynamicTransforms; - output.edit7() = hfmModelIn->deformers; + output.edit6() = hfmModelIn->skinDeformers; + output.edit7() = hfmModelIn->skinClusters; } }; @@ -143,7 +143,7 @@ namespace baker { const auto blendshapesPerMeshIn = modelPartsIn.getN(3); const auto jointsIn = modelPartsIn.getN(4); const auto shapesIn = modelPartsIn.getN(5); - const auto dynamicTransformsIn = modelPartsIn.getN(6); + const auto skinDeformersIn = modelPartsIn.getN(6); const auto deformersIn = modelPartsIn.getN(7); // Calculate normals and tangents for meshes and blendshapes if they do not exist @@ -158,14 +158,14 @@ namespace baker { // Skinning weight calculations // NOTE: Due to limitations in the current graphics::MeshPointer representation, the output list of ReweightedDeformers is per-mesh. An element is empty if there are no deformers for the mesh of the same index. - const auto reweightDeformersInputs = ReweightDeformersTask::Input(meshesIn, shapesIn, dynamicTransformsIn, deformersIn).asVarying(); + const auto reweightDeformersInputs = ReweightDeformersTask::Input(meshesIn, shapesIn, skinDeformersIn, deformersIn).asVarying(); const auto reweightedDeformers = model.addJob("ReweightDeformers", reweightDeformersInputs); // Shape vertices are included/rejected based on skinning weight, and thus must use the reweighted deformers. - const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, dynamicTransformsIn, reweightedDeformers).asVarying(); + const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, skinDeformersIn, reweightedDeformers).asVarying(); const auto shapeVerticesPerJoint = model.addJob("CollectShapeVertices", collectShapeVerticesInputs); // Build the graphics::MeshPointer for each hfm::Mesh - const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, dynamicTransformsIn, reweightedDeformers).asVarying(); + const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, skinDeformersIn, reweightedDeformers).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); // Prepare joint information diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 7fefe614d4..88546e0975 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -381,16 +381,16 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& normalsPerMesh = input.get3(); const auto& tangentsPerMesh = input.get4(); const auto& shapes = input.get5(); - const auto& dynamicTransforms = input.get6(); + const auto& skinDeformers = input.get6(); const auto& reweightedDeformersPerMesh = input.get7(); - // Currently, there is only (at most) one dynamicTransform per mesh - // An undefined shape.dynamicTransform has the value hfm::UNDEFINED_KEY - std::vector dynamicTransformPerMesh; - dynamicTransformPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); + // Currently, there is only (at most) one skinDeformer per mesh + // An undefined shape.skinDeformer has the value hfm::UNDEFINED_KEY + std::vector skinDeformerPerMesh; + skinDeformerPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); for (const auto& shape : shapes) { - uint32_t dynamicTransformIndex = shape.dynamicTransform; - dynamicTransformPerMesh[shape.mesh] = dynamicTransformIndex; + uint32_t skinDeformerIndex = shape.skinDeformer; + skinDeformerPerMesh[shape.mesh] = skinDeformerIndex; } auto& graphicsMeshes = output; @@ -403,10 +403,10 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const uint16_t numDeformerControllers = 0; if (reweightedDeformers.weightsPerVertex != 0) { - uint32_t dynamicTransformIndex = dynamicTransformPerMesh[i]; - if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { - const hfm::DynamicTransform& dynamicTransform = dynamicTransforms[dynamicTransformIndex]; - numDeformerControllers = (uint16_t)dynamicTransform.deformers.size(); + uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; + if (skinDeformerIndex != hfm::UNDEFINED_KEY) { + const hfm::SkinDeformer& skinDeformer = skinDeformers[skinDeformerIndex]; + numDeformerControllers = (uint16_t)skinDeformer.skinClusterIndices.size(); } } diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h index 1bb9b9be0c..b60f6f7a43 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h @@ -20,7 +20,7 @@ class BuildGraphicsMeshTask { public: - using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp index 36c2aa04a6..e597bbf507 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -13,15 +13,15 @@ #include -// Used to track and avoid duplicate shape vertices, as multiple shapes can have the same mesh and dynamicTransform +// Used to track and avoid duplicate shape vertices, as multiple shapes can have the same mesh and skinDeformer class VertexSource { public: uint32_t mesh; - uint32_t dynamicTransform; + uint32_t skinDeformer; bool operator==(const VertexSource& other) const { return mesh == other.mesh && - dynamicTransform == other.dynamicTransform; + skinDeformer == other.skinDeformer; } }; @@ -29,7 +29,7 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con const auto& meshes = input.get0(); const auto& shapes = input.get1(); const auto& joints = input.get2(); - const auto& dynamicTransforms = input.get3(); + const auto& skinDeformers = input.get3(); const auto& reweightedDeformers = input.get4(); auto& shapeVerticesPerJoint = output; @@ -38,18 +38,18 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con vertexSourcesPerJoint.resize(joints.size()); for (size_t i = 0; i < shapes.size(); ++i) { const auto& shape = shapes[i]; - const uint32_t dynamicTransformKey = shape.dynamicTransform; - if (dynamicTransformKey == hfm::UNDEFINED_KEY) { + const uint32_t skinDeformerKey = shape.skinDeformer; + if (skinDeformerKey == hfm::UNDEFINED_KEY) { continue; } VertexSource vertexSource; vertexSource.mesh = shape.mesh; - vertexSource.dynamicTransform = dynamicTransformKey; + vertexSource.skinDeformer = skinDeformerKey; - const auto& dynamicTransform = dynamicTransforms[dynamicTransformKey]; - for (size_t j = 0; j < dynamicTransform.clusters.size(); ++j) { - const auto& cluster = dynamicTransform.clusters[j]; + const auto& skinDeformer = skinDeformers[skinDeformerKey]; + for (size_t j = 0; j < skinDeformer.clusters.size(); ++j) { + const auto& cluster = skinDeformer.clusters[j]; const uint32_t jointIndex = cluster.jointIndex; auto& vertexSources = vertexSourcesPerJoint[jointIndex]; diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h index 3111dcadc1..f14c440f2f 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h @@ -19,7 +19,7 @@ class CollectShapeVerticesTask { public: - using Input = baker::VaryingSet5, std::vector, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet5, std::vector, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp index 097833e110..f210a5dd6f 100644 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp @@ -11,30 +11,30 @@ #include "ReweightDeformersTask.h" -baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const std::vector deformers, const uint16_t weightsPerVertex) { +baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex) { baker::ReweightedDeformers reweightedDeformers; - if (deformers.size() == 0) { + if (skinClusters.size() == 0) { return reweightedDeformers; } size_t numClusterIndices = numMeshVertices * weightsPerVertex; reweightedDeformers.weightsPerVertex = weightsPerVertex; // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. - reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(deformers.size() - 1)); + reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(skinClusters.size() - 1)); reweightedDeformers.weights.resize(numClusterIndices, 0); std::vector weightAccumulators; weightAccumulators.resize(numClusterIndices, 0.0f); - for (uint16_t i = 0; i < (uint16_t)deformers.size(); ++i) { - const hfm::Deformer& deformer = *deformers[i]; + for (uint16_t i = 0; i < (uint16_t)skinClusters.size(); ++i) { + const hfm::SkinCluster& skinCluster = *skinClusters[i]; - if (deformer.indices.size() != deformer.weights.size()) { + if (skinCluster.indices.size() != skinCluster.weights.size()) { reweightedDeformers.trimmedToMatch = true; } - size_t numIndicesOrWeights = std::min(deformer.indices.size(), deformer.weights.size()); + size_t numIndicesOrWeights = std::min(skinCluster.indices.size(), skinCluster.weights.size()); for (size_t j = 0; j < numIndicesOrWeights; ++j) { - uint32_t index = deformer.indices[j]; - float weight = deformer.weights[j]; + uint32_t index = skinCluster.indices[j]; + float weight = skinCluster.weights[j]; // look for an unused slot in the weights vector uint32_t weightIndex = index * weightsPerVertex; @@ -90,34 +90,34 @@ void ReweightDeformersTask::run(const baker::BakeContextPointer& context, const const auto& meshes = input.get0(); const auto& shapes = input.get1(); - const auto& dynamicTransforms = input.get2(); - const auto& deformers = input.get3(); + const auto& skinDeformers = input.get2(); + const auto& skinClusters = input.get3(); auto& reweightedDeformers = output; - // Currently, there is only (at most) one dynamicTransform per mesh - // An undefined shape.dynamicTransform has the value hfm::UNDEFINED_KEY - std::vector dynamicTransformPerMesh; - dynamicTransformPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); + // Currently, there is only (at most) one skinDeformer per mesh + // An undefined shape.skinDeformer has the value hfm::UNDEFINED_KEY + std::vector skinDeformerPerMesh; + skinDeformerPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); for (const auto& shape : shapes) { - uint32_t dynamicTransformIndex = shape.dynamicTransform; - dynamicTransformPerMesh[shape.mesh] = dynamicTransformIndex; + uint32_t skinDeformerIndex = shape.skinDeformer; + skinDeformerPerMesh[shape.mesh] = skinDeformerIndex; } reweightedDeformers.reserve(meshes.size()); for (size_t i = 0; i < meshes.size(); ++i) { const auto& mesh = meshes[i]; - uint32_t dynamicTransformIndex = dynamicTransformPerMesh[i]; + uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; - const hfm::DynamicTransform* dynamicTransform = nullptr; - std::vector meshDeformers; - if (dynamicTransformIndex != hfm::UNDEFINED_KEY) { - dynamicTransform = &dynamicTransforms[dynamicTransformIndex]; - for (const auto& deformerIndex : dynamicTransform->deformers) { - const auto& deformer = deformers[deformerIndex]; - meshDeformers.push_back(&deformer); + const hfm::SkinDeformer* skinDeformer = nullptr; + std::vector meshSkinClusters; + if (skinDeformerIndex != hfm::UNDEFINED_KEY) { + skinDeformer = &skinDeformers[skinDeformerIndex]; + for (const auto& skinClusterIndex : skinDeformer->skinClusterIndices) { + const auto& skinCluster = skinClusters[skinClusterIndex]; + meshSkinClusters.push_back(&skinCluster); } } - reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), meshDeformers, NUM_WEIGHTS_PER_VERTEX)); + reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), meshSkinClusters, NUM_WEIGHTS_PER_VERTEX)); } } diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.h b/libraries/model-baker/src/model-baker/ReweightDeformersTask.h index 98befa8000..c40ad4c1b4 100644 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.h +++ b/libraries/model-baker/src/model-baker/ReweightDeformersTask.h @@ -19,7 +19,7 @@ class ReweightDeformersTask { public: - using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 7d94cd61a5..cbd608e092 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -33,7 +33,7 @@ bool CauterizedModel::updateGeometry() { if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); /* const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + const auto& hfmDynamicTransforms = hfmModel.skinDeformers; for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; @@ -47,7 +47,7 @@ bool CauterizedModel::updateGeometry() { }*/ const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + const auto& hfmDynamicTransforms = hfmModel.skinDeformers; int i = 0; /* for (const auto& mesh: hfmModel.meshes) { MeshState state; @@ -113,7 +113,7 @@ void CauterizedModel::createRenderItemSet() { auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.dynamicTransform }); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } /* int shapeID = 0; @@ -153,7 +153,7 @@ void CauterizedModel::updateClusterMatrices() { const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + const auto& hfmDynamicTransforms = hfmModel.skinDeformers; for (int i = 0; i < (int)_meshStates.size(); i++) { MeshState& state = _meshStates[i]; const auto& deformer = hfmDynamicTransforms[i]; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 1e258a8dd1..d3766fa65c 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -336,7 +336,7 @@ bool Model::updateGeometry() { updateShapeStatesFromRig(); const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + const auto& hfmSkinDeformers = hfmModel.skinDeformers; int i = 0; /* for (const auto& mesh: hfmModel.meshes) { MeshState state; @@ -346,8 +346,8 @@ bool Model::updateGeometry() { i++; } */ - for (int i = 0; i < hfmDynamicTransforms.size(); i++) { - const auto& dynT = hfmDynamicTransforms[i]; + for (int i = 0; i < hfmSkinDeformers.size(); i++) { + const auto& dynT = hfmSkinDeformers[i]; MeshState state; state.clusterDualQuaternions.resize(dynT.clusters.size()); state.clusterMatrices.resize(dynT.clusters.size()); @@ -1427,10 +1427,10 @@ void Model::updateClusterMatrices() { _needsUpdateClusterMatrices = false; const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.dynamicTransforms; + const auto& hfmSkinDeformers = hfmModel.skinDeformers; for (int i = 0; i < (int) _meshStates.size(); i++) { MeshState& state = _meshStates[i]; - const auto& deformer = hfmDynamicTransforms[i]; + const auto& deformer = hfmSkinDeformers[i]; int meshIndex = i; int clusterIndex = 0; @@ -1545,7 +1545,7 @@ void Model::createRenderItemSet() { auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.dynamicTransform }); + _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } /* uint32_t numMeshes = (uint32_t)meshes.size(); From 0a9c38964153e005ee99fcadbaefeb0338365798 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 16 Oct 2019 08:06:35 -0700 Subject: [PATCH 066/547] last issue --- libraries/render-utils/src/MeshPartPayload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 5dc39d8674..3f25d2ef80 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -223,7 +223,7 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in renderTransform = transform.worldTransform(shapeState._rootFromJointTransform); updateTransform(renderTransform); - _deformerIndex = shape.dynamicTransform; + _deformerIndex = shape.skinDeformer; initCache(model); From acbdd2b3b57d37986a732929a411e44d5024501d Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 16 Oct 2019 17:04:19 -0700 Subject: [PATCH 067/547] Fix not building due to removed shape.transform --- libraries/fbx/src/GLTFSerializer.cpp | 2 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 9fb00d3145..db272a534c 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1524,7 +1524,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& hfmModel.shapes.push_back(templateShape); auto& hfmShape = hfmModel.shapes.back(); // Everything else is already defined (mesh, meshPart, material), so just define the new transform - hfmShape.transform = nodeIndex; + hfmShape.joint = nodeIndex; } } diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index e6ba042e9c..de308297c4 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -40,7 +40,7 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m const auto& mesh = meshes[shape.mesh]; const auto& meshPart = mesh.parts[shape.meshPart]; - glm::mat4 globalTransform = joints[shape.transform].globalTransform; + glm::mat4 globalTransform = joints[shape.joint].globalTransform; forEachIndex(meshPart, [&](int32_t idx){ if (mesh.vertices.size() <= idx) { return; From 9159258b503f7970b0fa05dea0053c1a61eeefde Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Wed, 16 Oct 2019 17:42:36 -0700 Subject: [PATCH 068/547] clean ups --- .../render-utils/src/CauterizedModel.cpp | 145 +++--------------- libraries/render-utils/src/Model.cpp | 69 +-------- 2 files changed, 33 insertions(+), 181 deletions(-) diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index cbd608e092..717d3cada7 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -32,31 +32,9 @@ bool CauterizedModel::updateGeometry() { bool needsFullUpdate = Model::updateGeometry(); if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); - /* const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.skinDeformers; - for (int i = 0; i < hfmDynamicTransforms.size(); i++) { - const auto& dynT = hfmDynamicTransforms[i]; - MeshState state; - if (_useDualQuaternionSkinning) { - state.clusterDualQuaternions.resize(dynT.clusters.size()); - } else { - state.clusterMatrices.resize(dynT.clusters.size()); - } - _cauterizeMeshStates.append(state); - _meshStates.push_back(state); - }*/ const HFMModel& hfmModel = getHFMModel(); const auto& hfmDynamicTransforms = hfmModel.skinDeformers; - int i = 0; - /* for (const auto& mesh: hfmModel.meshes) { - MeshState state; - state.clusterDualQuaternions.resize(mesh.clusters.size()); - state.clusterMatrices.resize(mesh.clusters.size()); - _meshStates.push_back(state); - i++; - } - */ for (int i = 0; i < hfmDynamicTransforms.size(); i++) { const auto& dynT = hfmDynamicTransforms[i]; MeshState state; @@ -64,17 +42,6 @@ bool CauterizedModel::updateGeometry() { state.clusterMatrices.resize(dynT.clusters.size()); _cauterizeMeshStates.push_back(state); } - - /* foreach (const HFMMesh& mesh, hfmModel.meshes) { - Model::MeshState state; - if (_useDualQuaternionSkinning) { - state.clusterDualQuaternions.resize(mesh.clusters.size()); - _cauterizeMeshStates.append(state); - } else { - state.clusterMatrices.resize(mesh.clusters.size()); - _cauterizeMeshStates.append(state); - } - }*/ } return needsFullUpdate; } @@ -103,7 +70,6 @@ void CauterizedModel::createRenderItemSet() { Transform::mult(transform, transform, offset); // Run through all of the meshes, and place them into their segregated, but unsorted buckets - // Run through all of the meshes, and place them into their segregated, but unsorted buckets int shapeID = 0; const auto& shapes = _renderGeometry->getHFMModel().shapes; for (shapeID; shapeID < shapes.size(); shapeID++) { @@ -115,26 +81,6 @@ void CauterizedModel::createRenderItemSet() { _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } - -/* int shapeID = 0; - uint32_t numMeshes = (uint32_t)meshes.size(); - for (uint32_t i = 0; i < numMeshes; i++) { - const auto& mesh = meshes.at(i); - if (!mesh) { - continue; - } - - // Create the render payloads - int numParts = (int)mesh->getNumParts(); - for (int partIndex = 0; partIndex < numParts; partIndex++) { - auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform); - _modelMeshRenderItems << std::static_pointer_cast(ptr); - auto material = getNetworkModel()->getShapeMaterial(shapeID); - _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); - shapeID++; - } - }*/ } else { Model::createRenderItemSet(); } @@ -153,17 +99,13 @@ void CauterizedModel::updateClusterMatrices() { const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.skinDeformers; - for (int i = 0; i < (int)_meshStates.size(); i++) { - MeshState& state = _meshStates[i]; - const auto& deformer = hfmDynamicTransforms[i]; + const auto& hfmSkinDeformers = hfmModel.skinDeformers; + for (int meshIndex = 0; meshIndex < (int)_meshStates.size(); meshIndex++) { + MeshState& state = _meshStates[meshIndex]; + const auto& deformer = hfmSkinDeformers[meshIndex]; - int meshIndex = i; - int clusterIndex = 0; - - for (int d = 0; d < deformer.clusters.size(); d++) { - const auto& cluster = deformer.clusters[d]; - clusterIndex = d; + for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { + const auto& cluster = deformer.clusters[clusterIndex]; const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); @@ -172,40 +114,14 @@ void CauterizedModel::updateClusterMatrices() { Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[d] = Model::TransformDualQuaternion(clusterTransform); - } - else { - auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); - glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[d]); - } - - } - } -/* - const HFMModel& hfmModel = getHFMModel(); - for (int i = 0; i < (int)_meshStates.size(); i++) { - Model::MeshState& state = _meshStates[i]; - const HFMMesh& mesh = hfmModel.meshes.at(i); - int meshIndex = i; - - for (int j = 0; j < mesh.clusters.size(); j++) { - const HFMCluster& cluster = mesh.clusters.at(j); - int clusterIndex = j; - - if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cluster.jointIndex); - Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); - Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); - state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); - state.clusterDualQuaternions[j].setCauterizationParameters(0.0f, jointPose.trans()); + state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); } else { auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); - glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); + glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } } } -*/ + // as an optimization, don't build cautrizedClusterMatrices if the boneSet is empty. if (!_cauterizeBoneSet.empty()) { @@ -219,32 +135,32 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(_rig.indexOfJoint("Neck")) * zeroScale; - for (int i = 0; i < _cauterizeMeshStates.size(); i++) { - Model::MeshState& state = _cauterizeMeshStates[i]; - const HFMMesh& mesh = hfmModel.meshes.at(i); - int meshIndex = i; + for (int meshIndex = 0; meshIndex < _cauterizeMeshStates.size(); meshIndex++) { + Model::MeshState& state = _cauterizeMeshStates[meshIndex]; + const auto& deformer = hfmSkinDeformers[meshIndex]; - for (int j = 0; j < mesh.clusters.size(); j++) { - const HFMCluster& cluster = mesh.clusters.at(j); - int clusterIndex = j; + for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { + const auto& cluster = deformer.clusters[clusterIndex]; + + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); if (_useDualQuaternionSkinning) { if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { // not cauterized so just copy the value from the non-cauterized version. - state.clusterDualQuaternions[j] = _meshStates[i].clusterDualQuaternions[j]; + state.clusterDualQuaternions[clusterIndex] = _meshStates[meshIndex].clusterDualQuaternions[clusterIndex]; } else { Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans()); Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); - state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); - state.clusterDualQuaternions[j].setCauterizationParameters(1.0f, cauterizePose.trans()); + Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); + state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); + state.clusterDualQuaternions[clusterIndex].setCauterizationParameters(1.0f, cauterizePose.trans()); } } else { if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { // not cauterized so just copy the value from the non-cauterized version. - state.clusterMatrices[j] = _meshStates[i].clusterMatrices[j]; + state.clusterMatrices[clusterIndex] = _meshStates[meshIndex].clusterMatrices[clusterIndex]; } else { - glm_mat4u_mul(cauterizeMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); + glm_mat4u_mul(cauterizeMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } } } @@ -302,18 +218,9 @@ void CauterizedModel::updateRenderItems() { auto deformerIndex = self->_modelMeshRenderItemShapes[i].deformerIndex; bool isDeformed = (deformerIndex != hfm::UNDEFINED_KEY); - - // auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; - // auto deformerIndex = self->_modelMeshRenderItemShapes[i].meshIndex; - - // const auto& shapeState = self->getShapeState(i); - - bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - - if (isDeformed) { const auto& meshState = self->getMeshState(deformerIndex); @@ -324,12 +231,10 @@ void CauterizedModel::updateRenderItems() { primitiveMode, renderItemKeyGlobalFlags, enableCauterization](ModelMeshPartPayload& mmppData) { CauterizedMeshPartPayload& data = static_cast(mmppData); if (useDualQuaternionSkinning) { - data.updateClusterBuffer(meshState.clusterDualQuaternions, - cauterizedMeshState.clusterDualQuaternions); + data.updateClusterBuffer(meshState.clusterDualQuaternions, cauterizedMeshState.clusterDualQuaternions); } else { - data.updateClusterBuffer(meshState.clusterMatrices, - cauterizedMeshState.clusterMatrices); - } + data.updateClusterBuffer(meshState.clusterMatrices, cauterizedMeshState.clusterMatrices); + } Transform renderTransform = modelTransform; // if (meshState.clusterMatrices.size() <= 2) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index d3766fa65c..6df3c76a67 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -270,9 +270,7 @@ void Model::updateRenderItems() { transaction.updateItem(itemID, [modelTransform, shapeState, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags](ModelMeshPartPayload& data) { Transform renderTransform = modelTransform; - // if (meshState.clusterMatrices.size() <= 1) { renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - // } data.updateTransform(renderTransform); data.updateKey(renderItemKeyGlobalFlags); @@ -337,15 +335,6 @@ bool Model::updateGeometry() { const HFMModel& hfmModel = getHFMModel(); const auto& hfmSkinDeformers = hfmModel.skinDeformers; - int i = 0; - /* for (const auto& mesh: hfmModel.meshes) { - MeshState state; - state.clusterDualQuaternions.resize(mesh.clusters.size()); - state.clusterMatrices.resize(mesh.clusters.size()); - _meshStates.push_back(state); - i++; - } - */ for (int i = 0; i < hfmSkinDeformers.size(); i++) { const auto& dynT = hfmSkinDeformers[i]; MeshState state; @@ -1428,16 +1417,12 @@ void Model::updateClusterMatrices() { _needsUpdateClusterMatrices = false; const HFMModel& hfmModel = getHFMModel(); const auto& hfmSkinDeformers = hfmModel.skinDeformers; - for (int i = 0; i < (int) _meshStates.size(); i++) { - MeshState& state = _meshStates[i]; - const auto& deformer = hfmSkinDeformers[i]; + for (int meshIndex = 0; meshIndex < (int) _meshStates.size(); meshIndex++) { + MeshState& state = _meshStates[meshIndex]; + const auto& deformer = hfmSkinDeformers[meshIndex]; - int meshIndex = i; - int clusterIndex = 0; - - for (int d = 0; d < deformer.clusters.size(); d++) { - const auto& cluster = deformer.clusters[d]; - clusterIndex = d; + for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { + const auto& cluster = deformer.clusters[clusterIndex]; const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); @@ -1446,32 +1431,12 @@ void Model::updateClusterMatrices() { Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); - state.clusterDualQuaternions[d] = Model::TransformDualQuaternion(clusterTransform); - } - else { - auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); - glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[d]); - } - - } -/* - int meshIndex = i; - const HFMMesh& mesh = hfmModel.meshes.at(i); - for (int j = 0; j < mesh.clusters.size(); j++) { - const HFMCluster& cluster = mesh.clusters.at(j); - int clusterIndex = j; - - if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cluster.jointIndex); - Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); - Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindTransform); - state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(clusterTransform); + state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); } else { auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); - glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); + glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } - }*/ + } } // post the blender if we're not currently waiting for one to finish @@ -1547,24 +1512,6 @@ void Model::createRenderItemSet() { _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } -/* - uint32_t numMeshes = (uint32_t)meshes.size(); - for (uint32_t i = 0; i < numMeshes; i++) { - const auto& mesh = meshes.at(i); - if (!mesh) { - continue; - } - - // Create the render payloads - int numParts = (int)mesh->getNumParts(); - for (int partIndex = 0; partIndex < numParts; partIndex++) { - _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform); - auto material = getNetworkModel()->getShapeMaterial(shapeID); - _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); - shapeID++; - } - }*/ } bool Model::isRenderable() const { From 55ed7d9a5312c4c2163528411d0e801b419b962e Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 17 Oct 2019 14:53:32 -0700 Subject: [PATCH 069/547] Add support for shape generation for obj serializer --- libraries/fbx/src/OBJSerializer.cpp | 43 ++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index e1fc85ca2a..0c795d3a94 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -678,14 +678,17 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V hfmModel.meshExtents.reset(); hfmModel.meshes.push_back(HFMMesh()); + std::vector materialNamePerShape; try { // call parseOBJGroup as long as it's returning true. Each successful call will // add a new meshPart to the model's single mesh. while (parseOBJGroup(tokenizer, mapping, hfmModel, scaleGuess, combineParts)) {} - HFMMesh& mesh = hfmModel.meshes[0]; - mesh.meshIndex = 0; + uint32_t meshIndex = 0; + HFMMesh& mesh = hfmModel.meshes[meshIndex]; + mesh.meshIndex = meshIndex; + uint32_t jointIndex = 0; hfmModel.joints.resize(1); hfmModel.joints[0].parentIndex = -1; hfmModel.joints[0].distanceToParent = 0; @@ -697,14 +700,6 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V hfmModel.jointIndices["x"] = 1; - HFMCluster cluster; - cluster.jointIndex = 0; - cluster.inverseBindMatrix = glm::mat4(1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1); - mesh.clusters.append(cluster); - QMap materialMeshIdMap; std::vector hfmMeshParts; for (uint32_t i = 0, meshPartCount = 0; i < (uint32_t)mesh.parts.size(); i++, meshPartCount++) { @@ -718,12 +713,13 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V // Create a new HFMMesh for this material mapping. materialMeshIdMap.insert(face.materialName, materialMeshIdMap.count()); + uint32_t partIndex = (int)hfmMeshParts.size(); hfmMeshParts.push_back(HFMMeshPart()); HFMMeshPart& meshPartNew = hfmMeshParts.back(); meshPartNew.quadIndices = QVector(meshPart.quadIndices); // Copy over quad indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.quadTrianglesIndices = QVector(meshPart.quadTrianglesIndices); // Copy over quad triangulated indices [NOTE (trent/mittens, 4/3/17): Likely unnecessary since they go unused anyway]. meshPartNew.triangleIndices = QVector(meshPart.triangleIndices); // Copy over triangle indices. - + // Do some of the material logic (which previously lived below) now. // All the faces in the same group will have the same name and material. QString groupMaterialName = face.materialName; @@ -745,8 +741,15 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V needsMaterialLibrary = groupMaterialName != SMART_DEFAULT_MATERIAL_NAME; } materials[groupMaterialName] = material; - meshPartNew.materialID = groupMaterialName; + materialNamePerShape.push_back(groupMaterialName); } + + + hfm::Shape shape; + shape.mesh = meshIndex; + shape.joint = jointIndex; + shape.meshPart = partIndex; + hfmModel.shapes.push_back(shape); } } } @@ -829,12 +832,15 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V mesh.meshExtents.addPoint(vertex); hfmModel.meshExtents.addPoint(vertex); } - + // hfmDebugDump(hfmModel); } catch(const std::exception& e) { qCDebug(modelformat) << "OBJSerializer fail: " << e.what(); } + // At this point, the hfmModel joint, mesh, parts and shpaes have been defined + // only no material assigned + QString queryPart = _url.query(); bool suppressMaterialsHack = queryPart.contains("hifiusemat"); // If this appears in query string, don't fetch mtl even if used. OBJMaterial& preDefinedMaterial = materials[SMART_DEFAULT_MATERIAL_NAME]; @@ -886,6 +892,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } } + // As we are populating the material list in the hfmModel, let s also create the reverse map (from materialName to index) + QMap materialNameToIndex; foreach (QString materialID, materials.keys()) { OBJMaterial& objMaterial = materials[materialID]; if (!objMaterial.used) { @@ -898,6 +906,7 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V objMaterial.shininess, objMaterial.opacity); HFMMaterial& hfmMaterial = hfmModel.materials.back(); + materialNameToIndex[materialID] = hfmModel.materials.size(); hfmMaterial.name = materialID; hfmMaterial.materialID = materialID; @@ -997,6 +1006,14 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V modelMaterial->setOpacity(hfmMaterial.opacity); } + // GO over the shapes once more to assign hte material index correctly + for (int i = 0; i < hfmModel.shapes.size(); ++i) { + auto foundMaterialIndex = materialNameToIndex.find(materialNamePerShape[i]); + if (foundMaterialIndex != materialNameToIndex.end()) { + hfmModel.shapes[i].material = foundMaterialIndex.value(); + } + } + return hfmModelPtr; } From bd57cc7b1499c0541fa057f649a6fec057503ce4 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 17 Oct 2019 15:56:41 -0700 Subject: [PATCH 070/547] Fixing bad indexing --- libraries/fbx/src/OBJSerializer.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 0c795d3a94..8384a3e4b8 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -899,6 +899,10 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V if (!objMaterial.used) { continue; } + qCDebug(modelformat) << "OBJSerializer Material Name:" << materialID; + + // capture the name to index map + materialNameToIndex[materialID] = hfmModel.materials.size(); hfmModel.materials.emplace_back(objMaterial.diffuseColor, objMaterial.specularColor, @@ -906,7 +910,6 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V objMaterial.shininess, objMaterial.opacity); HFMMaterial& hfmMaterial = hfmModel.materials.back(); - materialNameToIndex[materialID] = hfmModel.materials.size(); hfmMaterial.name = materialID; hfmMaterial.materialID = materialID; From c89e682b77279d416ab4ce13939b05ac50a38089 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 17 Oct 2019 16:24:21 -0700 Subject: [PATCH 071/547] address warning --- libraries/fbx/src/OBJSerializer.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 8384a3e4b8..4361a71c8c 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -899,10 +899,9 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V if (!objMaterial.used) { continue; } - qCDebug(modelformat) << "OBJSerializer Material Name:" << materialID; // capture the name to index map - materialNameToIndex[materialID] = hfmModel.materials.size(); + materialNameToIndex[materialID] = (uint32_t) hfmModel.materials.size(); hfmModel.materials.emplace_back(objMaterial.diffuseColor, objMaterial.specularColor, From 695b9cdba64e20f739050da8afd76e98fb2fd874 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 18 Oct 2019 03:31:06 -0700 Subject: [PATCH 072/547] Clening up left over comments and typos, simplify the code to update Matrices in the model classes and removed renderITemsIdMap because not needed, chasing the problem of the physics objects transform --- libraries/animation/src/AnimSkeleton.cpp | 30 ----- libraries/animation/src/AnimSkeleton.h | 4 +- .../src/RenderableModelEntityItem.cpp | 4 +- libraries/hfm/src/hfm/HFM.h | 1 + .../render-utils/src/CauterizedModel.cpp | 87 ++++++-------- libraries/render-utils/src/CauterizedModel.h | 2 +- libraries/render-utils/src/Model.cpp | 107 ++++++++---------- libraries/render-utils/src/Model.h | 28 +++-- .../render-utils/src/SoftAttachmentModel.cpp | 38 +++---- tools/vhacd-util/src/VHACDUtil.cpp | 2 +- 10 files changed, 125 insertions(+), 178 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index bae1fb5b69..9a27ba766a 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -35,7 +35,6 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { std::vector dummyClustersList; for (int j = 0; j < defor.clusters.size(); j++) { - std::vector bindMatrices; // cast into a non-const reference, so we can mutate the FBXCluster HFMCluster& cluster = const_cast(defor.clusters.at(j)); @@ -55,35 +54,6 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { } _clusterBindMatrixOriginalValues.push_back(dummyClustersList); } - - -/* - for (int i = 0; i < (int)hfmModel.meshes.size(); i++) { - const HFMMesh& mesh = hfmModel.meshes.at(i); - std::vector dummyClustersList; - - for (int j = 0; j < mesh.clusters.size(); j++) { - std::vector bindMatrices; - // cast into a non-const reference, so we can mutate the FBXCluster - HFMCluster& cluster = const_cast(mesh.clusters.at(j)); - - HFMCluster localCluster; - localCluster.jointIndex = cluster.jointIndex; - localCluster.inverseBindMatrix = cluster.inverseBindMatrix; - localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix); - - // if we have a joint offset in the fst file then multiply its inverse by the - // model cluster inverse bind matrix - if (hfmModel.jointRotationOffsets.contains(cluster.jointIndex)) { - AnimPose localOffset(hfmModel.jointRotationOffsets[cluster.jointIndex], glm::vec3()); - localCluster.inverseBindMatrix = (glm::mat4)localOffset.inverse() * cluster.inverseBindMatrix; - localCluster.inverseBindTransform.evalFromRawMatrix(localCluster.inverseBindMatrix); - } - dummyClustersList.push_back(localCluster); - } - _clusterBindMatrixOriginalValues.push_back(dummyClustersList); - } -*/ } AnimSkeleton::AnimSkeleton(const std::vector& joints, const QMap jointOffsets) { diff --git a/libraries/animation/src/AnimSkeleton.h b/libraries/animation/src/AnimSkeleton.h index 526959df9a..1477efb223 100644 --- a/libraries/animation/src/AnimSkeleton.h +++ b/libraries/animation/src/AnimSkeleton.h @@ -68,9 +68,7 @@ public: void dump(const AnimPoseVec& poses) const; std::vector lookUpJointIndices(const std::vector& jointNames) const; - const HFMCluster getClusterBindMatricesOriginalValues(const int meshIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[meshIndex][clusterIndex]; } - - // const HFMCluster getClusterBindMatricesOriginalValues(const int meshIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[meshIndex][clusterIndex]; } + const HFMCluster getClusterBindMatricesOriginalValues(const int skinDeformerIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[skinDeformerIndex][clusterIndex]; } protected: void buildSkeletonFromJoints(const std::vector& joints, const QMap jointOffsets); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index e75b28f9ed..d7da3879f6 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -479,8 +479,8 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); for (uint32_t i = 0; i < numHFMMeshes; i++) { const HFMMesh& mesh = hfmModel.meshes.at(i); - if (mesh.clusters.size() > 0) { - const HFMCluster& cluster = mesh.clusters.at(0); + if (i < hfmModel.skinDeformers.size() && hfmModel.skinDeformers[i].clusters.size() > 0) { + const HFMCluster& cluster = hfmModel.skinDeformers[i].clusters.at(0); auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 15ed876d94..28dc8128e6 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -387,6 +387,7 @@ typedef hfm::Texture HFMTexture; typedef hfm::MeshPart HFMMeshPart; typedef hfm::Material HFMMaterial; typedef hfm::Mesh HFMMesh; +typedef hfm::SkinDeformer HFMSkinDeformer; typedef hfm::AnimationFrame HFMAnimationFrame; typedef hfm::Light HFMLight; typedef hfm::Model HFMModel; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 717d3cada7..2576b16354 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -33,14 +33,10 @@ bool CauterizedModel::updateGeometry() { if (_isCauterized && needsFullUpdate) { assert(_cauterizeMeshStates.empty()); - const HFMModel& hfmModel = getHFMModel(); - const auto& hfmDynamicTransforms = hfmModel.skinDeformers; - for (int i = 0; i < hfmDynamicTransforms.size(); i++) { - const auto& dynT = hfmDynamicTransforms[i]; - MeshState state; - state.clusterDualQuaternions.resize(dynT.clusters.size()); - state.clusterMatrices.resize(dynT.clusters.size()); - _cauterizeMeshStates.push_back(state); + // initialize the cauterizedDeforemrStates as a copy of the standard deformerStates + _cauterizeMeshStates.resize(_meshStates.size()); + for (int i = 0; i < _meshStates.size(); ++i) { + _cauterizeMeshStates[i] = _meshStates[i]; } } return needsFullUpdate; @@ -57,7 +53,6 @@ void CauterizedModel::createRenderItemSet() { _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); - _modelMeshRenderItemShapes.clear(); Transform transform; transform.setTranslation(_translation); @@ -79,7 +74,6 @@ void CauterizedModel::createRenderItemSet() { auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } } else { Model::createRenderItemSet(); @@ -97,26 +91,20 @@ void CauterizedModel::updateClusterMatrices() { _needsUpdateClusterMatrices = false; - - const HFMModel& hfmModel = getHFMModel(); - const auto& hfmSkinDeformers = hfmModel.skinDeformers; - for (int meshIndex = 0; meshIndex < (int)_meshStates.size(); meshIndex++) { - MeshState& state = _meshStates[meshIndex]; - const auto& deformer = hfmSkinDeformers[meshIndex]; - - for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { - const auto& cluster = deformer.clusters[clusterIndex]; - - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); + for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { + MeshState& state = _meshStates[skinDeformerIndex]; + auto numClusters = state.getNumClusters(); + for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cluster.jointIndex); + auto jointPose = _rig.getJointPose(cbmov.jointIndex); Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); } else { - auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + auto jointMatrix = _rig.getJointTransform(cbmov.jointIndex); glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } } @@ -127,6 +115,7 @@ void CauterizedModel::updateClusterMatrices() { AnimPose cauterizePose = _rig.getJointPose(_rig.indexOfJoint("Neck")); cauterizePose.scale() = glm::vec3(0.0001f, 0.0001f, 0.0001f); + Transform cauterizedDQTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans()); static const glm::mat4 zeroScale( glm::vec4(0.0001f, 0.0f, 0.0f, 0.0f), @@ -135,30 +124,27 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(_rig.indexOfJoint("Neck")) * zeroScale; - for (int meshIndex = 0; meshIndex < _cauterizeMeshStates.size(); meshIndex++) { - Model::MeshState& state = _cauterizeMeshStates[meshIndex]; - const auto& deformer = hfmSkinDeformers[meshIndex]; + for (int skinDeformerIndex = 0; skinDeformerIndex < _cauterizeMeshStates.size(); skinDeformerIndex++) { + Model::MeshState& nonCauterizedState = _meshStates[skinDeformerIndex]; + Model::MeshState& state = _cauterizeMeshStates[skinDeformerIndex]; - for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { - const auto& cluster = deformer.clusters[clusterIndex]; - - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); - - if (_useDualQuaternionSkinning) { - if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { - // not cauterized so just copy the value from the non-cauterized version. - state.clusterDualQuaternions[clusterIndex] = _meshStates[meshIndex].clusterDualQuaternions[clusterIndex]; - } else { - Transform jointTransform(cauterizePose.rot(), cauterizePose.scale(), cauterizePose.trans()); + // Just reset cauterized state with normal state memcpy style + if (_useDualQuaternionSkinning) { + state.clusterDualQuaternions = nonCauterizedState.clusterDualQuaternions; + } else { + state.clusterMatrices = nonCauterizedState.clusterMatrices; + } + + // ANd only cauterize affected joints + auto numClusters = state.getNumClusters(); + for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); + if (_cauterizeBoneSet.find(cbmov.jointIndex) != _cauterizeBoneSet.end()) { + if (_useDualQuaternionSkinning) { Transform clusterTransform; - Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); + Transform::mult(clusterTransform, cauterizedDQTransform, cbmov.inverseBindTransform); state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); state.clusterDualQuaternions[clusterIndex].setCauterizationParameters(1.0f, cauterizePose.trans()); - } - } else { - if (_cauterizeBoneSet.find(cluster.jointIndex) == _cauterizeBoneSet.end()) { - // not cauterized so just copy the value from the non-cauterized version. - state.clusterMatrices[clusterIndex] = _meshStates[meshIndex].clusterMatrices[clusterIndex]; } else { glm_mat4u_mul(cauterizeMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } @@ -169,7 +155,7 @@ void CauterizedModel::updateClusterMatrices() { // post the blender if we're not currently waiting for one to finish auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { + if (modelBlender->shouldComputeBlendshapes() && getHFMModel().hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { _blendedBlendshapeCoefficients = _blendshapeCoefficients; modelBlender->noteRequiresBlend(getThisPointer()); } @@ -209,22 +195,19 @@ void CauterizedModel::updateRenderItems() { render::Transaction transaction; for (int i = 0; i < (int)self->_modelMeshRenderItemIDs.size(); i++) { - auto itemID = self->_modelMeshRenderItemIDs[i]; - auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); - auto deformerIndex = self->_modelMeshRenderItemShapes[i].deformerIndex; - bool isDeformed = (deformerIndex != hfm::UNDEFINED_KEY); + auto skinDeformerIndex = shapeState._skinDeformerIndex; - bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); + bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(shapeState._meshIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - if (isDeformed) { + if (skinDeformerIndex != hfm::UNDEFINED_KEY) { - const auto& meshState = self->getMeshState(deformerIndex); - const auto& cauterizedMeshState = self->getCauterizeMeshState(deformerIndex); + const auto& meshState = self->getMeshState(skinDeformerIndex); + const auto& cauterizedMeshState = self->getCauterizeMeshState(skinDeformerIndex); transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, cauterizedMeshState, invalidatePayloadShapeKey, diff --git a/libraries/render-utils/src/CauterizedModel.h b/libraries/render-utils/src/CauterizedModel.h index 36a96fb006..7d241d7ac6 100644 --- a/libraries/render-utils/src/CauterizedModel.h +++ b/libraries/render-utils/src/CauterizedModel.h @@ -40,7 +40,7 @@ public: protected: std::unordered_set _cauterizeBoneSet; - QVector _cauterizeMeshStates; + std::vector _cauterizeMeshStates; bool _isCauterized { false }; bool _enableCauterization { false }; }; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 6df3c76a67..39ae7e6a8f 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -151,7 +151,7 @@ void Model::setOffset(const glm::vec3& offset) { } void Model::calculateTextureInfo() { - if (!_hasCalculatedTextureInfo && isLoaded() && getNetworkModel()->areTexturesLoaded() && !_modelMeshRenderItemsMap.isEmpty()) { + if (!_hasCalculatedTextureInfo && isLoaded() && getNetworkModel()->areTexturesLoaded() && !_modelMeshRenderItemIDs.empty()) { size_t textureSize = 0; int textureCount = 0; bool allTexturesLoaded = true; @@ -228,25 +228,18 @@ void Model::updateRenderItems() { render::Transaction transaction; for (int i = 0; i < (int) self->_modelMeshRenderItemIDs.size(); i++) { - auto itemID = self->_modelMeshRenderItemIDs[i]; - auto meshIndex = self->_modelMeshRenderItemShapes[i].meshIndex; const auto& shapeState = self->getShapeState(i); - auto deformerIndex = self->_modelMeshRenderItemShapes[i].deformerIndex; - bool isDeformed = (deformerIndex != hfm::UNDEFINED_KEY); + auto skinDeformerIndex = shapeState._skinDeformerIndex; - bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(meshIndex); + bool invalidatePayloadShapeKey = self->shouldInvalidatePayloadShapeKey(shapeState._meshIndex); - - if (isDeformed) { - - const auto& meshState = self->getMeshState(deformerIndex); - // MeshState meshState; + if (skinDeformerIndex != hfm::UNDEFINED_KEY) { + const auto& meshState = self->getMeshState(skinDeformerIndex); bool useDualQuaternionSkinning = self->getUseDualQuaternionSkinning(); - transaction.updateItem(itemID, [modelTransform, shapeState, meshState, useDualQuaternionSkinning, invalidatePayloadShapeKey, primitiveMode, renderItemKeyGlobalFlags, cauterized](ModelMeshPartPayload& data) { if (useDualQuaternionSkinning) { @@ -303,15 +296,11 @@ void Model::reset() { } void Model::updateShapeStatesFromRig() { - const HFMModel& hfmModel = getHFMModel(); - // TODO: should all Models have a valid _rig? { // Shapes state: - const auto& shapes = hfmModel.shapes; - _shapeStates.resize(shapes.size()); - for (int s = 0; s < shapes.size(); ++s) { - uint32_t jointId = shapes[s].joint; + for (auto& shape : _shapeStates) { + uint32_t jointId = shape._jointIndex; if (jointId < (uint32_t) _rig.getJointStateCount()) { - _shapeStates[s]._rootFromJointTransform = _rig.getJointTransform(jointId); + shape._rootFromJointTransform = _rig.getJointTransform(jointId); } } } @@ -331,9 +320,19 @@ bool Model::updateGeometry() { initJointStates(); assert(_meshStates.empty()); + const HFMModel& hfmModel = getHFMModel(); + + const auto& shapes = hfmModel.shapes; + _shapeStates.resize(shapes.size()); + for (int s = 0; s < shapes.size(); ++s) { + auto& shapeState = _shapeStates[s]; + shapeState._jointIndex = shapes[s].joint; + shapeState._meshIndex = shapes[s].mesh; + shapeState._meshPartIndex = shapes[s].meshPart; + shapeState._skinDeformerIndex = shapes[s].skinDeformer; + } updateShapeStatesFromRig(); - const HFMModel& hfmModel = getHFMModel(); const auto& hfmSkinDeformers = hfmModel.skinDeformers; for (int i = 0; i < hfmSkinDeformers.size(); i++) { const auto& dynT = hfmSkinDeformers[i]; @@ -740,9 +739,9 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe render::Transaction transaction; for (int i = 0; i < (int) _modelMeshRenderItemIDs.size(); i++) { auto itemID = _modelMeshRenderItemIDs[i]; - auto shape = _modelMeshRenderItemShapes[i]; + auto& shape = _shapeStates[i]; // TODO: check to see if .partIndex matches too - if (shape.meshIndex == meshIndex) { + if (shape._meshIndex == meshIndex) { transaction.updateItem(itemID, [=](ModelMeshPartPayload& data) { data.updateMeshPart(mesh, partIndex); }); @@ -904,8 +903,8 @@ void Model::updateRenderItemsKey(const render::ScenePointer& scene) { } auto renderItemsKey = _renderItemKeyGlobalFlags; render::Transaction transaction; - foreach(auto item, _modelMeshRenderItemsMap.keys()) { - transaction.updateItem(item, [renderItemsKey](ModelMeshPartPayload& data) { + for(auto itemID: _modelMeshRenderItemIDs) { + transaction.updateItem(itemID, [renderItemsKey](ModelMeshPartPayload& data) { data.updateKey(renderItemsKey); }); } @@ -975,8 +974,8 @@ void Model::setCauterized(bool cauterized, const render::ScenePointer& scene) { return; } render::Transaction transaction; - foreach (auto item, _modelMeshRenderItemsMap.keys()) { - transaction.updateItem(item, [cauterized](ModelMeshPartPayload& data) { + for (auto itemID : _modelMeshRenderItemIDs) { + transaction.updateItem(itemID, [cauterized](ModelMeshPartPayload& data) { data.setCauterized(cauterized); }); } @@ -1003,26 +1002,25 @@ bool Model::addToScene(const render::ScenePointer& scene, bool somethingAdded = false; - if (_modelMeshRenderItemsMap.empty()) { + if (_modelMeshRenderItemIDs.empty()) { bool hasTransparent = false; size_t verticesCount = 0; foreach(auto renderItem, _modelMeshRenderItems) { auto item = scene->allocateID(); auto renderPayload = std::make_shared(renderItem); - if (_modelMeshRenderItemsMap.empty() && statusGetters.size()) { + if (_modelMeshRenderItemIDs.empty() && statusGetters.size()) { renderPayload->addStatusGetters(statusGetters); } transaction.resetItem(item, renderPayload); hasTransparent = hasTransparent || renderItem.get()->getShapeKey().isTranslucent(); verticesCount += renderItem.get()->getVerticesCount(); - _modelMeshRenderItemsMap.insert(item, renderPayload); _modelMeshRenderItemIDs.emplace_back(item); } - somethingAdded = !_modelMeshRenderItemsMap.empty(); + somethingAdded = !_modelMeshRenderItemIDs.empty(); _renderInfoVertexCount = verticesCount; - _renderInfoDrawCalls = _modelMeshRenderItemsMap.count(); + _renderInfoDrawCalls = (uint32_t) _modelMeshRenderItemIDs.size(); _renderInfoHasTransparent = hasTransparent; } @@ -1037,14 +1035,12 @@ bool Model::addToScene(const render::ScenePointer& scene, } void Model::removeFromScene(const render::ScenePointer& scene, render::Transaction& transaction) { - foreach (auto item, _modelMeshRenderItemsMap.keys()) { - transaction.removeItem(item); + for (auto itemID: _modelMeshRenderItemIDs) { + transaction.removeItem(itemID); } _modelMeshRenderItemIDs.clear(); - _modelMeshRenderItemsMap.clear(); _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); - _modelMeshRenderItemShapes.clear(); _priorityMap.clear(); _addedToScene = false; @@ -1415,25 +1411,22 @@ void Model::updateClusterMatrices() { updateShapeStatesFromRig(); _needsUpdateClusterMatrices = false; - const HFMModel& hfmModel = getHFMModel(); - const auto& hfmSkinDeformers = hfmModel.skinDeformers; - for (int meshIndex = 0; meshIndex < (int) _meshStates.size(); meshIndex++) { - MeshState& state = _meshStates[meshIndex]; - const auto& deformer = hfmSkinDeformers[meshIndex]; - for (int clusterIndex = 0; clusterIndex < deformer.clusters.size(); clusterIndex++) { - const auto& cluster = deformer.clusters[clusterIndex]; - - const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex); + for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { + MeshState& state = _meshStates[skinDeformerIndex]; + auto numClusters = state.getNumClusters(); + for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); if (_useDualQuaternionSkinning) { - auto jointPose = _rig.getJointPose(cluster.jointIndex); + auto jointPose = _rig.getJointPose(cbmov.jointIndex); Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); - } else { - auto jointMatrix = _rig.getJointTransform(cluster.jointIndex); + } + else { + auto jointMatrix = _rig.getJointTransform(cbmov.jointIndex); glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } } @@ -1441,7 +1434,7 @@ void Model::updateClusterMatrices() { // post the blender if we're not currently waiting for one to finish auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { + if (modelBlender->shouldComputeBlendshapes() && getHFMModel().hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { _blendedBlendshapeCoefficients = _blendshapeCoefficients; modelBlender->noteRequiresBlend(getThisPointer()); } @@ -1490,7 +1483,6 @@ void Model::createRenderItemSet() { _modelMeshRenderItems.clear(); _modelMeshMaterialNames.clear(); - _modelMeshRenderItemShapes.clear(); Transform transform; transform.setTranslation(_translation); @@ -1510,12 +1502,11 @@ void Model::createRenderItemSet() { auto material = getNetworkModel()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); - _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)shape.mesh, shape.skinDeformer }); } } bool Model::isRenderable() const { - return (!_shapeStates.empty() /* && !_meshStates.empty()*/) || (isLoaded() && _renderGeometry->getMeshes().empty()); + return (!_shapeStates.empty()) || (isLoaded() && _renderGeometry->getMeshes().empty()); } std::set Model::getMeshIDsFromMaterialID(QString parentMaterialName) { @@ -1571,11 +1562,11 @@ void Model::applyMaterialMapping() { PrimitiveMode primitiveMode = getPrimitiveMode(); bool useDualQuaternionSkinning = _useDualQuaternionSkinning; auto modelMeshRenderItemIDs = _modelMeshRenderItemIDs; - auto modelMeshRenderItemShapes = _modelMeshRenderItemShapes; + auto shapeStates = _shapeStates; std::unordered_map shouldInvalidatePayloadShapeKeyMap; - for (auto& shape : _modelMeshRenderItemShapes) { - shouldInvalidatePayloadShapeKeyMap[shape.meshIndex] = shouldInvalidatePayloadShapeKey(shape.meshIndex); + for (auto& shape : _shapeStates) { + shouldInvalidatePayloadShapeKeyMap[shape._meshIndex] = shouldInvalidatePayloadShapeKey(shape._meshIndex); } auto& materialMapping = getMaterialMapping(); @@ -1598,7 +1589,7 @@ void Model::applyMaterialMapping() { std::weak_ptr weakSelf = shared_from_this(); auto materialLoaded = [networkMaterialResource, shapeIDs, priorityMapPerResource, renderItemsKey, primitiveMode, useDualQuaternionSkinning, - modelMeshRenderItemIDs, modelMeshRenderItemShapes, shouldInvalidatePayloadShapeKeyMap, weakSelf]() { + modelMeshRenderItemIDs, shapeStates, shouldInvalidatePayloadShapeKeyMap, weakSelf]() { std::shared_ptr self = weakSelf.lock(); if (!self || networkMaterialResource->isFailed() || networkMaterialResource->parsedMaterials.names.size() == 0) { return; @@ -1624,7 +1615,7 @@ void Model::applyMaterialMapping() { for (auto shapeID : shapeIDs) { if (shapeID < modelMeshRenderItemIDs.size()) { auto itemID = modelMeshRenderItemIDs[shapeID]; - auto meshIndex = modelMeshRenderItemShapes[shapeID].meshIndex; + auto meshIndex = shapeStates[shapeID]._meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKeyMap.at(meshIndex); graphics::MaterialLayer material = graphics::MaterialLayer(networkMaterial, priorityMapPerResource.at(shapeID)); { @@ -1662,7 +1653,7 @@ void Model::addMaterial(graphics::MaterialLayer material, const std::string& par for (auto shapeID : shapeIDs) { if (shapeID < _modelMeshRenderItemIDs.size()) { auto itemID = _modelMeshRenderItemIDs[shapeID]; - auto meshIndex = _modelMeshRenderItemShapes[shapeID].meshIndex; + auto meshIndex = _shapeStates[shapeID]._meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKey(meshIndex); transaction.updateItem(itemID, [material, renderItemsKey, invalidatePayloadShapeKey, primitiveMode, useDualQuaternionSkinning](ModelMeshPartPayload& data) { @@ -1684,7 +1675,7 @@ void Model::removeMaterial(graphics::MaterialPointer material, const std::string auto itemID = _modelMeshRenderItemIDs[shapeID]; auto renderItemsKey = _renderItemKeyGlobalFlags; PrimitiveMode primitiveMode = getPrimitiveMode(); - auto meshIndex = _modelMeshRenderItemShapes[shapeID].meshIndex; + auto meshIndex = _shapeStates[shapeID]._meshIndex; bool invalidatePayloadShapeKey = shouldInvalidatePayloadShapeKey(meshIndex); bool useDualQuaternionSkinning = _useDualQuaternionSkinning; transaction.updateItem(itemID, [material, renderItemsKey, diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 09fb9b581e..0c04aca70c 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -297,6 +297,16 @@ public: int getRenderInfoDrawCalls() const { return _renderInfoDrawCalls; } bool getRenderInfoHasTransparent() const { return _renderInfoHasTransparent; } + class ShapeState { + public: + glm::mat4 _rootFromJointTransform; + uint32_t _jointIndex{ hfm::UNDEFINED_KEY }; + uint32_t _meshIndex{ hfm::UNDEFINED_KEY }; + uint32_t _meshPartIndex{ hfm::UNDEFINED_KEY }; + uint32_t _skinDeformerIndex{ hfm::UNDEFINED_KEY }; + }; + const ShapeState& getShapeState(int index) { return _shapeStates.at(index); } + class TransformDualQuaternion { public: TransformDualQuaternion() {} @@ -339,18 +349,13 @@ public: public: std::vector clusterDualQuaternions; std::vector clusterMatrices; - }; + uint32_t getNumClusters() const { return (uint32_t) std::max(clusterMatrices.size(), clusterMatrices.size()); } + }; const MeshState& getMeshState(int index) { return _meshStates.at(index); } - class ShapeState { - public: - glm::mat4 _rootFromJointTransform; - }; - const ShapeState& getShapeState(int index) { return _shapeStates.at(index); } - uint32_t getGeometryCounter() const { return _deleteGeometryCounter; } - const QMap& getRenderItems() const { return _modelMeshRenderItemsMap; } + BlendShapeOperator getModelBlendshapeOperator() const { return _modelBlendshapeOperator; } void renderDebugMeshBoxes(gpu::Batch& batch, bool forward); @@ -425,10 +430,12 @@ protected: bool _snappedToRegistrationPoint; /// are we currently snapped to a registration point glm::vec3 _registrationPoint = glm::vec3(0.5f); /// the point in model space our center is snapped to - std::vector _meshStates; + std::vector _shapeStates; void updateShapeStatesFromRig(); + std::vector _meshStates; + virtual void initJointStates(); void setScaleInternal(const glm::vec3& scale); @@ -471,10 +478,7 @@ protected: static AbstractViewStateInterface* _viewState; QVector> _modelMeshRenderItems; - QMap _modelMeshRenderItemsMap; render::ItemIDs _modelMeshRenderItemIDs; - using ShapeInfo = struct { int meshIndex; uint32_t deformerIndex{ hfm::UNDEFINED_KEY }; }; - std::vector _modelMeshRenderItemShapes; std::vector _modelMeshMaterialNames; bool _addedToScene { false }; // has been added to scene diff --git a/libraries/render-utils/src/SoftAttachmentModel.cpp b/libraries/render-utils/src/SoftAttachmentModel.cpp index 186f9e682a..1b8d1e7b69 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.cpp +++ b/libraries/render-utils/src/SoftAttachmentModel.cpp @@ -41,37 +41,37 @@ void SoftAttachmentModel::updateClusterMatrices() { _needsUpdateClusterMatrices = false; - const HFMModel& hfmModel = getHFMModel(); - for (int i = 0; i < (int) _meshStates.size(); i++) { - MeshState& state = _meshStates[i]; - const HFMMesh& mesh = hfmModel.meshes.at(i); - int meshIndex = i; - for (int j = 0; j < mesh.clusters.size(); j++) { - const HFMCluster& cluster = mesh.clusters.at(j); + for (int skinDeformerIndex = 0; skinDeformerIndex < (int)_meshStates.size(); skinDeformerIndex++) { + MeshState& state = _meshStates[skinDeformerIndex]; + auto numClusters = state.getNumClusters(); + for (uint32_t clusterIndex = 0; clusterIndex < numClusters; clusterIndex++) { + const auto& cbmov = _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(skinDeformerIndex, clusterIndex); - int clusterIndex = j; // TODO: cache these look-ups as an optimization - int jointIndexOverride = getJointIndexOverride(cluster.jointIndex); - glm::mat4 jointMatrix; + int jointIndexOverride = getJointIndexOverride(cbmov.jointIndex); + auto rig = &_rigOverride; if (jointIndexOverride >= 0 && jointIndexOverride < _rigOverride.getJointStateCount()) { - jointMatrix = _rigOverride.getJointTransform(jointIndexOverride); - } else { - jointMatrix = _rig.getJointTransform(cluster.jointIndex); + rig = &_rig; } + if (_useDualQuaternionSkinning) { - glm::mat4 m; - glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, m); - state.clusterDualQuaternions[j] = Model::TransformDualQuaternion(m); - } else { - glm_mat4u_mul(jointMatrix, _rig.getAnimSkeleton()->getClusterBindMatricesOriginalValues(meshIndex, clusterIndex).inverseBindMatrix, state.clusterMatrices[j]); + auto jointPose = rig->getJointPose(cbmov.jointIndex); + Transform jointTransform(jointPose.rot(), jointPose.scale(), jointPose.trans()); + Transform clusterTransform; + Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); + state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); + } + else { + auto jointMatrix = rig->getJointTransform(cbmov.jointIndex); + glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } } } // post the blender if we're not currently waiting for one to finish auto modelBlender = DependencyManager::get(); - if (modelBlender->shouldComputeBlendshapes() && hfmModel.hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { + if (modelBlender->shouldComputeBlendshapes() && getHFMModel().hasBlendedMeshes() && _blendshapeCoefficients != _blendedBlendshapeCoefficients) { _blendedBlendshapeCoefficients = _blendshapeCoefficients; modelBlender->noteRequiresBlend(getThisPointer()); } diff --git a/tools/vhacd-util/src/VHACDUtil.cpp b/tools/vhacd-util/src/VHACDUtil.cpp index 3410d35e6a..f0eb94a1cf 100644 --- a/tools/vhacd-util/src/VHACDUtil.cpp +++ b/tools/vhacd-util/src/VHACDUtil.cpp @@ -348,7 +348,7 @@ bool vhacd::VHACDUtil::computeVHACD(HFMModel& hfmModel, if (_verbose) { qDebug() << "mesh" << meshIndex << ": " - << " parts =" << mesh.parts.size() << " clusters =" << mesh.clusters.size() + << " parts =" << mesh.parts.size() << " vertices =" << numVertices; } ++meshIndex; From be9931bcabda950563299f7d8a7def87859a9746 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 16 Oct 2019 15:50:31 -0700 Subject: [PATCH 073/547] Move skinning reweighting code out of model prep to hfm library; use in FBXSerializer. --- libraries/fbx/src/FBXSerializer.cpp | 21 +-- libraries/fbx/src/GLTFSerializer.cpp | 2 +- libraries/fbx/src/OBJSerializer.cpp | 4 +- libraries/hfm/src/hfm/HFM.h | 9 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 75 +++++++++++ libraries/hfm/src/hfm/HFMModelMath.h | 10 ++ .../model-baker/src/model-baker/Baker.cpp | 19 +-- .../src/model-baker/BuildGraphicsMeshTask.cpp | 31 ++--- .../src/model-baker/BuildGraphicsMeshTask.h | 2 +- .../model-baker/CollectShapeVerticesTask.cpp | 12 +- .../model-baker/CollectShapeVerticesTask.h | 2 +- .../src/model-baker/ReweightDeformersTask.cpp | 123 ------------------ .../src/model-baker/ReweightDeformersTask.h | 29 ----- 13 files changed, 131 insertions(+), 208 deletions(-) delete mode 100644 libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp delete mode 100644 libraries/model-baker/src/model-baker/ReweightDeformersTask.h diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d507a3ae06..4b3311c95a 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -20,6 +20,7 @@ #include #include +#include // TOOL: Uncomment the following line to enable the filtering of all the unkwnon fields of a node so we can break point easily while loading a model with problems... //#define DEBUG_FBXSERIALIZER @@ -1593,7 +1594,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const if (clusterIDs.size() > 0) { hfm::SkinDeformer skinDeformer; auto& clusters = skinDeformer.clusters; - std::vector skinClusters; for (const auto& clusterID : clusterIDs) { HFMCluster hfmCluster; const Cluster& fbxCluster = fbxClusters[clusterID]; @@ -1638,7 +1638,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const cluster.jointIndex = transformIndex; clusters.push_back(cluster); - // Skinned mesh instances have a dynamic transform + std::vector skinClusters; + // Skinned mesh instances have an hfm::SkinDeformer skinDeformer.skinClusterIndices.reserve(clusterIDs.size()); for (const auto& clusterID : clusterIDs) { const Cluster& fbxCluster = fbxClusters[clusterID]; @@ -1661,12 +1662,16 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } } - - // Store this model's deformers, this dynamic transform's deformer IDs - uint32_t deformerMinID = (uint32_t)hfmModel.skinClusters.size(); - hfmModel.skinClusters.insert(hfmModel.skinClusters.end(), skinClusters.cbegin(), skinClusters.cend()); - skinDeformer.skinClusterIndices.resize(skinClusters.size()); - std::iota(skinDeformer.skinClusterIndices.begin(), skinDeformer.skinClusterIndices.end(), deformerMinID); + // It seems odd that this mesh-related code should be inside of the for loop for instanced model IDs. + // However, in practice, skinned FBX models appear to not be instanced, as the skinning includes both the weights and joints. + { + hfm::ReweightedDeformers reweightedDeformers = hfm::getReweightedDeformers(mesh.vertices.size(), skinClusters); + if (reweightedDeformers.trimmedToMatch) { + qDebug(modelformat) << "FBXSerializer -- The number of indices and weights for a skinning deformer had different sizes and have been trimmed to match"; + } + mesh.clusterIndices = std::move(reweightedDeformers.indices); + mesh.clusterWeights = std::move(reweightedDeformers.weights); + } // Store the model's dynamic transform, and put its ID in the shapes hfmModel.skinDeformers.push_back(skinDeformer); diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index db272a534c..da48c3d2e3 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1401,7 +1401,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& int numVertices = mesh.vertices.size() - prevMeshVerticesCount; // Append new cluster indices and weights for this mesh part - int prevMeshClusterWeightCount = mesh.clusterWeights.count(); + size_t prevMeshClusterWeightCount = mesh.clusterWeights.size(); for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { mesh.clusterIndices.push_back(mesh.clusters.size() - 1); mesh.clusterWeights.push_back(0); diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index e1fc85ca2a..d3bde02e70 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -1018,8 +1018,8 @@ void hfmDebugDump(const HFMModel& hfmModel) { qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); - qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); - qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); + qCDebug(modelformat) << " clusterIndices.size() =" << mesh.clusterIndices.size(); + qCDebug(modelformat) << " clusterWeights.size() =" << mesh.clusterWeights.size(); qCDebug(modelformat) << " meshExtents =" << mesh.meshExtents; qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 15ed876d94..b2d8147ac6 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -248,8 +248,8 @@ public: glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) // Skinning cluster attributes - QVector clusterIndices; - QVector clusterWeights; + std::vector clusterIndices; + std::vector clusterWeights; // Blendshape attributes QVector blendshapes; @@ -296,7 +296,7 @@ public: bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } }; -// Formerly contained in hfm::Mesh +// A different skinning representation, used by FBXSerializer. We convert this to our graphics-optimized runtime representation contained within the mesh. class SkinCluster { public: std::vector indices; @@ -305,7 +305,7 @@ public: class SkinDeformer { public: - std::vector skinClusterIndices; + std::vector skinClusterIndices; // DEPRECATED (see hfm::Mesh.clusterIndices, hfm::Mesh.clusterWeights) std::vector clusters; }; @@ -337,7 +337,6 @@ public: std::vector materials; std::vector skinDeformers; - std::vector skinClusters; std::vector joints; QHash jointIndices; ///< 1-based, so as to more easily detect missing indices diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index de308297c4..09083ab4cc 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -11,6 +11,9 @@ #include "HFMModelMath.h" +#include +#include "ModelFormatLogging.h" + namespace hfm { void forEachIndex(const hfm::MeshPart& meshPart, std::function func) { @@ -63,4 +66,76 @@ void calculateExtentsForModel(Extents& modelExtents, const std::vector skinClusters, const uint16_t weightsPerVertex) { + ReweightedDeformers reweightedDeformers; + if (skinClusters.size() == 0) { + return reweightedDeformers; + } + + size_t numClusterIndices = numMeshVertices * weightsPerVertex; + reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(skinClusters.size() - 1)); + reweightedDeformers.weights.resize(numClusterIndices, 0); + + std::vector weightAccumulators; + weightAccumulators.resize(numClusterIndices, 0.0f); + for (uint16_t i = 0; i < (uint16_t)skinClusters.size(); ++i) { + const hfm::SkinCluster& skinCluster = skinClusters[i]; + + if (skinCluster.indices.size() != skinCluster.weights.size()) { + reweightedDeformers.trimmedToMatch = true; + } + size_t numIndicesOrWeights = std::min(skinCluster.indices.size(), skinCluster.weights.size()); + for (size_t j = 0; j < numIndicesOrWeights; ++j) { + uint32_t index = skinCluster.indices[j]; + float weight = skinCluster.weights[j]; + + // look for an unused slot in the weights vector + uint32_t weightIndex = index * weightsPerVertex; + uint32_t lowestIndex = -1; + float lowestWeight = FLT_MAX; + uint16_t k = 0; + for (; k < weightsPerVertex; k++) { + if (weightAccumulators[weightIndex + k] == 0.0f) { + reweightedDeformers.indices[weightIndex + k] = i; + weightAccumulators[weightIndex + k] = weight; + break; + } + if (weightAccumulators[weightIndex + k] < lowestWeight) { + lowestIndex = k; + lowestWeight = weightAccumulators[weightIndex + k]; + } + } + if (k == weightsPerVertex && weight > lowestWeight) { + // no space for an additional weight; we must replace the lowest + weightAccumulators[weightIndex + lowestIndex] = weight; + reweightedDeformers.indices[weightIndex + lowestIndex] = i; + } + } + } + + // now that we've accumulated the most relevant weights for each vertex + // normalize and compress to 16-bits + for (size_t i = 0; i < numMeshVertices; ++i) { + size_t j = i * weightsPerVertex; + + // normalize weights into uint16_t + float totalWeight = 0.0f; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + totalWeight += weightAccumulators[k]; + } + + const float ALMOST_HALF = 0.499f; + if (totalWeight > 0.0f) { + float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; + for (size_t k = j; k < j + weightsPerVertex; ++k) { + reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); + } + } else { + reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + } + } + + return reweightedDeformers; +} + }; diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index d1e3c09763..9420c96f08 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -25,6 +25,16 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); +const uint16_t NUM_SKINNING_WEIGHTS_PER_VERTEX = 4; + +class ReweightedDeformers { +public: + std::vector indices; + std::vector weights; + bool trimmedToMatch { false }; +}; + +ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = NUM_SKINNING_WEIGHTS_PER_VERTEX); }; #endif // #define hifi_hfm_ModelMath_h diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index 5522ebc9f5..c63495c169 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -13,7 +13,6 @@ #include "BakerTypes.h" #include "ModelMath.h" -#include "ReweightDeformersTask.h" #include "CollectShapeVerticesTask.h" #include "BuildGraphicsMeshTask.h" #include "CalculateMeshNormalsTask.h" @@ -30,7 +29,7 @@ namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet9, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, std::vector, Extents>; + using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, Extents>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { @@ -46,8 +45,7 @@ namespace baker { output.edit4() = hfmModelIn->joints; output.edit5() = hfmModelIn->shapes; output.edit6() = hfmModelIn->skinDeformers; - output.edit7() = hfmModelIn->skinClusters; - output.edit8() = hfmModelIn->meshExtents; + output.edit7() = hfmModelIn->meshExtents; } }; @@ -148,8 +146,7 @@ namespace baker { const auto jointsIn = modelPartsIn.getN(4); const auto shapesIn = modelPartsIn.getN(5); const auto skinDeformersIn = modelPartsIn.getN(6); - const auto skinClustersIn = modelPartsIn.getN(7); - const auto modelExtentsIn = modelPartsIn.getN(8); + const auto modelExtentsIn = modelPartsIn.getN(7); // Calculate normals and tangents for meshes and blendshapes if they do not exist // Note: Normals are never calculated here for OBJ models. OBJ files optionally define normals on a per-face basis, so for consistency normals are calculated beforehand in OBJSerializer. @@ -161,16 +158,12 @@ namespace baker { const auto calculateBlendshapeTangentsInputs = CalculateBlendshapeTangentsTask::Input(normalsPerBlendshapePerMesh, blendshapesPerMeshIn, meshesIn).asVarying(); const auto tangentsPerBlendshapePerMesh = model.addJob("CalculateBlendshapeTangents", calculateBlendshapeTangentsInputs); - // Skinning weight calculations - // NOTE: Due to limitations in the current graphics::MeshPointer representation, the output list of ReweightedDeformers is per-mesh. An element is empty if there are no deformers for the mesh of the same index. - const auto reweightDeformersInputs = ReweightDeformersTask::Input(meshesIn, shapesIn, skinDeformersIn, skinClustersIn).asVarying(); - const auto reweightedDeformers = model.addJob("ReweightDeformers", reweightDeformersInputs); - // Shape vertices are included/rejected based on skinning weight, and thus must use the reweighted deformers. - const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, skinDeformersIn, reweightedDeformers).asVarying(); + // Calculate shape vertices. These rely on the weight-normalized clusterIndices/clusterWeights in the mesh, and are used later for computing the joint kdops + const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, skinDeformersIn).asVarying(); const auto shapeVerticesPerJoint = model.addJob("CollectShapeVertices", collectShapeVerticesInputs); // Build the graphics::MeshPointer for each hfm::Mesh - const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, skinDeformersIn, reweightedDeformers).asVarying(); + const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, skinDeformersIn).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); // Prepare joint information diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 88546e0975..6af0f9edf7 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -15,6 +15,7 @@ #include #include "ModelBakerLogging.h" +#include #include "ModelMath.h" using vec2h = glm::tvec2; @@ -27,7 +28,7 @@ glm::vec3 normalizeDirForPacking(const glm::vec3& dir) { return dir; } -void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, uint16_t numDeformerControllers, const baker::ReweightedDeformers reweightedDeformers) { +void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphicsMeshPointer, const baker::MeshNormals& meshNormals, const baker::MeshTangents& meshTangentsIn, uint16_t numDeformerControllers) { auto graphicsMesh = std::make_shared(); // Fill tangents with a dummy value to force tangents to be present if there are normals @@ -90,12 +91,8 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics // 4 Weights are normalized 16bits const auto clusterWeightElement = gpu::Element(gpu::VEC4, gpu::NUINT16, gpu::XYZW); - // Cluster indices and weights must be the same sizes - if (reweightedDeformers.trimmedToMatch) { - HIFI_FCDEBUG_ID(model_baker(), repeatMessageID, "BuildGraphicsMeshTask -- The number of indices and weights for a deformer had different sizes and have been trimmed to match"); - } // Record cluster sizes - const size_t numVertClusters = (reweightedDeformers.weightsPerVertex ? reweightedDeformers.indices.size() / reweightedDeformers.weightsPerVertex : 0); + const size_t numVertClusters = hfmMesh.clusterIndices.size() / hfm::NUM_SKINNING_WEIGHTS_PER_VERTEX; const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); @@ -186,20 +183,20 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics if (clusterIndicesSize > 0) { if (numDeformerControllers < (uint16_t)UINT8_MAX) { // yay! we can fit the clusterIndices within 8-bits - int32_t numIndices = (int32_t)reweightedDeformers.indices.size(); + int32_t numIndices = (int32_t)hfmMesh.clusterIndices.size(); std::vector packedDeformerIndices; packedDeformerIndices.resize(numIndices); for (int32_t i = 0; i < numIndices; ++i) { assert(hfmMesh.clusterIndices[i] <= UINT8_MAX); - packedDeformerIndices[i] = (uint8_t)(reweightedDeformers.indices[i]); + packedDeformerIndices[i] = (uint8_t)(hfmMesh.clusterIndices[i]); } vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) packedDeformerIndices.data()); } else { - vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) reweightedDeformers.indices.data()); + vertBuffer->setSubData(clusterIndicesOffset, clusterIndicesSize, (const gpu::Byte*) hfmMesh.clusterIndices.data()); } } if (clusterWeightsSize > 0) { - vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) reweightedDeformers.weights.data()); + vertBuffer->setSubData(clusterWeightsOffset, clusterWeightsSize, (const gpu::Byte*) hfmMesh.clusterWeights.data()); } @@ -382,7 +379,6 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const const auto& tangentsPerMesh = input.get4(); const auto& shapes = input.get5(); const auto& skinDeformers = input.get6(); - const auto& reweightedDeformersPerMesh = input.get7(); // Currently, there is only (at most) one skinDeformer per mesh // An undefined shape.skinDeformer has the value hfm::UNDEFINED_KEY @@ -399,19 +395,16 @@ void BuildGraphicsMeshTask::run(const baker::BakeContextPointer& context, const for (int i = 0; i < n; i++) { graphicsMeshes.emplace_back(); auto& graphicsMesh = graphicsMeshes[i]; - const auto& reweightedDeformers = reweightedDeformersPerMesh[i]; uint16_t numDeformerControllers = 0; - if (reweightedDeformers.weightsPerVertex != 0) { - uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; - if (skinDeformerIndex != hfm::UNDEFINED_KEY) { - const hfm::SkinDeformer& skinDeformer = skinDeformers[skinDeformerIndex]; - numDeformerControllers = (uint16_t)skinDeformer.skinClusterIndices.size(); - } + uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; + if (skinDeformerIndex != hfm::UNDEFINED_KEY) { + const hfm::SkinDeformer& skinDeformer = skinDeformers[skinDeformerIndex]; + numDeformerControllers = (uint16_t)skinDeformer.clusters.size(); } // Try to create the graphics::Mesh - buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), numDeformerControllers, reweightedDeformers); + buildGraphicsMesh(meshes[i], graphicsMesh, baker::safeGet(normalsPerMesh, i), baker::safeGet(tangentsPerMesh, i), numDeformerControllers); // Choose a name for the mesh if (graphicsMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h index b60f6f7a43..34128eabe8 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.h @@ -20,7 +20,7 @@ class BuildGraphicsMeshTask { public: - using Input = baker::VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet7, hifi::URL, baker::MeshIndicesToModelNames, baker::NormalsPerMesh, baker::TangentsPerMesh, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp index e597bbf507..5ede25a42c 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -13,6 +13,8 @@ #include +#include + // Used to track and avoid duplicate shape vertices, as multiple shapes can have the same mesh and skinDeformer class VertexSource { public: @@ -30,7 +32,6 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con const auto& shapes = input.get1(); const auto& joints = input.get2(); const auto& skinDeformers = input.get3(); - const auto& reweightedDeformers = input.get4(); auto& shapeVerticesPerJoint = output; shapeVerticesPerJoint.resize(joints.size()); @@ -59,10 +60,9 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con const auto& mesh = meshes[shape.mesh]; const auto& vertices = mesh.vertices; - const auto& reweightedDeformer = reweightedDeformers[shape.mesh]; const glm::mat4 meshToJoint = cluster.inverseBindMatrix; - const uint16_t weightsPerVertex = reweightedDeformer.weightsPerVertex; + const uint16_t weightsPerVertex = hfm::NUM_SKINNING_WEIGHTS_PER_VERTEX; if (weightsPerVertex == 0) { for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); @@ -71,9 +71,9 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con } else { for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { for (uint16_t weightIndex = 0; weightIndex < weightsPerVertex; ++weightIndex) { - const size_t index = vertexIndex*4 + weightIndex; - const uint16_t clusterIndex = reweightedDeformer.indices[index]; - const uint16_t clusterWeight = reweightedDeformer.weights[index]; + const size_t index = vertexIndex*weightsPerVertex + weightIndex; + const uint16_t clusterIndex = mesh.clusterIndices[index]; + const uint16_t clusterWeight = mesh.clusterWeights[index]; // Remember vertices associated with this joint with at least 1/4 weight const uint16_t EXPANSION_WEIGHT_THRESHOLD = std::numeric_limits::max() / 4; if (clusterIndex != j || clusterWeight < EXPANSION_WEIGHT_THRESHOLD) { diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h index f14c440f2f..a665004d6b 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.h @@ -19,7 +19,7 @@ class CollectShapeVerticesTask { public: - using Input = baker::VaryingSet5, std::vector, std::vector, std::vector, std::vector>; + using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; using Output = std::vector; using JobModel = baker::Job::ModelIO; diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp b/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp deleted file mode 100644 index f210a5dd6f..0000000000 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// -// ReweightDeformersTask.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/09/26. -// Copyright 2019 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "ReweightDeformersTask.h" - -baker::ReweightedDeformers getReweightedDeformers(size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex) { - baker::ReweightedDeformers reweightedDeformers; - if (skinClusters.size() == 0) { - return reweightedDeformers; - } - - size_t numClusterIndices = numMeshVertices * weightsPerVertex; - reweightedDeformers.weightsPerVertex = weightsPerVertex; - // TODO: Consider having a rootCluster property in the DynamicTransform rather than appending the root to the end of the cluster list. - reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(skinClusters.size() - 1)); - reweightedDeformers.weights.resize(numClusterIndices, 0); - - std::vector weightAccumulators; - weightAccumulators.resize(numClusterIndices, 0.0f); - for (uint16_t i = 0; i < (uint16_t)skinClusters.size(); ++i) { - const hfm::SkinCluster& skinCluster = *skinClusters[i]; - - if (skinCluster.indices.size() != skinCluster.weights.size()) { - reweightedDeformers.trimmedToMatch = true; - } - size_t numIndicesOrWeights = std::min(skinCluster.indices.size(), skinCluster.weights.size()); - for (size_t j = 0; j < numIndicesOrWeights; ++j) { - uint32_t index = skinCluster.indices[j]; - float weight = skinCluster.weights[j]; - - // look for an unused slot in the weights vector - uint32_t weightIndex = index * weightsPerVertex; - uint32_t lowestIndex = -1; - float lowestWeight = FLT_MAX; - uint16_t k = 0; - for (; k < weightsPerVertex; k++) { - if (weightAccumulators[weightIndex + k] == 0.0f) { - reweightedDeformers.indices[weightIndex + k] = i; - weightAccumulators[weightIndex + k] = weight; - break; - } - if (weightAccumulators[weightIndex + k] < lowestWeight) { - lowestIndex = k; - lowestWeight = weightAccumulators[weightIndex + k]; - } - } - if (k == weightsPerVertex && weight > lowestWeight) { - // no space for an additional weight; we must replace the lowest - weightAccumulators[weightIndex + lowestIndex] = weight; - reweightedDeformers.indices[weightIndex + lowestIndex] = i; - } - } - } - - // now that we've accumulated the most relevant weights for each vertex - // normalize and compress to 16-bits - for (size_t i = 0; i < numMeshVertices; ++i) { - size_t j = i * weightsPerVertex; - - // normalize weights into uint16_t - float totalWeight = 0.0f; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - totalWeight += weightAccumulators[k]; - } - - const float ALMOST_HALF = 0.499f; - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (size_t k = j; k < j + weightsPerVertex; ++k) { - reweightedDeformers.weights[k] = (uint16_t)(weightScalingFactor * weightAccumulators[k] + ALMOST_HALF); - } - } else { - reweightedDeformers.weights[j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); - } - } - - return reweightedDeformers; -} - -void ReweightDeformersTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { - const uint16_t NUM_WEIGHTS_PER_VERTEX { 4 }; - - const auto& meshes = input.get0(); - const auto& shapes = input.get1(); - const auto& skinDeformers = input.get2(); - const auto& skinClusters = input.get3(); - auto& reweightedDeformers = output; - - // Currently, there is only (at most) one skinDeformer per mesh - // An undefined shape.skinDeformer has the value hfm::UNDEFINED_KEY - std::vector skinDeformerPerMesh; - skinDeformerPerMesh.resize(meshes.size(), hfm::UNDEFINED_KEY); - for (const auto& shape : shapes) { - uint32_t skinDeformerIndex = shape.skinDeformer; - skinDeformerPerMesh[shape.mesh] = skinDeformerIndex; - } - - reweightedDeformers.reserve(meshes.size()); - for (size_t i = 0; i < meshes.size(); ++i) { - const auto& mesh = meshes[i]; - uint32_t skinDeformerIndex = skinDeformerPerMesh[i]; - - const hfm::SkinDeformer* skinDeformer = nullptr; - std::vector meshSkinClusters; - if (skinDeformerIndex != hfm::UNDEFINED_KEY) { - skinDeformer = &skinDeformers[skinDeformerIndex]; - for (const auto& skinClusterIndex : skinDeformer->skinClusterIndices) { - const auto& skinCluster = skinClusters[skinClusterIndex]; - meshSkinClusters.push_back(&skinCluster); - } - } - - reweightedDeformers.push_back(getReweightedDeformers((size_t)mesh.vertices.size(), meshSkinClusters, NUM_WEIGHTS_PER_VERTEX)); - } -} diff --git a/libraries/model-baker/src/model-baker/ReweightDeformersTask.h b/libraries/model-baker/src/model-baker/ReweightDeformersTask.h deleted file mode 100644 index c40ad4c1b4..0000000000 --- a/libraries/model-baker/src/model-baker/ReweightDeformersTask.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// ReweightDeformersTask.h -// model-baker/src/model-baker -// -// Created by Sabrina Shanman on 2019/09/26. -// Copyright 2019 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_ReweightDeformersTask_h -#define hifi_ReweightDeformersTask_h - -#include - -#include "Engine.h" -#include "BakerTypes.h" - -class ReweightDeformersTask { -public: - using Input = baker::VaryingSet4, std::vector, std::vector, std::vector>; - using Output = std::vector; - using JobModel = baker::Job::ModelIO; - - void run(const baker::BakeContextPointer& context, const Input& input, Output& output); -}; - -#endif // hifi_ReweightDeformersTask_h From ad6720240fe31f888f6b11a46e5e2c3c68923dd8 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 18 Oct 2019 11:12:08 -0700 Subject: [PATCH 074/547] Introduce hfm::Mesh.clusterWeightsPerVertex --- libraries/fbx/src/FBXSerializer.cpp | 1 + libraries/hfm/src/hfm/HFM.h | 1 + libraries/hfm/src/hfm/HFMModelMath.cpp | 1 + libraries/hfm/src/hfm/HFMModelMath.h | 7 ++++--- .../model-baker/src/model-baker/BuildGraphicsMeshTask.cpp | 2 +- .../src/model-baker/CollectShapeVerticesTask.cpp | 2 +- 6 files changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 4b3311c95a..2c03c3c3ae 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1671,6 +1671,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } mesh.clusterIndices = std::move(reweightedDeformers.indices); mesh.clusterWeights = std::move(reweightedDeformers.weights); + mesh.clusterWeightsPerVertex = reweightedDeformers.weightsPerVertex; } // Store the model's dynamic transform, and put its ID in the shapes diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index b2d8147ac6..3d7f33383d 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -250,6 +250,7 @@ public: // Skinning cluster attributes std::vector clusterIndices; std::vector clusterWeights; + uint16_t clusterWeightsPerVertex { 0 }; // Blendshape attributes QVector blendshapes; diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 09083ab4cc..93687b08b0 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -75,6 +75,7 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s size_t numClusterIndices = numMeshVertices * weightsPerVertex; reweightedDeformers.indices.resize(numClusterIndices, (uint16_t)(skinClusters.size() - 1)); reweightedDeformers.weights.resize(numClusterIndices, 0); + reweightedDeformers.weightsPerVertex = weightsPerVertex; std::vector weightAccumulators; weightAccumulators.resize(numClusterIndices, 0.0f); diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index 9420c96f08..b80adad3d0 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -25,16 +25,17 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); -const uint16_t NUM_SKINNING_WEIGHTS_PER_VERTEX = 4; - class ReweightedDeformers { public: std::vector indices; std::vector weights; + uint16_t weightsPerVertex { 0 }; bool trimmedToMatch { false }; }; -ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = NUM_SKINNING_WEIGHTS_PER_VERTEX); +const uint16_t DEFAULT_SKINNING_WEIGHTS_PER_VERTEX = 4; + +ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = DEFAULT_SKINNING_WEIGHTS_PER_VERTEX); }; #endif // #define hifi_hfm_ModelMath_h diff --git a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp index 6af0f9edf7..66429ed2c4 100644 --- a/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildGraphicsMeshTask.cpp @@ -92,7 +92,7 @@ void buildGraphicsMesh(const hfm::Mesh& hfmMesh, graphics::MeshPointer& graphics const auto clusterWeightElement = gpu::Element(gpu::VEC4, gpu::NUINT16, gpu::XYZW); // Record cluster sizes - const size_t numVertClusters = hfmMesh.clusterIndices.size() / hfm::NUM_SKINNING_WEIGHTS_PER_VERTEX; + const size_t numVertClusters = hfmMesh.clusterWeightsPerVertex == 0 ? 0 : hfmMesh.clusterIndices.size() / hfmMesh.clusterWeightsPerVertex; const size_t clusterIndicesSize = numVertClusters * clusterIndiceElement.getSize(); const size_t clusterWeightsSize = numVertClusters * clusterWeightElement.getSize(); diff --git a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp index 5ede25a42c..13bc75ced9 100644 --- a/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp +++ b/libraries/model-baker/src/model-baker/CollectShapeVerticesTask.cpp @@ -62,7 +62,7 @@ void CollectShapeVerticesTask::run(const baker::BakeContextPointer& context, con const auto& vertices = mesh.vertices; const glm::mat4 meshToJoint = cluster.inverseBindMatrix; - const uint16_t weightsPerVertex = hfm::NUM_SKINNING_WEIGHTS_PER_VERTEX; + const uint16_t weightsPerVertex = mesh.clusterWeightsPerVertex; if (weightsPerVertex == 0) { for (int vertexIndex = 0; vertexIndex < (int)vertices.size(); ++vertexIndex) { const glm::mat4 vertexTransform = meshToJoint * glm::translate(vertices[vertexIndex]); From a95a4b5aa25dfbc88389bff32a9ddf84a6d6ded7 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 18 Oct 2019 11:43:25 -0700 Subject: [PATCH 075/547] Address warnings and comments from review --- libraries/animation/src/AnimSkeleton.cpp | 2 +- libraries/fbx/src/OBJSerializer.cpp | 2 +- .../src/model-networking/ModelCache.cpp | 4 ++-- libraries/render-utils/src/CauterizedModel.cpp | 8 +++----- libraries/render-utils/src/MeshPartPayload.cpp | 3 --- libraries/render-utils/src/MeshPartPayload.h | 2 +- libraries/render-utils/src/Model.cpp | 13 +++++-------- 7 files changed, 13 insertions(+), 21 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index 9a27ba766a..3afa7b0e3e 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -34,7 +34,7 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { const auto& defor = hfmModel.skinDeformers[i]; std::vector dummyClustersList; - for (int j = 0; j < defor.clusters.size(); j++) { + for (int j = 0; j < (uint32_t) defor.clusters.size(); j++) { // cast into a non-const reference, so we can mutate the FBXCluster HFMCluster& cluster = const_cast(defor.clusters.at(j)); diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 47c88168b4..57fcf79aac 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -1009,7 +1009,7 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } // GO over the shapes once more to assign hte material index correctly - for (int i = 0; i < hfmModel.shapes.size(); ++i) { + for (int i = 0; i < (uint32_t) hfmModel.shapes.size(); ++i) { auto foundMaterialIndex = materialNameToIndex.find(materialNamePerShape[i]); if (foundMaterialIndex != materialNameToIndex.end()) { hfmModel.shapes[i].material = foundMaterialIndex.value(); diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index 8b7db5957b..bb911c6914 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -491,8 +491,8 @@ bool NetworkModel::areTexturesLoaded() const { } const std::shared_ptr NetworkModel::getShapeMaterial(int shapeID) const { - auto materialID = getHFMModel().shapes[shapeID].material; - if ((materialID >= 0) && (materialID < (int)_materials.size())) { + uint32_t materialID = getHFMModel().shapes[shapeID].material; + if (materialID < (uint32_t)_materials.size()) { return _materials[materialID]; } return nullptr; diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 2576b16354..ca26b9739c 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -35,7 +35,7 @@ bool CauterizedModel::updateGeometry() { // initialize the cauterizedDeforemrStates as a copy of the standard deformerStates _cauterizeMeshStates.resize(_meshStates.size()); - for (int i = 0; i < _meshStates.size(); ++i) { + for (int i = 0; i < (int) _meshStates.size(); ++i) { _cauterizeMeshStates[i] = _meshStates[i]; } } @@ -45,8 +45,6 @@ bool CauterizedModel::updateGeometry() { void CauterizedModel::createRenderItemSet() { if (_isCauterized) { assert(isLoaded()); - const auto& meshes = _renderGeometry->getMeshes(); - // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); @@ -67,7 +65,7 @@ void CauterizedModel::createRenderItemSet() { // Run through all of the meshes, and place them into their segregated, but unsorted buckets int shapeID = 0; const auto& shapes = _renderGeometry->getHFMModel().shapes; - for (shapeID; shapeID < shapes.size(); shapeID++) { + for (shapeID; shapeID < (int) shapes.size(); shapeID++) { const auto& shape = shapes[shapeID]; _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform); @@ -124,7 +122,7 @@ void CauterizedModel::updateClusterMatrices() { glm::vec4(0.0f, 0.0f, 0.0f, 1.0f)); auto cauterizeMatrix = _rig.getJointTransform(_rig.indexOfJoint("Neck")) * zeroScale; - for (int skinDeformerIndex = 0; skinDeformerIndex < _cauterizeMeshStates.size(); skinDeformerIndex++) { + for (int skinDeformerIndex = 0; skinDeformerIndex < (int) _cauterizeMeshStates.size(); skinDeformerIndex++) { Model::MeshState& nonCauterizedState = _meshStates[skinDeformerIndex]; Model::MeshState& state = _cauterizeMeshStates[skinDeformerIndex]; diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 3f25d2ef80..6e3fe6ebec 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -210,11 +210,8 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in assert(shape.mesh == meshIndex); assert(shape.meshPart == partIndex); - bool useDualQuaternionSkinning = model->getUseDualQuaternionSkinning(); - auto& modelMesh = model->getNetworkModel()->getMeshes().at(_meshIndex); _meshNumVertices = (int)modelMesh->getNumVertices(); - // const Model::MeshState& state = model->getMeshState(_meshIndex); updateMeshPart(modelMesh, partIndex); diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 5d351e90d4..b207bd9403 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -118,7 +118,7 @@ public: int _meshIndex; int _shapeID; - int _deformerIndex; + uint32_t _deformerIndex; bool _isSkinned{ false }; bool _isBlendShaped { false }; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 39ae7e6a8f..20568635f0 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -324,7 +324,7 @@ bool Model::updateGeometry() { const auto& shapes = hfmModel.shapes; _shapeStates.resize(shapes.size()); - for (int s = 0; s < shapes.size(); ++s) { + for (uint32_t s = 0; s < (uint32_t) shapes.size(); ++s) { auto& shapeState = _shapeStates[s]; shapeState._jointIndex = shapes[s].joint; shapeState._meshIndex = shapes[s].mesh; @@ -334,7 +334,7 @@ bool Model::updateGeometry() { updateShapeStatesFromRig(); const auto& hfmSkinDeformers = hfmModel.skinDeformers; - for (int i = 0; i < hfmSkinDeformers.size(); i++) { + for (uint32_t i = 0; i < (uint32_t) hfmSkinDeformers.size(); i++) { const auto& dynT = hfmSkinDeformers[i]; MeshState state; state.clusterDualQuaternions.resize(dynT.clusters.size()); @@ -741,7 +741,7 @@ bool Model::replaceScriptableModelMeshPart(scriptable::ScriptableModelBasePointe auto itemID = _modelMeshRenderItemIDs[i]; auto& shape = _shapeStates[i]; // TODO: check to see if .partIndex matches too - if (shape._meshIndex == meshIndex) { + if (shape._meshIndex == (uint32_t) meshIndex) { transaction.updateItem(itemID, [=](ModelMeshPartPayload& data) { data.updateMeshPart(mesh, partIndex); }); @@ -1424,8 +1424,7 @@ void Model::updateClusterMatrices() { Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); - } - else { + } else { auto jointMatrix = _rig.getJointTransform(cbmov.jointIndex); glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } @@ -1476,7 +1475,6 @@ const render::ItemIDs& Model::fetchRenderItemIDs() const { void Model::createRenderItemSet() { assert(isLoaded()); - const auto& meshes = _renderGeometry->getMeshes(); // We should not have any existing renderItems if we enter this section of code Q_ASSERT(_modelMeshRenderItems.isEmpty()); @@ -1493,9 +1491,8 @@ void Model::createRenderItemSet() { offset.postTranslate(_offset); // Run through all of the meshes, and place them into their segregated, but unsorted buckets - int shapeID = 0; const auto& shapes = _renderGeometry->getHFMModel().shapes; - for (shapeID; shapeID < shapes.size(); shapeID++) { + for (uint32_t shapeID = 0; shapeID < shapes.size(); shapeID++) { const auto& shape = shapes[shapeID]; _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform); From ca164375f1b8d41ae5c41b21b500585602a82ffe Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 18 Oct 2019 11:56:43 -0700 Subject: [PATCH 076/547] New skinning for GLTF --- libraries/animation/src/AnimSkeleton.cpp | 8 +- libraries/fbx/src/GLTFSerializer.cpp | 176 ++++++++++++----------- libraries/fbx/src/GLTFSerializer.h | 2 +- 3 files changed, 97 insertions(+), 89 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index bae1fb5b69..0a7881abd8 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -20,13 +20,7 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { _geometryOffset = hfmModel.offset; - // convert to std::vector of joints - std::vector joints; - joints.reserve(hfmModel.joints.size()); - for (auto& joint : hfmModel.joints) { - joints.push_back(joint); - } - buildSkeletonFromJoints(joints, hfmModel.jointRotationOffsets); + buildSkeletonFromJoints(hfmModel.joints, hfmModel.jointRotationOffsets); // we make a copy of the inverseBindMatrices in order to prevent mutating the model bind pose // when we are dealing with a joint offset in the model diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index da48c3d2e3..ea31f74312 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1014,6 +1014,9 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& const auto& parentJoint = hfmModel.joints[(size_t)joint.parentIndex]; joint.transform = parentJoint.transform * joint.transform; joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; + } else { + joint.transform = hfmModel.offset * joint.transform; + joint.globalTransform = hfmModel.offset * joint.globalTransform; } joint.name = node.name; @@ -1034,6 +1037,9 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& std::vector globalBindTransforms; jointInverseBindTransforms.resize(numNodes); globalBindTransforms.resize(numNodes); + // Lookup between the GLTF mesh and the skin + std::vector gltfMeshToSkin; + gltfMeshToSkin.resize(_file.meshes.size(), -1); hfmModel.hasSkeletonJoints = !_file.skins.isEmpty(); if (hfmModel.hasSkeletonJoints) { @@ -1042,7 +1048,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& for (int jointIndex = 0; jointIndex < numNodes; ++jointIndex) { int nodeIndex = jointIndex; - auto joint = hfmModel.joints[jointIndex]; + auto& joint = hfmModel.joints[jointIndex]; for (int s = 0; s < _file.skins.size(); ++s) { const auto& skin = _file.skins[s]; @@ -1068,7 +1074,41 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& glm::vec3 bindTranslation = extractTranslation(hfmModel.offset * glm::inverse(jointInverseBindTransforms[jointIndex])); hfmModel.bindExtents.addPoint(bindTranslation); } - hfmModel.joints[jointIndex] = joint; + } + + std::vector skinToRootJoint; + skinToRootJoint.resize(_file.skins.size(), 0); + for (int jointIndex = 0; jointIndex < numNodes; ++jointIndex) { + const auto& node = _file.nodes[jointIndex]; + if (node.skin != -1) { + skinToRootJoint[node.skin] = jointIndex; + if (node.mesh != -1) { + gltfMeshToSkin[node.mesh] = node.skin; + } + } + } + + for (int skinIndex = 0; skinIndex < _file.skins.size(); ++skinIndex) { + const auto& skin = _file.skins[skinIndex]; + hfmModel.skinDeformers.emplace_back(); + auto& skinDeformer = hfmModel.skinDeformers.back(); + + // Add the nodes being referred to for skinning + for (int skinJointIndex : skin.joints) { + hfm::Cluster cluster; + cluster.jointIndex = skinJointIndex; + cluster.inverseBindMatrix = jointInverseBindTransforms[skinJointIndex]; + cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); + skinDeformer.clusters.push_back(cluster); + } + + // Always append a cluster referring to the root joint at the end + int rootJointIndex = skinToRootJoint[skinIndex]; + hfm::Cluster root; + root.jointIndex = rootJointIndex; + root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; + root.inverseBindTransform = Transform(root.inverseBindMatrix); + skinDeformer.clusters.push_back(root); } } @@ -1095,30 +1135,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& templateShapePerPrimPerGLTFMesh.emplace_back(); std::vector& templateShapePerPrim = templateShapePerPrimPerGLTFMesh.back(); - // TODO: Rewrite GLTF skinning definition - if (!hfmModel.hasSkeletonJoints) { - HFMCluster cluster; -#if 0 - cluster.jointIndex = nodeIndex; -#endif - cluster.inverseBindMatrix = glm::mat4(); - cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - meshPtr->clusters.append(cluster); - } else { // skinned model - for (int j = 0; j < numNodes; ++j) { - HFMCluster cluster; - cluster.jointIndex = j; - cluster.inverseBindMatrix = jointInverseBindTransforms[j]; - cluster.inverseBindTransform = Transform(cluster.inverseBindMatrix); - meshPtr->clusters.append(cluster); - } - } - HFMCluster root; - root.jointIndex = 0; - root.inverseBindMatrix = jointInverseBindTransforms[root.jointIndex]; - root.inverseBindTransform = Transform(root.inverseBindMatrix); - meshPtr->clusters.append(root); - QSet primitiveAttributes; if (!gltfMesh.primitives.empty()) { for (const auto& attribute : gltfMesh.primitives[0].attributes.values.keys()) { @@ -1333,35 +1349,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } - if (joints.size() == partVerticesCount * jointStride) { - for (int n = 0; n < joints.size(); n += jointStride) { - clusterJoints.push_back(joints[n]); - if (jointStride > 1) { - clusterJoints.push_back(joints[n + 1]); - if (jointStride > 2) { - clusterJoints.push_back(joints[n + 2]); - if (jointStride > 3) { - clusterJoints.push_back(joints[n + 3]); - } else { - clusterJoints.push_back(0); - } - } else { - clusterJoints.push_back(0); - clusterJoints.push_back(0); - } - } else { - clusterJoints.push_back(0); - clusterJoints.push_back(0); - clusterJoints.push_back(0); - } - } - } else if (primitiveAttributes.contains("JOINTS_0")) { - for (int i = 0; i < partVerticesCount; ++i) { - for (int j = 0; j < 4; ++j) { - clusterJoints.push_back(0); - } - } - } + const int WEIGHTS_PER_VERTEX = 4; if (weights.size() == partVerticesCount * weightStride) { for (int n = 0; n < weights.size(); n += weightStride) { @@ -1388,40 +1376,65 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } else if (primitiveAttributes.contains("WEIGHTS_0")) { for (int i = 0; i < partVerticesCount; ++i) { clusterWeights.push_back(1.0f); - for (int j = 0; j < 4; ++j) { + for (int j = 0; j < WEIGHTS_PER_VERTEX; ++j) { clusterWeights.push_back(0.0f); } } } - // Build weights (adapted from FBXSerializer.cpp) - if (hfmModel.hasSkeletonJoints) { - const int WEIGHTS_PER_VERTEX = 4; - const float ALMOST_HALF = 0.499f; - int numVertices = mesh.vertices.size() - prevMeshVerticesCount; - - // Append new cluster indices and weights for this mesh part - size_t prevMeshClusterWeightCount = mesh.clusterWeights.size(); - for (int i = 0; i < numVertices * WEIGHTS_PER_VERTEX; ++i) { - mesh.clusterIndices.push_back(mesh.clusters.size() - 1); - mesh.clusterWeights.push_back(0); + // Compress floating point weights to uint16_t for graphics runtime + // TODO: If the GLTF skinning weights are already in integer format, we should just copy the data + if (!clusterWeights.empty()) { + size_t numWeights = 4 * (mesh.vertices.size() - (uint32_t)prevMeshVerticesCount); + size_t newWeightsStart = mesh.clusterWeights.size(); + size_t newWeightsEnd = newWeightsStart + numWeights; + mesh.clusterWeights.reserve(newWeightsEnd); + for (int weightIndex = 0; weightIndex < clusterWeights.size(); ++weightIndex) { + // Per the GLTF specification + uint16_t weight = std::round(clusterWeights[weightIndex] * 65535.0); + mesh.clusterWeights.push_back(weight); } + } - // normalize and compress to 16-bits - for (int i = 0; i < numVertices; ++i) { - int j = i * WEIGHTS_PER_VERTEX; - - float totalWeight = 0.0f; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - totalWeight += clusterWeights[k]; - } - if (totalWeight > 0.0f) { - float weightScalingFactor = (float)(UINT16_MAX) / totalWeight; - for (int k = j; k < j + WEIGHTS_PER_VERTEX; ++k) { - mesh.clusterWeights[prevMeshClusterWeightCount + k] = (uint16_t)(weightScalingFactor * clusterWeights[k] + ALMOST_HALF); + if (joints.size() == partVerticesCount * jointStride) { + for (int n = 0; n < joints.size(); n += jointStride) { + mesh.clusterIndices.push_back(joints[n]); + if (jointStride > 1) { + mesh.clusterIndices.push_back(joints[n + 1]); + if (jointStride > 2) { + mesh.clusterIndices.push_back(joints[n + 2]); + if (jointStride > 3) { + mesh.clusterIndices.push_back(joints[n + 3]); + } else { + mesh.clusterIndices.push_back(0); + } + } else { + mesh.clusterIndices.push_back(0); + mesh.clusterIndices.push_back(0); } } else { - mesh.clusterWeights[prevMeshClusterWeightCount + j] = (uint16_t)((float)(UINT16_MAX) + ALMOST_HALF); + mesh.clusterIndices.push_back(0); + mesh.clusterIndices.push_back(0); + mesh.clusterIndices.push_back(0); + } + } + } else if (primitiveAttributes.contains("JOINTS_0")) { + for (int i = 0; i < partVerticesCount; ++i) { + for (int j = 0; j < 4; ++j) { + mesh.clusterIndices.push_back(0); + } + } + } + + if (!mesh.clusterIndices.empty()) { + int skinIndex = gltfMeshToSkin[gltfMeshIndex]; + if (skinIndex != -1) { + const auto& deformer = hfmModel.skinDeformers[(size_t)skinIndex]; + std::vector oldToNew; + oldToNew.resize(_file.nodes.size()); + for (uint16_t clusterIndex = 0; clusterIndex < deformer.clusters.size() - 1; ++clusterIndex) { + const auto& cluster = deformer.clusters[clusterIndex]; + oldToNew[(size_t)cluster.jointIndex] = clusterIndex; } } } @@ -1523,8 +1536,9 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& const auto& templateShape = templateShapePerPrim[primIndex]; hfmModel.shapes.push_back(templateShape); auto& hfmShape = hfmModel.shapes.back(); - // Everything else is already defined (mesh, meshPart, material), so just define the new transform + // Everything else is already defined (mesh, meshPart, material), so just define the new transform and deformer if present hfmShape.joint = nodeIndex; + hfmShape.skinDeformer = node.skin != -1 ? node.skin : hfm::UNDEFINED_KEY; } } diff --git a/libraries/fbx/src/GLTFSerializer.h b/libraries/fbx/src/GLTFSerializer.h index 78dc9b9a37..edecde6985 100755 --- a/libraries/fbx/src/GLTFSerializer.h +++ b/libraries/fbx/src/GLTFSerializer.h @@ -46,7 +46,7 @@ struct GLTFNode { QVector scale; QVector matrix; glm::mat4 transform; - int skin; + int skin { -1 }; QVector skeletons; QString jointName; QMap defined; From d4970525053e3a60a5b10933c3edf55cf9397e2e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 23 Oct 2019 17:13:34 -0700 Subject: [PATCH 077/547] Fix GLTF claiming to have no cluster weights when it is skinned --- libraries/fbx/src/GLTFSerializer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index ea31f74312..021821befd 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1394,6 +1394,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& uint16_t weight = std::round(clusterWeights[weightIndex] * 65535.0); mesh.clusterWeights.push_back(weight); } + mesh.clusterWeightsPerVertex = WEIGHTS_PER_VERTEX; } if (joints.size() == partVerticesCount * jointStride) { From 1fe1321b6ca8b584e830ab7ec700b9312a3dca90 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 24 Oct 2019 10:53:46 -0700 Subject: [PATCH 078/547] Disable GLTF skinning --- libraries/fbx/src/GLTFSerializer.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 021821befd..456bad9346 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1543,6 +1543,24 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } } + // TODO: Fix skinning and remove this workaround which disables skinning + { + std::vector meshToRootJoint; + meshToRootJoint.resize(hfmModel.meshes.size(), -1); + std::vector meshToClusterSize; + meshToClusterSize.resize(hfmModel.meshes.size()); + for (auto& shape : hfmModel.shapes) { + shape.skinDeformer = hfm::UNDEFINED_KEY; + } + + for (auto& mesh : hfmModel.meshes) { + mesh.clusterWeights.clear(); + mesh.clusterIndices.clear(); + mesh.clusterWeightsPerVertex = 0; + } + + } + return true; } From 83229db45859c7a2a75b153c098f79400225fd98 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 24 Oct 2019 14:59:09 -0700 Subject: [PATCH 079/547] Fix GLTFSerializer not reading tangents --- libraries/fbx/src/GLTFSerializer.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 456bad9346..16d2962ecc 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1315,8 +1315,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& float tanW = tangentStride == 4 ? tangents[n + 3] : 1; mesh.tangents.push_back(glm::vec3(tanW * tangents[n], tangents[n + 1], tanW * tangents[n + 2])); } - } else if (primitiveAttributes.contains("TANGENT")) { - mesh.tangents.resize(mesh.tangents.size() + partVerticesCount); } if (texcoords.size() == partVerticesCount * TEX_COORD_STRIDE) { @@ -1874,7 +1872,6 @@ bool GLTFSerializer::addArrayFromAttribute(GLTFVertexAttribute::Value vertexAttr qWarning(modelformat) << "Invalid accessor type on glTF TANGENT data for model " << _url; return false; } - break; if (!addArrayFromAccessor(accessor, outarray)) { qWarning(modelformat) << "There was a problem reading glTF TANGENT data for model " << _url; From 4e0db5d6414e621c36ee3e4e8172dadb7dad51b6 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 24 Oct 2019 15:45:06 -0700 Subject: [PATCH 080/547] Fix build warnings --- libraries/animation/src/AnimSkeleton.cpp | 2 +- libraries/fbx/src/GLTFSerializer.cpp | 3 ++- libraries/fbx/src/OBJSerializer.cpp | 4 ++-- libraries/render-utils/src/CauterizedModel.cpp | 3 +-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index 5074ac0776..b60fc42f89 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -28,7 +28,7 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { const auto& defor = hfmModel.skinDeformers[i]; std::vector dummyClustersList; - for (int j = 0; j < (uint32_t) defor.clusters.size(); j++) { + for (uint32_t j = 0; j < (uint32_t)defor.clusters.size(); j++) { // cast into a non-const reference, so we can mutate the FBXCluster HFMCluster& cluster = const_cast(defor.clusters.at(j)); diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 16d2962ecc..115e7e0ca7 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1389,7 +1389,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& mesh.clusterWeights.reserve(newWeightsEnd); for (int weightIndex = 0; weightIndex < clusterWeights.size(); ++weightIndex) { // Per the GLTF specification - uint16_t weight = std::round(clusterWeights[weightIndex] * 65535.0); + uint16_t weight = std::round(clusterWeights[weightIndex] * 65535.0f); mesh.clusterWeights.push_back(weight); } mesh.clusterWeightsPerVertex = WEIGHTS_PER_VERTEX; @@ -1542,6 +1542,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& } // TODO: Fix skinning and remove this workaround which disables skinning + // TODO: Restore after testing { std::vector meshToRootJoint; meshToRootJoint.resize(hfmModel.meshes.size(), -1); diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 57fcf79aac..445c259650 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -1008,8 +1008,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V modelMaterial->setOpacity(hfmMaterial.opacity); } - // GO over the shapes once more to assign hte material index correctly - for (int i = 0; i < (uint32_t) hfmModel.shapes.size(); ++i) { + // GO over the shapes once more to assign the material index correctly + for (uint32_t i = 0; i < (uint32_t)hfmModel.shapes.size(); ++i) { auto foundMaterialIndex = materialNameToIndex.find(materialNamePerShape[i]); if (foundMaterialIndex != materialNameToIndex.end()) { hfmModel.shapes[i].material = foundMaterialIndex.value(); diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index ca26b9739c..69710b2ed1 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -63,9 +63,8 @@ void CauterizedModel::createRenderItemSet() { Transform::mult(transform, transform, offset); // Run through all of the meshes, and place them into their segregated, but unsorted buckets - int shapeID = 0; const auto& shapes = _renderGeometry->getHFMModel().shapes; - for (shapeID; shapeID < (int) shapes.size(); shapeID++) { + for (int shapeID = 0; shapeID < (int) shapes.size(); shapeID++) { const auto& shape = shapes[shapeID]; _modelMeshRenderItems << std::make_shared(shared_from_this(), shape.mesh, shape.meshPart, shapeID, transform); From fa51ec3dafa766734e77e0a1aa7733fbe601e7c0 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 24 Oct 2019 18:02:19 -0700 Subject: [PATCH 081/547] (WIP) (has debug) Fix baked FBX materials --- libraries/fbx/src/FBXSerializer.cpp | 5 +++-- libraries/fbx/src/FBXSerializer_Mesh.cpp | 14 ++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 2c03c3c3ae..8c1204d783 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1562,7 +1562,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart if (!extracted.materialIDPerMeshPart.empty()) { - /* if (partShapes.size() == extracted.materialIDPerMeshPart.size()) { + // TODO: Verify this code works as intended by testing baked FBX models, then remove the verification/debug + if (partShapes.size() == extracted.materialIDPerMeshPart.size()) { for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { hfm::Shape& shape = partShapes[i]; const std::string& materialID = extracted.materialIDPerMeshPart[i]; @@ -1576,7 +1577,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const qCDebug(modelformat) << "mesh.parts[" << p <<"] is " << mesh.parts[p].materialID; } qCDebug(modelformat) << "partShapes is not the same size as materialIDPerMeshPart ?"; - }*/ + } } // find the clusters with which the mesh is associated diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 37f2c9ec1b..e9884f3087 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -369,11 +369,6 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me } } - if (dracoMeshNodeVersion >= 2) { - // Define the materialIDs now - data.extracted.materialIDPerMeshPart = dracoMaterialList; - } - // load the draco mesh from the FBX and create a draco::Mesh draco::Decoder decoder; draco::DecoderBuffer decodedBuffer; @@ -491,15 +486,14 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me // grab or setup the HFMMeshPart for the part this face belongs to int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { - data.extracted.mesh.parts.resize(data.extracted.mesh.parts.size() + 1); + data.extracted.mesh.parts.emplace_back(); HFMMeshPart& part = data.extracted.mesh.parts.back(); // Figure out if this is the older way of defining the per-part material for baked FBX if (dracoMeshNodeVersion >= 2) { - // Define the materialID now - if (materialID < dracoMaterialList.size()) { - part.materialID = QString(dracoMaterialList[materialID].c_str()); - } + // Define the materialID for this mesh part index + uint16_t safeMaterialID = materialID < dracoMaterialList.size() ? materialID : 0; + data.extracted.materialIDPerMeshPart.push_back(dracoMaterialList[materialID].c_str()); } else { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap data.extracted.partMaterialTextures.append(materialTexture); From 77dcad21db62f70cd7d4932393981d9601eb881f Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 25 Oct 2019 09:14:12 -0700 Subject: [PATCH 082/547] Fix OBJSerializer crash with empty groupMaterialName --- libraries/fbx/src/OBJSerializer.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 445c259650..6f3f67a3bf 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -741,8 +741,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V needsMaterialLibrary = groupMaterialName != SMART_DEFAULT_MATERIAL_NAME; } materials[groupMaterialName] = material; - materialNamePerShape.push_back(groupMaterialName); } + materialNamePerShape.push_back(groupMaterialName); hfm::Shape shape; @@ -1010,9 +1010,12 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V // GO over the shapes once more to assign the material index correctly for (uint32_t i = 0; i < (uint32_t)hfmModel.shapes.size(); ++i) { - auto foundMaterialIndex = materialNameToIndex.find(materialNamePerShape[i]); - if (foundMaterialIndex != materialNameToIndex.end()) { - hfmModel.shapes[i].material = foundMaterialIndex.value(); + const auto& materialName = materialNamePerShape[i]; + if (!materialName.isEmpty()) { + auto foundMaterialIndex = materialNameToIndex.find(materialName); + if (foundMaterialIndex != materialNameToIndex.end()) { + hfmModel.shapes[i].material = foundMaterialIndex.value(); + } } } From 3de61b4a183bea0c8fd3adb703a791d4d60f884b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 28 Oct 2019 10:59:44 -0700 Subject: [PATCH 083/547] Properly calculate shape extents for FBX aside from geometricTransform/upAxis, speed up model extents calculation --- libraries/fbx/src/FBXSerializer.cpp | 23 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 8c1204d783..39531261c0 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1492,15 +1492,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } const uint32_t transformIndex = (indexOfModelID == -1) ? 0 : (uint32_t)indexOfModelID; - // accumulate local transforms - glm::mat4 globalTransform = hfmModel.joints[transformIndex].globalTransform; - // compute the mesh extents from the transformed vertices - for (const glm::vec3& vertex : mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); - hfmModel.meshExtents.minimum = glm::min(hfmModel.meshExtents.minimum, transformedVertex); - hfmModel.meshExtents.maximum = glm::max(hfmModel.meshExtents.maximum, transformedVertex); - } - // partShapes will be added to meshShapes at the very end std::vector partShapes { mesh.parts.size() }; for (uint32_t i = 0; i < (uint32_t)partShapes.size(); ++i) { @@ -1508,6 +1499,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const shape.mesh = meshIndex; shape.meshPart = i; shape.joint = transformIndex; + + hfm::calculateExtentsForShape(shape, hfmModel.meshes, hfmModel.joints); auto matName = mesh.parts[i].materialID; auto materialIt = materialNameToID.find(matName.toStdString()); @@ -1516,14 +1509,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } else { qCDebug(modelformat) << "Unknown material ? " << matName; } - - shape.transformedExtents.reset(); - // compute the shape extents from the transformed vertices - for (const glm::vec3& vertex : mesh.vertices) { - glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); - shape.transformedExtents.minimum = glm::min(shape.transformedExtents.minimum, transformedVertex); - shape.transformedExtents.maximum = glm::max(shape.transformedExtents.maximum, transformedVertex); - } } // For FBX_DRACO_MESH_VERSION < 2, or unbaked models, get materials from the partMaterialTextures @@ -1610,6 +1595,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfmCluster.jointIndex = (uint32_t)indexOfJointID; } + const glm::mat4 globalTransform = hfmModel.joints[transformIndex].globalTransform; hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * globalTransform; // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and @@ -1718,6 +1704,9 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } + // TODO: The ordering of shape extent calculations is wrong. The entire mesh vertex set is transformed if there is a geometric offset, which would break instancing for FBX models with a geometricOffset. + hfm::calculateExtentsForModel(hfmModel.meshExtents, hfmModel.shapes); + if (applyUpAxisZRotation) { hfmModelPtr->meshExtents.transform(glm::mat4_cast(upAxisZRotation)); hfmModelPtr->bindExtents.transform(glm::mat4_cast(upAxisZRotation)); From 9fd76cac843c9e25d8cd5cacc0685433a3ef6767 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 28 Oct 2019 11:50:53 -0700 Subject: [PATCH 084/547] Fix FBX UpAxis transform not being applied to skinned models --- libraries/fbx/src/FBXSerializer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 39531261c0..50580938e8 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1312,6 +1312,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.preTransform = fbxModel.preTransform; joint.preRotation = fbxModel.preRotation; joint.rotation = fbxModel.rotation; + glm::quat rotationWithoutUpZAxis = fbxModel.rotation; joint.postRotation = fbxModel.postRotation; joint.postTransform = fbxModel.postTransform; joint.rotationMin = fbxModel.rotationMin; @@ -1379,7 +1380,11 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // Now that we've initialized the joint, we can define the transform // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; - joint.globalTransform = joint.localTransform; + if (applyUpAxisZRotation) { + joint.globalTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * rotationWithoutUpZAxis * joint.postRotation) * joint.postTransform; + } else { + joint.globalTransform = joint.localTransform; + } if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; // SG Change: i think this not correct and the [parent]*[local] is the correct answer here From 993aa06301e2f559a8b13b298ace72d691cfa1d5 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 28 Oct 2019 13:05:27 -0700 Subject: [PATCH 085/547] Let hfm prep calculate OBJ model extents --- libraries/fbx/src/OBJSerializer.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 6f3f67a3bf..62c81fe360 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -675,7 +675,6 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V _url = url; bool combineParts = mapping.value("combineParts").toBool(); - hfmModel.meshExtents.reset(); hfmModel.meshes.push_back(HFMMesh()); std::vector materialNamePerShape; @@ -826,12 +825,6 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } } } - - mesh.meshExtents.reset(); - foreach(const glm::vec3& vertex, mesh.vertices) { - mesh.meshExtents.addPoint(vertex); - hfmModel.meshExtents.addPoint(vertex); - } // hfmDebugDump(hfmModel); } catch(const std::exception& e) { From d961c4a8927aa0c1c013ec3e5171ddbd643c8a72 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 28 Oct 2019 15:32:45 -0700 Subject: [PATCH 086/547] Use safeMaterialID in FBXSerializer_Mesh.cpp --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index e9884f3087..51104ee74f 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -493,7 +493,7 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me if (dracoMeshNodeVersion >= 2) { // Define the materialID for this mesh part index uint16_t safeMaterialID = materialID < dracoMaterialList.size() ? materialID : 0; - data.extracted.materialIDPerMeshPart.push_back(dracoMaterialList[materialID].c_str()); + data.extracted.materialIDPerMeshPart.push_back(dracoMaterialList[safeMaterialID].c_str()); } else { // Define the materialID later, based on the order of first appearance of the materials in the _connectionChildMap data.extracted.partMaterialTextures.append(materialTexture); From f8017d28ff7d6e3dbb5be2ab85acd07691948709 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 09:20:17 -0700 Subject: [PATCH 087/547] Separate cluster-related transform from joint.globalTransform --- libraries/fbx/src/FBXSerializer.cpp | 36 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 50580938e8..697cd090ca 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1302,6 +1302,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; + std::vector globalTransformForClusters; + globalTransformForClusters.reserve((size_t)modelIDs.size()); for (const QString& modelID : modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; @@ -1312,7 +1314,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.preTransform = fbxModel.preTransform; joint.preRotation = fbxModel.preRotation; joint.rotation = fbxModel.rotation; - glm::quat rotationWithoutUpZAxis = fbxModel.rotation; joint.postRotation = fbxModel.postRotation; joint.postTransform = fbxModel.postTransform; joint.rotationMin = fbxModel.rotationMin; @@ -1324,6 +1325,19 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.geometricScaling = fbxModel.geometricScaling; joint.isSkeletonJoint = fbxModel.isLimbNode; hfmModel.hasSkeletonJoints = (hfmModel.hasSkeletonJoints || joint.isSkeletonJoint); + + glm::quat jointBindCombinedRotation = joint.preRotation * joint.rotation * joint.postRotation; + glm::mat4 globalTransformForCluster = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(jointBindCombinedRotation) * joint.postTransform; + if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { + const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[joint.parentIndex]; + globalTransformForCluster = parentGlobalTransformForCluster * globalTransformForCluster; + } + if (joint.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + globalTransformForCluster = globalTransformForCluster * geometricOffset; + } + globalTransformForClusters.push_back(globalTransformForCluster); + if (applyUpAxisZRotation && joint.parentIndex == -1) { joint.rotation *= upAxisZRotation; joint.translation = upAxisZRotation * joint.translation; @@ -1380,11 +1394,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // Now that we've initialized the joint, we can define the transform // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; - if (applyUpAxisZRotation) { - joint.globalTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * rotationWithoutUpZAxis * joint.postRotation) * joint.postTransform; - } else { - joint.globalTransform = joint.localTransform; - } + joint.globalTransform = joint.localTransform; if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; // SG Change: i think this not correct and the [parent]*[local] is the correct answer here @@ -1600,8 +1610,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfmCluster.jointIndex = (uint32_t)indexOfJointID; } - const glm::mat4 globalTransform = hfmModel.joints[transformIndex].globalTransform; - hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * globalTransform; + const glm::mat4& jointBindTransform = globalTransformForClusters[transformIndex]; + hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * jointBindTransform; // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and // sometimes floating point fuzz can be introduced after the inverse. @@ -1712,16 +1722,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // TODO: The ordering of shape extent calculations is wrong. The entire mesh vertex set is transformed if there is a geometric offset, which would break instancing for FBX models with a geometricOffset. hfm::calculateExtentsForModel(hfmModel.meshExtents, hfmModel.shapes); - if (applyUpAxisZRotation) { - hfmModelPtr->meshExtents.transform(glm::mat4_cast(upAxisZRotation)); - hfmModelPtr->bindExtents.transform(glm::mat4_cast(upAxisZRotation)); - for (auto& shape : hfmModelPtr->shapes) { - shape.transformedExtents.transform(glm::mat4_cast(upAxisZRotation)); - } - for (auto& joint : hfmModelPtr->joints) { - joint.globalTransform = joint.globalTransform * glm::mat4_cast(upAxisZRotation); - } - } return hfmModelPtr; } From a70f0f27918e315cb295bb2171dcce22445f875c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 10:47:27 -0700 Subject: [PATCH 088/547] (WIP, has debug) Fix FBXSerializer applying geometric transform inconsistently, let HFM prep calculate FBX extents --- libraries/fbx/src/FBXSerializer.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 697cd090ca..d3722b2d50 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1326,6 +1326,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.isSkeletonJoint = fbxModel.isLimbNode; hfmModel.hasSkeletonJoints = (hfmModel.hasSkeletonJoints || joint.isSkeletonJoint); + // First, calculate the FBX-specific transform used for inverse bind transform calculations + glm::quat jointBindCombinedRotation = joint.preRotation * joint.rotation * joint.postRotation; glm::mat4 globalTransformForCluster = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(jointBindCombinedRotation) * joint.postTransform; if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { @@ -1338,10 +1340,16 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } globalTransformForClusters.push_back(globalTransformForCluster); + // Then, calculate the transforms proper + if (applyUpAxisZRotation && joint.parentIndex == -1) { joint.rotation *= upAxisZRotation; joint.translation = upAxisZRotation * joint.translation; } + if (joint.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + joint.postTransform *= geometricOffset; + } glm::quat combinedRotation = joint.preRotation * joint.rotation * joint.postRotation; if (joint.parentIndex == -1) { joint.transform = hfmModel.offset * glm::translate(joint.translation) * joint.preTransform * @@ -1405,12 +1413,15 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // However, we must be careful when modifying the behavior of FBXSerializer. // So, we leave this here, as a breakpoint for debugging, or stub for implementation. // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; - // glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); - // globalTransform = globalTransform * glm::inverse(geometricOffset); + // glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); + // joint.preTransform = glm::inverse(parentGeometricOffset) * joint.preTransform; } } - if (joint.hasGeometricOffset) { + // TODO: Revert after testing + if (false) { + //if (joint.hasGeometricOffset) { glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + joint.transform = joint.transform * geometricOffset; joint.globalTransform = joint.globalTransform * geometricOffset; } @@ -1514,8 +1525,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const shape.mesh = meshIndex; shape.meshPart = i; shape.joint = transformIndex; - - hfm::calculateExtentsForShape(shape, hfmModel.meshes, hfmModel.joints); auto matName = mesh.parts[i].materialID; auto materialIt = materialNameToID.find(matName.toStdString()); @@ -1687,12 +1696,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const HFMJoint& joint = hfmModel.joints[transformIndex]; // Apply geometric offset, if present, by transforming the vertices directly - if (joint.hasGeometricOffset) { + /*if (joint.hasGeometricOffset) { glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); for (int i = 0; i < mesh.vertices.size(); i++) { mesh.vertices[i] = transformPoint(geometricOffset, mesh.vertices[i]); } - } + }*/ } // Store the parts for this mesh (or instance of this mesh, as the case may be) @@ -1719,9 +1728,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } } - // TODO: The ordering of shape extent calculations is wrong. The entire mesh vertex set is transformed if there is a geometric offset, which would break instancing for FBX models with a geometricOffset. - hfm::calculateExtentsForModel(hfmModel.meshExtents, hfmModel.shapes); - return hfmModelPtr; } From 8686dcac134bff46fe7afda8efee64af89750831 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 11:25:20 -0700 Subject: [PATCH 089/547] Remove FBXSerializer debug --- libraries/fbx/src/FBXSerializer.cpp | 61 ++++------------------------- 1 file changed, 7 insertions(+), 54 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d3722b2d50..d8d687f7ff 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1405,8 +1405,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.globalTransform = joint.localTransform; if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; - // SG Change: i think this not correct and the [parent]*[local] is the correct answer here - //joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; joint.globalTransform = parentJoint.globalTransform * joint.localTransform; if (parentJoint.hasGeometricOffset) { // Per the FBX standard, geometric offset should not propagate to children. @@ -1417,28 +1415,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // joint.preTransform = glm::inverse(parentGeometricOffset) * joint.preTransform; } } - // TODO: Revert after testing - if (false) { - //if (joint.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); - joint.transform = joint.transform * geometricOffset; - joint.globalTransform = joint.globalTransform * geometricOffset; - } - - // TODO: Remove these lines, just here to make sure we are not breaking the transform computation - // QString modelID = fbxModels.contains(it.key()) ? it.key() : _connectionParentMap.value(it.key()); - glm::mat4 anotherModelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); - auto col0 = (glm::epsilonNotEqual(anotherModelTransform[0], joint.globalTransform[0], 0.001f)); - auto col1 = (glm::epsilonNotEqual(anotherModelTransform[1], joint.globalTransform[1], 0.001f)); - auto col2 = (glm::epsilonNotEqual(anotherModelTransform[2], joint.globalTransform[2], 0.001f)); - auto col3 = (glm::epsilonNotEqual(anotherModelTransform[3], joint.globalTransform[3], 0.001f)); - if ( glm::any(col0) - || glm::any(col1) - || glm::any(col2) - || glm::any(col3)) { - anotherModelTransform = getGlobalTransform(_connectionParentMap, fbxModels, modelID, hfmModel.applicationName == "mixamo.com", url); - // joint.globalTransform = anotherModelTransform; - } hfmModel.joints.push_back(joint); } @@ -1504,12 +1480,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // meshShapes will be added to hfmModel at the very end std::vector meshShapes; meshShapes.reserve(instanceModelIDs.size() * mesh.parts.size()); - if (instanceModelIDs.size() > 1) { - qCDebug(modelformat) << "Mesh " << meshID << " made of " << mesh.parts.size() << " parts is instanced " << instanceModelIDs.size() << " times!!!"; - } - if (mesh.parts.size() < 1) { - qCDebug(modelformat) << "Mesh " << meshID << " made of " << mesh.parts.size() << " parts !!!!! "; - } for (const QString& modelID : instanceModelIDs) { // The transform node has the same indexing order as the joints int indexOfModelID = modelIDs.indexOf(modelID); @@ -1530,8 +1500,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const auto materialIt = materialNameToID.find(matName.toStdString()); if (materialIt != materialNameToID.end()) { shape.material = materialIt->second; - } else { - qCDebug(modelformat) << "Unknown material ? " << matName; } } @@ -1571,21 +1539,14 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // For baked models with FBX_DRACO_MESH_VERSION >= 2, get materials from extracted.materialIDPerMeshPart if (!extracted.materialIDPerMeshPart.empty()) { - // TODO: Verify this code works as intended by testing baked FBX models, then remove the verification/debug - if (partShapes.size() == extracted.materialIDPerMeshPart.size()) { - for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { - hfm::Shape& shape = partShapes[i]; - const std::string& materialID = extracted.materialIDPerMeshPart[i]; - auto materialIt = materialNameToID.find(materialID); - if (materialIt != materialNameToID.end()) { - shape.material = materialIt->second; - } + assert(partShapes.size() == extracted.materialIDPerMeshPart.size()); + for (uint32_t i = 0; i < (uint32_t)extracted.materialIDPerMeshPart.size(); ++i) { + hfm::Shape& shape = partShapes[i]; + const std::string& materialID = extracted.materialIDPerMeshPart[i]; + auto materialIt = materialNameToID.find(materialID); + if (materialIt != materialNameToID.end()) { + shape.material = materialIt->second; } - } else { - for (int p = 0; p < mesh.parts.size(); p++) { - qCDebug(modelformat) << "mesh.parts[" << p <<"] is " << mesh.parts[p].materialID; - } - qCDebug(modelformat) << "partShapes is not the same size as materialIDPerMeshPart ?"; } } @@ -1694,14 +1655,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } else { // this is a no cluster mesh HFMJoint& joint = hfmModel.joints[transformIndex]; - - // Apply geometric offset, if present, by transforming the vertices directly - /*if (joint.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); - for (int i = 0; i < mesh.vertices.size(); i++) { - mesh.vertices[i] = transformPoint(geometricOffset, mesh.vertices[i]); - } - }*/ } // Store the parts for this mesh (or instance of this mesh, as the case may be) From 27b30a964663702812a00ab8dbe42b6d9a00f7f2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 16:02:30 -0700 Subject: [PATCH 090/547] Move hfm debug dump to hfm::Model --- libraries/fbx/src/GLTFSerializer.cpp | 139 +--------------------- libraries/fbx/src/OBJSerializer.cpp | 74 ------------ libraries/fbx/src/OBJSerializer.h | 1 - libraries/hfm/src/hfm/HFM.cpp | 163 ++++++++++++++++++++++++++ libraries/hfm/src/hfm/HFM.h | 2 + libraries/hfm/src/hfm/HFMSerializer.h | 2 +- 6 files changed, 167 insertions(+), 214 deletions(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 115e7e0ca7..5bf1ea17ff 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -2073,144 +2073,7 @@ void GLTFSerializer::glTFDebugDump() { } void GLTFSerializer::hfmDebugDump(const HFMModel& hfmModel) { - qCDebug(modelformat) << "---------------- hfmModel ----------------"; - qCDebug(modelformat) << " hasSkeletonJoints =" << hfmModel.hasSkeletonJoints; - qCDebug(modelformat) << " offset =" << hfmModel.offset; - - qCDebug(modelformat) << " neckPivot = " << hfmModel.neckPivot; - - qCDebug(modelformat) << " bindExtents.size() = " << hfmModel.bindExtents.size(); - qCDebug(modelformat) << " meshExtents.size() = " << hfmModel.meshExtents.size(); - - qCDebug(modelformat) << " jointIndices.size() =" << hfmModel.jointIndices.size(); - qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.size(); - qCDebug(modelformat) << "---------------- Meshes ----------------"; - qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.size(); - qCDebug(modelformat) << " blendshapeChannelNames = " << hfmModel.blendshapeChannelNames; - for (const HFMMesh& mesh : hfmModel.meshes) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); - qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; - qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.size(); - qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); - qCDebug(modelformat) << " normals.count() =" << mesh.normals.size(); - qCDebug(modelformat) << " tangents.count() =" << mesh.tangents.size(); - qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); - qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); - qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); - //qCDebug(modelformat) << " clusterIndices.count() =" << mesh.clusterIndices.count(); - //qCDebug(modelformat) << " clusterWeights.count() =" << mesh.clusterWeights.count(); - //qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; - qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); - qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; - for (HFMBlendshape bshape : mesh.blendshapes) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " bshape.indices.count() =" << bshape.indices.count(); - qCDebug(modelformat) << " bshape.vertices.count() =" << bshape.vertices.count(); - qCDebug(modelformat) << " bshape.normals.count() =" << bshape.normals.count(); - qCDebug(modelformat) << "\n"; - } - qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; - for (HFMMeshPart meshPart : mesh.parts) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); - qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); - //qCDebug(modelformat) << " materialID =" << meshPart.materialID; - qCDebug(modelformat) << "\n"; - } - qCDebug(modelformat) << "---------------- Meshes (clusters)--------"; - //qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); - //for(HFMCluster cluster : mesh.clusters) { - // qCDebug(modelformat) << "\n"; - // qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; - // qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; - // qCDebug(modelformat) << "\n"; - //} - //qCDebug(modelformat) << "\n"; - } - qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; - for (HFMAnimationFrame anim : hfmModel.animationFrames) { - qCDebug(modelformat) << " anim.translations = " << anim.translations; - qCDebug(modelformat) << " anim.rotations = " << anim.rotations; - } - QList mitomona_keys = hfmModel.meshIndicesToModelNames.keys(); - for (int key : mitomona_keys) { - qCDebug(modelformat) << " meshIndicesToModelNames key =" << key - << " val =" << hfmModel.meshIndicesToModelNames[key]; - } - - qCDebug(modelformat) << "---------------- Materials ----------------"; - - for (HFMMaterial mat : hfmModel.materials) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " mat.materialID =" << mat.materialID; - qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; - qCDebug(modelformat) << " diffuseFactor =" << mat.diffuseFactor; - qCDebug(modelformat) << " specularColor =" << mat.specularColor; - qCDebug(modelformat) << " specularFactor =" << mat.specularFactor; - qCDebug(modelformat) << " emissiveColor =" << mat.emissiveColor; - qCDebug(modelformat) << " emissiveFactor =" << mat.emissiveFactor; - qCDebug(modelformat) << " shininess =" << mat.shininess; - qCDebug(modelformat) << " opacity =" << mat.opacity; - qCDebug(modelformat) << " metallic =" << mat.metallic; - qCDebug(modelformat) << " roughness =" << mat.roughness; - qCDebug(modelformat) << " emissiveIntensity =" << mat.emissiveIntensity; - qCDebug(modelformat) << " ambientFactor =" << mat.ambientFactor; - - qCDebug(modelformat) << " materialID =" << mat.materialID; - qCDebug(modelformat) << " name =" << mat.name; - qCDebug(modelformat) << " shadingModel =" << mat.shadingModel; - qCDebug(modelformat) << " _material =" << mat._material.get(); - - qCDebug(modelformat) << " normalTexture =" << mat.normalTexture.filename; - qCDebug(modelformat) << " albedoTexture =" << mat.albedoTexture.filename; - qCDebug(modelformat) << " opacityTexture =" << mat.opacityTexture.filename; - - qCDebug(modelformat) << " lightmapParams =" << mat.lightmapParams; - - qCDebug(modelformat) << " isPBSMaterial =" << mat.isPBSMaterial; - qCDebug(modelformat) << " useNormalMap =" << mat.useNormalMap; - qCDebug(modelformat) << " useAlbedoMap =" << mat.useAlbedoMap; - qCDebug(modelformat) << " useOpacityMap =" << mat.useOpacityMap; - qCDebug(modelformat) << " useRoughnessMap =" << mat.useRoughnessMap; - qCDebug(modelformat) << " useSpecularMap =" << mat.useSpecularMap; - qCDebug(modelformat) << " useMetallicMap =" << mat.useMetallicMap; - qCDebug(modelformat) << " useEmissiveMap =" << mat.useEmissiveMap; - qCDebug(modelformat) << " useOcclusionMap =" << mat.useOcclusionMap; - qCDebug(modelformat) << "\n"; - } - - qCDebug(modelformat) << "---------------- Joints ----------------"; - - foreach (HFMJoint joint, hfmModel.joints) { - qCDebug(modelformat) << "\n"; - qCDebug(modelformat) << " shapeInfo.avgPoint =" << joint.shapeInfo.avgPoint; - qCDebug(modelformat) << " shapeInfo.debugLines =" << joint.shapeInfo.debugLines; - qCDebug(modelformat) << " shapeInfo.dots =" << joint.shapeInfo.dots; - qCDebug(modelformat) << " shapeInfo.points =" << joint.shapeInfo.points; - - qCDebug(modelformat) << " parentIndex" << joint.parentIndex; - qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; - qCDebug(modelformat) << " translation" << joint.translation; - qCDebug(modelformat) << " preTransform" << joint.preTransform; - qCDebug(modelformat) << " preRotation" << joint.preRotation; - qCDebug(modelformat) << " rotation" << joint.rotation; - qCDebug(modelformat) << " postRotation" << joint.postRotation; - qCDebug(modelformat) << " postTransform" << joint.postTransform; - qCDebug(modelformat) << " transform" << joint.transform; - qCDebug(modelformat) << " rotationMin" << joint.rotationMin; - qCDebug(modelformat) << " rotationMax" << joint.rotationMax; - qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; - qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; - qCDebug(modelformat) << " bindTransform" << joint.bindTransform; - qCDebug(modelformat) << " name" << joint.name; - qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.hasGeometricOffset; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricTranslation; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricRotation; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricScaling; - qCDebug(modelformat) << "\n"; - } + hfmModel.debugDump(); qCDebug(modelformat) << "---------------- GLTF Model ----------------"; glTFDebugDump(); diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 62c81fe360..31f92555f1 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -825,8 +825,6 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V } } } - - // hfmDebugDump(hfmModel); } catch(const std::exception& e) { qCDebug(modelformat) << "OBJSerializer fail: " << e.what(); } @@ -1014,75 +1012,3 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V return hfmModelPtr; } - -void hfmDebugDump(const HFMModel& hfmModel) { - qCDebug(modelformat) << "---------------- hfmModel ----------------"; - qCDebug(modelformat) << " hasSkeletonJoints =" << hfmModel.hasSkeletonJoints; - qCDebug(modelformat) << " offset =" << hfmModel.offset; - qCDebug(modelformat) << " meshes.count() =" << hfmModel.meshes.size(); - foreach (HFMMesh mesh, hfmModel.meshes) { - qCDebug(modelformat) << " vertices.count() =" << mesh.vertices.count(); - qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); - qCDebug(modelformat) << " normals.count() =" << mesh.normals.count(); - /*if (mesh.normals.count() == mesh.vertices.count()) { - for (int i = 0; i < mesh.normals.count(); i++) { - qCDebug(modelformat) << " " << mesh.vertices[ i ] << mesh.normals[ i ]; - } - }*/ - qCDebug(modelformat) << " tangents.count() =" << mesh.tangents.count(); - qCDebug(modelformat) << " colors.count() =" << mesh.colors.count(); - qCDebug(modelformat) << " texCoords.count() =" << mesh.texCoords.count(); - qCDebug(modelformat) << " texCoords1.count() =" << mesh.texCoords1.count(); - qCDebug(modelformat) << " clusterIndices.size() =" << mesh.clusterIndices.size(); - qCDebug(modelformat) << " clusterWeights.size() =" << mesh.clusterWeights.size(); - qCDebug(modelformat) << " meshExtents =" << mesh.meshExtents; - qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; - qCDebug(modelformat) << " parts.count() =" << mesh.parts.size(); - foreach (HFMMeshPart meshPart, mesh.parts) { - qCDebug(modelformat) << " quadIndices.count() =" << meshPart.quadIndices.count(); - qCDebug(modelformat) << " triangleIndices.count() =" << meshPart.triangleIndices.count(); - /* - qCDebug(modelformat) << " diffuseColor =" << meshPart.diffuseColor << "mat =" << meshPart._material->getDiffuse(); - qCDebug(modelformat) << " specularColor =" << meshPart.specularColor << "mat =" << meshPart._material->getMetallic(); - qCDebug(modelformat) << " emissiveColor =" << meshPart.emissiveColor << "mat =" << meshPart._material->getEmissive(); - qCDebug(modelformat) << " emissiveParams =" << meshPart.emissiveParams; - qCDebug(modelformat) << " gloss =" << meshPart.shininess << "mat =" << meshPart._material->getRoughness(); - qCDebug(modelformat) << " opacity =" << meshPart.opacity << "mat =" << meshPart._material->getOpacity(); - */ - qCDebug(modelformat) << " materialID =" << meshPart.materialID; - /* qCDebug(modelformat) << " diffuse texture =" << meshPart.diffuseTexture.filename; - qCDebug(modelformat) << " specular texture =" << meshPart.specularTexture.filename; - */ - } - qCDebug(modelformat) << " clusters.count() =" << mesh.clusters.count(); - foreach (HFMCluster cluster, mesh.clusters) { - qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; - qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; - } - } - - qCDebug(modelformat) << " jointIndices =" << hfmModel.jointIndices; - qCDebug(modelformat) << " joints.count() =" << hfmModel.joints.size(); - - foreach (HFMJoint joint, hfmModel.joints) { - - qCDebug(modelformat) << " parentIndex" << joint.parentIndex; - qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; - qCDebug(modelformat) << " translation" << joint.translation; - qCDebug(modelformat) << " preTransform" << joint.preTransform; - qCDebug(modelformat) << " preRotation" << joint.preRotation; - qCDebug(modelformat) << " rotation" << joint.rotation; - qCDebug(modelformat) << " postRotation" << joint.postRotation; - qCDebug(modelformat) << " postTransform" << joint.postTransform; - qCDebug(modelformat) << " transform" << joint.transform; - qCDebug(modelformat) << " rotationMin" << joint.rotationMin; - qCDebug(modelformat) << " rotationMax" << joint.rotationMax; - qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; - qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; - qCDebug(modelformat) << " bindTransform" << joint.bindTransform; - qCDebug(modelformat) << " name" << joint.name; - qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; - } - - qCDebug(modelformat) << "\n"; -} diff --git a/libraries/fbx/src/OBJSerializer.h b/libraries/fbx/src/OBJSerializer.h index 6fdd95e2c3..462d32a119 100644 --- a/libraries/fbx/src/OBJSerializer.h +++ b/libraries/fbx/src/OBJSerializer.h @@ -120,6 +120,5 @@ private: // What are these utilities doing here? One is used by fbx loading code in VHACD Utils, and the other a general debugging utility. void setMeshPartDefaults(HFMMeshPart& meshPart, QString materialID); -void hfmDebugDump(const HFMModel& hfmModel); #endif // hifi_OBJSerializer_h diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index f68af2b1ce..5d57ef2c98 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -208,3 +208,166 @@ void HFMModel::computeKdops() { } } } + +void hfm::Model::debugDump() const { + qCDebug(modelformat) << "---------------- hfmModel ----------------"; + qCDebug(modelformat) << " hasSkeletonJoints =" << hasSkeletonJoints; + qCDebug(modelformat) << " offset =" << offset; + + qCDebug(modelformat) << " neckPivot = " << neckPivot; + + qCDebug(modelformat) << " bindExtents.size() = " << bindExtents.size(); + qCDebug(modelformat) << " meshExtents.size() = " << meshExtents.size(); + + qCDebug(modelformat) << "---------------- Shapes ----------------"; + qCDebug(modelformat) << " shapes.size() =" << shapes.size(); + for (const hfm::Shape& shape : shapes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " mesh =" << shape.mesh; + qCDebug(modelformat) << " meshPart =" << shape.meshPart; + qCDebug(modelformat) << " material =" << shape.material; + qCDebug(modelformat) << " joint =" << shape.joint; + qCDebug(modelformat) << " transformedExtents =" << shape.transformedExtents; + qCDebug(modelformat) << " skinDeformer =" << shape.skinDeformer; + } + + qCDebug(modelformat) << " jointIndices.size() =" << jointIndices.size(); + qCDebug(modelformat) << " joints.size() =" << joints.size(); + qCDebug(modelformat) << "---------------- Meshes ----------------"; + qCDebug(modelformat) << " meshes.size() =" << meshes.size(); + qCDebug(modelformat) << " blendshapeChannelNames = " << blendshapeChannelNames; + for (const HFMMesh& mesh : meshes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " meshpointer =" << mesh._mesh.get(); + qCDebug(modelformat) << " meshindex =" << mesh.meshIndex; + qCDebug(modelformat) << " vertices.size() =" << mesh.vertices.size(); + qCDebug(modelformat) << " colors.size() =" << mesh.colors.size(); + qCDebug(modelformat) << " normals.size() =" << mesh.normals.size(); + qCDebug(modelformat) << " tangents.size() =" << mesh.tangents.size(); + qCDebug(modelformat) << " colors.size() =" << mesh.colors.size(); + qCDebug(modelformat) << " texCoords.size() =" << mesh.texCoords.size(); + qCDebug(modelformat) << " texCoords1.size() =" << mesh.texCoords1.size(); + qCDebug(modelformat) << " clusterIndices.size() =" << mesh.clusterIndices.size(); + qCDebug(modelformat) << " clusterWeights.size() =" << mesh.clusterWeights.size(); + qCDebug(modelformat) << " modelTransform =" << mesh.modelTransform; + qCDebug(modelformat) << " parts.size() =" << mesh.parts.size(); + qCDebug(modelformat) << "---------------- Meshes (blendshapes)--------"; + for (HFMBlendshape bshape : mesh.blendshapes) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " bshape.indices.size() =" << bshape.indices.size(); + qCDebug(modelformat) << " bshape.vertices.size() =" << bshape.vertices.size(); + qCDebug(modelformat) << " bshape.normals.size() =" << bshape.normals.size(); + qCDebug(modelformat) << "\n"; + } + qCDebug(modelformat) << "---------------- Meshes (meshparts)--------"; + for (HFMMeshPart meshPart : mesh.parts) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " quadIndices.size() =" << meshPart.quadIndices.size(); + qCDebug(modelformat) << " triangleIndices.size() =" << meshPart.triangleIndices.size(); + qCDebug(modelformat) << "\n"; + } + } + qCDebug(modelformat) << "---------------- AnimationFrames ----------------"; + for (HFMAnimationFrame anim : animationFrames) { + qCDebug(modelformat) << " anim.translations = " << anim.translations; + qCDebug(modelformat) << " anim.rotations = " << anim.rotations; + } + QList mitomona_keys = meshIndicesToModelNames.keys(); + for (int key : mitomona_keys) { + qCDebug(modelformat) << " meshIndicesToModelNames key =" << key + << " val =" << meshIndicesToModelNames[key]; + } + + qCDebug(modelformat) << "---------------- Materials ----------------"; + + for (HFMMaterial mat : materials) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " mat.materialID =" << mat.materialID; + qCDebug(modelformat) << " diffuseColor =" << mat.diffuseColor; + qCDebug(modelformat) << " diffuseFactor =" << mat.diffuseFactor; + qCDebug(modelformat) << " specularColor =" << mat.specularColor; + qCDebug(modelformat) << " specularFactor =" << mat.specularFactor; + qCDebug(modelformat) << " emissiveColor =" << mat.emissiveColor; + qCDebug(modelformat) << " emissiveFactor =" << mat.emissiveFactor; + qCDebug(modelformat) << " shininess =" << mat.shininess; + qCDebug(modelformat) << " opacity =" << mat.opacity; + qCDebug(modelformat) << " metallic =" << mat.metallic; + qCDebug(modelformat) << " roughness =" << mat.roughness; + qCDebug(modelformat) << " emissiveIntensity =" << mat.emissiveIntensity; + qCDebug(modelformat) << " ambientFactor =" << mat.ambientFactor; + + qCDebug(modelformat) << " materialID =" << mat.materialID; + qCDebug(modelformat) << " name =" << mat.name; + qCDebug(modelformat) << " shadingModel =" << mat.shadingModel; + qCDebug(modelformat) << " _material =" << mat._material.get(); + + qCDebug(modelformat) << " normalTexture =" << mat.normalTexture.filename; + qCDebug(modelformat) << " albedoTexture =" << mat.albedoTexture.filename; + qCDebug(modelformat) << " opacityTexture =" << mat.opacityTexture.filename; + + qCDebug(modelformat) << " lightmapParams =" << mat.lightmapParams; + + qCDebug(modelformat) << " isPBSMaterial =" << mat.isPBSMaterial; + qCDebug(modelformat) << " useNormalMap =" << mat.useNormalMap; + qCDebug(modelformat) << " useAlbedoMap =" << mat.useAlbedoMap; + qCDebug(modelformat) << " useOpacityMap =" << mat.useOpacityMap; + qCDebug(modelformat) << " useRoughnessMap =" << mat.useRoughnessMap; + qCDebug(modelformat) << " useSpecularMap =" << mat.useSpecularMap; + qCDebug(modelformat) << " useMetallicMap =" << mat.useMetallicMap; + qCDebug(modelformat) << " useEmissiveMap =" << mat.useEmissiveMap; + qCDebug(modelformat) << " useOcclusionMap =" << mat.useOcclusionMap; + qCDebug(modelformat) << "\n"; + } + + qCDebug(modelformat) << "---------------- Joints ----------------"; + + for (const HFMJoint& joint : joints) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " shapeInfo.avgPoint =" << joint.shapeInfo.avgPoint; + qCDebug(modelformat) << " shapeInfo.debugLines =" << joint.shapeInfo.debugLines; + qCDebug(modelformat) << " shapeInfo.dots =" << joint.shapeInfo.dots; + qCDebug(modelformat) << " shapeInfo.points =" << joint.shapeInfo.points; + + qCDebug(modelformat) << " ---"; + + qCDebug(modelformat) << " parentIndex" << joint.parentIndex; + qCDebug(modelformat) << " distanceToParent" << joint.distanceToParent; + qCDebug(modelformat) << " localTransform" << joint.localTransform; + qCDebug(modelformat) << " transform" << joint.transform; + qCDebug(modelformat) << " globalTransform" << joint.globalTransform; + + qCDebug(modelformat) << " ---"; + + qCDebug(modelformat) << " translation" << joint.translation; + qCDebug(modelformat) << " preTransform" << joint.preTransform; + qCDebug(modelformat) << " preRotation" << joint.preRotation; + qCDebug(modelformat) << " rotation" << joint.rotation; + qCDebug(modelformat) << " postRotation" << joint.postRotation; + qCDebug(modelformat) << " postTransform" << joint.postTransform; + qCDebug(modelformat) << " rotationMin" << joint.rotationMin; + qCDebug(modelformat) << " rotationMax" << joint.rotationMax; + qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; + qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; + qCDebug(modelformat) << " bindTransform" << joint.bindTransform; + qCDebug(modelformat) << " name" << joint.name; + qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.hasGeometricOffset; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricTranslation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricRotation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricScaling; + qCDebug(modelformat) << "\n"; + } + + qCDebug(modelformat) << "------------- SkinDeformers ------------"; + qCDebug(modelformat) << " skinDeformers.size() =" << skinDeformers.size(); + for(const hfm::SkinDeformer& skinDeformer : skinDeformers) { + qCDebug(modelformat) << "------- SkinDeformers (Clusters) -------"; + for (const hfm::Cluster& cluster : skinDeformer.clusters) { + qCDebug(modelformat) << "\n"; + qCDebug(modelformat) << " jointIndex =" << cluster.jointIndex; + qCDebug(modelformat) << " inverseBindMatrix =" << cluster.inverseBindMatrix; + qCDebug(modelformat) << "\n"; + } + } + qCDebug(modelformat) << "\n"; +} diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ec91bd7605..87263cb72f 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -375,6 +375,8 @@ public: QMap jointRotationOffsets; std::vector shapeVertices; FlowData flowData; + + void debugDump() const; }; }; diff --git a/libraries/hfm/src/hfm/HFMSerializer.h b/libraries/hfm/src/hfm/HFMSerializer.h index d0be588d60..f28ef9f9c3 100644 --- a/libraries/hfm/src/hfm/HFMSerializer.h +++ b/libraries/hfm/src/hfm/HFMSerializer.h @@ -1,5 +1,5 @@ // -// FBXSerializer.h +// HFMSerializer.h // libraries/hfm/src/hfm // // Created by Sabrina Shanman on 2018/11/07. From 28e3fd4bc4ad04c1d6ecef1bf249743ef80745b1 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 15:28:23 -0700 Subject: [PATCH 091/547] Refactor joint transform definition --- libraries/fbx/src/FBXSerializer.cpp | 67 +++++++++++++++-------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d8d687f7ff..bf79a012a0 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1310,6 +1310,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.parentIndex = fbxModel.parentIndex; uint32_t jointIndex = (uint32_t)hfmModel.joints.size(); + // Copy default joint parameters from model + joint.translation = fbxModel.translation; // these are usually in centimeters joint.preTransform = fbxModel.preTransform; joint.preRotation = fbxModel.preRotation; @@ -1326,21 +1328,26 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.isSkeletonJoint = fbxModel.isLimbNode; hfmModel.hasSkeletonJoints = (hfmModel.hasSkeletonJoints || joint.isSkeletonJoint); + joint.name = fbxModel.name; + + // With the basic joint information, we can start to calculate compound transform information + // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate + // First, calculate the FBX-specific transform used for inverse bind transform calculations - glm::quat jointBindCombinedRotation = joint.preRotation * joint.rotation * joint.postRotation; - glm::mat4 globalTransformForCluster = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(jointBindCombinedRotation) * joint.postTransform; - if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { - const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[joint.parentIndex]; + glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; + glm::mat4 globalTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; + if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { + const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[fbxModel.parentIndex]; globalTransformForCluster = parentGlobalTransformForCluster * globalTransformForCluster; } - if (joint.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); + if (fbxModel.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); globalTransformForCluster = globalTransformForCluster * geometricOffset; } globalTransformForClusters.push_back(globalTransformForCluster); - // Then, calculate the transforms proper + // Make final adjustments to the static joint properties, and pre-calculate static transforms if (applyUpAxisZRotation && joint.parentIndex == -1) { joint.rotation *= upAxisZRotation; @@ -1350,26 +1357,38 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); joint.postTransform *= geometricOffset; } + glm::quat combinedRotation = joint.preRotation * joint.rotation * joint.postRotation; + joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; + if (joint.parentIndex == -1) { - joint.transform = hfmModel.offset * glm::translate(joint.translation) * joint.preTransform * - glm::mat4_cast(combinedRotation) * joint.postTransform; + joint.transform = hfmModel.offset * joint.localTransform; + joint.globalTransform = joint.localTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation); joint.distanceToParent = 0.0f; - } else { const HFMJoint& parentJoint = hfmModel.joints.at(joint.parentIndex); - joint.transform = parentJoint.transform * glm::translate(joint.translation) * - joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; + joint.transform = parentJoint.transform * joint.localTransform; + joint.globalTransform = parentJoint.globalTransform * joint.localTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation) * parentJoint.inverseDefaultRotation; - joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), - extractTranslation(joint.transform)); + joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), extractTranslation(joint.transform)); + + if (parentJoint.hasGeometricOffset) { + // Per the FBX standard, geometric offset should not propagate to children. + // However, we must be careful when modifying the behavior of FBXSerializer. + // So, we leave this here, as a breakpoint for debugging, or stub for implementation. + // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; + // glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); + // joint.preTransform = glm::inverse(parentGeometricOffset) * joint.preTransform; + } } joint.inverseBindRotation = joint.inverseDefaultRotation; - joint.name = fbxModel.name; joint.bindTransformFoundInCluster = false; + // Initialize animation information next + // And also get the joint poses from the first frame of the animation, if present + QString rotationID = localRotations.value(modelID); AnimationCurve xRotCurve = animationCurves.value(xComponents.value(rotationID)); AnimationCurve yRotCurve = animationCurves.value(yComponents.value(rotationID)); @@ -1396,24 +1415,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.translation = hfmModel.animationFrames[i].translations[jointIndex]; joint.rotation = hfmModel.animationFrames[i].rotations[jointIndex]; } - - } - - // Now that we've initialized the joint, we can define the transform - // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate - joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(joint.preRotation * joint.rotation * joint.postRotation) * joint.postTransform; - joint.globalTransform = joint.localTransform; - if (joint.parentIndex != -1 && joint.parentIndex < (int)jointIndex && !needMixamoHack) { - hfm::Joint& parentJoint = hfmModel.joints[joint.parentIndex]; - joint.globalTransform = parentJoint.globalTransform * joint.localTransform; - if (parentJoint.hasGeometricOffset) { - // Per the FBX standard, geometric offset should not propagate to children. - // However, we must be careful when modifying the behavior of FBXSerializer. - // So, we leave this here, as a breakpoint for debugging, or stub for implementation. - // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; - // glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); - // joint.preTransform = glm::inverse(parentGeometricOffset) * joint.preTransform; - } } hfmModel.joints.push_back(joint); From 3c078eeef64a14b6ea753c0c0244a5f5c2301047 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 29 Oct 2019 17:25:38 -0700 Subject: [PATCH 092/547] It makes more sense for joint.globalTransform to have the hfmModel.offset applied --- libraries/fbx/src/FBXSerializer.cpp | 4 ++-- libraries/fbx/src/GLTFSerializer.cpp | 2 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index bf79a012a0..79c3e1368c 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1362,8 +1362,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; if (joint.parentIndex == -1) { - joint.transform = hfmModel.offset * joint.localTransform; - joint.globalTransform = joint.localTransform; + joint.transform = joint.localTransform; + joint.globalTransform = hfmModel.offset * joint.localTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation); joint.distanceToParent = 0.0f; } else { diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 5bf1ea17ff..42306dce40 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1015,7 +1015,7 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& joint.transform = parentJoint.transform * joint.transform; joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; } else { - joint.transform = hfmModel.offset * joint.transform; + joint.transform = joint.transform; joint.globalTransform = hfmModel.offset * joint.globalTransform; } diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 93687b08b0..0026378060 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -43,13 +43,13 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m const auto& mesh = meshes[shape.mesh]; const auto& meshPart = mesh.parts[shape.meshPart]; - glm::mat4 globalTransform = joints[shape.joint].globalTransform; + glm::mat4 transform = joints[shape.joint].transform; forEachIndex(meshPart, [&](int32_t idx){ if (mesh.vertices.size() <= idx) { return; } const glm::vec3& vertex = mesh.vertices[idx]; - const glm::vec3 transformedVertex = glm::vec3(globalTransform * glm::vec4(vertex, 1.0f)); + const glm::vec3 transformedVertex = glm::vec3(transform * glm::vec4(vertex, 1.0f)); shapeExtents.addPoint(transformedVertex); }); From fe1fe6aa836521655500191d822b1f568ea14dc9 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 09:09:17 -0700 Subject: [PATCH 093/547] Fix build warnings --- libraries/fbx/src/FBXSerializer.cpp | 3 --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 1 - 2 files changed, 4 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 79c3e1368c..548d2924d4 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1653,9 +1653,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const for (hfm::Shape& shape : partShapes) { shape.skinDeformer = skinDeformerID; } - } else { - // this is a no cluster mesh - HFMJoint& joint = hfmModel.joints[transformIndex]; } // Store the parts for this mesh (or instance of this mesh, as the case may be) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 51104ee74f..e687f5e9f2 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -487,7 +487,6 @@ ExtractedMesh FBXSerializer::extractMesh(const FBXNode& object, unsigned int& me int& partIndexPlusOne = materialTextureParts[materialTexture]; if (partIndexPlusOne == 0) { data.extracted.mesh.parts.emplace_back(); - HFMMeshPart& part = data.extracted.mesh.parts.back(); // Figure out if this is the older way of defining the per-part material for baked FBX if (dracoMeshNodeVersion >= 2) { From ff908a36d60abbcedb4156ab94cbcdace8992a96 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 11:49:28 -0700 Subject: [PATCH 094/547] Define separately globalTransformForCluster and localTransformForCluster for clarity --- libraries/fbx/src/FBXSerializer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 548d2924d4..91e85cd1af 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1336,10 +1336,13 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // First, calculate the FBX-specific transform used for inverse bind transform calculations glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; - glm::mat4 globalTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; + const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; + glm::mat4 globalTransformForCluster; if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[fbxModel.parentIndex]; - globalTransformForCluster = parentGlobalTransformForCluster * globalTransformForCluster; + globalTransformForCluster = parentGlobalTransformForCluster * localTransformForCluster; + } else { + globalTransformForCluster = localTransformForCluster; } if (fbxModel.hasGeometricOffset) { glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); From 61825f2e06e81256989c45fbce33ec6f210f1710 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 11:50:03 -0700 Subject: [PATCH 095/547] Remove joint.transform self-assignment --- libraries/fbx/src/GLTFSerializer.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/fbx/src/GLTFSerializer.cpp b/libraries/fbx/src/GLTFSerializer.cpp index 42306dce40..1ec276ba5a 100755 --- a/libraries/fbx/src/GLTFSerializer.cpp +++ b/libraries/fbx/src/GLTFSerializer.cpp @@ -1015,7 +1015,6 @@ bool GLTFSerializer::buildGeometry(HFMModel& hfmModel, const hifi::VariantHash& joint.transform = parentJoint.transform * joint.transform; joint.globalTransform = joint.globalTransform * parentJoint.globalTransform; } else { - joint.transform = joint.transform; joint.globalTransform = hfmModel.offset * joint.globalTransform; } From c8bf1ddfea9f27ca17bfad055c86cf1440aac51b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 12:01:25 -0700 Subject: [PATCH 096/547] Only recalculate globalTransformForCluster if needed --- libraries/fbx/src/FBXSerializer.cpp | 42 ++++++++++++++++------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 91e85cd1af..0d126dba5b 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1330,27 +1330,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.name = fbxModel.name; + joint.bindTransformFoundInCluster = false; + // With the basic joint information, we can start to calculate compound transform information // modelIDs is ordered from parent to children, so we can safely get parent transforms from earlier joints as we iterate - // First, calculate the FBX-specific transform used for inverse bind transform calculations - - glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; - const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; - glm::mat4 globalTransformForCluster; - if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { - const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[fbxModel.parentIndex]; - globalTransformForCluster = parentGlobalTransformForCluster * localTransformForCluster; - } else { - globalTransformForCluster = localTransformForCluster; - } - if (fbxModel.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); - globalTransformForCluster = globalTransformForCluster * geometricOffset; - } - globalTransformForClusters.push_back(globalTransformForCluster); - - // Make final adjustments to the static joint properties, and pre-calculate static transforms + // Make adjustments to the static joint properties, and pre-calculate static transforms if (applyUpAxisZRotation && joint.parentIndex == -1) { joint.rotation *= upAxisZRotation; @@ -1387,7 +1372,26 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } joint.inverseBindRotation = joint.inverseDefaultRotation; - joint.bindTransformFoundInCluster = false; + // If needed, separately calculate the FBX-specific transform used for inverse bind transform calculations + + glm::mat4 globalTransformForCluster; + if (applyUpAxisZRotation && joint.parentIndex == -1) { + const glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; + const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; + if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { + const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[fbxModel.parentIndex]; + globalTransformForCluster = parentGlobalTransformForCluster * localTransformForCluster; + } else { + globalTransformForCluster = localTransformForCluster; + } + if (fbxModel.hasGeometricOffset) { + glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); + globalTransformForCluster = globalTransformForCluster * geometricOffset; + } + } else { + globalTransformForCluster = joint.transform; + } + globalTransformForClusters.push_back(globalTransformForCluster); // Initialize animation information next // And also get the joint poses from the first frame of the animation, if present From 296cd4a47b1019a096ee4b375cb43a657b00fd53 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 12:05:50 -0700 Subject: [PATCH 097/547] Rename globalTransformForCluster(s) -> transformForCluster(s) --- libraries/fbx/src/FBXSerializer.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 0d126dba5b..e6bc35da9b 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1302,8 +1302,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const bool needMixamoHack = hfmModel.applicationName == "mixamo.com"; - std::vector globalTransformForClusters; - globalTransformForClusters.reserve((size_t)modelIDs.size()); + std::vector transformForClusters; + transformForClusters.reserve((size_t)modelIDs.size()); for (const QString& modelID : modelIDs) { const FBXModel& fbxModel = fbxModels[modelID]; HFMJoint joint; @@ -1374,24 +1374,24 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // If needed, separately calculate the FBX-specific transform used for inverse bind transform calculations - glm::mat4 globalTransformForCluster; + glm::mat4 transformForCluster; if (applyUpAxisZRotation && joint.parentIndex == -1) { const glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { - const glm::mat4& parentGlobalTransformForCluster = globalTransformForClusters[fbxModel.parentIndex]; - globalTransformForCluster = parentGlobalTransformForCluster * localTransformForCluster; + const glm::mat4& parenttransformForCluster = transformForClusters[fbxModel.parentIndex]; + transformForCluster = parenttransformForCluster * localTransformForCluster; } else { - globalTransformForCluster = localTransformForCluster; + transformForCluster = localTransformForCluster; } if (fbxModel.hasGeometricOffset) { glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); - globalTransformForCluster = globalTransformForCluster * geometricOffset; + transformForCluster = transformForCluster * geometricOffset; } } else { - globalTransformForCluster = joint.transform; + transformForCluster = joint.transform; } - globalTransformForClusters.push_back(globalTransformForCluster); + transformForClusters.push_back(transformForCluster); // Initialize animation information next // And also get the joint poses from the first frame of the animation, if present @@ -1588,8 +1588,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const hfmCluster.jointIndex = (uint32_t)indexOfJointID; } - const glm::mat4& jointBindTransform = globalTransformForClusters[transformIndex]; - hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * jointBindTransform; + const glm::mat4& transformForCluster = transformForClusters[transformIndex]; + hfmCluster.inverseBindMatrix = glm::inverse(fbxCluster.transformLink) * transformForCluster; // slam bottom row to (0, 0, 0, 1), we KNOW this is not a perspective matrix and // sometimes floating point fuzz can be introduced after the inverse. From 0d1bd6afbfb834c64624e19555ed1a22b3e4c71c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 13:32:30 -0700 Subject: [PATCH 098/547] Fix wrong transformForCluster for non-root joints with Z up axis --- libraries/fbx/src/FBXSerializer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index e6bc35da9b..33b9457928 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1375,7 +1375,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const // If needed, separately calculate the FBX-specific transform used for inverse bind transform calculations glm::mat4 transformForCluster; - if (applyUpAxisZRotation && joint.parentIndex == -1) { + if (applyUpAxisZRotation) { const glm::quat jointBindCombinedRotation = fbxModel.preRotation * fbxModel.rotation * fbxModel.postRotation; const glm::mat4 localTransformForCluster = glm::translate(fbxModel.translation) * fbxModel.preTransform * glm::mat4_cast(jointBindCombinedRotation) * fbxModel.postTransform; if (fbxModel.parentIndex != -1 && fbxModel.parentIndex < (int)jointIndex && !needMixamoHack) { From 9b41fa20c65cbcab83a82eac5dc3eb9bd179401a Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 14:08:02 -0700 Subject: [PATCH 099/547] Clean up hfm joint geometric offset definition --- libraries/fbx/src/FBXSerializer.cpp | 20 ++++++++------------ libraries/hfm/src/hfm/HFM.cpp | 6 ++---- libraries/hfm/src/hfm/HFM.h | 5 +---- 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 33b9457928..33ffdb5714 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1321,10 +1321,9 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.rotationMin = fbxModel.rotationMin; joint.rotationMax = fbxModel.rotationMax; - joint.hasGeometricOffset = fbxModel.hasGeometricOffset; - joint.geometricTranslation = fbxModel.geometricTranslation; - joint.geometricRotation = fbxModel.geometricRotation; - joint.geometricScaling = fbxModel.geometricScaling; + if (fbxModel.hasGeometricOffset) { + joint.geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); + } joint.isSkeletonJoint = fbxModel.isLimbNode; hfmModel.hasSkeletonJoints = (hfmModel.hasSkeletonJoints || joint.isSkeletonJoint); @@ -1341,9 +1340,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.rotation *= upAxisZRotation; joint.translation = upAxisZRotation * joint.translation; } - if (joint.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(joint.geometricScaling, joint.geometricRotation, joint.geometricTranslation); - joint.postTransform *= geometricOffset; + if (fbxModel.hasGeometricOffset) { + joint.postTransform *= joint.geometricOffset; } glm::quat combinedRotation = joint.preRotation * joint.rotation * joint.postRotation; @@ -1361,13 +1359,12 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.inverseDefaultRotation = glm::inverse(combinedRotation) * parentJoint.inverseDefaultRotation; joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), extractTranslation(joint.transform)); - if (parentJoint.hasGeometricOffset) { + if (fbxModel.hasGeometricOffset) { // Per the FBX standard, geometric offset should not propagate to children. // However, we must be careful when modifying the behavior of FBXSerializer. // So, we leave this here, as a breakpoint for debugging, or stub for implementation. // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; - // glm::mat4 parentGeometricOffset = createMatFromScaleQuatAndPos(parentJoint.geometricScaling, parentJoint.geometricRotation, parentJoint.geometricTranslation); - // joint.preTransform = glm::inverse(parentGeometricOffset) * joint.preTransform; + // joint.preTransform = glm::inverse(parentJoint.geometricOffset) * joint.preTransform; } } joint.inverseBindRotation = joint.inverseDefaultRotation; @@ -1385,8 +1382,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const transformForCluster = localTransformForCluster; } if (fbxModel.hasGeometricOffset) { - glm::mat4 geometricOffset = createMatFromScaleQuatAndPos(fbxModel.geometricScaling, fbxModel.geometricRotation, fbxModel.geometricTranslation); - transformForCluster = transformForCluster * geometricOffset; + transformForCluster = transformForCluster * joint.geometricOffset; } } else { transformForCluster = joint.transform; diff --git a/libraries/hfm/src/hfm/HFM.cpp b/libraries/hfm/src/hfm/HFM.cpp index 5d57ef2c98..500aaaa842 100644 --- a/libraries/hfm/src/hfm/HFM.cpp +++ b/libraries/hfm/src/hfm/HFM.cpp @@ -348,13 +348,11 @@ void hfm::Model::debugDump() const { qCDebug(modelformat) << " rotationMax" << joint.rotationMax; qCDebug(modelformat) << " inverseDefaultRotation" << joint.inverseDefaultRotation; qCDebug(modelformat) << " inverseBindRotation" << joint.inverseBindRotation; + qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.bindTransformFoundInCluster; qCDebug(modelformat) << " bindTransform" << joint.bindTransform; qCDebug(modelformat) << " name" << joint.name; qCDebug(modelformat) << " isSkeletonJoint" << joint.isSkeletonJoint; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.hasGeometricOffset; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricTranslation; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricRotation; - qCDebug(modelformat) << " bindTransformFoundInCluster" << joint.geometricScaling; + qCDebug(modelformat) << " geometricOffset" << joint.geometricOffset; qCDebug(modelformat) << "\n"; } diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 87263cb72f..11b32dc4b3 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -114,10 +114,7 @@ public: bool bindTransformFoundInCluster; // geometric offset is applied in local space but does NOT affect children. - bool hasGeometricOffset; - glm::vec3 geometricTranslation; - glm::quat geometricRotation; - glm::vec3 geometricScaling; + glm::mat4 geometricOffset; // globalTransform is the transform of the joint with all parent transforms applied, plus the geometric offset glm::mat4 localTransform; From ecdca05679349f9b3add4ed9f1aa4d2f5527cd5c Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 14:28:55 -0700 Subject: [PATCH 100/547] Do not apply geometric offset to loaded FBX. Proper fix TBD --- libraries/fbx/src/FBXSerializer.cpp | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index 33ffdb5714..91989e5a90 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1340,9 +1340,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.rotation *= upAxisZRotation; joint.translation = upAxisZRotation * joint.translation; } - if (fbxModel.hasGeometricOffset) { - joint.postTransform *= joint.geometricOffset; - } glm::quat combinedRotation = joint.preRotation * joint.rotation * joint.postRotation; joint.localTransform = glm::translate(joint.translation) * joint.preTransform * glm::mat4_cast(combinedRotation) * joint.postTransform; @@ -1358,14 +1355,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const joint.globalTransform = parentJoint.globalTransform * joint.localTransform; joint.inverseDefaultRotation = glm::inverse(combinedRotation) * parentJoint.inverseDefaultRotation; joint.distanceToParent = glm::distance(extractTranslation(parentJoint.transform), extractTranslation(joint.transform)); - - if (fbxModel.hasGeometricOffset) { - // Per the FBX standard, geometric offset should not propagate to children. - // However, we must be careful when modifying the behavior of FBXSerializer. - // So, we leave this here, as a breakpoint for debugging, or stub for implementation. - // qCDebug(modelformat) << "Geometric offset encountered on non-leaf node. jointIndex: " << jointIndex << ", modelURL: " << url; - // joint.preTransform = glm::inverse(parentJoint.geometricOffset) * joint.preTransform; - } } joint.inverseBindRotation = joint.inverseDefaultRotation; @@ -1381,9 +1370,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } else { transformForCluster = localTransformForCluster; } - if (fbxModel.hasGeometricOffset) { - transformForCluster = transformForCluster * joint.geometricOffset; - } } else { transformForCluster = joint.transform; } From 4ecd25c8bbebe16cfdeb14afa5b529b61072a523 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 14:32:36 -0700 Subject: [PATCH 101/547] Add TODO for joint.geometricOffset --- libraries/hfm/src/hfm/HFM.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 11b32dc4b3..c61f03d070 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -113,7 +113,9 @@ public: bool isSkeletonJoint; bool bindTransformFoundInCluster; + // geometric offset is applied in local space but does NOT affect children. + // TODO: Apply hfm::Joint.geometricOffset to transforms in the model preparation step glm::mat4 geometricOffset; // globalTransform is the transform of the joint with all parent transforms applied, plus the geometric offset From ea373ac14cb9060293e1604420696837e0f90125 Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 30 Oct 2019 16:41:06 -0700 Subject: [PATCH 102/547] First steps towards a screenshare app --- CMakeLists.txt | 1 + cmake/macros/SetPackagingParameters.cmake | 17 +- cmake/templates/.gitignore | 1 + hifi_android.py | 357 --- interface/src/Application.cpp | 7 +- .../ScreenshareScriptingInterface.cpp | 70 + .../scripting/ScreenshareScriptingInterface.h | 19 + screenshare/.gitignore | 2 + screenshare/CMakeLists.txt | 34 + screenshare/package-lock.json | 2289 +++++++++++++++++ screenshare/package.json | 26 + screenshare/packager.js | 25 + screenshare/packager_mac.js | 26 + screenshare/src/app.js | 271 ++ screenshare/src/index.html | 55 + screenshare/src/main.js | 57 + screenshare/src/resources/Graphik-Medium.ttf | Bin 0 -> 147368 bytes screenshare/src/resources/Graphik-Regular.ttf | Bin 0 -> 144968 bytes .../src/resources/Graphik-Semibold.ttf | Bin 0 -> 52264 bytes screenshare/src/resources/Graphikbold.ttf | Bin 0 -> 147012 bytes screenshare/src/resources/test.jpg | Bin 0 -> 59147 bytes screenshare/src/styles.css | 180 ++ 22 files changed, 3073 insertions(+), 364 deletions(-) create mode 100644 cmake/templates/.gitignore delete mode 100644 hifi_android.py create mode 100644 interface/src/scripting/ScreenshareScriptingInterface.cpp create mode 100644 interface/src/scripting/ScreenshareScriptingInterface.h create mode 100644 screenshare/.gitignore create mode 100644 screenshare/CMakeLists.txt create mode 100644 screenshare/package-lock.json create mode 100644 screenshare/package.json create mode 100644 screenshare/packager.js create mode 100644 screenshare/packager_mac.js create mode 100644 screenshare/src/app.js create mode 100644 screenshare/src/index.html create mode 100644 screenshare/src/main.js create mode 100644 screenshare/src/resources/Graphik-Medium.ttf create mode 100644 screenshare/src/resources/Graphik-Regular.ttf create mode 100644 screenshare/src/resources/Graphik-Semibold.ttf create mode 100644 screenshare/src/resources/Graphikbold.ttf create mode 100644 screenshare/src/resources/test.jpg create mode 100644 screenshare/src/styles.css diff --git a/CMakeLists.txt b/CMakeLists.txt index f8fd5b7637..8011808e3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -256,6 +256,7 @@ endif() if (BUILD_CLIENT) add_subdirectory(interface) + add_subdirectory(screenshare) set_target_properties(interface PROPERTIES FOLDER "Apps") option(USE_SIXENSE "Build Interface with sixense library/plugin" OFF) diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index bf98dba29d..c7b49b17ef 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -146,23 +146,27 @@ macro(SET_PACKAGING_PARAMETERS) set(DMG_SUBFOLDER_ICON "${HF_CMAKE_DIR}/installer/install-folder.rsrc") - set(CONSOLE_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) - set(INTERFACE_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) - set(NITPICK_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) + set(CONSOLE_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) + set(INTERFACE_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) + set(SCREENSHARE_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) + set(NITPICK_INSTALL_DIR ${DMG_SUBFOLDER_NAME}) if (CLIENT_ONLY) set(CONSOLE_EXEC_NAME "Console.app") else () set(CONSOLE_EXEC_NAME "Sandbox.app") endif() - set(CONSOLE_INSTALL_APP_PATH "${CONSOLE_INSTALL_DIR}/${CONSOLE_EXEC_NAME}") + set(SCREENSHARE_EXEC_NAME "HiFiScreenshare.app") + set(SCREENSHARE_INSTALL_APP_PATH "${SCREENSHARE_INSTALL_DIR}/${SCREENSHARE_EXEC_NAME}") + set(CONSOLE_APP_CONTENTS "${CONSOLE_INSTALL_APP_PATH}/Contents") set(COMPONENT_APP_PATH "${CONSOLE_APP_CONTENTS}/MacOS/Components.app") set(COMPONENT_INSTALL_DIR "${COMPONENT_APP_PATH}/Contents/MacOS") set(CONSOLE_PLUGIN_INSTALL_DIR "${COMPONENT_APP_PATH}/Contents/PlugIns") - + + set(SCREENSHARE_APP_CONTENTS "${SCREENSHARE_INSTALL_APP_PATH}/Contents") set(INTERFACE_INSTALL_APP_PATH "${CONSOLE_INSTALL_DIR}/${INTERFACE_BUNDLE_NAME}.app") set(INTERFACE_ICON_FILENAME "${INTERFACE_ICON_PREFIX}.icns") @@ -170,9 +174,11 @@ macro(SET_PACKAGING_PARAMETERS) else () if (WIN32) set(CONSOLE_INSTALL_DIR "server-console") + set(SCREENSHARE_INSTALL_DIR "screenshare") set(NITPICK_INSTALL_DIR "nitpick") else () set(CONSOLE_INSTALL_DIR ".") + set(SCREENSHARE_INSTALL_DIR ".") set(NITPICK_INSTALL_DIR ".") endif () @@ -186,6 +192,7 @@ macro(SET_PACKAGING_PARAMETERS) set(NITPICK_ICON_FILENAME "${NITPICK_ICON_PREFIX}.ico") set(CONSOLE_EXEC_NAME "server-console.exe") + set(SCREENSHARE_EXEC_NAME "hifi-screenshare.exe") set(DS_EXEC_NAME "domain-server.exe") set(AC_EXEC_NAME "assignment-client.exe") diff --git a/cmake/templates/.gitignore b/cmake/templates/.gitignore new file mode 100644 index 0000000000..100e19467d --- /dev/null +++ b/cmake/templates/.gitignore @@ -0,0 +1 @@ +screenshare* diff --git a/hifi_android.py b/hifi_android.py deleted file mode 100644 index 0c2ea07cc7..0000000000 --- a/hifi_android.py +++ /dev/null @@ -1,357 +0,0 @@ -import hifi_utils -import json -import os -import platform -import re -import shutil -import xml.etree.ElementTree as ET -import functools -import zipfile - -print = functools.partial(print, flush=True) - -ANDROID_PACKAGE_URL = 'https://hifi-public.s3.amazonaws.com/dependencies/android/' - -ANDROID_PACKAGES = { - 'qt' : { - 'file': 'qt-5.11.1_linux_armv8-libcpp_openssl_patched.tgz', - 'versionId': '3S97HBM5G5Xw9EfE52sikmgdN3t6C2MN', - 'checksum': 'aa449d4bfa963f3bc9a9dfe558ba29df', - }, - 'bullet': { - 'file': 'bullet-2.88_armv8-libcpp.tgz', - 'versionId': 'S8YaoED0Cl8sSb8fSV7Q2G1lQJSNDxqg', - 'checksum': '81642779ccb110f8c7338e8739ac38a0', - }, - 'draco': { - 'file': 'draco_armv8-libcpp.tgz', - 'versionId': '3.B.uBj31kWlgND3_R2xwQzT_TP6Dz_8', - 'checksum': '617a80d213a5ec69fbfa21a1f2f738cd', - }, - 'glad': { - 'file': 'glad_armv8-libcpp.zip', - 'versionId': 'r5Zran.JSCtvrrB6Q4KaqfIoALPw3lYY', - 'checksum': 'a8ee8584cf1ccd34766c7ddd9d5e5449', - }, - 'gvr': { - 'file': 'gvrsdk_v1.101.0.tgz', - 'versionId': 'nqBV_j81Uc31rC7bKIrlya_Hah4v3y5r', - 'checksum': '57fd02baa069176ba18597a29b6b4fc7', - }, - 'nvtt': { - 'file': 'nvtt_armv8-libcpp.zip', - 'versionId': 'lmkBVR5t4UF1UUwMwEirnk9H_8Nt90IO', - 'checksum': 'eb46d0b683e66987190ed124aabf8910', - 'sharedLibFolder': 'lib', - 'includeLibs': ['libnvtt.so', 'libnvmath.so', 'libnvimage.so', 'libnvcore.so'] - }, - 'oculus_1.22': { - 'file': 'ovr_sdk_mobile_1.22.zip', - 'versionId': 'InhomR5gwkzyiLAelH3X9k4nvV3iIpA_', - 'checksum': '1ac3c5b0521e5406f287f351015daff8', - 'sharedLibFolder': 'VrApi/Libs/Android/arm64-v8a/Release', - 'includeLibs': ['libvrapi.so'] - }, - 'oculusPlatform': { - 'file': 'OVRPlatformSDK_v1.34.0.zip', - 'versionId': 'vbRUkkyzUAXfTGSEtuiUr_7.Fm5h5BZk', - 'checksum': '16e4c5f39520f122bc49cb6d5bb88289', - 'sharedLibFolder': 'Android/libs/arm64-v8a', - 'includeLibs': ['libovrplatformloader.so'] - }, - 'openssl': { - 'file': 'openssl-1.1.0g_armv8.tgz', - 'versionId': 'AiiPjmgUZTgNj7YV1EEx2lL47aDvvvAW', - 'checksum': 'cabb681fbccd79594f65fcc266e02f32' - }, - 'polyvox': { - 'file': 'polyvox_armv8-libcpp.tgz', - 'versionId': 'A2kbKiNhpIenGq23bKRRzg7IMAI5BI92', - 'checksum': 'dba88b3a098747af4bb169e9eb9af57e', - 'sharedLibFolder': 'lib', - 'includeLibs': ['Release/libPolyVoxCore.so', 'libPolyVoxUtil.so'], - }, - 'tbb': { - 'file': 'tbb-2018_U1_armv8_libcpp.tgz', - 'versionId': 'mrRbWnv4O4evcM1quRH43RJqimlRtaKB', - 'checksum': '20768f298f53b195e71b414b0ae240c4', - 'sharedLibFolder': 'lib/release', - 'includeLibs': ['libtbb.so', 'libtbbmalloc.so'], - }, - 'hifiAC': { - 'baseUrl': 'http://s3.amazonaws.com/hifi-public/dependencies/', - 'file': 'codecSDK-android_armv8-2.0.zip', - 'checksum': '1cbef929675818fc64c4101b72f84a6a' - }, - 'etc2comp': { - 'file': 'etc2comp-patched-armv8-libcpp.tgz', - 'versionId': 'bHhGECRAQR1vkpshBcK6ByNc1BQIM8gU', - 'checksum': '14b02795d774457a33bbc60e00a786bc' - }, - 'breakpad': { - 'file': 'breakpad.tgz', - 'versionId': '8VrYXz7oyc.QBxNia0BVJOUBvrFO61jI', - 'checksum': 'ddcb23df336b08017042ba4786db1d9e', - 'sharedLibFolder': 'lib', - 'includeLibs': {'libbreakpad_client.a'} - }, - 'webrtc': { - 'file': 'webrtc-20190626-android.tar.gz', - 'checksum': 'e2dccd3d8efdcba6d428c87ba7fb2a53' - } -} - -ANDROID_PLATFORM_PACKAGES = { - 'Darwin' : { - 'qt': { - 'file': 'qt-5.11.1_osx_armv8-libcpp_openssl_patched.tgz', - 'versionId': 'OxBD7iKINv1HbyOXmAmDrBb8AF3N.Kup', - 'checksum': 'c83cc477c08a892e00c71764dca051a0' - }, - }, - 'Windows' : { - 'qt': { - 'file': 'qt-5.11.1_win_armv8-libcpp_openssl_patched.tgz', - 'versionId': 'JfWM0P_Mz5Qp0LwpzhrsRwN3fqlLSFeT', - 'checksum': '0582191cc55431aa4f660848a542883e' - }, - } -} - -QT5_DEPS = [ - 'Qt5Concurrent', - 'Qt5Core', - 'Qt5Gui', - 'Qt5Multimedia', - 'Qt5Network', - 'Qt5OpenGL', - 'Qt5Qml', - 'Qt5Quick', - 'Qt5QuickControls2', - 'Qt5QuickTemplates2', - 'Qt5Script', - 'Qt5ScriptTools', - 'Qt5Svg', - 'Qt5WebChannel', - 'Qt5WebSockets', - 'Qt5Widgets', - 'Qt5XmlPatterns', - # Android specific - 'Qt5AndroidExtras', - 'Qt5WebView', -] - -def getPlatformPackages(): - result = ANDROID_PACKAGES.copy() - system = platform.system() - if system in ANDROID_PLATFORM_PACKAGES: - platformPackages = ANDROID_PLATFORM_PACKAGES[system] - result = { **result, **platformPackages } - return result - -def getPackageUrl(package): - url = ANDROID_PACKAGE_URL - if 'baseUrl' in package: - url = package['baseUrl'] - url += package['file'] - if 'versionId' in package: - url += '?versionId=' + package['versionId'] - return url - -def copyAndroidLibs(packagePath, appPath): - androidPackages = getPlatformPackages() - jniPath = os.path.join(appPath, 'src/main/jniLibs/arm64-v8a') - if not os.path.isdir(jniPath): - os.makedirs(jniPath) - for packageName in androidPackages: - package = androidPackages[packageName] - if 'sharedLibFolder' in package: - sharedLibFolder = os.path.join(packagePath, packageName, package['sharedLibFolder']) - if 'includeLibs' in package: - for lib in package['includeLibs']: - sourceFile = os.path.join(sharedLibFolder, lib) - destFile = os.path.join(jniPath, os.path.split(lib)[1]) - if not os.path.isfile(destFile): - print("Copying {}".format(lib)) - shutil.copy(sourceFile, destFile) - - gvrLibFolder = os.path.join(packagePath, 'gvr/gvr-android-sdk-1.101.0/libraries') - audioSoOut = os.path.join(gvrLibFolder, 'libgvr_audio.so') - if not os.path.isfile(audioSoOut): - audioAar = os.path.join(gvrLibFolder, 'sdk-audio-1.101.0.aar') - with zipfile.ZipFile(audioAar) as z: - with z.open('jni/arm64-v8a/libgvr_audio.so') as f: - with open(audioSoOut, 'wb') as of: - shutil.copyfileobj(f, of) - - audioSoOut2 = os.path.join(jniPath, 'libgvr_audio.so') - if not os.path.isfile(audioSoOut2): - shutil.copy(audioSoOut, audioSoOut2) - - baseSoOut = os.path.join(gvrLibFolder, 'libgvr.so') - if not os.path.isfile(baseSoOut): - baseAar = os.path.join(gvrLibFolder, 'sdk-base-1.101.0.aar') - with zipfile.ZipFile(baseAar) as z: - with z.open('jni/arm64-v8a/libgvr.so') as f: - with open(baseSoOut, 'wb') as of: - shutil.copyfileobj(f, of) - - baseSoOut2 = os.path.join(jniPath, 'libgvr.so') - if not os.path.isfile(baseSoOut2): - shutil.copy(baseSoOut, baseSoOut2) - -class QtPackager: - def __init__(self, appPath, qtRootPath): - self.appPath = appPath - self.qtRootPath = qtRootPath - self.jniPath = os.path.join(self.appPath, 'src/main/jniLibs/arm64-v8a') - self.assetPath = os.path.join(self.appPath, 'src/main/assets') - self.qtAssetPath = os.path.join(self.assetPath, '--Added-by-androiddeployqt--') - self.qtAssetCacheList = os.path.join(self.qtAssetPath, 'qt_cache_pregenerated_file_list') - # Jars go into the qt library - self.jarPath = os.path.realpath(os.path.join(self.appPath, '../../libraries/qt/libs')) - self.xmlFile = os.path.join(self.appPath, 'src/main/res/values/libs.xml') - self.files = [] - self.features = [] - self.permissions = [] - - def copyQtDeps(self): - for lib in QT5_DEPS: - libfile = os.path.join(self.qtRootPath, "lib/lib{}.so".format(lib)) - if not os.path.exists(libfile): - continue - self.files.append(libfile) - androidDeps = os.path.join(self.qtRootPath, "lib/{}-android-dependencies.xml".format(lib)) - if not os.path.exists(androidDeps): - continue - - tree = ET.parse(androidDeps) - root = tree.getroot() - for item in root.findall('./dependencies/lib/depends/*'): - if (item.tag == 'lib') or (item.tag == 'bundled'): - relativeFilename = item.attrib['file'] - if (relativeFilename.startswith('qml')): - continue - filename = os.path.join(self.qtRootPath, relativeFilename) - self.files.extend(hifi_utils.recursiveFileList(filename, excludeNamePattern=r"^\.")) - elif item.tag == 'jar' and 'bundling' in item.attrib and item.attrib['bundling'] == "1": - self.files.append(os.path.join(self.qtRootPath, item.attrib['file'])) - elif item.tag == 'permission': - self.permissions.append(item.attrib['name']) - elif item.tag == 'feature': - self.features.append(item.attrib['name']) - - def scanQmlImports(self): - qmlImportCommandFile = os.path.join(self.qtRootPath, 'bin/qmlimportscanner') - system = platform.system() - if 'Windows' == system: - qmlImportCommandFile += ".exe" - if not os.path.isfile(qmlImportCommandFile): - raise RuntimeError("Couldn't find qml import scanner") - qmlRootPath = hifi_utils.scriptRelative('interface/resources/qml') - qmlImportPath = os.path.join(self.qtRootPath, 'qml') - commandResult = hifi_utils.executeSubprocessCapture([ - qmlImportCommandFile, - '-rootPath', qmlRootPath, - '-importPath', qmlImportPath - ]) - qmlImportResults = json.loads(commandResult) - for item in qmlImportResults: - if 'path' not in item: - continue - path = os.path.realpath(item['path']) - if not os.path.exists(path): - continue - basePath = path - if os.path.isfile(basePath): - basePath = os.path.dirname(basePath) - basePath = os.path.normcase(basePath) - if basePath.startswith(qmlRootPath): - continue - self.files.extend(hifi_utils.recursiveFileList(path, excludeNamePattern=r"^\.")) - - def processFiles(self): - self.files = list(set(self.files)) - self.files.sort() - libsXmlRoot = ET.Element('resources') - qtLibsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'qt_libs'}) - bundledLibsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'bundled_in_lib'}) - bundledAssetsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'bundled_in_assets'}) - libPrefix = 'lib' - for sourceFile in self.files: - if not os.path.isfile(sourceFile): - raise RuntimeError("Unable to find dependency file " + sourceFile) - relativePath = os.path.relpath(sourceFile, self.qtRootPath).replace('\\', '/') - destinationFile = None - if relativePath.endswith('.so'): - garbledFileName = None - if relativePath.startswith(libPrefix): - garbledFileName = relativePath[4:] - p = re.compile(r'lib(Qt5.*).so') - m = p.search(garbledFileName) - if not m: - raise RuntimeError("Huh?") - libName = m.group(1) - ET.SubElement(qtLibsNode, 'item').text = libName - else: - garbledFileName = 'lib' + relativePath.replace('/', '_'[0]) - value = "{}:{}".format(garbledFileName, relativePath).replace('\\', '/') - ET.SubElement(bundledLibsNode, 'item').text = value - destinationFile = os.path.join(self.jniPath, garbledFileName) - elif relativePath.startswith('jar'): - destinationFile = os.path.join(self.jarPath, relativePath[4:]) - else: - value = "--Added-by-androiddeployqt--/{}:{}".format(relativePath,relativePath).replace('\\', '/') - ET.SubElement(bundledAssetsNode, 'item').text = value - destinationFile = os.path.join(self.qtAssetPath, relativePath) - - destinationParent = os.path.realpath(os.path.dirname(destinationFile)) - if not os.path.isdir(destinationParent): - os.makedirs(destinationParent) - if not os.path.isfile(destinationFile): - shutil.copy(sourceFile, destinationFile) - - tree = ET.ElementTree(libsXmlRoot) - tree.write(self.xmlFile, 'UTF-8', True) - - def generateAssetsFileList(self): - print("Implement asset file list") - # outputFilename = os.path.join(self.qtAssetPath, "qt_cache_pregenerated_file_list") - # fileList = hifi_utils.recursiveFileList(self.qtAssetPath) - # fileMap = {} - # for fileName in fileList: - # relativeFileName = os.path.relpath(fileName, self.assetPath) - # dirName, localFileName = os.path.split(relativeFileName) - # if not dirName in fileMap: - # fileMap[dirName] = [] - # fileMap[dirName].append(localFileName) - - # for dirName in fileMap: - # for localFileName in fileMap[dirName]: - # ???? - - # - # Gradle version - # - # DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile)); - # for (Map.Entry> e: directoryContents.entrySet()) { - # def entryList = e.getValue() - # fos.writeInt(e.key.length()*2); // 2 bytes per char - # fos.writeChars(e.key); - # fos.writeInt(entryList.size()); - # for (String entry: entryList) { - # fos.writeInt(entry.length()*2); - # fos.writeChars(entry); - # } - # } - - def bundle(self): - if not os.path.isfile(self.xmlFile): - print("Bundling Qt info into {}".format(self.xmlFile)) - self.copyQtDeps() - self.scanQmlImports() - self.processFiles() - # if not os.path.isfile(self.qtAssetCacheList): - # self.generateAssetsFileList() - - diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dc8e502758..002f65abc0 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -184,6 +184,7 @@ #include "scripting/AssetMappingsScriptingInterface.h" #include "scripting/ClipboardScriptingInterface.h" #include "scripting/DesktopScriptingInterface.h" +#include "scripting/ScreenshareScriptingInterface.h" #include "scripting/AccountServicesScriptingInterface.h" #include "scripting/HMDScriptingInterface.h" #include "scripting/MenuScriptingInterface.h" @@ -892,7 +893,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { #ifdef HAVE_DDE DependencyManager::set(); #endif - + DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); @@ -3448,7 +3449,7 @@ void Application::onDesktopRootContextCreated(QQmlContext* surfaceContext) { surfaceContext->setContextProperty("Users", DependencyManager::get().data()); surfaceContext->setContextProperty("UserActivityLogger", DependencyManager::get().data()); - + surfaceContext->setContextProperty("Screenshare", DependencyManager::get().data()); surfaceContext->setContextProperty("Camera", &_myCamera); #if defined(Q_OS_MAC) || defined(Q_OS_WIN) @@ -3557,6 +3558,7 @@ void Application::userKickConfirmation(const QUuid& nodeID) { } void Application::setupQmlSurface(QQmlContext* surfaceContext, bool setAdditionalContextProperties) { + surfaceContext->setContextProperty("Screenshare", DependencyManager::get().data()); surfaceContext->setContextProperty("Users", DependencyManager::get().data()); surfaceContext->setContextProperty("HMD", DependencyManager::get().data()); surfaceContext->setContextProperty("UserActivityLogger", DependencyManager::get().data()); @@ -7422,6 +7424,7 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("AvatarList", DependencyManager::get().data()); scriptEngine->registerGlobalObject("Camera", &_myCamera); + scriptEngine->registerGlobalObject("Screenshare", DependencyManager::get().data()); #if defined(Q_OS_MAC) || defined(Q_OS_WIN) scriptEngine->registerGlobalObject("SpeechRecognizer", DependencyManager::get().data()); diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp new file mode 100644 index 0000000000..77c00f9bf4 --- /dev/null +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -0,0 +1,70 @@ +// +// ScreenshareScriptingInterface.cpp +// interface/src/scripting/ +// +// Created by Milad Nazeri on 2019-10-23. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#include "ScreenshareScriptingInterface.h" +#include +#include +#include +#include +#include + + +ScreenshareScriptingInterface::ScreenshareScriptingInterface() { + +}; + +void ScreenshareScriptingInterface::startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey, QString fileLocation) { + if (QThread::currentThread() != thread()) { + // We must start a new QProcess from the main thread. + QMetaObject::invokeMethod( + this, "startScreenshare", + Q_ARG(QString, displayName), + Q_ARG(QString, userName), + Q_ARG(QString, token), + Q_ARG(QString, sessionID), + Q_ARG(QString, apiKey), + Q_ARG(QString, fileLocation) + ); + return; + } + + qDebug() << "ZRF: Inside startScreenshare(). `SCREENSHARE_EXE_PATH`:" << SCREENSHARE_EXE_PATH; + + if (displayName.isEmpty() || userName.isEmpty() || token.isEmpty() || sessionID.isEmpty() || apiKey.isEmpty()) { + qDebug() << "Screenshare executable can't launch without connection info."; + return; + } + + QStringList arguments; + arguments << "--userName=" + userName; + arguments << "--displayName=" + displayName; + arguments << "--token=" + token; + arguments << "--apiKey=" + apiKey; + arguments << "--sessionID=" + sessionID; + + QProcess* electronProcess = new QProcess(this); + + connect(electronProcess, &QProcess::errorOccurred, + [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); + connect(electronProcess, &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); + connect(electronProcess, &QProcess::stateChanged, + [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); + connect(electronProcess, QOverload::of(&QProcess::finished), + [=](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + }); + + // Note for Milad: + // We'll have to have equivalent lines of code for MacOS. +#ifdef Q_OS_WIN + electronProcess->start(fileLocation, arguments); +#endif +}; diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h new file mode 100644 index 0000000000..6ad0afb424 --- /dev/null +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -0,0 +1,19 @@ +#ifndef hifi_ScreenshareScriptingInterface_h +#define hifi_ScreenshareScriptingInterface_h + +#include +#include + +class ScreenshareScriptingInterface : public QObject, public Dependency { + Q_OBJECT +public: + ScreenshareScriptingInterface(); + // This is a note for Milad: + // The value of this `SCREENSHARE_EXE_PATH` string will have to be changed based on the operating system we're using. + // The binary should probably be stored in a path like this one. + const QString SCREENSHARE_EXE_PATH{ "C:\\hifi\\hiFi\\screenshare\\screenshare-win32-x64\\screenshare.exe" }; + + Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey, QString fileLocation); +}; + +#endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file diff --git a/screenshare/.gitignore b/screenshare/.gitignore new file mode 100644 index 0000000000..91da5ad0b8 --- /dev/null +++ b/screenshare/.gitignore @@ -0,0 +1,2 @@ +screenshare-*/ +screenshare*.zip \ No newline at end of file diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt new file mode 100644 index 0000000000..6790033d94 --- /dev/null +++ b/screenshare/CMakeLists.txt @@ -0,0 +1,34 @@ +set(TARGET_NAME screenshare) +add_custom_target(${TARGET_NAME}-npm-install + COMMAND npm install + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) +add_custom_target(${TARGET_NAME} + COMMAND npm run packager + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${TARGET_NAME}-npm-install +) + +set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "screenshare") +set_target_properties(${TARGET_NAME}-npm-install PROPERTIES FOLDER "hidden/screenshare") + +if (WIN32) + set(PACKAGED_SCREENSHARE_FOLDER "screenshare-win32-x64") + set(SCREENSHARE_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGED_SCREENSHARE_FOLDER}") + install( + DIRECTORY "${SCREENSHARE_DESTINATION}/" + DESTINATION ${SCREENSHARE_INSTALL_DIR} + ) + + set(EXECUTABLE_PATH "${SCREENSHARE_DESTINATION}/${SCREENSHARE_EXEC_NAME}") + optional_win_executable_signing() +elseif (APPLE) + set(PACKAGED_SCREENSHARE_FOLDER "screenshare-darwin-x64/${SCREENSHARE_EXEC_NAME}") + install( + DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGED_SCREENSHARE_FOLDER}" + USE_SOURCE_PERMISSIONS + DESTINATION ${SCREENSHARE_INSTALL_DIR} + ) +endif() + +set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) diff --git a/screenshare/package-lock.json b/screenshare/package-lock.json new file mode 100644 index 0000000000..134afffa24 --- /dev/null +++ b/screenshare/package-lock.json @@ -0,0 +1,2289 @@ +{ + "name": "highfidelity_screenshare", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@electron/get": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.5.0.tgz", + "integrity": "sha512-tafxBz6n08G6SX961F/h8XFtpB/DdwRvJJoDeOH9x78jDSCMQ2G/rRWqSwLFp9oeMFBJf0Pf5Kkw6TKt5w9TWg==", + "dev": true, + "requires": { + "debug": "4.1.1", + "env-paths": "2.2.0", + "fs-extra": "8.1.0", + "got": "9.6.0", + "sanitize-filename": "1.6.3", + "sumchecker": "3.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "sumchecker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.0.tgz", + "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==", + "dev": true, + "requires": { + "debug": "4.1.1" + } + } + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "1.0.2" + } + }, + "@types/node": { + "version": "10.14.21", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.21.tgz", + "integrity": "sha512-nuFlRdBiqbF+PJIEVxm2jLFcQWN7q7iWEJGsBV4n7v1dbI9qXB8im2pMMKMCUZe092sQb5SQft2DHfuQGK5hqQ==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "2.0.1", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.4.1", + "uri-js": "4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "1.9.3" + } + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "asar": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/asar/-/asar-2.0.1.tgz", + "integrity": "sha512-Vo9yTuUtyFahkVMFaI6uMuX6N7k5DWa6a/8+7ov0/f8Lq9TVR0tUjzSzxQSxT1Y+RJIZgnP7BVb6Uhi+9cjxqA==", + "dev": true, + "requires": { + "chromium-pickle-js": "0.2.0", + "commander": "2.20.3", + "cuint": "0.2.2", + "glob": "7.1.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "tmp-promise": "1.1.0" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "2.1.2" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "1.1.0", + "buffer-fill": "1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "5.1.0", + "http-cache-semantics": "4.0.3", + "keyv": "3.1.0", + "lowercase-keys": "2.0.0", + "normalize-url": "4.5.0", + "responselike": "1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "2.1.1", + "map-obj": "1.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "requires": { + "string-width": "3.1.0", + "strip-ansi": "5.2.0", + "wrap-ansi": "5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "4.1.0" + } + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "1.0.1" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "1.1.1", + "inherits": "2.0.4", + "readable-stream": "2.3.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "1.0.0", + "process-nextick-args": "2.0.1", + "safe-buffer": "5.1.2", + "string_decoder": "1.1.1", + "util-deprecate": "1.0.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-zip": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/cross-zip/-/cross-zip-2.1.6.tgz", + "integrity": "sha512-xLIETNkzRcU6jGRzenJyRFxahbtP4628xEKMTI/Ql0Vu8m4h8M7uRLVi7E5OYHuJ6VQPsG4icJumKAFUvfm0+A==", + "dev": true, + "requires": { + "rimraf": "3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "7.1.4" + } + } + } + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "1.0.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "1.0.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "0.1.1", + "safer-buffer": "2.1.2" + } + }, + "electron": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/electron/-/electron-6.0.12.tgz", + "integrity": "sha512-70ODZa1RP6K0gE9IV9YLCXPSyhLjXksCuYSSPb3MljbfwfHo5uE6X0CGxzm+54YuPdE2e7EPnWZxOOsJYrS5iQ==", + "dev": true, + "requires": { + "@types/node": "10.14.21", + "electron-download": "4.1.1", + "extract-zip": "1.6.7" + } + }, + "electron-download": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", + "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", + "dev": true, + "requires": { + "debug": "3.2.6", + "env-paths": "1.0.0", + "fs-extra": "4.0.3", + "minimist": "1.2.0", + "nugget": "2.0.1", + "path-exists": "3.0.0", + "rc": "1.2.8", + "semver": "5.7.1", + "sumchecker": "2.0.2" + } + }, + "electron-notarize": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.1.1.tgz", + "integrity": "sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg==", + "dev": true, + "requires": { + "debug": "4.1.1", + "fs-extra": "8.1.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + } + } + }, + "electron-osx-sign": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.14.tgz", + "integrity": "sha512-72vtrz9I3dOeFDaNvO5thwIjrimDiXMmYEbN0hEBqnvcSSMOWugjim2wiY9ox3dhuBFUhxp3owmuZCoH3Ij08A==", + "dev": true, + "requires": { + "bluebird": "3.7.1", + "compare-version": "0.1.2", + "debug": "2.6.9", + "isbinaryfile": "3.0.3", + "minimist": "1.2.0", + "plist": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "electron-packager": { + "version": "14.0.6", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-14.0.6.tgz", + "integrity": "sha512-X+ikV+TnnNkIrK93vOjsjPeykCQBFxBS7LXKMTE1s62rXWirGMdjWL+edVkBOMRkH0ROJyFmWM28Dpj6sfEg+A==", + "dev": true, + "requires": { + "@electron/get": "1.5.0", + "asar": "2.0.1", + "cross-zip": "2.1.6", + "debug": "4.1.1", + "electron-notarize": "0.1.1", + "electron-osx-sign": "0.4.14", + "fs-extra": "8.1.0", + "galactus": "0.2.1", + "get-package-info": "1.0.0", + "junk": "3.1.0", + "parse-author": "2.0.0", + "plist": "3.0.1", + "rcedit": "2.0.0", + "resolve": "1.12.0", + "sanitize-filename": "1.6.3", + "semver": "6.3.0", + "yargs-parser": "13.1.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "env-paths": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "1.2.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "flora-colossus": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", + "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", + "dev": true, + "requires": { + "debug": "4.1.1", + "fs-extra": "7.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + } + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.8", + "mime-types": "2.1.24" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "jsonfile": "4.0.0", + "universalify": "0.1.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "galactus": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz", + "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", + "dev": true, + "requires": { + "debug": "3.2.6", + "flora-colossus": "1.0.1", + "fs-extra": "4.0.3" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", + "dev": true, + "requires": { + "bluebird": "3.7.1", + "debug": "2.6.9", + "lodash.get": "4.4.2", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.5.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.4", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "0.14.0", + "@szmarczak/http-timer": "1.1.2", + "cacheable-request": "6.1.0", + "decompress-response": "3.3.0", + "duplexer3": "0.1.4", + "get-stream": "4.1.0", + "lowercase-keys": "1.0.1", + "mimic-response": "1.0.1", + "p-cancelable": "1.1.0", + "to-readable-stream": "1.0.0", + "url-parse-lax": "3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "6.10.2", + "har-schema": "2.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==", + "dev": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.16.1" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "1.2.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.2.2" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "0.4.1", + "signal-exit": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "2.1.0", + "decamelize": "1.2.0", + "loud-rejection": "1.6.0", + "map-obj": "1.0.1", + "minimist": "1.2.0", + "normalize-package-data": "2.5.0", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "redent": "1.0.0", + "trim-newlines": "1.0.0" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.11" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "2.8.5", + "resolve": "1.12.0", + "semver": "5.7.1", + "validate-npm-package-license": "3.0.4" + } + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "2.6.9", + "minimist": "1.2.0", + "pretty-bytes": "1.0.4", + "progress-stream": "1.2.0", + "request": "2.88.0", + "single-line-log": "1.1.2", + "throttleit": "0.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.3.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.2" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.2.2", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "requires": { + "base64-js": "1.3.1", + "xmlbuilder": "9.0.7", + "xmldom": "0.1.27" + } + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "4.0.1", + "meow": "3.7.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "0.1.4", + "through2": "0.2.3" + } + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "1.4.4", + "once": "1.4.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "0.6.0", + "ini": "1.3.5", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } + }, + "rcedit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.0.0.tgz", + "integrity": "sha512-XcFGyEBjhWSsud+R8elwQtGBbVkCf7tAiad+nXo5jc6l2rMf46NfGNwjnmBNneBIZDfq+Npf8lwP371JTONfrw==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.5.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.4", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "2.1.0", + "strip-indent": "1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.8.0", + "caseless": "0.12.0", + "combined-stream": "1.0.8", + "extend": "3.0.2", + "forever-agent": "0.6.1", + "form-data": "2.3.3", + "har-validator": "5.1.3", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.24", + "oauth-sign": "0.9.0", + "performance-now": "2.1.0", + "qs": "6.5.2", + "safe-buffer": "5.2.0", + "tough-cookie": "2.4.3", + "tunnel-agent": "0.6.0", + "uuid": "3.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "1.0.6" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "7.1.4" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "1.0.2" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "1.0.2" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "3.0.0", + "spdx-license-ids": "3.0.5" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "2.2.0", + "spdx-license-ids": "3.0.5" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "0.2.4", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.2", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.2", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "safer-buffer": "2.1.2", + "tweetnacl": "0.14.5" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "2.6.9" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "1.1.14", + "xtend": "2.1.2" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "2.7.1" + } + }, + "tmp-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz", + "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==", + "dev": true, + "requires": { + "bluebird": "3.7.1", + "tmp": "0.1.0" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "1.4.0", + "punycode": "1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "1.0.4" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.2.0" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "2.1.1" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "2.0.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "3.1.0", + "spdx-expression-parse": "3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "3.2.1", + "string-width": "3.1.0", + "strip-ansi": "5.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "0.4.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + }, + "yargs": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", + "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", + "requires": { + "cliui": "5.0.0", + "decamelize": "1.2.0", + "find-up": "3.0.0", + "get-caller-file": "2.0.5", + "require-directory": "2.1.1", + "require-main-filename": "2.0.0", + "set-blocking": "2.0.0", + "string-width": "3.1.0", + "which-module": "2.0.0", + "y18n": "4.0.0", + "yargs-parser": "15.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "3.0.0", + "path-exists": "3.0.0" + } + }, + "p-limit": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "requires": { + "p-try": "2.2.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "2.2.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "7.0.3", + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "4.1.0" + } + }, + "yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "requires": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "5.3.1", + "decamelize": "1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "1.0.1" + } + } + } +} diff --git a/screenshare/package.json b/screenshare/package.json new file mode 100644 index 0000000000..66b9e2e7ee --- /dev/null +++ b/screenshare/package.json @@ -0,0 +1,26 @@ +{ + "name": "highfidelity_screenshare", + "version": "1.0.0", + "description": "High Fidelity Screenshare", + "main": "src/main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/highfidelity/hifi.git" + }, + "author": "High Fidelity", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/highfidelity/hifi/issues" + }, + "homepage": "https://github.com/highfidelity/hifi#readme", + "devDependencies": { + "electron": "^6.0.12", + "electron-packager": "^14.0.6" + }, + "dependencies": { + "yargs": "^14.2.0" + } +} diff --git a/screenshare/packager.js b/screenshare/packager.js new file mode 100644 index 0000000000..5a150a563a --- /dev/null +++ b/screenshare/packager.js @@ -0,0 +1,25 @@ +var packager = require('electron-packager'); +var options = { + dir: __dirname, + name: "screenshare", + version: "0.1.0", + overwrite: true, + prune: true, + arch: "x64", + platform: "win32", + CompanyName: "High Fidelity, Inc.", + FileDescription: "High Fidelity Screenshare", + OriginalFilename: "hifi-screenshare.exe", + ignore: "electron-packager|README.md|CMakeLists.txt|packager.js|.gitignore" +}; + + +// call the packager to produce the executable +packager(options, function(error, appPath) { + if (error) { + console.error("There was an error writing the packaged console: " + error.message); + process.exit(1); + } else { + console.log("Wrote new app to " + appPath); + } +}); diff --git a/screenshare/packager_mac.js b/screenshare/packager_mac.js new file mode 100644 index 0000000000..7c9c446bd5 --- /dev/null +++ b/screenshare/packager_mac.js @@ -0,0 +1,26 @@ +var packager = require('electron-packager'); +var options = { + dir: __dirname, + name: "screenshare", + version: "0.1.0", + overwrite: true, + prune: true, + arch: "x64", + platform: "darwin", + CompanyName: "High Fidelity, Inc.", + FileDescription: "High Fidelity Screenshare", + OriginalFilename: "screenshare.exe", + ignore: "electron-packager|README.md|CMakeLists.txt|packager.js|.gitignore" +}; + +options["app-bundle-id"] = "com.highfidelity.screenshare"; + +// call the packager to produce the executable +packager(options, function(error, appPath) { + if (error) { + console.error("There was an error writing the packaged console: " + error.message); + process.exit(1); + } else { + console.log("Wrote new app to " + appPath); + } +}); diff --git a/screenshare/src/app.js b/screenshare/src/app.js new file mode 100644 index 0000000000..d724e2baf1 --- /dev/null +++ b/screenshare/src/app.js @@ -0,0 +1,271 @@ +// Helpers + function handleError(error) { + if (error) { + console.error(error); + } + } + +/* SOURCE EXAMPLE + [23584:1028/110448.237:INFO:CONSOLE(67)] "{ + "id": "screen:0:0", + "name": "Screen 1", + "thumbnail": {}, + "display_id": "2528732444", + "appIcon": null + }" +*/ + +var isBrowser = false; +const imageWidth = 265; +const imageHeight = 165; + +var images = 10; +var testImage = "resources/test.jpg"; +function MakeSource(name, thumbnail, id, newWidth, newHeight){ + this.name = name; + this.thumbnail = thumbnail; + this.id = id; + this.width = newWidth; + this.height = newHeight; +} + +let testSources = []; + +for (let index = 0; index < images; index++) { + let test = new MakeSource("REALLY LONG LONG title" + index, testImage, index, imageWidth, imageHeight); + testSources.push(test); +} + +// if (!isBrowser) { + const electron = require('electron'); +// } + +let currentScreensharePickID = ""; +function screensharePicked(id){ + currentScreensharePickID = id; + // console.log(currentScreensharePickID); + document.getElementById("share_pick").innerHTML = ""; + addSource(sourceMap[id], "share_pick"); + togglePage(); +} + + + +function screenConfirmed(isConfirmed){ + if (isConfirmed === true){ + onAccessApproved(currentScreensharePickID); + } + togglePage(); +} + + +let currentPage = "mainPage"; +function togglePage(){ + if (currentPage === "mainPage") { + currentPage = "confirmationPage"; + document.getElementById("select_screen").style.display = "none"; + document.getElementById("confirmation_screen").style.display = "block"; + } else { + currentPage = "mainPage"; + document.getElementById("select_screen").style.display = "block"; + document.getElementById("confirmation_screen").style.display = "none"; + } +} + +// UI + function addSource(source, type) { + let sourceBody = document.createElement('div') + let thumbnail = isBrowser ? source.thumbnail : source.thumbnail.toDataURL(); + sourceBody.classList.add("box") + let circle = `
` + sourceBody.innerHTML = ` +
+ ${type === "selects" ? circle : ""} + ${source.name} +
+
+ +
+ ` + // console.log(sourceBody.innerHTML); + if (type === "selects") { + document.getElementById("selects").appendChild(sourceBody); + } else { + document.getElementById("share_pick").appendChild(sourceBody); + } + } + + + let sourceMap = {}; + function showSources() { + document.getElementById("selects").innerHTML=""; + if (isBrowser) { + for (let source of testSources) { + sourceMap[source.id] = source; + addSource(source, "selects"); + } + } else { + electron.desktopCapturer.getSources({ + types:['window', 'screen'], + thumbnailSize: { + width: imageWidth, + height: imageHeight + } + }, (error, sources) => { + if (error) { + console.log("Error getting sources", error); + } + + for (let source of sources) { + sourceMap[source.id] = source; + addSource(source, "selects"); + } + }); + } + } + + + let localStream; + function stopSharing(){ + desktopSharing = false; + + if (localStream) { + localStream.getTracks()[0].stop(); + localStream = null; + } + + document.getElementById('screenshare').style.display = "none"; + stopTokBoxPublisher(); + } + + function gotStream(stream) { + localStream = stream; + startTokboxPublisher(localStream); + + stream.onended = () => { + if (desktopSharing) { + toggle(); + } + }; + } + + + function onAccessApproved(desktop_id) { + if (!desktop_id) { + console.log('Desktop Capture access rejected.'); + return; + } + showSources(); + document.getElementById('screenshare').style.visibility = "block"; + desktopSharing = true; + console.log("Desktop sharing started.. desktop_id:" + desktop_id); + navigator.webkitGetUserMedia({ + audio: false, + video: { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: desktop_id, + minWidth: 1280, + maxWidth: 1280, + minHeight: 720, + maxHeight: 720 + } + } + }, gotStream, handleError); + } + +// Tokbox + + function initializeTokboxSession() { + console.log("\n\n\n\n #$######\n TRYING TO START SESSION") + session = OT.initSession(apiKey, sessionId); + + session.on('sessionDisconnected', (event) => { + console.log('You were disconnected from the session.', event.reason); + }); + + // Connect to the session + session.connect(token, (error) => { + if (error) { + handleError(error); + } + }); + } + + + var publisher; + function startTokboxPublisher(stream){ + publisher = document.createElement("div"); + console.log("publisher pushed") + + var publisherOptions = { + videoSource: stream.getVideoTracks()[0], + audioSource: stream.getAudioTracks()[0], + insertMode: 'append', + width: 1280, + height: 720 + }; + + publisher = OT.initPublisher(publisher, publisherOptions, function(error){ + if (error) { + console.log("ERROR: " + error); + } else { + session.publish(publisher, function(error) { + if (error) { + console.log("ERROR FROM Session.publish: " + error); + return; + } + console.log("MADE IT TO PUBLISH") + }) + } + }); + } + + + function stopTokBoxPublisher(){ + console.log("TOK BOX STOPPED!") + publisher.destroy(); + } + + +// main TODO: + // const {ipcRenderer} = ipcRenderer; + // let apiKey; + // let sessionId; + // let token; + // let session; + // ipcRenderer.on('connectionInfo', function(event, message){ + // console.log("event", event); + // console.log("MESSAGE FROM MAIN", message); + // const connectionInfo = JSON.parse(message); + // apiKey = connectionInfo.apiKey; + // sessionId = connectionInfo.sessionId; + // token = connectionInfo.token; + // initializeTokboxSession(); + // }) + + function startup(){ + console.log("\n\n IN STARTUP \n\n") + // Make an Ajax request to get the OpenTok API key, session ID, and token from the server + // TODO: + fetch(process.env.hifiScreenshareURL) + .then(function(res) { + return res.json(); + }) + .then(function fetchJson(json) { + apiKey = json.apiKey; + sessionId = json.sessionId; + token = json.token; + + initializeTokboxSession(); + }) + .catch(function catchErr(error) { + handleError(error); + alert('Failed to get opentok sessionId and token. Make sure you have updated the config.js file.'); + }); + } + + document.addEventListener("DOMContentLoaded", () => { + startup(); + showSources(); + }) \ No newline at end of file diff --git a/screenshare/src/index.html b/screenshare/src/index.html new file mode 100644 index 0000000000..3ba1fa8d8e --- /dev/null +++ b/screenshare/src/index.html @@ -0,0 +1,55 @@ + + + + + +
+

Share your screen

+

Please select the content you'd like to share.

+
+ +
+
+
+ +
+ + + + + + + + + + +
+ +
+
+
+ + + + + \ No newline at end of file diff --git a/screenshare/src/main.js b/screenshare/src/main.js new file mode 100644 index 0000000000..c8f7484169 --- /dev/null +++ b/screenshare/src/main.js @@ -0,0 +1,57 @@ +'use strict'; + +var userName, displayName, token, apiKey, sessionID; + +const {app, BrowserWindow, ipcMain} = require('electron'); +const gotTheLock = app.requestSingleInstanceLock() +const argv = require('yargs').argv; +// ./screenshare.exe --userName=miladN ... + +const connectionInfo = { + userName: argv.userName || "testName", + displayName: argv.displayName || "displayName", + token: argv.token || "token", + apiKey: argv.apiKey || "apiKey", + sessionID: argv.sessionID || "sessionID" +} + +if (!gotTheLock) { +// log.warn("Another instance of the screenshare is already running - this instance will quit."); + app.exit(0); + return; +} + +var window; +function createWindow(){ + const zoomFactor = 1.0; + window = new BrowserWindow({ + backgroundColor: "#000000", + width: 1280 * zoomFactor, + height: 720 * zoomFactor, + center: true, + frame: true, + useContentSize: true, + zoomFactor: zoomFactor, + resizable: false, + alwaysOnTop: true, // TRY + webPreferences: { + nodeIntegration: true + }, + devTools: true + }); + window.loadURL('file://' + __dirname + '/index.html'); + window.setMenu(null); + + window.once('ready-to-show', () => { + window.show(); + window.webContents.openDevTools() + }) +} + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +app.on('ready', function() { + createWindow(); + console.log("sending info"); + window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)) +}); \ No newline at end of file diff --git a/screenshare/src/resources/Graphik-Medium.ttf b/screenshare/src/resources/Graphik-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9d766a1d761532beceac5968ca4d0186dd1d48ce GIT binary patch literal 147368 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 literal 0 HcmV?d00001 diff --git a/screenshare/src/resources/Graphik-Semibold.ttf b/screenshare/src/resources/Graphik-Semibold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b0ee02248d4f672b646884c768921992b72563ab GIT binary patch literal 52264 zcmb@v2V9g_)<1sEePD(rFbu6#LBJD?CJz~!vg>UOA3pMA&Nu*^j`sh;Oe@BGTr-(%*%(&tJOYwjDKU0DJ_%Wqs$umgaXeA9@?Ws|mmVt;GF|>ZU}i#Ea*2jdSzY(ckXKd zfcJll{SGOb+UnF!#|wo1mc0W`?bbk;>U7fTWA$;`%38AfM|AWzLw`(B;sU5)}P7i5Ql#P9jO5ivKn-x55|%<(2?B`N8(`|SqG714@6=tWT6>6aRB0p z4;XO(Qi(4FaCd-#ybT(%A1cWeh$QbpC8>i-Vu4D|10u-{sKg?u!Pmh+&O#+ggi3A? zRFYqzl1qe0vRL|l94hJ9$t3V6|AZ295!75iXvqISFxduUNE`Uz7AV6r;D%cuinu`t zp0rxA4|tLS!DKDul6=sSwV)^Epu;7gCTl=P+8`GLAPoboRuTib=nsY5U64zEPukh@ zx%3^p6LRra7>g@GO=d$T$plX>9lS|4sE7qT@n`VFgAj@esK$d3iB}*L-2gBP3P>sF z$Z7~6^Ff7fP)&*<2>ZaFD~DKo0|N0Yh$2o9f_-4dry-fG!+20&BdD_>=44&pCr1@r7_kXG-fKAMS6UVzj4pxBFlbcr)4;S%1YM>lN}N zgvfNKw735dKQM5Kpl7tF^p`)B_KTsC%!6D;XG-fKAFdaI8STqKXaB(f>#rC9g&1J{ zCk9wQVf2>iPHAudiGpy_4t|XGl>YL^0-kJb>GuK%!8Gupd_vcX@x;&IN#DgCFb-QG zhI|bn5`V^19>s?tfP_ONHv`hRzd$7S56}@U#BoO;4u67B{0U+)6hbi+V(DDrfYpaQ z2V*f6qA(RASi5?N#-AYC=_CZQ`Sd|B_OUfiz&_~4KB&h&D8@c$l>XL&>rMyh(l>}*{t~r%C`6J7o9S_i- zsT|sW$PE}{lglD-!y<6UA~0i-^{Ty`Qdwo6JW*aL?~K4ddM3M6eq|Y^a!fzHl04Ug zzfG=XzOwsH<=p4?u|9YOU3`a?M0359G8&RIWV--q+BAJZLof(h@0P^Lqu9uYqQRG-Kn8&Au;Eq$kY z#{R>2UDi32zt4i2Yy~yh0&30~{5cQs=c2)n3kEHh3a%W2hUyynAxj~IJOBZt3;fAc zP?0;ph$lc#(!q<&f?%=(e90sTCTk#uM1wzB2;pQ67)b+YNCS)^4G=&YAcQoq-%TS8 z5KI~%h%~@B(f|?CCz&)rIB5VqX@E#h2VvaT?74i>0C}VVibw-wkp`$D4KSHBzzos= zjnePRNCOm*2G({f#12mHcFi7L1 zzmFpgkU$zBi8MeA9VhOBu}rVZI(Gqh;$-l}`7jnU!3Sr9AI=9Yd(Is+w&xatCpLgD zF0gxU!GG~wBZRXL?f;LoD?fi0jBo{vWC`f86V&7oqXm0#A6iKOv5;5EKY}+0|EzP>`Rc~%f_0&~2wkF% z*QM(Ubr0!7^%M0oLw!O^Lz_Zd!(RTKSgq6&g5z)+&cX#u!+rQ0@h2AY3VAk zeu>}Uck~JIEBond{D%E7_-`pJgXPc-D_|w8g4M7F)eF*pwQzzH}Br{FZ)3uoXy zxE~&X2jL-j7|z0<;1PHf&cS1F9{vm$;Bj~Yo`k31X?O-Mf`C~tfSF*$Y$TY6PFR4> zScn|vqXLWISNILxa6Brp7+tXx-LVW^ums0o1$tmPdSMlMVkN3@0(xUL`r$y zgnDd-x8Q#;3}<5m&cSeOMI*Lh6wbv+Y==wmJjUXDjKNNf!+FT#5=_J{jK>9-jEgY= z7h)1FLK7~-R9pe?VLGnD3|tK_z>5f&gNV6kz!r?g4)_$lg3sZf@CAGcpTWP-g58*c zOVNzWF%4J3Wq21pf_LDr@DF$y{tmC;fABi4$BnoSH()Pr0tKOxKpBRfLG1sb&4iat z`O*G~Z*t(oq)7=b;0kWw4jwQDJi!aRK?Odb24B#CA85fJ0$?nRgFpy^U~D2Rp_h=n+ahXhE3BuEAxQosaeus|xLK{{kWCS*Z2Z zhGTFy9ETHd51fS4a0c#WJo+F!zdQ{hE;5B>)4!w2vouEiesJ1m2b;2-cYtcPu|4z|M~ne6851}rea!kXXUDweNj$whQ#`9YyFBmqe8}?^&yT!_m#AJSN>$lwR8Lg9cg7%R1FWMXa$^J|IxA`COKkxrhfPX-3!1{o* z0iTZ5jh#8RckHucKOg5ZE_vLXalPZtjr(}q^+4~y+Q5B*=L6ph{37tTAkU!WpxU6$ zpiM#d27MIl9h@G#K6qE~q2RN@F9p97{Aq}HNN~u+kl7(iL;6DQ4mqdu(FN-gbrW>$ zx*px#x^ud}=swbYqr0wG=zaBOeWAWqKU=?CzgvG?e@XwT{+H0e(CpCZpvKG*d6gm#A^{>M*L>< zH)a}}jO&eujE@*!GkzWE5*Zs=5xFJunaC?q$x%&F`=TyI3DFayZ;!ql{ZoubOhin5 zOmED6F(1bI#FoY`h&>ehPVDu#v2o_OiE+#0F2r4lkB?sy|8@c-q$IQ_98Y*J(I>Gq zu{ZI2;x9?rNxexgC3_^Blk1b0CT~kVm;8S6PrMJG$Y=7k{2acQe}I377g8cpW~S^* zxny!Og_;UYvrKoJelRDRJIsCNC(IvPJS=9*RLeHYCCl~H;MC&OHL1r_FQtBz`deCX z+Jv;;wENP2O;1lhmEo2#GvlF*uQMYv7iZp=`CXPzR%%vh)`F}PSD z;f`&Ir`wNyqgvAr~O?at>)CAT<*QC}I z*VNa{saaohxaMrl3pJN(zO41Ht*D(|+gZD+_O05tfI5o`tk>W_q#s;i41ix~gek?G z?5FWHay<7^g~?Q5I_P)8&owzLJUKZ$>;hg9s6!11B;t$ML;8WEekwJ`v;P&Scd4hV zclqFp=ptOFANFh*v=AiyFb+Zh!Yu}+!D2A+?87U0`q3EJhg0$vbkUY;=V;5Oc}{53 zwEC87S~XQOJ?my`S9z9uwj4crbV<{~?c29+U)Z$dD0Ve90S7wkO47i^K?sCHEP%5q z9*ul3YEAKIN-!&q&B8IG4t2m&Dx2#&UeqPCC zpFN)ASFT*QWM-r}_N@q0OybtHu4`r|Wx71CZfTypR5@j;`q>GdkEv(2%;<4hi_v99 zj|(n%G|cFJzakF683L_WIWO`KxPb-&zyR?8>SVJiB_dRz@%7W%2&~|c$M9rxN`xU) z;qZt5)rE!SMuh9CTjw5Xn{xvHK2-?E&HAt~y)K;ow*6519DFlADl$GkGCFSR?27W) zv&t)5h1*E~fN4TpZCqS!+_c#h<*l>IE9u_FfzkRad7ZoiS_pw?090xXMumY6#X{Gc zrwgvsS}@sSq=QuZYO~SA21Z_4+Wllo&Ef@{jwP?0Qroq!D_8hBJ!)H7dSqgJq#-aQ z5|@0oFSo3#d2?k^{=}K}Wy`a+uN8hvJRMP#l!lLnr)!eK0>dIH&miR)xWssdaZG`_ zPc3o^AjDWZaXhC07XWR9w}n@zytVI~In%v&?}3+z_sji)V1+jU!OOY;V>uW0oLS{< zk#Q#4~8{hP(4*O(DLU9toa(yZ6u z3fxQE7MX!jU$HMdB_%u}CB>Bw599f;a2^1yKU+KTDCa`kP$G|Gkna}WIKUmbLEX4O zAkKP~93k(58~6i+CubpDvmo@P_9V3RdQAT21@1 zUL{rJUC;wKhejBAzvPq{H1WwI&)FJPGI_~V93aQed)@$@iX}vJ2XS3pMKR3SHO zqfpv#>J-D@Vy~ph?v9SeJoMn02=7Z}^dAXg11@2EA^?CHQ*5-(arSqrsbS&Ju ztax#8ktwSL5XJ!zy|j*My-BaZH6IEu6NME>=|-P{5~>d(tyjrp@-Fy_`oM`PB|B9> z=^j3)v_$>I)D%Ab>(S!u_5*Y0^|j{|3ja3?wWO)6LMP>QdROe$A#XbRUTwfKtAj)y+@p!7=6x0{x&1Oi4lhu`A+;$BL% zMYu_?G2%-?Ccbp8t?k)%8bktwR2YwMlPubn#bhy>oHeQMzmJE;Z(6pp_ezk+_W{;x z_#Kn282VI7HnC(AQwrrVo3JW9os}8|n*&w-4||1a1GN5{$|#fbPN%J%^OnRIogzHO zxqD!6h1pzT`Xo3oG0{K3Z)~Kx%#zr)d{%8jX@paldx+1tF#%sowgC_@Sm$s{$vKFJ zG`6m$lrWLbhEQq0G4sh<3(qNdd380ubm@6dLxc&Y}=S)5w4ZA zwrn~1#;N_!*B4L3=-E#`YAm*s01JjNI!Ujmg*~BrDy!9WK3!>@=WV8?PaF=HwG&)VA+bLd)BSl zws2`iUR!fIZ%S(-{WGUKtQ7OJ*uyqZE9O*o7QjYS>Up8bx~pO4v`1w zn9q`aZ~-3xi#$Y5C5e{d`~1so3v*9=^TczPp6L0P%c4aCkCFbTPPv@EB=Q-3KY{eq zJ&IT9HF~!D={1%3j_^Of{DOI;zvs;Ib3KeF>9hXKejI#ORf+w=-@g5p^sl?PO8AyN zM|I8@Vi`PiM@CKTMhlQ<}Col&gGJ5%tej2}}@8~s^ zC(uCp2hOjv(Voi_$H1%jaY(1a(N^C(bNZcoUNOB&`h^0#IAFqG1vmPU+Pq(010L!0 zQC0a2diR|W-Xr}&6#i|%gaZP{bnjKpg}e(M5I}7P#9@LNT4b2 z*EZd@yJuSM%9XXGe`%M~fq#~q726k?ni#ZQl-lrQYP$`N(vPfb z&M&%G9MgE=IS;?WnGH!DPjxJu(WZIhxHzy!+pCt6vWCX|4wsJgJ@Z`_ZWxq{ounVe zfFI*lQIgdL&LEAJi7)i-+kf$)2aBhz%F3EX`sa5#?TZ!OMql9y_O>~h;>2~Lc0vPr z7s8|+jM)jMln5g`bMVQM3{#t5G-FD3?^E8T$Qp0TORe6ue9y9#+uaU&wWnB26LzdQ z=)Pv5CEFAo6XD_0JZHv=&W^^|@JOSF&y0>)y<&g<03?g)F5p#EPzFSXO zM7u%HQNH7leE;AB4;=cA^bh=z3Yr_Vk90 zq+jsC?*uRWalnM%2|j>S?#ZK)jH)@F?gDCqI|l#royWIrz4wjJpSbHVF2w2IeJ9*6 z>_Ru;S3qjHk=0C(0k0AVrTWj6b9;9m{RC6+4&giW5#|ci`-W80kqSu$Ovnr$y~YP8 z3I9ucg>#tiOVWDO1Fx>5&z4y`aVFf3G(3+Pm5hrIFfW$Czys zY`u!tiB`0qm~Eryne8lY@fwxEL@miIYFTQ0->jU4-Wd@I)o$Ar>s$YRn<+afH#NV& zy{hUyO;SSHl&LQW59XA$Cdb5vM&_{gbFEj&baEY3^t?{(GfE;AGxe!y#+qiwL%KuZ zij2vcy?eD&EVI|I-;%Qe9~B#34g=YFWRbb!k#xpJuv8MsZ$dR$jjQ&K{SZ{Zlbxz-4lD>Y@pi zE|n8%s$43nfw1w$5-s>TjyMSQRO*@a!qW{KlU5$ObLoP;!d9*@W2V>kF}+`XqnwwN zLb)9Y1Lrj$f7~$`ZvR%_IW&iZac!v$$5n4spE3plT>8nl&X_9}t+g zcrl)8%bYsHZN6(!ZksS&oU_iFLo$gL0>DVu$;kUro$HAP*^r=|$xJKpXeh2%=0KdPzY>W`5!G7b@0QN2P9CtX$YPwMqzH(v3xx`O1Qds(hDR ziVH%DLLxEbx}@zzrqHMiD#i~QRqkHRT$wzT^N`*b#~Vtn%X_qiSE>z0P43?N4nOIOuJzIDbbDC3mpo!WDk#XxEL_)pu-)s_@MtkBI#4X{{nr#GUQE7B(R4o&NTbb<1`N|2p>- zz9+nb=>rAQvjF%xaR*oCbD~BM@)}PhU*l84jo-X+XP1xA-6cL7YMqaroSUTmbI=@N zFeRH4Fv3h<2|+)FG8ny3;itvUovVDkmC4!J$x3hEmAi7|-Mo}$v)Qcla*NO1KX1wO zXiJ+VdfM{29V97d9$zxXqa>vxmlu(k)z(gUT(k@5=2G1*n*{7EHy;;^W6+wik#=s0 zM>-axDcO&9&TB#ybS#m1ajtTwu5o$0*nqOK=zv!3pG)}Mj+7FQF~uqKa*{~L+~w2Q zh^8;0rU~_J!iV@5+(zkdVY{-p2^m5o457+U=kk=urZGmvET;-SivI9neSJbw-PD9c zsxJzxJK;Cd2pl`*sCl)de>J|9e#`x$*?E5%b@LM=Uz(g87S43cN|H#HK>+jDnBtLI z=+v#w4sb>lJEAHzoUc~pi5m3o+_ZIWNy9SNt!_mVT-Pg>HlAsUP1)MxwsVQgqP-qX zP0H38<=(;*>PeHkTzhcama$mmQA&?4-lN76+%!#g^7}a93 zw65rGOHNEnNHn#?hX;o^tKEtk=BFl@Cwm74h9cpv2s4u`a;a7AM?kvd4KXD?TZuG>CXPCvwt2o9v?d=Efl8{Rj zc)QR+p9`{flPK~oBtV8}chL=f@K7Op=eGIpyHNN*}P52-o zP@n3$%DH{wg|$&JVev6DP?wXvNgb*;m6RV9eoo4mY6uBQiKA^tK{>vF&w(@5kQSqb zS893o^}coM+E%TqU|-9hlKxTJP&{t{e!uSks8&dUBaN>U zB{?I@Ba@~?nsVd3eRVqDjJxNy)l6td?X#OUH8%C)uD=&yv}$T~b@w<7_)pu3wzk@u zUF)Cf-7sS&AehM_oI*bv}4{_G~~jx9PsAHc<&T3`QKhkk=^I=R`y*Tet~@1*N4)Yp}_4OP;}) zR#1}7XBH(^F&S3l6f7ohORH-iYp`ofj5M6Bs3c9!P02xlNs%#%CZ~#m{PJ9VWHnAH zOi!xKjSP!37ntKSeH5`eQ#RFAyGSk0kj`ipUb!pnP`h+SLkP7V!7rKL5S&#k)@IH? zl|f}tq0+5&`HGf*msQNh$C{?iY`O8jYsup8EZMDsf*n}i$N}h0#t)C8c_zAfT9@G;dnQ4;WNEBaYBqGEnBs3%@ z-1b7xx)*w|H#=2f$;z@Q(z0ePZBn#!FKt#Z&uQn8;_8{i34BYxj)~vF(KjUNw(<- z$EmxoC{p;StZ2_Zs*h;9|6u+=H_9hG^2mvF7?JG~Si=Fe&5a*8G9Yc&t{bl{IpM~1 zksA}L!HMo8p4-BF@SYA{c+SXc?LF~ZT8^a9 z0gK*v{P)hCbggdkzJ*uXzkkqlwDsois~q}A3$Ha89hwjZx>k3#7Zy1-V=~#su?>_E z0D*SxFdIyaw1_5((k{MmEvU>RP+9Ms6F;upbDVOrB6pE3;&3B8ykLApc>ef53;p0E z&2t~46Ws~y;}x8w^L-V(?I-)0zZen|6A~O7`($uTOmIj{jNS0RkD;4!jQExAHzGaX zWc#>}{Y>ONUCHsB4W?l0<=-<43uhLtYP>jE6BwxR8#hks7}?jw~#KT_u- zjg^G5SV@wjb;NX@Xq4Lgu6D5#FJ#&fS39V~$b-j*1yoLN^m9;=`JR{VatN@j+wK%D zX-zsW7AN7hh;c!x!q6^Sf}Sl$QiOMGF_YhS?i_HIBPT=OweU*&cfo2p+A4f@t9KRD z>!}vmmb2@6ugJ9z*uQTw4fZa_wGy~}Y+t83&+c`!G1VY@*)yj!{#(#8a5$9=|rAq@q@9mp$lVKd<_#GrSZ12^w28u!2KLO$BhHPVVVPNu^fDL znBowo$nhPU;uvspi1n~IKj*^e zNT(H}MJocP7FXVRSLNZum3Q7%eRyu=orkOLx|4lndPHyilyf2f0u2OHFSOQZk>Yps zWyx=7v@otSqMy-Mi_|@-nQWds;qBw=8Y|4>r}W>uqw&hL&OqTU(@HHSB$v;er!&oH z>~lHxW?qfCs%5XsiMLAAHgvjFqzX?aUnx$(!l<74K*V?#<8O_`-I90AF6x!nawH|! z7WtwKedD)b;jdwBQBEG-R!6bhD?;Dua=J!_MT`Ktt!Gvh>u1xY(4w+dAf~$TL?quXP*K<*{B-QiKaI zJ<=&EE`uL%4sy)GC)P75x%oTS*zP@MkqB2S?`v= z*yi^I>y!TjeKNyY#wdxF^Cnpef;b#&e)>~&c>eatqG z9zoCNWaQ;z*{7~8iCON=%~e$mbv}uSWmBdW7jN2P+%bOAwASR9cztC4=iRi0kphDU>`H)FJj za5hyB!=l0;vH1RAAJj7u%V2QS7Tm>8Xy&{lJM4`f`%`5`D#C6oEcetZp*9f7*%G{iF14?_nNTGQtpm zogLsZ^VQj%MGE_tQ(Og$I7`@yLI4btpQB2b`s(Y_4z;i7W7IrLp9W(6CjeR){oDW~ zg-IU`63ImRB#J!Dp69He0AL#Vn%Q_-=J^?J;i-64q;zDzPx}6sK8M*w58NmA&uCgg zuERL0(bYx^bphI$T(S`sVI+1I|Ix7>NoA*_16u-$9y`3I`|xdz<%zn|$W;XeD~d>R zT70xAz%M2}_{td2b}$r8M8+Q%1+HnBIQ4Lx5v zZm^D|${fBjBU7$EMWGj zFF=@lwx{sv2>Kt%e!gfaPD~0lBncPslQ)YK6N{5F6AKd)3;*2Sen0yGIPkN6NJ>fK zA3DP*=^4ht&M+lO#hFJ|%q+-H%F8{nqN(^yR^gb}bd_!|ha_YbM#Pqvw7aalJ-#Hi zxOAS&sso8xlggFRVebds6BGRI*t&8cQe6K>P|@?t@W?*p=E3NG3*9n?MEDsK54OX+ zqfBQFLkV0*B#F;gP?=0BBweHwkYZU5!&RWHbwof zAI>4eNBfN(XZ$?ahXYqE8QK-a=~HaMkD#O{SQ%YFk1IBWfg$Zs`yk4IbD}zcNSGH1 z??$8gHmKVl#k_D2*syNHKrfs$E^+=eUL)ZiWaN`6(Mw9E5LTdRPl|ki` z-&b7RhuRiB&Jg}zSWB4DLrYQc04i0Tdpq5v~p$Z?$;1+3Q58HuU z5W+E#IN@z_oHiUk!N5g}sNB-LpLdbwDbPssAizkqeZhhi^XI>dzH?WuoGZ{`Yc$sm z?#Fa|oZ@OMvd&aImR4PzmR?zTe|1-N)#55T?-1Nho?}>FUjS6mwO1KTN`sL)?kNOW zgZ1-^OBPO<7+5DZH=KQ27`_Suy;&i2DN9^3`)F)|vGg3EOc1uYw8; zBO!B)!>~G$&ZQ|ayZwxc2B%U!c8?~)rD51_wpUe0$5l*-ihHxFDk`>OLNo=Sb2N{T z3uAeNTG|^s$%;4t>a~}%IvswNNWPZu`Nz*X*iQ> z#@%v0Bd;`Qc%@+wnP#M*$FT+8M^~-b?Qw@oZc2KQ+fyEo-s^FP@A5@H2R-+$S$l_f zK@RrjuezgWc}8}1Nq%jbg=O3R>#uRfh`89QEwc{HY8qcIgwjQJ9 zcS-{Z7fsK=2*IQd7qdN0wiJV<(=W3I*}Flc9+#3YnB6h_1cFY(4;}WWKZFEQkIm#; zX0I@`gyL(PL&4o0p3!$6TV*vSq?i40@K{I#E9B$#_iXB0xza)Wh9tkJrNtNXV0>~Z6F1h%qi)6RC6KM+gM8q zG=CaP^GnI^D8>uLoD&+Sm1DF%9O7CjMn!Qe!@L*MhiH`{nuM-R66cDI+-%x6#hE2x zJm)%XnyCM_k>7DDi{-E}Z=;vR8Ou>$WKYhpTM5)<^cVSq9K_|u#ZgxX zOd{W52KT0zpP-h35)>WBj-Rhd@Q5OYm*65rP((UINw7Ww$PHYaRk%mIF%)vP+YZf~!)}ExMlU%gyc6 zOqY@m)=H@dWK!LP33USxPL56$6A%swDu?s~nk!;0A~A&4%mQbV*(B%1&>SI-Rp%w929rs?TU=UmJeGh}36*aMSU*87XH*+v!_-6w{M-@={{MFG+%PmL*QhZO$GE=Vj7s zY&fFF8ZUl_@e+8bMCiwBOd$}^Sj$+hHpBVRtces0&DJ)kd9|cG70B_V!<U2;}+7GENas z7TybGVID+1eaEDDUE{?arlYMUN95DLnN0sv=qLR+$wC0g=)a4`o@Kp7|d9Z#4eNChF^RcM(%SY*k#m_t$M9fh**@h(v#Vvw$^`o75N_aC_IBjiFe-5?m#kF;Wo=NVEzuKY4Qc_01 zuF-u_4FJ+kXWs}mGFl0j#QFDRr zJ!Pyufmk!alw#4_(Zpa=4{w>W>x5(S5JGvX9hhd2T8jvwszKt9FSxA`Ok-2FDhwl6 zC$J~^Xq5_1+O5EdRSP(ftPD{GzTmb%u!QOmnSbQIC4}l|-3sSK0U5bVg#?RZeFjRk z80>4&jNGS^8i}J+WO$-Bp?Ad2KA@JUJh#ITO!wYf(A6e;qx7|2l)jN_K*$2fc#58f ze<1y!W>Ge_-|NNtO{^w_L8aB3^kZ^qX^7n16T)XFPGE@e8CoZGcXxMB5|9>&Kx;z- zr4!}PN4PEEPGyDeyK-d-Dc&a+mb;^qP}3cC1C;v`ID{uRDz~GW%MNahmj+nv?$)H`qa2+iWd^8)BUR zcF45Q^ln*f9x&z9rJl^O6PAJOsBk7JG>&=|04H+W#2sE5pAEMzp3Q1bs)w7cbgVWc z9IF*`4L@Rfh@QwL46A+7jm;uaYh)Xcnff^L*Vu>I&#t2VOrx-RO^fMh>qc6cLxSx}^*N;HnLospMt~`9mp+e0>h+nz zqx6l?`|lt4SgPnDj?ebIv(cgr7oYd9P3RTgJAno|5Q=kW1wh3116X|!icV+G()ft% z+oRP&>ZDp>>?O4G*2z43Kby}O+xVo4AXq_B#Rp{Es5CRX>LB*-E2vFw+aGLANL#(I zZLk$-a~Rr=HISVTn1@Q5w>*xSbnbmp3)1`@UbkT~>7M7$vJ>ofx|<*&Z?_YVEJqZi zEGYvUM!`SII82J?R)R0HeWdf$O?u>{qgKz5-q^`&RM4r6&825y5u0n$Yi`mDVEh5c z4yZH_%pYYc;3VQQxh+ymGv<#YGwB)f7U;~KrlYNY0HKL{+1XRHi*_=)s_33AO3jGX zSJ0KR=--CaV39a=gi0)fZ7aZ6#yE>$dIk<0QrrcVl5x{NtOtpUNAANK$m+&WYo6L1 zOo~VDppdfm1CFgr96mzRcJZ|^>S<@S&~8;phFSGDttRs-weD{cQxolc5nDxT*bK=w zmGUWW9paNSD`Ff`R*RM?Mk{o)f0ZNJD&J#e%P56!ntRbc*MimCVfzJ*L)zlfw;tqf zaUZF>MI4fy9&SQ2ajgOwy*Rd3w5BB0O1D}s469A(&AeInltH3y(KoCA!{*N_T8d{f zsSwaNB3JKX^?+DNb-;PBE)W5KYapu~#A)le%r9$vqc=n@Nu(H<6!k9;RB2xK2Bfe zw?HVdmXRZ*U#e_qO0mR?6-#V`Q!13QsfBl>Wan%@AXa7CU+C?l*LvwL#Du39$-$lW z6`Eep*Lkb_BpXbo!;=gPZWxi$vg^X;hqN1ipMy(s_)J2E_$cLdrTGyf_clCpWsq8R z!%V^9Ju2nYH?c+^cY&=jwLhpTx34mVkJA0&v_q{a*^Y6nI7Qc$)vA(hOzH6Cj-vxbg2E9$!RmW)hebd8V1+OF*l1Vj>q~a5lA#y2qm>Pl z{w?$R#r^@rwY>v$6s+|^yExP+$nP6cbV|njzsCCiBl!jN_%=$vp=cPnJEEnT`viim zWoRW@2&3o;$$x4RA>Biu|FSk><|hMl<5@ndF2Xd|v2a)}Jre$l)egH56P{ztDYL5} z_E=Ozh_ciRy=`U0z*)k$ziPv{oBsgKhlk;4KKm$Cm~I!LJ4KBiyAci6G$X+dvAc^q zcZ&FXu7&(4;oVui(*FzMoeu85MZM3X`5L!CzJJU@hmw70WHH8JNbq5fSc(LX9jR!V zi1!=h~!7?MM6{kfqrcE+i1St4Pqd9{3!h}tocp)`2of{ z_|t~diVPmAM=ms1EryJT*PA2FgF$4D)t&p2#aex-H;wIBHuUv~)#pg7TX&LBJ-h@R zjnNJ~IBFd_5lwQJ`2;a8F8BrPkm`N%z7qJ+&2u zYplNDh3IfojFa6Y%W^_vHB2A>BGwwDbfvWdzh$)odAcJoQ~Z|I0`0fJn^g`>v16v2 zR}sW_Z2O@&CdyYjc29z=75>=JHi{}DfAn&OA`Iomm77;JlxV{+5kV~f*J#mle{c}k z)!SIxeUl+jXvK}%n~y-`LApLau=Pp)5P-|6DuL`U?O?kZ(u!jTiQn+VLO@ zdJp1)2%QHEuo_1cCt>0>)XzKa^C$agsiT2C4ACUnO|0Ieik>isd&gyab2pz=7uS~+ zs`b=)v+9!Er`3QTCoo#rUi)8bh7xwkae)H=C zF6d(exym_BwAL=o%o2V2!+4$M{sqh`&Im2tx_NX=)M1R<1 zC!wxxL%3aY4AD6-d4%>PxuJTJVsPb{?eHP~E}_WZw`*1gl8@M~HIQLd*t{hl{jhms z5Orz3WY?rf^I^qE#l5?Pe9Ll?!f%m_Wb*_$CLyh~li^Xak7UC{&OM^*Ci&}S{L|<; zNB2wUyz`FvMhvTWi##q`AC39yDRyo29_~TIn~sfB1@n`PJa$MCqcx#e?$M8b&`)od zeMIMa(+s5Iv_tK;%tFEvcFUrWr8~{`1jCAbHQfb#$KB zP3J}~GTYfQ#C7i0P&Q)G*_sB<<~SdkJ0n|Iw=8yBCGH26H=&S}@pV%g5eTpb;s-=4 zt_@q)TX+6>Z9;G1=si;=h#I}y!Fs!a6w^x`0*PWp#JsVr%Pv zn>2|Q-kmh5Hrusp%*2{TAgp%p-E2>xb?-zV)bI+v806NSw7{;4FWbT%8d}PiwHL^0 z0kf)e5zN|w-&)}`3!V9U=+x^-BqGZ+$D9`9?T<~y47n!(myLBp_y*3i=wLMA&)xl>H5 zgJ;WbfU;8yKjO3MViLNgB*GkOurX7uc7}capb%%ER+~I;ZVbbO8vsB=^l_8GuvqL1*l|?pxq=4CdCNZ)Pp2)8E!ESBbi;YF0-Y? zTF+Ehj_64(Q;Oeyw>*e*!Dwdc5g~Kt71MOUB@w!&1#a9 z316mb_^B|A2DBHI_lgQNVqeFBAeXULsIptc@O40OD| zVCZEAG;&BUG-!wj3-r%@&~~vw--CFn%{+C6d#6iLn%xx#cuJTK9OW!hP6QUa)B#Wg zmV5@oVSQ>0DtuJBM?e@uJBtd|1m-SU#12y8r2+#R#H$os=evkkDG=629=nIZf25hP z+b?)=@KSrP_c=BqpH-Z}-})Q*mh^)U1VIGE(YhtgSN|-ZROU@7Z8nw7@pK zDiiHSGFKew+fgqu5tnEIW8!R&#DnC-`-+6bMs6Q zf$?LVYiB%DFG! zjDZ}hI@|c!88p`4$X7O+|5vi6ruob6NM-H7sPr|=J%qYVyZ@N9Y3kjD2^9k+3nYj<;En#(gjO*88jDJM6mA2-G-A5u?mn!3tmB^HH+dpxR4#wJ6! z`$Rz_pZLdoWc4_y6nr3nDC@J3E)I zcJ6bDi-|V5J$Xjy?rAo77C7y4YN|`w<{PhA;gk~ZItF!3W`5SvC9TPEmiV}orns<> zKqp__s>L1ROb*;wfP1!d&IP3|u!+I8vvp4E3ee%rBQ$BrI5h5@-aLl{6# zIGLN7d-P~7E!a=MXuV3h$a03owB0jHOYBP3Yjms*A69NFE+{PCzVV)u=yc+E=f!c; zW;IO@yx4teci`^RCvFSea|V#1Doe;bb{~njz5HqSJ)80J^o?Bu2kHI307ONWvrGq* zWrTZXd5zbVoYchFncmwKTNf`_S5h&1AmEeC%IL`WRSPzBOwMdAnnAAsrFoRrJ4gmu zE}>TB^ZAHZ&C)DeOzhq1ywhV@X66bDzc4w0&sJ=A-oAX{x+U9o&s{fvWjf#1HY+AM zgKt?oZ_=XJ&~3A%yJmf@C&)t5A>K9XJb2e^IJ;~1E=+%+u~E3Ef97pGaS`I@-u5fb zw2d#G%%kU22jm~!(i|?EHLTvG*sV0Bo3iuFlN0M*@oC`+&fMO#eBa#eS&1nn>8XY3 zcx2_poYkFOTSWUd#(I_1v-^6*TXr1+t@8e2cin91!EL9vw6F2#^O=xe##xrM_U>D2 z%FpX8Ds+GBuPj885wgjG1n9uZAyua zF^T+p2dQB^CFVPboG{vjvl?HFTCmZ5ug{F}*-mMTT6_1dJ-GGIQ=LVH7E}J*d5x30 zHcVMLXW^#vM}r@I4wn?AWEK}$(x~p!SXYvCE)I0e@*C+Ma+YIZ(|wK?k-K-VRP1(+ zH!YjLW=?U-BDWo$#mkqhqN*?EFX1UM@#0P7SuQWAXE(8%$X(|)){J>f-PkgHtt-8X zJi_CG5|7DOk<sC|`kt0Ez8uFJz7 z_uTHW!^xbMn5^8aT)S}57NyCAy#?#`E?t^#p;w$#mS*IxT)nH8UUVYf-I7M$rIi&O zbsxQk?&epwM3_9cwl7-dywxS9fpZ%gssCr&Nv+WY9i zyYIgH?z`?ndT-0Xz~HSdqRvZV_i&7LyeE_1L}H8D`YJFXJt28C_SK+on2js_;DeJzY^DJoo5sGf@i3 z3wIA7P1mP&8?0AJ6zONU>d-+j?Vt)|1rYwf=AJY>uHwk59%)Wpwk}(;<*{r@mSjnz zIdoZ)by)Hx%SP5=`JUrR8fz}kAz3!Q!8X_k8<|T<*g$}ALx4awVS$B&IDyT2Ss*OC zSprEm*+4cx3}g+~>{tEXn;BV>Ir3-yfu`TQ!z0hy92wLtZr^J*R>Gs zMk!A&e|K4ohTOS!g5_L;ft(_c~c$+XBpA=1-uY2a+rGTTYJvyL$V0rtQE;jnPzHV=`7_t+BY!Xe=z^YxlzN zC(Ov+0G{Pc{Nkh2j-n@+96~peY&$&-vpiR8PtEFD(a0>Go%^mII)44wqXW&&7SnQV zzoW|+>K@tUJ8|zf>+gRW{mU(Ntt&|O(OIt%R>?w;#n+puIil*3C-jLViJHTcMD+&M z$FwbZWpRh%r(}szJ9w5Tjk$Pony7eK9R8Sn&R*sE3(BWn5{;!XDMAK)f=nAa;|U6r zv8ZvaO}NQny9;04JW+~U>T`4J7dMIb@b!`<`K3#j6dtjzUS-{}YK?8;Fn#{DEnQMj zQc}Qg+jgv4L&;23Ja+2O*{cu_NiZAcz#=Fnn@FnByeL=JUdh2dEau#FF@h^k+LLLd ztTyQ}`o+h~$_&0E9bE@HCobZvnGtiuBORT~8#YGk@XZGv=-6`0mQ8EdP2><| zE4#b8?%UF~cFU%=b=vN(uI>)$0uY*D2g_t@cx_O6KlhybIpXI= zoX6%w<4ZN-FQf6LTA-h$O^ppcw(j=vb>p|UkAI_mYHaX2sAcn*huf-CrTBctjLG5o z*0&nUSCmgYD@ErsTppc|c&i;AXWGm2qqpNT6D#nU*!<`{unIq)oNN8_i7j}~yYI@m z))BVBYKD_?sBe4c9lSdxhq@TAz)NzUn3!C`3^BQugk88;p#(KRW_}8fnv(g{ z=%{CS`0RPSc>esQ&tBzgh&t@TIH?`wfiq>KsMN#5p3%{>uYPvv{P_vxdETxf?80<8 z?=M&DrB}SYdGlGtH|>{-cwQoe%&-eSiOuV4nw7bE^V?_b>&xv+ZcLw)Yp_5{ z_ctZiVEO@jW~y3mGU?T+bLBkoR1HwJL88TtbFY|BFjLBHm}$<{&ej_0YRk2=wF@l=?Q>+Lnf5U&GZEnQ3<7Lm zwq3*93(M5oHDyKHLN0oqy6~s)XC6yzQXH|H^Gv3^d~-BD7`4p|UkjhWopRh6PtT^~ z`|>_D@p;PO;5qS}x){DlOxPBCf>DN=e>rr_jksh0gZS{ZZ~@8Yo-EmeV|+Qb_G~)7 zM(R)4AB^^-eRy_wKdboqI*5eOkn)srsVOixBDDN$_6b!%Ucf)%>diM58ZIn07EaPZ zboyd-5WV|k9fZ1E)Ir2cI*57UkC~A@_Z9Zy^GwQP?!F<_QDw=}e${=tZ=KN{i?dXe zm8%Y`_6~ZEs7xjtZn*lCZ+DgDY{Rm~wJp{4L&GNykRk%P9-`uF>LK!si6{F#L-C`k zyrSYV^@HO|ZF1Sd#0KSwxSi|E_suR*?o}8IwTY;=8ZGvquisQ`E-y7&3yS9F#Ld<= z^$b*&mR^-QZ{d8ixW@xv#uz=s)cyFn8=m~O-*f7rGvnjqx8HgzE^Nfk3l}CHYFyTM z&pnOHD3@ONV^+q7Ktq~=JW2?_BhOv7883CYz3$;>{`7sju<6 z_qVPQKAZb?)%xNkWqZAcrsyCHY)JBDouq>heFdiMzzYr>k2|UL*Hrs0MvKKzR$d!_ zBL2i~_daj^%2DSb*GRQ#px<0pWURK>4(#d<6(n~x3&S*L=v%yc20cXg#0!}AqmGV= zXP(-AgOO<_N(OHD7&r6hEeYSs3cidUqF~Sd`0G^0N^^CsrL$zC8tL`A#|m zeMVDjZB0`Resj;Wjr*K|6Ev0#%B1~o#x#5J$y;&J9D>!yuDR`yZCG<6Y5n22s)3!M z6M^!E{|UrFbc+*LmKxTUZh2ub8j0%lG68 znLh~k++F+B$5MKmYFPQ;j**l8Ymc71+St@+E^lnu<+Szq_iY>+a38;Sto6aCFw|_R zYi+5lp>bi5g}vx!=Rr-jzS;7;$q>I``5D>c2O8=}@9Nz#z5^e2XzdQo53JqVF6*`) zP4}0|4fy{(Pa}gQ+=-OORm*LqlM)5KC@0L@*|KEfSF2k_#{eM>d$C^pCYAl4r!mfa zcLwVV_FiULiM)p%cAo3N2&$+;;72&*X^<~l0-x<#zrF2{&aTqeD(2T%S~|8b&CXt$ zjlDZJYP%h-9Ba|C%9_?S^GoN?PoGOMeR-bDm+3n+n;U@@jofm9J4LGmt%(`fi|y<@ zq>9lvxMyUH3XW6@1v1A)jFM@Ouj-WTkQ-M|GDKo;mANH7y`rqL!eB|yXtXR_OUB2! zMRRURU!0ziOT3qfz1YRhi&2*3k-Y5FGe3g#;fA(&hbpgzK3YlHF3~4i%D*@V>18<|$rtG&wxW-0*F4AgmF#FUB_N&F zuqxT{x8R`2*W~9EO@Jx$bu`T-@pbqj)+5(9NAjJE!fvwJk#n{pEpv)tQQ1(DnwmW) zGb`(t?VW{nmG!M6Z-*~p4*n<=|E{8+CB6CkKxBb(K zZQ^e}{=nZ+EPoG17@YWf6x%UgmfPZqgsAD{E6Z(vtk}+Mm@2kOZih#)3*$w(Esx|^ zm)rj7#Wq4-_#d$b-XeVzy;a#e^SI5n!ERqJwDi2D^V{3` zo@NaF3hkHM)BOJO$wB#!$KiEFJdJy7zT@#|zGK?cjH6MZrMWR}65z{oPmfQT90;j6 zhOG*oQ&?R6zWUt2v1umQ0X@mH7|I5u^1(B5(k zdlZz5na-wuy*qg%m&4#4;g;-f<*`Tc(8^ z{*tgDHadF-!uG>Qce;(IPiJh>Rkbu!RW~;3PVHCkKij+R(#KtemAf~rQ@5}0Sf^gQ zf#!EA0Cusf={ZIJL4L|?*7mh)&-C@--QI;I zHCsD+>3xZ3fKA*NGjawvlF@4Vk%DmbZ36>SM@u|*FyoL#aJ|RhM{Kmh>G8-@oop}D zy`AP*XYd)&;s^4Hn<#$r`K4TObW((pW=ALgw2X0D^nXp9=7FVC1T)~K@r~nWtWA<% zFh40OpL>%%gTG+3FT}VCzc&pHll+APGm#Q~&omceEsN7XH2D!vH|FV-$Y%y5_`Z1V zU&eLrOX4Ee`RQ=Aa*dxp+~ za)kVlnA};WvzPmKPvfVaF1e*kp52rEx}|R%0Cx6k`ng+s3v)8E8+Px$+|OP1Kj(h# z4D!OC;AiYLSU|p_n4Xrzq(}hVKZn~sD(mAbEuudJU1NXp;>@|Zx$6oo@h9VszZobl zP%cW!N=U$*HjAarg74?dGZ^N~)f=+cR2uq+Y#n8*@|6n{=ci>Q&i#XNah}nbx0sJ> zGXPv(U?}C4maQtdGAqyS*RNx z7RRduv+$2NB-fSTKVa5YX)H@HOW}>FQ#3{E3c-!3_$P>;oa4j&{PWL0PdM|zjmctt zY>p49p7H)K@OsLEM4?$SP5keD2M_k|-P^|h^420m;zfe_tlUS0YNE`Yls}~Zz=1aY zcTyjO((oO)T9HCKE72~QlKJZ0cMsoqqwPg}|HYRl7QZZxLvr{IERxz)q;Ruj^62Q$ zJ@?pN!M9%d@kGXt#dd4L_u_Vb<_I!pEu`ZH>1#0U=+VuJ{=rM$K|a?C!}nsX)P}FI z3uhG`IfAL12icjy&u`~#a>I9{OOYf+Ut5k9`HL*ZiZaZP+9flRQJIm6u9L&F6I6z} zI)f@<_VCGuB9%^Qso0&MQxz}YD)`!q&Hd)0cE5cWD_*wEydp7c*S6XcM(>gp^jzfv%up_AC|2u~6%`c~N}am6;S^yktE($hCCu8hbr&nC z-DX~qkhsFUZCNqfW%suinfuMf?LJC5Lf>EEhwxhp4e?MWnox=Q;fY^&Dz<(89kE^; zeh9xU*3+Q?ESz{}2=#IUg!SQv;AyGFBa{Ti*gJ2 z(kGr>sWd5+bjpkSNu^T+H`+!`(#yZ{{BIDy_t?859sbm`RVAx>ydB+Hs(lMI=92nH zZoci@V|U%YrMvWdhYG5e#c9 zXEwHU;L_F0mK3+v6wo>dkOYqa@)E!tFiK^F6mUyr25LAhl@(A7A4=soNI}Y;OaI~_ z1^rT42`P9FC;;O$0DQF-%LsZ{E0yV7*8!=lfNr>5D#w8y=S$^y(BlTFtOPwCg(YBz zLNI~>3{VYvXa+C1!3_fV!46Kaf(!J}2_xVGfjq;P*b9vYL$$uy>vju%yVL5@caHdk zQh=4<2P^ns0Gu!gde{g8xWNfF@PZ2*04x1g-+*&azfo{IZC;lHrZ$OIwSpHs5ahpp z=m!DxV1!aIfF5c<|ApAZRwgI`3zYB&ET<2VR<9@6>h<>vdSj_UU!%XACVh?GRAMPH z8p^A`))RH}kqdy6ldtFFTF%KfKsjlXy9Iy1>GkLhhVoK_p{k{}sUU>3}VR7it#$Nbc7hcd zd%Hm!X5Acd<+-h6SxZ=hM&Pt z;SsQb9ZrJ-UIqcq!O!8J;T8BN_yzno^ufQvdH5H26#C%`O+p&B))MI9z!A|_!nrr<1`jj5Q1>4=ztnK%dM zVisoOJh%j5oR2xU0QI;Kb8!(ahQDGS=3@aa!9uu*MOchWu>?!83=LS0Ml_)rEm(n- zScTPCgUhfM>#!a^!{yk3jo5_ExB^?S6<6XaT#ajREwcJhxg+H_#i%n591^FC_aYY!^iOn zd=kHpPvO(}1N?jZA^r%T!GFMK@i}}R{}Ern7xBmV6MPAOis$fW_;Y+2U%`LEU*JFE zdHffA75^1q!`JZ*{3X7L|AuejzvF-4ukb(dZTvO9gYV*R@VEFo{4e}H{sI3R|A_D5 z`}imPAN(_ZfFI&V_!qo@ALA$ZDgG7z7cb&x_&Hv}2@Eq}$QV+E2 zFLd7K7Aqam&(kg5~yPQN|m?sExy=(Y$kWLMk#0`H#S@CL1R zyWk0yhU_Z8)6-A2L8r?>y^{w*o_?!8dOrn7BT6FjebC{JQl4mo+dTcJ7dVL>L{h zFgEfk-NqR5HpbR>ihVj`?!|T5tbS#eh`ehO@-FG&yTpf&@1j?v?BYY9>=9A*L{Vva zWF}MgaK6*^Mk|%Q{FZVv@21@x8G5Bv9BHeB%qsDNHOdcGLBwT`g45cg037_GlmdsN z6!?`^h}5eD39=yZLw^)ZLVwIiX!|35;s%Hx2BHm>PLWEd1j{M$gOd-2)*0!k+ZFAU zFcEaKebcwIP6;l=GBG&MT59zV`yn&$K>l+Z19ubk)zjPQN1| zIN%qgn*m*)b4V_0g2P_kB9IUeh6In;FF-=cXl}M7`GtOGASn0+2gysV!|QTc{iR-) zLrs#F3JFy0B9Z5HIaDKphu7{E#9EctBk+pgFmJ8lgzzSP-jE21$l+}Q&OP+2;gs+a zCx^H8I7L7*2|=q(Bq3MR|*cR%S0ECziu#=p-hiW-_1AZHd*WC~+I{ zMug$0xy*CCEU_K6mpG5}5={eQIl74OA9avfkXV4@^@QAREIS`U3L?9$h2wot_)P^8a8xb;LL#6`fb*dA2lWs}KeEcy2A)kcI zCp|_W2P#RutcQorDLTRje& zE5Id~l}k>s$fY$EldVw^OV^23Sq6&@xzMGePFjY=vMA80tl`Tsm6DXxoF10%ix zf$nPrkHZ=m;3c+=3-^J%@$UZA_L!7Q5v58A?d&SuV&AA2-!uUAy=vSQd}CcC)lj^LHR;SLlm;dTlq$s79oS7niK{Y p4g;N40MZ@PNppUsU<&{tj$euYxGw7Tw<`JXn;#Z^pKjCd{{b*5Ag2HT literal 0 HcmV?d00001 diff --git a/screenshare/src/resources/Graphikbold.ttf b/screenshare/src/resources/Graphikbold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1c0549830b68fdd1cffc1ea70084d0526ec4f147 GIT binary patch literal 147012 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%0Ahdw|BXN%00>A3PT^O8L;wLH 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 Date: Wed, 30 Oct 2019 16:53:18 -0700 Subject: [PATCH 103/547] Revert spooky changes --- cmake/templates/.gitignore | 1 - hifi_android.py | 357 +++++++++++++++++++++++++++++++++++++ 2 files changed, 357 insertions(+), 1 deletion(-) delete mode 100644 cmake/templates/.gitignore create mode 100644 hifi_android.py diff --git a/cmake/templates/.gitignore b/cmake/templates/.gitignore deleted file mode 100644 index 100e19467d..0000000000 --- a/cmake/templates/.gitignore +++ /dev/null @@ -1 +0,0 @@ -screenshare* diff --git a/hifi_android.py b/hifi_android.py new file mode 100644 index 0000000000..0c2ea07cc7 --- /dev/null +++ b/hifi_android.py @@ -0,0 +1,357 @@ +import hifi_utils +import json +import os +import platform +import re +import shutil +import xml.etree.ElementTree as ET +import functools +import zipfile + +print = functools.partial(print, flush=True) + +ANDROID_PACKAGE_URL = 'https://hifi-public.s3.amazonaws.com/dependencies/android/' + +ANDROID_PACKAGES = { + 'qt' : { + 'file': 'qt-5.11.1_linux_armv8-libcpp_openssl_patched.tgz', + 'versionId': '3S97HBM5G5Xw9EfE52sikmgdN3t6C2MN', + 'checksum': 'aa449d4bfa963f3bc9a9dfe558ba29df', + }, + 'bullet': { + 'file': 'bullet-2.88_armv8-libcpp.tgz', + 'versionId': 'S8YaoED0Cl8sSb8fSV7Q2G1lQJSNDxqg', + 'checksum': '81642779ccb110f8c7338e8739ac38a0', + }, + 'draco': { + 'file': 'draco_armv8-libcpp.tgz', + 'versionId': '3.B.uBj31kWlgND3_R2xwQzT_TP6Dz_8', + 'checksum': '617a80d213a5ec69fbfa21a1f2f738cd', + }, + 'glad': { + 'file': 'glad_armv8-libcpp.zip', + 'versionId': 'r5Zran.JSCtvrrB6Q4KaqfIoALPw3lYY', + 'checksum': 'a8ee8584cf1ccd34766c7ddd9d5e5449', + }, + 'gvr': { + 'file': 'gvrsdk_v1.101.0.tgz', + 'versionId': 'nqBV_j81Uc31rC7bKIrlya_Hah4v3y5r', + 'checksum': '57fd02baa069176ba18597a29b6b4fc7', + }, + 'nvtt': { + 'file': 'nvtt_armv8-libcpp.zip', + 'versionId': 'lmkBVR5t4UF1UUwMwEirnk9H_8Nt90IO', + 'checksum': 'eb46d0b683e66987190ed124aabf8910', + 'sharedLibFolder': 'lib', + 'includeLibs': ['libnvtt.so', 'libnvmath.so', 'libnvimage.so', 'libnvcore.so'] + }, + 'oculus_1.22': { + 'file': 'ovr_sdk_mobile_1.22.zip', + 'versionId': 'InhomR5gwkzyiLAelH3X9k4nvV3iIpA_', + 'checksum': '1ac3c5b0521e5406f287f351015daff8', + 'sharedLibFolder': 'VrApi/Libs/Android/arm64-v8a/Release', + 'includeLibs': ['libvrapi.so'] + }, + 'oculusPlatform': { + 'file': 'OVRPlatformSDK_v1.34.0.zip', + 'versionId': 'vbRUkkyzUAXfTGSEtuiUr_7.Fm5h5BZk', + 'checksum': '16e4c5f39520f122bc49cb6d5bb88289', + 'sharedLibFolder': 'Android/libs/arm64-v8a', + 'includeLibs': ['libovrplatformloader.so'] + }, + 'openssl': { + 'file': 'openssl-1.1.0g_armv8.tgz', + 'versionId': 'AiiPjmgUZTgNj7YV1EEx2lL47aDvvvAW', + 'checksum': 'cabb681fbccd79594f65fcc266e02f32' + }, + 'polyvox': { + 'file': 'polyvox_armv8-libcpp.tgz', + 'versionId': 'A2kbKiNhpIenGq23bKRRzg7IMAI5BI92', + 'checksum': 'dba88b3a098747af4bb169e9eb9af57e', + 'sharedLibFolder': 'lib', + 'includeLibs': ['Release/libPolyVoxCore.so', 'libPolyVoxUtil.so'], + }, + 'tbb': { + 'file': 'tbb-2018_U1_armv8_libcpp.tgz', + 'versionId': 'mrRbWnv4O4evcM1quRH43RJqimlRtaKB', + 'checksum': '20768f298f53b195e71b414b0ae240c4', + 'sharedLibFolder': 'lib/release', + 'includeLibs': ['libtbb.so', 'libtbbmalloc.so'], + }, + 'hifiAC': { + 'baseUrl': 'http://s3.amazonaws.com/hifi-public/dependencies/', + 'file': 'codecSDK-android_armv8-2.0.zip', + 'checksum': '1cbef929675818fc64c4101b72f84a6a' + }, + 'etc2comp': { + 'file': 'etc2comp-patched-armv8-libcpp.tgz', + 'versionId': 'bHhGECRAQR1vkpshBcK6ByNc1BQIM8gU', + 'checksum': '14b02795d774457a33bbc60e00a786bc' + }, + 'breakpad': { + 'file': 'breakpad.tgz', + 'versionId': '8VrYXz7oyc.QBxNia0BVJOUBvrFO61jI', + 'checksum': 'ddcb23df336b08017042ba4786db1d9e', + 'sharedLibFolder': 'lib', + 'includeLibs': {'libbreakpad_client.a'} + }, + 'webrtc': { + 'file': 'webrtc-20190626-android.tar.gz', + 'checksum': 'e2dccd3d8efdcba6d428c87ba7fb2a53' + } +} + +ANDROID_PLATFORM_PACKAGES = { + 'Darwin' : { + 'qt': { + 'file': 'qt-5.11.1_osx_armv8-libcpp_openssl_patched.tgz', + 'versionId': 'OxBD7iKINv1HbyOXmAmDrBb8AF3N.Kup', + 'checksum': 'c83cc477c08a892e00c71764dca051a0' + }, + }, + 'Windows' : { + 'qt': { + 'file': 'qt-5.11.1_win_armv8-libcpp_openssl_patched.tgz', + 'versionId': 'JfWM0P_Mz5Qp0LwpzhrsRwN3fqlLSFeT', + 'checksum': '0582191cc55431aa4f660848a542883e' + }, + } +} + +QT5_DEPS = [ + 'Qt5Concurrent', + 'Qt5Core', + 'Qt5Gui', + 'Qt5Multimedia', + 'Qt5Network', + 'Qt5OpenGL', + 'Qt5Qml', + 'Qt5Quick', + 'Qt5QuickControls2', + 'Qt5QuickTemplates2', + 'Qt5Script', + 'Qt5ScriptTools', + 'Qt5Svg', + 'Qt5WebChannel', + 'Qt5WebSockets', + 'Qt5Widgets', + 'Qt5XmlPatterns', + # Android specific + 'Qt5AndroidExtras', + 'Qt5WebView', +] + +def getPlatformPackages(): + result = ANDROID_PACKAGES.copy() + system = platform.system() + if system in ANDROID_PLATFORM_PACKAGES: + platformPackages = ANDROID_PLATFORM_PACKAGES[system] + result = { **result, **platformPackages } + return result + +def getPackageUrl(package): + url = ANDROID_PACKAGE_URL + if 'baseUrl' in package: + url = package['baseUrl'] + url += package['file'] + if 'versionId' in package: + url += '?versionId=' + package['versionId'] + return url + +def copyAndroidLibs(packagePath, appPath): + androidPackages = getPlatformPackages() + jniPath = os.path.join(appPath, 'src/main/jniLibs/arm64-v8a') + if not os.path.isdir(jniPath): + os.makedirs(jniPath) + for packageName in androidPackages: + package = androidPackages[packageName] + if 'sharedLibFolder' in package: + sharedLibFolder = os.path.join(packagePath, packageName, package['sharedLibFolder']) + if 'includeLibs' in package: + for lib in package['includeLibs']: + sourceFile = os.path.join(sharedLibFolder, lib) + destFile = os.path.join(jniPath, os.path.split(lib)[1]) + if not os.path.isfile(destFile): + print("Copying {}".format(lib)) + shutil.copy(sourceFile, destFile) + + gvrLibFolder = os.path.join(packagePath, 'gvr/gvr-android-sdk-1.101.0/libraries') + audioSoOut = os.path.join(gvrLibFolder, 'libgvr_audio.so') + if not os.path.isfile(audioSoOut): + audioAar = os.path.join(gvrLibFolder, 'sdk-audio-1.101.0.aar') + with zipfile.ZipFile(audioAar) as z: + with z.open('jni/arm64-v8a/libgvr_audio.so') as f: + with open(audioSoOut, 'wb') as of: + shutil.copyfileobj(f, of) + + audioSoOut2 = os.path.join(jniPath, 'libgvr_audio.so') + if not os.path.isfile(audioSoOut2): + shutil.copy(audioSoOut, audioSoOut2) + + baseSoOut = os.path.join(gvrLibFolder, 'libgvr.so') + if not os.path.isfile(baseSoOut): + baseAar = os.path.join(gvrLibFolder, 'sdk-base-1.101.0.aar') + with zipfile.ZipFile(baseAar) as z: + with z.open('jni/arm64-v8a/libgvr.so') as f: + with open(baseSoOut, 'wb') as of: + shutil.copyfileobj(f, of) + + baseSoOut2 = os.path.join(jniPath, 'libgvr.so') + if not os.path.isfile(baseSoOut2): + shutil.copy(baseSoOut, baseSoOut2) + +class QtPackager: + def __init__(self, appPath, qtRootPath): + self.appPath = appPath + self.qtRootPath = qtRootPath + self.jniPath = os.path.join(self.appPath, 'src/main/jniLibs/arm64-v8a') + self.assetPath = os.path.join(self.appPath, 'src/main/assets') + self.qtAssetPath = os.path.join(self.assetPath, '--Added-by-androiddeployqt--') + self.qtAssetCacheList = os.path.join(self.qtAssetPath, 'qt_cache_pregenerated_file_list') + # Jars go into the qt library + self.jarPath = os.path.realpath(os.path.join(self.appPath, '../../libraries/qt/libs')) + self.xmlFile = os.path.join(self.appPath, 'src/main/res/values/libs.xml') + self.files = [] + self.features = [] + self.permissions = [] + + def copyQtDeps(self): + for lib in QT5_DEPS: + libfile = os.path.join(self.qtRootPath, "lib/lib{}.so".format(lib)) + if not os.path.exists(libfile): + continue + self.files.append(libfile) + androidDeps = os.path.join(self.qtRootPath, "lib/{}-android-dependencies.xml".format(lib)) + if not os.path.exists(androidDeps): + continue + + tree = ET.parse(androidDeps) + root = tree.getroot() + for item in root.findall('./dependencies/lib/depends/*'): + if (item.tag == 'lib') or (item.tag == 'bundled'): + relativeFilename = item.attrib['file'] + if (relativeFilename.startswith('qml')): + continue + filename = os.path.join(self.qtRootPath, relativeFilename) + self.files.extend(hifi_utils.recursiveFileList(filename, excludeNamePattern=r"^\.")) + elif item.tag == 'jar' and 'bundling' in item.attrib and item.attrib['bundling'] == "1": + self.files.append(os.path.join(self.qtRootPath, item.attrib['file'])) + elif item.tag == 'permission': + self.permissions.append(item.attrib['name']) + elif item.tag == 'feature': + self.features.append(item.attrib['name']) + + def scanQmlImports(self): + qmlImportCommandFile = os.path.join(self.qtRootPath, 'bin/qmlimportscanner') + system = platform.system() + if 'Windows' == system: + qmlImportCommandFile += ".exe" + if not os.path.isfile(qmlImportCommandFile): + raise RuntimeError("Couldn't find qml import scanner") + qmlRootPath = hifi_utils.scriptRelative('interface/resources/qml') + qmlImportPath = os.path.join(self.qtRootPath, 'qml') + commandResult = hifi_utils.executeSubprocessCapture([ + qmlImportCommandFile, + '-rootPath', qmlRootPath, + '-importPath', qmlImportPath + ]) + qmlImportResults = json.loads(commandResult) + for item in qmlImportResults: + if 'path' not in item: + continue + path = os.path.realpath(item['path']) + if not os.path.exists(path): + continue + basePath = path + if os.path.isfile(basePath): + basePath = os.path.dirname(basePath) + basePath = os.path.normcase(basePath) + if basePath.startswith(qmlRootPath): + continue + self.files.extend(hifi_utils.recursiveFileList(path, excludeNamePattern=r"^\.")) + + def processFiles(self): + self.files = list(set(self.files)) + self.files.sort() + libsXmlRoot = ET.Element('resources') + qtLibsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'qt_libs'}) + bundledLibsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'bundled_in_lib'}) + bundledAssetsNode = ET.SubElement(libsXmlRoot, 'array', {'name':'bundled_in_assets'}) + libPrefix = 'lib' + for sourceFile in self.files: + if not os.path.isfile(sourceFile): + raise RuntimeError("Unable to find dependency file " + sourceFile) + relativePath = os.path.relpath(sourceFile, self.qtRootPath).replace('\\', '/') + destinationFile = None + if relativePath.endswith('.so'): + garbledFileName = None + if relativePath.startswith(libPrefix): + garbledFileName = relativePath[4:] + p = re.compile(r'lib(Qt5.*).so') + m = p.search(garbledFileName) + if not m: + raise RuntimeError("Huh?") + libName = m.group(1) + ET.SubElement(qtLibsNode, 'item').text = libName + else: + garbledFileName = 'lib' + relativePath.replace('/', '_'[0]) + value = "{}:{}".format(garbledFileName, relativePath).replace('\\', '/') + ET.SubElement(bundledLibsNode, 'item').text = value + destinationFile = os.path.join(self.jniPath, garbledFileName) + elif relativePath.startswith('jar'): + destinationFile = os.path.join(self.jarPath, relativePath[4:]) + else: + value = "--Added-by-androiddeployqt--/{}:{}".format(relativePath,relativePath).replace('\\', '/') + ET.SubElement(bundledAssetsNode, 'item').text = value + destinationFile = os.path.join(self.qtAssetPath, relativePath) + + destinationParent = os.path.realpath(os.path.dirname(destinationFile)) + if not os.path.isdir(destinationParent): + os.makedirs(destinationParent) + if not os.path.isfile(destinationFile): + shutil.copy(sourceFile, destinationFile) + + tree = ET.ElementTree(libsXmlRoot) + tree.write(self.xmlFile, 'UTF-8', True) + + def generateAssetsFileList(self): + print("Implement asset file list") + # outputFilename = os.path.join(self.qtAssetPath, "qt_cache_pregenerated_file_list") + # fileList = hifi_utils.recursiveFileList(self.qtAssetPath) + # fileMap = {} + # for fileName in fileList: + # relativeFileName = os.path.relpath(fileName, self.assetPath) + # dirName, localFileName = os.path.split(relativeFileName) + # if not dirName in fileMap: + # fileMap[dirName] = [] + # fileMap[dirName].append(localFileName) + + # for dirName in fileMap: + # for localFileName in fileMap[dirName]: + # ???? + + # + # Gradle version + # + # DataOutputStream fos = new DataOutputStream(new FileOutputStream(outputFile)); + # for (Map.Entry> e: directoryContents.entrySet()) { + # def entryList = e.getValue() + # fos.writeInt(e.key.length()*2); // 2 bytes per char + # fos.writeChars(e.key); + # fos.writeInt(entryList.size()); + # for (String entry: entryList) { + # fos.writeInt(entry.length()*2); + # fos.writeChars(entry); + # } + # } + + def bundle(self): + if not os.path.isfile(self.xmlFile): + print("Bundling Qt info into {}".format(self.xmlFile)) + self.copyQtDeps() + self.scanQmlImports() + self.processFiles() + # if not os.path.isfile(self.qtAssetCacheList): + # self.generateAssetsFileList() + + From 82c75e9a92d0a3829fecc2edb5b3cf0ea82cd648 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 30 Oct 2019 17:00:30 -0700 Subject: [PATCH 104/547] Add packager to package.json --- screenshare/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/screenshare/package.json b/screenshare/package.json index 66b9e2e7ee..8418f8cec6 100644 --- a/screenshare/package.json +++ b/screenshare/package.json @@ -4,7 +4,8 @@ "description": "High Fidelity Screenshare", "main": "src/main.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "packager": "node packager.js" }, "repository": { "type": "git", From 1e24df3f71f28240a60d6505a683d3b7c621dd50 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 08:57:06 -0700 Subject: [PATCH 105/547] Get Interface to look in the proper directories --- cmake/macros/SetPackagingParameters.cmake | 4 +- .../ScreenshareScriptingInterface.cpp | 13 +- .../scripting/ScreenshareScriptingInterface.h | 28 +- screenshare/.gitignore | 3 +- screenshare/CMakeLists.txt | 9 +- screenshare/package-lock.json | 670 +++++++++--------- screenshare/packager.js | 2 +- screenshare/packager_mac.js | 4 +- 8 files changed, 380 insertions(+), 353 deletions(-) diff --git a/cmake/macros/SetPackagingParameters.cmake b/cmake/macros/SetPackagingParameters.cmake index c7b49b17ef..0d704184f8 100644 --- a/cmake/macros/SetPackagingParameters.cmake +++ b/cmake/macros/SetPackagingParameters.cmake @@ -158,7 +158,7 @@ macro(SET_PACKAGING_PARAMETERS) endif() set(CONSOLE_INSTALL_APP_PATH "${CONSOLE_INSTALL_DIR}/${CONSOLE_EXEC_NAME}") - set(SCREENSHARE_EXEC_NAME "HiFiScreenshare.app") + set(SCREENSHARE_EXEC_NAME "hifi-screenshare.app") set(SCREENSHARE_INSTALL_APP_PATH "${SCREENSHARE_INSTALL_DIR}/${SCREENSHARE_EXEC_NAME}") set(CONSOLE_APP_CONTENTS "${CONSOLE_INSTALL_APP_PATH}/Contents") @@ -174,7 +174,7 @@ macro(SET_PACKAGING_PARAMETERS) else () if (WIN32) set(CONSOLE_INSTALL_DIR "server-console") - set(SCREENSHARE_INSTALL_DIR "screenshare") + set(SCREENSHARE_INSTALL_DIR "hifi-screenshare") set(NITPICK_INSTALL_DIR "nitpick") else () set(CONSOLE_INSTALL_DIR ".") diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 77c00f9bf4..dd2748f84e 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -21,7 +21,7 @@ ScreenshareScriptingInterface::ScreenshareScriptingInterface() { }; -void ScreenshareScriptingInterface::startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey, QString fileLocation) { +void ScreenshareScriptingInterface::startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( @@ -30,14 +30,19 @@ void ScreenshareScriptingInterface::startScreenshare(QString displayName, QStrin Q_ARG(QString, userName), Q_ARG(QString, token), Q_ARG(QString, sessionID), - Q_ARG(QString, apiKey), - Q_ARG(QString, fileLocation) + Q_ARG(QString, apiKey) ); return; } qDebug() << "ZRF: Inside startScreenshare(). `SCREENSHARE_EXE_PATH`:" << SCREENSHARE_EXE_PATH; + QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); + if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { + qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; + return; + } + if (displayName.isEmpty() || userName.isEmpty() || token.isEmpty() || sessionID.isEmpty() || apiKey.isEmpty()) { qDebug() << "Screenshare executable can't launch without connection info."; return; @@ -65,6 +70,6 @@ void ScreenshareScriptingInterface::startScreenshare(QString displayName, QStrin // Note for Milad: // We'll have to have equivalent lines of code for MacOS. #ifdef Q_OS_WIN - electronProcess->start(fileLocation, arguments); + electronProcess->start(SCREENSHARE_EXE_PATH, arguments); #endif }; diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 6ad0afb424..e07232535b 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -2,18 +2,36 @@ #define hifi_ScreenshareScriptingInterface_h #include + #include +#include class ScreenshareScriptingInterface : public QObject, public Dependency { Q_OBJECT public: ScreenshareScriptingInterface(); - // This is a note for Milad: - // The value of this `SCREENSHARE_EXE_PATH` string will have to be changed based on the operating system we're using. - // The binary should probably be stored in a path like this one. - const QString SCREENSHARE_EXE_PATH{ "C:\\hifi\\hiFi\\screenshare\\screenshare-win32-x64\\screenshare.exe" }; - Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey, QString fileLocation); +#if DEV_BUILD +#ifdef Q_OS_WIN + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/hifi-screenshare-win32-x64/hifi-screenshare.exe" }; +#elif defined(Q_OS_MAC) + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare-darwin-x64/hifi-screenshare.app" }; +#else + // This path won't exist on other platforms, so the Screenshare Scripting Interface will exit early when invoked. + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/hifi-screenshare" }; +#endif +#else +#ifdef Q_OS_WIN + const QString SCREENSHARE_EXE_PATH{ QCoreApplication::applicationDirPath() + "/hifi-screenshare/hifi-screenshare.exe" }; +#elif defined(Q_OS_MAC) + const QString SCREENSHARE_EXE_PATH{ QCoreApplication::applicationDirPath() + "/hifi-screenshare/hifi-screenshare.app" }; +#else + // This path won't exist on other platforms, so the Screenshare Scripting Interface will exit early when invoked. + const QString SCREENSHARE_EXE_PATH{ QCoreApplication::applicationDirPath() + "/hifi-screenshare/hifi-screenshare" }; +#endif +#endif + + Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file diff --git a/screenshare/.gitignore b/screenshare/.gitignore index 91da5ad0b8..7ebd067d27 100644 --- a/screenshare/.gitignore +++ b/screenshare/.gitignore @@ -1,2 +1,3 @@ -screenshare-*/ +hifi-screenshare-*/ +hifi-screenshare*.zip screenshare*.zip \ No newline at end of file diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt index 6790033d94..c2e9cda120 100644 --- a/screenshare/CMakeLists.txt +++ b/screenshare/CMakeLists.txt @@ -1,4 +1,5 @@ set(TARGET_NAME screenshare) + add_custom_target(${TARGET_NAME}-npm-install COMMAND npm install WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} @@ -13,7 +14,7 @@ set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "screenshare") set_target_properties(${TARGET_NAME}-npm-install PROPERTIES FOLDER "hidden/screenshare") if (WIN32) - set(PACKAGED_SCREENSHARE_FOLDER "screenshare-win32-x64") + set(PACKAGED_SCREENSHARE_FOLDER "hifi-screenshare-win32-x64") set(SCREENSHARE_DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGED_SCREENSHARE_FOLDER}") install( DIRECTORY "${SCREENSHARE_DESTINATION}/" @@ -23,7 +24,7 @@ if (WIN32) set(EXECUTABLE_PATH "${SCREENSHARE_DESTINATION}/${SCREENSHARE_EXEC_NAME}") optional_win_executable_signing() elseif (APPLE) - set(PACKAGED_SCREENSHARE_FOLDER "screenshare-darwin-x64/${SCREENSHARE_EXEC_NAME}") + set(PACKAGED_SCREENSHARE_FOLDER "hifi-screenshare-darwin-x64/${SCREENSHARE_EXEC_NAME}") install( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${PACKAGED_SCREENSHARE_FOLDER}" USE_SOURCE_PERMISSIONS @@ -31,4 +32,6 @@ elseif (APPLE) ) endif() -set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) +# Don't build the Screenshare Electron app when building the `ALL_BUILD` target. +# Don't build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. +set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) diff --git a/screenshare/package-lock.json b/screenshare/package-lock.json index 134afffa24..c7d92d3e17 100644 --- a/screenshare/package-lock.json +++ b/screenshare/package-lock.json @@ -10,12 +10,12 @@ "integrity": "sha512-tafxBz6n08G6SX961F/h8XFtpB/DdwRvJJoDeOH9x78jDSCMQ2G/rRWqSwLFp9oeMFBJf0Pf5Kkw6TKt5w9TWg==", "dev": true, "requires": { - "debug": "4.1.1", - "env-paths": "2.2.0", - "fs-extra": "8.1.0", - "got": "9.6.0", - "sanitize-filename": "1.6.3", - "sumchecker": "3.0.0" + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^9.6.0", + "sanitize-filename": "^1.6.2", + "sumchecker": "^3.0.0" }, "dependencies": { "debug": { @@ -24,7 +24,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "env-paths": { @@ -39,9 +39,9 @@ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "sumchecker": { @@ -50,7 +50,7 @@ "integrity": "sha512-yreseuC/z4iaodVoq07XULEOO9p4jnQazO7mbrnDSvWAU/y2cbyIKs+gWJptfcGu9R+1l27K8Rkj0bfvqnBpgQ==", "dev": true, "requires": { - "debug": "4.1.1" + "debug": "^4.1.0" } } } @@ -67,7 +67,7 @@ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dev": true, "requires": { - "defer-to-connect": "1.0.2" + "defer-to-connect": "^1.0.1" } }, "@types/node": { @@ -82,10 +82,10 @@ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { - "fast-deep-equal": "2.0.1", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.4.1", - "uri-js": "4.2.2" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-regex": { @@ -99,7 +99,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "color-convert": "1.9.3" + "color-convert": "^1.9.0" } }, "array-find-index": { @@ -114,13 +114,13 @@ "integrity": "sha512-Vo9yTuUtyFahkVMFaI6uMuX6N7k5DWa6a/8+7ov0/f8Lq9TVR0tUjzSzxQSxT1Y+RJIZgnP7BVb6Uhi+9cjxqA==", "dev": true, "requires": { - "chromium-pickle-js": "0.2.0", - "commander": "2.20.3", - "cuint": "0.2.2", - "glob": "7.1.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "tmp-promise": "1.1.0" + "chromium-pickle-js": "^0.2.0", + "commander": "^2.20.0", + "cuint": "^0.2.2", + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "tmp-promise": "^1.0.5" } }, "asn1": { @@ -129,7 +129,7 @@ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": "~2.1.0" } }, "assert-plus": { @@ -180,7 +180,7 @@ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "bluebird": { @@ -195,7 +195,7 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -205,8 +205,8 @@ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, "requires": { - "buffer-alloc-unsafe": "1.1.0", - "buffer-fill": "1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, "buffer-alloc-unsafe": { @@ -233,13 +233,13 @@ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "requires": { - "clone-response": "1.0.2", - "get-stream": "5.1.0", - "http-cache-semantics": "4.0.3", - "keyv": "3.1.0", - "lowercase-keys": "2.0.0", - "normalize-url": "4.5.0", - "responselike": "1.0.2" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "dependencies": { "get-stream": { @@ -248,7 +248,7 @@ "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "dev": true, "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "lowercase-keys": { @@ -271,8 +271,8 @@ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, "caseless": { @@ -292,9 +292,9 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "requires": { - "string-width": "3.1.0", - "strip-ansi": "5.2.0", - "wrap-ansi": "5.1.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" }, "dependencies": { "ansi-regex": { @@ -312,9 +312,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -322,7 +322,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } } } @@ -333,7 +333,7 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, "requires": { - "mimic-response": "1.0.1" + "mimic-response": "^1.0.0" } }, "code-point-at": { @@ -361,7 +361,7 @@ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, "commander": { @@ -388,10 +388,10 @@ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "requires": { - "buffer-from": "1.1.1", - "inherits": "2.0.4", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "isarray": { @@ -406,13 +406,13 @@ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", - "isarray": "1.0.0", - "process-nextick-args": "2.0.1", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "safe-buffer": { @@ -427,7 +427,7 @@ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { - "safe-buffer": "5.1.2" + "safe-buffer": "~5.1.0" } } } @@ -444,7 +444,7 @@ "integrity": "sha512-xLIETNkzRcU6jGRzenJyRFxahbtP4628xEKMTI/Ql0Vu8m4h8M7uRLVi7E5OYHuJ6VQPsG4icJumKAFUvfm0+A==", "dev": true, "requires": { - "rimraf": "3.0.0" + "rimraf": "^3.0.0" }, "dependencies": { "rimraf": { @@ -453,7 +453,7 @@ "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", "dev": true, "requires": { - "glob": "7.1.4" + "glob": "^7.1.3" } } } @@ -470,7 +470,7 @@ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "dashdash": { @@ -479,7 +479,7 @@ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -488,7 +488,7 @@ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "decamelize": { @@ -502,7 +502,7 @@ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "requires": { - "mimic-response": "1.0.1" + "mimic-response": "^1.0.0" } }, "deep-extend": { @@ -535,8 +535,8 @@ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { - "jsbn": "0.1.1", - "safer-buffer": "2.1.2" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "electron": { @@ -545,9 +545,9 @@ "integrity": "sha512-70ODZa1RP6K0gE9IV9YLCXPSyhLjXksCuYSSPb3MljbfwfHo5uE6X0CGxzm+54YuPdE2e7EPnWZxOOsJYrS5iQ==", "dev": true, "requires": { - "@types/node": "10.14.21", - "electron-download": "4.1.1", - "extract-zip": "1.6.7" + "@types/node": "^10.12.18", + "electron-download": "^4.1.0", + "extract-zip": "^1.0.3" } }, "electron-download": { @@ -556,15 +556,15 @@ "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", "dev": true, "requires": { - "debug": "3.2.6", - "env-paths": "1.0.0", - "fs-extra": "4.0.3", - "minimist": "1.2.0", - "nugget": "2.0.1", - "path-exists": "3.0.0", - "rc": "1.2.8", - "semver": "5.7.1", - "sumchecker": "2.0.2" + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" } }, "electron-notarize": { @@ -573,8 +573,8 @@ "integrity": "sha512-TpKfJcz4LXl5jiGvZTs5fbEx+wUFXV5u8voeG5WCHWfY/cdgdD8lDZIZRqLVOtR3VO+drgJ9aiSHIO9TYn/fKg==", "dev": true, "requires": { - "debug": "4.1.1", - "fs-extra": "8.1.0" + "debug": "^4.1.1", + "fs-extra": "^8.0.1" }, "dependencies": { "debug": { @@ -583,7 +583,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "fs-extra": { @@ -592,9 +592,9 @@ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } } } @@ -605,12 +605,12 @@ "integrity": "sha512-72vtrz9I3dOeFDaNvO5thwIjrimDiXMmYEbN0hEBqnvcSSMOWugjim2wiY9ox3dhuBFUhxp3owmuZCoH3Ij08A==", "dev": true, "requires": { - "bluebird": "3.7.1", - "compare-version": "0.1.2", - "debug": "2.6.9", - "isbinaryfile": "3.0.3", - "minimist": "1.2.0", - "plist": "3.0.1" + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" }, "dependencies": { "debug": { @@ -636,23 +636,23 @@ "integrity": "sha512-X+ikV+TnnNkIrK93vOjsjPeykCQBFxBS7LXKMTE1s62rXWirGMdjWL+edVkBOMRkH0ROJyFmWM28Dpj6sfEg+A==", "dev": true, "requires": { - "@electron/get": "1.5.0", - "asar": "2.0.1", - "cross-zip": "2.1.6", - "debug": "4.1.1", - "electron-notarize": "0.1.1", - "electron-osx-sign": "0.4.14", - "fs-extra": "8.1.0", - "galactus": "0.2.1", - "get-package-info": "1.0.0", - "junk": "3.1.0", - "parse-author": "2.0.0", - "plist": "3.0.1", - "rcedit": "2.0.0", - "resolve": "1.12.0", - "sanitize-filename": "1.6.3", - "semver": "6.3.0", - "yargs-parser": "13.1.1" + "@electron/get": "^1.3.0", + "asar": "^2.0.1", + "cross-zip": "^2.1.5", + "debug": "^4.0.1", + "electron-notarize": "^0.1.1", + "electron-osx-sign": "^0.4.11", + "fs-extra": "^8.1.0", + "galactus": "^0.2.1", + "get-package-info": "^1.0.0", + "junk": "^3.1.0", + "parse-author": "^2.0.0", + "plist": "^3.0.0", + "rcedit": "^2.0.0", + "resolve": "^1.1.6", + "sanitize-filename": "^1.6.0", + "semver": "^6.0.0", + "yargs-parser": "^13.0.0" }, "dependencies": { "debug": { @@ -661,7 +661,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "fs-extra": { @@ -670,9 +670,9 @@ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "semver": { @@ -694,7 +694,7 @@ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "env-paths": { @@ -709,7 +709,7 @@ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "extend": { @@ -771,7 +771,7 @@ "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "find-up": { @@ -780,8 +780,8 @@ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "dependencies": { "path-exists": { @@ -790,7 +790,7 @@ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } } } @@ -801,8 +801,8 @@ "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", "dev": true, "requires": { - "debug": "4.1.1", - "fs-extra": "7.0.1" + "debug": "^4.1.1", + "fs-extra": "^7.0.0" }, "dependencies": { "debug": { @@ -811,7 +811,7 @@ "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "^2.1.1" } }, "fs-extra": { @@ -820,9 +820,9 @@ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } } } @@ -839,9 +839,9 @@ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.8", - "mime-types": "2.1.24" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, "fs-extra": { @@ -850,9 +850,9 @@ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "jsonfile": "4.0.0", - "universalify": "0.1.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs.realpath": { @@ -867,9 +867,9 @@ "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", "dev": true, "requires": { - "debug": "3.2.6", - "flora-colossus": "1.0.1", - "fs-extra": "4.0.3" + "debug": "^3.1.0", + "flora-colossus": "^1.0.0", + "fs-extra": "^4.0.0" } }, "get-caller-file": { @@ -883,10 +883,10 @@ "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", "dev": true, "requires": { - "bluebird": "3.7.1", - "debug": "2.6.9", - "lodash.get": "4.4.2", - "read-pkg-up": "2.0.0" + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" }, "dependencies": { "debug": { @@ -904,7 +904,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "load-json-file": { @@ -913,10 +913,10 @@ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, "ms": { @@ -931,7 +931,7 @@ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "dev": true, "requires": { - "pify": "2.3.0" + "pify": "^2.0.0" } }, "read-pkg": { @@ -940,9 +940,9 @@ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.5.0", - "path-type": "2.0.0" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, "read-pkg-up": { @@ -951,8 +951,8 @@ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, "strip-bom": { @@ -975,7 +975,7 @@ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "pump": "3.0.0" + "pump": "^3.0.0" } }, "getpass": { @@ -984,7 +984,7 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { @@ -993,12 +993,12 @@ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.4", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "got": { @@ -1007,17 +1007,17 @@ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, "requires": { - "@sindresorhus/is": "0.14.0", - "@szmarczak/http-timer": "1.1.2", - "cacheable-request": "6.1.0", - "decompress-response": "3.3.0", - "duplexer3": "0.1.4", - "get-stream": "4.1.0", - "lowercase-keys": "1.0.1", - "mimic-response": "1.0.1", - "p-cancelable": "1.1.0", - "to-readable-stream": "1.0.0", - "url-parse-lax": "3.0.0" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" } }, "graceful-fs": { @@ -1038,8 +1038,8 @@ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "6.10.2", - "har-schema": "2.0.0" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "hosted-git-info": { @@ -1060,9 +1060,9 @@ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.16.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "indent-string": { @@ -1071,7 +1071,7 @@ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "inflight": { @@ -1080,8 +1080,8 @@ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1108,7 +1108,7 @@ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -1117,7 +1117,7 @@ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-typedarray": { @@ -1144,7 +1144,7 @@ "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", "dev": true, "requires": { - "buffer-alloc": "1.2.0" + "buffer-alloc": "^1.2.0" } }, "isstream": { @@ -1189,7 +1189,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.2.2" + "graceful-fs": "^4.1.6" } }, "jsprim": { @@ -1225,11 +1225,11 @@ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -1238,8 +1238,8 @@ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" } }, "lodash.get": { @@ -1254,8 +1254,8 @@ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lowercase-keys": { @@ -1276,16 +1276,16 @@ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.5.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, "mime-db": { @@ -1315,7 +1315,7 @@ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1353,10 +1353,10 @@ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { - "hosted-git-info": "2.8.5", - "resolve": "1.12.0", - "semver": "5.7.1", - "validate-npm-package-license": "3.0.4" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-url": { @@ -1371,12 +1371,12 @@ "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", "dev": true, "requires": { - "debug": "2.6.9", - "minimist": "1.2.0", - "pretty-bytes": "1.0.4", - "progress-stream": "1.2.0", - "request": "2.88.0", - "single-line-log": "1.1.2", + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", "throttleit": "0.0.2" }, "dependencies": { @@ -1427,7 +1427,7 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "p-cancelable": { @@ -1442,7 +1442,7 @@ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -1451,7 +1451,7 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "1.3.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -1466,7 +1466,7 @@ "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", "dev": true, "requires": { - "author-regex": "1.0.0" + "author-regex": "^1.0.0" } }, "parse-json": { @@ -1475,7 +1475,7 @@ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", "dev": true, "requires": { - "error-ex": "1.3.2" + "error-ex": "^1.2.0" } }, "path-exists": { @@ -1501,9 +1501,9 @@ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "graceful-fs": "4.2.2", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pend": { @@ -1536,7 +1536,7 @@ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "plist": { @@ -1545,9 +1545,9 @@ "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "dev": true, "requires": { - "base64-js": "1.3.1", - "xmlbuilder": "9.0.7", - "xmldom": "0.1.27" + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" } }, "prepend-http": { @@ -1562,8 +1562,8 @@ "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.1.0" } }, "process-nextick-args": { @@ -1578,8 +1578,8 @@ "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", "dev": true, "requires": { - "speedometer": "0.1.4", - "through2": "0.2.3" + "speedometer": "~0.1.2", + "through2": "~0.2.3" } }, "psl": { @@ -1594,8 +1594,8 @@ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { - "end-of-stream": "1.4.4", - "once": "1.4.0" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, "punycode": { @@ -1616,10 +1616,10 @@ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "rcedit": { @@ -1634,9 +1634,9 @@ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.5.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -1645,8 +1645,8 @@ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { @@ -1655,10 +1655,10 @@ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.4", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "redent": { @@ -1667,8 +1667,8 @@ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" } }, "repeating": { @@ -1677,7 +1677,7 @@ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -1686,26 +1686,26 @@ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.8.0", - "caseless": "0.12.0", - "combined-stream": "1.0.8", - "extend": "3.0.2", - "forever-agent": "0.6.1", - "form-data": "2.3.3", - "har-validator": "5.1.3", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.24", - "oauth-sign": "0.9.0", - "performance-now": "2.1.0", - "qs": "6.5.2", - "safe-buffer": "5.2.0", - "tough-cookie": "2.4.3", - "tunnel-agent": "0.6.0", - "uuid": "3.3.3" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "require-directory": { @@ -1724,7 +1724,7 @@ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { - "path-parse": "1.0.6" + "path-parse": "^1.0.6" } }, "responselike": { @@ -1733,7 +1733,7 @@ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, "requires": { - "lowercase-keys": "1.0.1" + "lowercase-keys": "^1.0.0" } }, "rimraf": { @@ -1742,7 +1742,7 @@ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { - "glob": "7.1.4" + "glob": "^7.1.3" } }, "safe-buffer": { @@ -1763,7 +1763,7 @@ "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "requires": { - "truncate-utf8-bytes": "1.0.2" + "truncate-utf8-bytes": "^1.0.0" } }, "semver": { @@ -1789,7 +1789,7 @@ "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.1" } }, "spdx-correct": { @@ -1798,8 +1798,8 @@ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.5" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -1814,8 +1814,8 @@ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { - "spdx-exceptions": "2.2.0", - "spdx-license-ids": "3.0.5" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -1836,15 +1836,15 @@ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { - "asn1": "0.2.4", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.2", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.2", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "safer-buffer": "2.1.2", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, "string-width": { @@ -1853,9 +1853,9 @@ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { @@ -1870,7 +1870,7 @@ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -1879,7 +1879,7 @@ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-indent": { @@ -1888,7 +1888,7 @@ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -1903,7 +1903,7 @@ "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" }, "dependencies": { "debug": { @@ -1935,8 +1935,8 @@ "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", "dev": true, "requires": { - "readable-stream": "1.1.14", - "xtend": "2.1.2" + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" } }, "tmp": { @@ -1945,7 +1945,7 @@ "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", "dev": true, "requires": { - "rimraf": "2.7.1" + "rimraf": "^2.6.3" } }, "tmp-promise": { @@ -1954,7 +1954,7 @@ "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==", "dev": true, "requires": { - "bluebird": "3.7.1", + "bluebird": "^3.5.0", "tmp": "0.1.0" } }, @@ -1970,8 +1970,8 @@ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { - "psl": "1.4.0", - "punycode": "1.4.1" + "psl": "^1.1.24", + "punycode": "^1.4.1" }, "dependencies": { "punycode": { @@ -1994,7 +1994,7 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "1.0.4" + "utf8-byte-length": "^1.0.1" } }, "tunnel-agent": { @@ -2003,7 +2003,7 @@ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "safe-buffer": "5.2.0" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -2030,7 +2030,7 @@ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "punycode": "2.1.1" + "punycode": "^2.1.0" } }, "url-parse-lax": { @@ -2039,7 +2039,7 @@ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "dev": true, "requires": { - "prepend-http": "2.0.0" + "prepend-http": "^2.0.0" } }, "utf8-byte-length": { @@ -2066,8 +2066,8 @@ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { - "spdx-correct": "3.1.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "verror": { @@ -2076,9 +2076,9 @@ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "which-module": { @@ -2091,9 +2091,9 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "requires": { - "ansi-styles": "3.2.1", - "string-width": "3.1.0", - "strip-ansi": "5.2.0" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" }, "dependencies": { "ansi-regex": { @@ -2111,9 +2111,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -2121,7 +2121,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } } } @@ -2150,7 +2150,7 @@ "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", "dev": true, "requires": { - "object-keys": "0.4.0" + "object-keys": "~0.4.0" } }, "y18n": { @@ -2163,17 +2163,17 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.0.tgz", "integrity": "sha512-/is78VKbKs70bVZH7w4YaZea6xcJWOAwkhbR0CFuZBmYtfTYF0xjGJF43AYd8g2Uii1yJwmS5GR2vBmrc32sbg==", "requires": { - "cliui": "5.0.0", - "decamelize": "1.2.0", - "find-up": "3.0.0", - "get-caller-file": "2.0.5", - "require-directory": "2.1.1", - "require-main-filename": "2.0.0", - "set-blocking": "2.0.0", - "string-width": "3.1.0", - "which-module": "2.0.0", - "y18n": "4.0.0", - "yargs-parser": "15.0.0" + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.0" }, "dependencies": { "ansi-regex": { @@ -2191,7 +2191,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "locate-path": "3.0.0" + "locate-path": "^3.0.0" } }, "is-fullwidth-code-point": { @@ -2204,8 +2204,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "requires": { - "p-locate": "3.0.0", - "path-exists": "3.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, "p-limit": { @@ -2213,7 +2213,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "requires": { - "p-try": "2.2.0" + "p-try": "^2.0.0" } }, "p-locate": { @@ -2221,7 +2221,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "requires": { - "p-limit": "2.2.1" + "p-limit": "^2.0.0" } }, "p-try": { @@ -2234,9 +2234,9 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "requires": { - "emoji-regex": "7.0.3", - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "5.2.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" } }, "strip-ansi": { @@ -2244,7 +2244,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { - "ansi-regex": "4.1.0" + "ansi-regex": "^4.1.0" } }, "yargs-parser": { @@ -2252,8 +2252,8 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -2264,8 +2264,8 @@ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { - "camelcase": "5.3.1", - "decamelize": "1.2.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "dependencies": { "camelcase": { @@ -2282,7 +2282,7 @@ "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", "dev": true, "requires": { - "fd-slicer": "1.0.1" + "fd-slicer": "~1.0.1" } } } diff --git a/screenshare/packager.js b/screenshare/packager.js index 5a150a563a..fe701e5d87 100644 --- a/screenshare/packager.js +++ b/screenshare/packager.js @@ -1,7 +1,7 @@ var packager = require('electron-packager'); var options = { dir: __dirname, - name: "screenshare", + name: "hifi-screenshare", version: "0.1.0", overwrite: true, prune: true, diff --git a/screenshare/packager_mac.js b/screenshare/packager_mac.js index 7c9c446bd5..40cac7b743 100644 --- a/screenshare/packager_mac.js +++ b/screenshare/packager_mac.js @@ -1,7 +1,7 @@ var packager = require('electron-packager'); var options = { dir: __dirname, - name: "screenshare", + name: "hifi-screenshare", version: "0.1.0", overwrite: true, prune: true, @@ -9,7 +9,7 @@ var options = { platform: "darwin", CompanyName: "High Fidelity, Inc.", FileDescription: "High Fidelity Screenshare", - OriginalFilename: "screenshare.exe", + OriginalFilename: "hifi-screenshare.app", ignore: "electron-packager|README.md|CMakeLists.txt|packager.js|.gitignore" }; From 6291590737c70dc1ae33cc4054d1770af546a14e Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:01:02 -0700 Subject: [PATCH 106/547] Fixup paths --- interface/src/scripting/ScreenshareScriptingInterface.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index e07232535b..de467ba4f0 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -13,12 +13,12 @@ public: #if DEV_BUILD #ifdef Q_OS_WIN - const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/hifi-screenshare-win32-x64/hifi-screenshare.exe" }; + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/hifi-screenshare-win32-x64/hifi-screenshare.exe" }; #elif defined(Q_OS_MAC) - const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare-darwin-x64/hifi-screenshare.app" }; + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/screenshare-darwin-x64/hifi-screenshare.app" }; #else // This path won't exist on other platforms, so the Screenshare Scripting Interface will exit early when invoked. - const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/hifi-screenshare" }; + const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/screenshare-other-os/hifi-screenshare" }; #endif #else #ifdef Q_OS_WIN From cc9eb31d992aeb6bc8a04881c41bf1b60c7dd577 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:11:38 -0700 Subject: [PATCH 107/547] Build in PR builds --- screenshare/CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt index c2e9cda120..111001ac07 100644 --- a/screenshare/CMakeLists.txt +++ b/screenshare/CMakeLists.txt @@ -32,6 +32,12 @@ elseif (APPLE) ) endif() -# Don't build the Screenshare Electron app when building the `ALL_BUILD` target. -# Don't build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. -set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) +if (PR_BUILD) + # DO build the Screenshare Electron app when building the `ALL_BUILD` target. + # DO build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. + set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) +else () + # DO NOT build the Screenshare Electron app when building the `ALL_BUILD` target. + # DO NOT build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. + set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) +endif () From f8e516efb8e7c8f34722a80bfdeca89d70d68be6 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:14:52 -0700 Subject: [PATCH 108/547] Fix typos from the last commit --- screenshare/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt index 111001ac07..d19535b238 100644 --- a/screenshare/CMakeLists.txt +++ b/screenshare/CMakeLists.txt @@ -35,9 +35,11 @@ endif() if (PR_BUILD) # DO build the Screenshare Electron app when building the `ALL_BUILD` target. # DO build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. - set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) + set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) + set_target_properties(${TARGET_NAME}-npm-install PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) else () # DO NOT build the Screenshare Electron app when building the `ALL_BUILD` target. # DO NOT build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) + set_target_properties(${TARGET_NAME}-npm-install PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) endif () From c22f5097c077cf79f19ce513e9442e194bcb1412 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:24:28 -0700 Subject: [PATCH 109/547] Make SCREENSHARE_EXE_PATH private --- interface/src/scripting/ScreenshareScriptingInterface.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index de467ba4f0..af84999f01 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -11,6 +11,9 @@ class ScreenshareScriptingInterface : public QObject, public Dependency { public: ScreenshareScriptingInterface(); + Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); + +private: #if DEV_BUILD #ifdef Q_OS_WIN const QString SCREENSHARE_EXE_PATH{ PathUtils::projectRootPath() + "/screenshare/hifi-screenshare-win32-x64/hifi-screenshare.exe" }; @@ -30,8 +33,6 @@ public: const QString SCREENSHARE_EXE_PATH{ QCoreApplication::applicationDirPath() + "/hifi-screenshare/hifi-screenshare" }; #endif #endif - - Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file From 9e3318e5ddd8976b44653bedcf7f4ae430c6f1d1 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 31 Oct 2019 09:36:58 -0700 Subject: [PATCH 110/547] added readme --- screenshare/.gitignore | 3 ++- screenshare/README.md | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 screenshare/README.md diff --git a/screenshare/.gitignore b/screenshare/.gitignore index 7ebd067d27..427ed5858c 100644 --- a/screenshare/.gitignore +++ b/screenshare/.gitignore @@ -1,3 +1,4 @@ hifi-screenshare-*/ hifi-screenshare*.zip -screenshare*.zip \ No newline at end of file +screenshare*.zip +screenshare-*/ \ No newline at end of file diff --git a/screenshare/README.md b/screenshare/README.md new file mode 100644 index 0000000000..53e8a00ea2 --- /dev/null +++ b/screenshare/README.md @@ -0,0 +1,22 @@ +# Hifi-Screenshare + +The Screenshare app will allow easy desktop sharing by being launced from within the highfidelity interface. + +# Setup +Create the following environment variable the hifi-screenshare app will use to get the proper connection info: +hifiScreenshareURL="" + +# Screenshare API +In order to launch the hifi-screenshare app from within interface, you will call the following: +Screenshare.startScreenshare(displayName, userName, token, sessionID, apiKey); +The app won't run without the correct info. + +# Files included +packager.js : +Calling npm run packager will use this file to create the actual electron hifi-screenshare executable + +src/main.js : +The main process file to configure the electron app + +srce/app.js : +The render file to dispaly the screenshare UI \ No newline at end of file From 1e2fcf8bd54b8893197be67850b4a071bcedea5f Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:43:56 -0700 Subject: [PATCH 111/547] Add screenshareStopped signal; use std::unique_ptr --- .../ScreenshareScriptingInterface.cpp | 36 ++++++++++++------- .../scripting/ScreenshareScriptingInterface.h | 7 ++++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index dd2748f84e..9e3bbb5319 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -10,7 +10,6 @@ // #include "ScreenshareScriptingInterface.h" -#include #include #include #include @@ -35,7 +34,12 @@ void ScreenshareScriptingInterface::startScreenshare(QString displayName, QStrin return; } - qDebug() << "ZRF: Inside startScreenshare(). `SCREENSHARE_EXE_PATH`:" << SCREENSHARE_EXE_PATH; + if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { + qDebug() << "Screenshare process already running. Aborting..."; + return; + } + + _screenshareProcess.reset(new QProcess(this)); QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { @@ -55,21 +59,27 @@ void ScreenshareScriptingInterface::startScreenshare(QString displayName, QStrin arguments << "--apiKey=" + apiKey; arguments << "--sessionID=" + sessionID; - QProcess* electronProcess = new QProcess(this); - - connect(electronProcess, &QProcess::errorOccurred, + connect(_screenshareProcess.get(), &QProcess::errorOccurred, [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); - connect(electronProcess, &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(electronProcess, &QProcess::stateChanged, + connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); + connect(_screenshareProcess.get(), &QProcess::stateChanged, [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); - connect(electronProcess, QOverload::of(&QProcess::finished), + connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + emit screenshareStopped(); }); - // Note for Milad: - // We'll have to have equivalent lines of code for MacOS. -#ifdef Q_OS_WIN - electronProcess->start(SCREENSHARE_EXE_PATH, arguments); -#endif + _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); }; + +void ScreenshareScriptingInterface::stopScreenshare() { + if (QThread::currentThread() != thread()) { + QMetaObject::invokeMethod(this, "stopScreenshare"); + return; + } + + if (_screenshareProcess->state() != QProcess::NotRunning) { + _screenshareProcess->terminate(); + } +} diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index af84999f01..7cbbc9a398 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -2,6 +2,7 @@ #define hifi_ScreenshareScriptingInterface_h #include +#include #include #include @@ -12,6 +13,10 @@ public: ScreenshareScriptingInterface(); Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); + Q_INVOKABLE void stopScreenshare(); + +signals: + void screenshareStopped(); private: #if DEV_BUILD @@ -33,6 +38,8 @@ private: const QString SCREENSHARE_EXE_PATH{ QCoreApplication::applicationDirPath() + "/hifi-screenshare/hifi-screenshare" }; #endif #endif + + std::unique_ptr _screenshareProcess{ nullptr }; }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file From d8026304a468db2d47e140cd6fa8dc4042540330 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 09:47:31 -0700 Subject: [PATCH 112/547] Guard against a crash in stopScreenshare() --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 9e3bbb5319..7d0e2d8e2f 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -79,7 +79,7 @@ void ScreenshareScriptingInterface::stopScreenshare() { return; } - if (_screenshareProcess->state() != QProcess::NotRunning) { + if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { _screenshareProcess->terminate(); } } From b1d0e42de8079146d08d5e97264b9c0c4516de69 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 31 Oct 2019 10:00:22 -0700 Subject: [PATCH 113/547] updated packager --- screenshare/packager.js | 40 +++++++++++++++++++++++++++---------- screenshare/packager_mac.js | 26 ------------------------ 2 files changed, 29 insertions(+), 37 deletions(-) delete mode 100644 screenshare/packager_mac.js diff --git a/screenshare/packager.js b/screenshare/packager.js index fe701e5d87..5a8e4fb082 100644 --- a/screenshare/packager.js +++ b/screenshare/packager.js @@ -1,25 +1,43 @@ var packager = require('electron-packager'); +var osType = require('os').type(); + +var platform = null; +if (osType == "Darwin" || osType == "Linux") { + platform = osType.toLowerCase(); +} else if (osType == "Windows_NT") { + platform = "win32" +} + +var NAME = "hifi-screenshare"; var options = { dir: __dirname, - name: "hifi-screenshare", + name: NAME, version: "0.1.0", overwrite: true, prune: true, arch: "x64", - platform: "win32", - CompanyName: "High Fidelity, Inc.", - FileDescription: "High Fidelity Screenshare", - OriginalFilename: "hifi-screenshare.exe", + platform: platform, ignore: "electron-packager|README.md|CMakeLists.txt|packager.js|.gitignore" }; +// setup per OS options +if (osType == "Darwin") { + options["app-bundle-id"] = "com.highfidelity.hifi-screenshare"; +} else if (osType == "Windows_NT") { + options["version-string"] = { + CompanyName: "High Fidelity, Inc.", + FileDescription: "High Fidelity Screenshare", + ProductName: NAME, + OriginalFilename: NAME + ".exe" + } +} // call the packager to produce the executable -packager(options, function(error, appPath) { - if (error) { +packager(options) + .then(appPath => { + console.log("Wrote new app to " + appPath); + }) + .catch(error => { console.error("There was an error writing the packaged console: " + error.message); process.exit(1); - } else { - console.log("Wrote new app to " + appPath); - } -}); + }); \ No newline at end of file diff --git a/screenshare/packager_mac.js b/screenshare/packager_mac.js deleted file mode 100644 index 40cac7b743..0000000000 --- a/screenshare/packager_mac.js +++ /dev/null @@ -1,26 +0,0 @@ -var packager = require('electron-packager'); -var options = { - dir: __dirname, - name: "hifi-screenshare", - version: "0.1.0", - overwrite: true, - prune: true, - arch: "x64", - platform: "darwin", - CompanyName: "High Fidelity, Inc.", - FileDescription: "High Fidelity Screenshare", - OriginalFilename: "hifi-screenshare.app", - ignore: "electron-packager|README.md|CMakeLists.txt|packager.js|.gitignore" -}; - -options["app-bundle-id"] = "com.highfidelity.screenshare"; - -// call the packager to produce the executable -packager(options, function(error, appPath) { - if (error) { - console.error("There was an error writing the packaged console: " + error.message); - process.exit(1); - } else { - console.log("Wrote new app to " + appPath); - } -}); From 47b3fdbfe3545174735cb916ceadce79eb796151 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 10:01:00 -0700 Subject: [PATCH 114/547] Stop screenshare process on interface shutdown --- interface/src/Application.cpp | 1 + interface/src/scripting/ScreenshareScriptingInterface.cpp | 5 ++++- interface/src/scripting/ScreenshareScriptingInterface.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 002f65abc0..17132866f5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2938,6 +2938,7 @@ Application::~Application() { DependencyManager::destroy(); DependencyManager::destroy(); DependencyManager::destroy(); + DependencyManager::destroy(); DependencyManager::get()->cleanup(); diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 7d0e2d8e2f..b4793067c5 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -17,9 +17,12 @@ ScreenshareScriptingInterface::ScreenshareScriptingInterface() { - }; +ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { + stopScreenshare(); +} + void ScreenshareScriptingInterface::startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 7cbbc9a398..6d7c99b64a 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -11,6 +11,7 @@ class ScreenshareScriptingInterface : public QObject, public Dependency { Q_OBJECT public: ScreenshareScriptingInterface(); + ~ScreenshareScriptingInterface(); Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); Q_INVOKABLE void stopScreenshare(); From a336a71db9ec97896c28706cf5b01f4f76a30e93 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 31 Oct 2019 10:39:04 -0700 Subject: [PATCH 115/547] Add necessary include --- interface/src/scripting/ScreenshareScriptingInterface.h | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 6d7c99b64a..76aef27826 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -3,6 +3,7 @@ #include #include +#include #include #include From 240764caa91cf71fa083c86447f71a146fb80b05 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 31 Oct 2019 12:39:13 -0700 Subject: [PATCH 116/547] updated out folder --- screenshare/CMakeLists.txt | 2 +- screenshare/packager.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt index d19535b238..debe8a5fe6 100644 --- a/screenshare/CMakeLists.txt +++ b/screenshare/CMakeLists.txt @@ -5,7 +5,7 @@ add_custom_target(${TARGET_NAME}-npm-install WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ) add_custom_target(${TARGET_NAME} - COMMAND npm run packager + COMMAND npm run packager -- --out ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS ${TARGET_NAME}-npm-install ) diff --git a/screenshare/packager.js b/screenshare/packager.js index 5a8e4fb082..f64198cb34 100644 --- a/screenshare/packager.js +++ b/screenshare/packager.js @@ -1,5 +1,6 @@ var packager = require('electron-packager'); var osType = require('os').type(); +var argv = require('yargs').argv; var platform = null; if (osType == "Darwin" || osType == "Linux") { @@ -32,6 +33,11 @@ if (osType == "Darwin") { } } +// check if we were passed a custom out directory, pass it along if so +if (argv.out) { + options.out = argv.out +} + // call the packager to produce the executable packager(options) .then(appPath => { From 927e08acdba2ede624145dad7f37f3cab6265776 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Sun, 20 Oct 2019 23:59:59 -0700 Subject: [PATCH 117/547] Explore the simple mesh pure pos triangle list idea --- libraries/hfm/src/hfm/HFM.h | 2 ++ libraries/hfm/src/hfm/HFMModelMath.cpp | 20 ++++++++++++++++++++ libraries/hfm/src/hfm/HFMModelMath.h | 10 ++++++++++ 3 files changed, 32 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index c61f03d070..bfea8a66af 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -260,6 +260,8 @@ public: graphics::MeshPointer _mesh; bool wasCompressed { false }; + + MeshIndexedTrianglesPos _meshAsIndexedTrianglePos; }; /// A single animation frame. diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 0026378060..cf25c5fed6 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -139,4 +139,24 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s return reweightedDeformers; } + +MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector srcParts) { + + auto newIndicesCount = 0; + for (const auto& part : srcParts) { + newIndicesCount += part.triangleIndices.size() + part.quadTrianglesIndices.size(); + } + + MeshIndexedTrianglesPos dest; + dest.indices.reserve(newIndicesCount); + for (const auto& part : srcParts) { + dest.indices.insert(dest.indices.end(), part.triangleIndices.cbegin(), part.triangleIndices.cend()); + dest.indices.insert(dest.indices.end(), part.quadTrianglesIndices.cbegin(), part.quadTrianglesIndices.cend()); + } + + dest.vertices = srcVertices; + + return dest; +} + }; diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index b80adad3d0..59c64fc490 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -36,6 +36,16 @@ public: const uint16_t DEFAULT_SKINNING_WEIGHTS_PER_VERTEX = 4; ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = DEFAULT_SKINNING_WEIGHTS_PER_VERTEX); + + +struct MeshIndexedTrianglesPos { +public: + std::vector vertices; + std::vector indices; +}; + +MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector srcParts); + }; #endif // #define hifi_hfm_ModelMath_h From 24e6a966a8bd7e3d8bf803c50bdf70692366558b Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 21 Oct 2019 00:33:46 -0700 Subject: [PATCH 118/547] Keep exploring --- libraries/hfm/src/hfm/HFM.h | 3 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 52 ++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index bfea8a66af..41f2e1d501 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -261,7 +261,8 @@ public: graphics::MeshPointer _mesh; bool wasCompressed { false }; - MeshIndexedTrianglesPos _meshAsIndexedTrianglePos; + std::vector uniqueVertices; + std::vector trianglesIndices; }; /// A single animation frame. diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index cf25c5fed6..b5ff47e6c0 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -14,6 +14,8 @@ #include #include "ModelFormatLogging.h" +#include + namespace hfm { void forEachIndex(const hfm::MeshPart& meshPart, std::function func) { @@ -142,19 +144,55 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector srcParts) { + MeshIndexedTrianglesPos dest; + dest.vertices.resize(srcVertices.size()); + + std::vector remap(srcVertices.size()); + { + std::unordered_map uniqueVertices; + int vi = 0; + int vu = 0; + for (const auto& v : srcVertices) { + auto foundIndex = uniqueVertices.find(v); + if (foundIndex != uniqueVertices.end()) { + remap[vi] = foundIndex->second; + } else { + uniqueVertices[v] = vu; + remap[vi] = vu; + dest.vertices[vu] = v; + vu++; + } + ++vi; + } + if (uniqueVertices.size() < srcVertices.size()) { + dest.vertices.resize(uniqueVertices.size()); + dest.vertices.shrink_to_fit(); + + } + } + auto newIndicesCount = 0; for (const auto& part : srcParts) { newIndicesCount += part.triangleIndices.size() + part.quadTrianglesIndices.size(); } - MeshIndexedTrianglesPos dest; - dest.indices.reserve(newIndicesCount); - for (const auto& part : srcParts) { - dest.indices.insert(dest.indices.end(), part.triangleIndices.cbegin(), part.triangleIndices.cend()); - dest.indices.insert(dest.indices.end(), part.quadTrianglesIndices.cbegin(), part.quadTrianglesIndices.cend()); - } + { + dest.indices.resize(newIndicesCount); + int i = 0; + for (const auto& part : srcParts) { + for (const auto& qti : part.quadTrianglesIndices) { + dest.indices[i] = remap[qti]; + ++i; + } + for (const auto& ti : part.quadTrianglesIndices) { + dest.indices[i] = remap[ti]; + ++i; + } - dest.vertices = srcVertices; + // dest.indices.insert(dest.indices.end(), part.quadTrianglesIndices.cbegin(), part.quadTrianglesIndices.cend()); + // dest.indices.insert(dest.indices.end(), part.triangleIndices.cbegin(), part.triangleIndices.cend()); + } + } return dest; } From 465e8c3e18b20c266731882fddf2149308157df9 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Mon, 21 Oct 2019 16:29:35 -0700 Subject: [PATCH 119/547] Prototyping the slim mesh generation --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 1 + libraries/hfm/src/hfm/HFM.h | 1 + libraries/hfm/src/hfm/HFMModelMath.cpp | 19 +++++++++++++------ libraries/hfm/src/hfm/HFMModelMath.h | 3 ++- .../src/model-networking/ModelCache.cpp | 8 ++++++++ libraries/shared/src/GLMHelpers.h | 10 ++++++++++ 6 files changed, 35 insertions(+), 7 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index e687f5e9f2..895059c6ad 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -174,6 +174,7 @@ void appendIndex(MeshData& data, QVector& indices, int index, bool deduplic data.indices.insert(vertex, newIndex); data.extracted.newIndices.insert(vertexIndex, newIndex); data.extracted.mesh.vertices.append(position); + data.extracted.mesh.positions.emplace_back(position); data.extracted.mesh.originalIndices.append(vertexIndex); data.extracted.mesh.normals.append(normal); data.extracted.mesh.texCoords.append(vertex.texCoord); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 41f2e1d501..ee3a25fc46 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -235,6 +235,7 @@ public: std::vector parts; + std::vector positions; QVector vertices; QVector normals; QVector tangents; diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index b5ff47e6c0..f34a43bf19 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -16,6 +16,9 @@ #include +#include +#include + namespace hfm { void forEachIndex(const hfm::MeshPart& meshPart, std::function func) { @@ -142,12 +145,13 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s } -MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector srcParts) { +const MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector& srcParts) { MeshIndexedTrianglesPos dest; - dest.vertices.resize(srcVertices.size()); + // dest.vertices.resize(srcVertices.size()); + dest.vertices = srcVertices; - std::vector remap(srcVertices.size()); + /* std::vector remap(srcVertices.size()); { std::unordered_map uniqueVertices; int vi = 0; @@ -170,7 +174,7 @@ MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector vertices; std::vector indices; + std::vector parts; // Offset in the indices, Number of indices }; -MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector srcParts); +const MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector& srcParts); }; diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index bb911c6914..f427326f68 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -29,6 +29,8 @@ #include #include +#include + Q_LOGGING_CATEGORY(trace_resource_parse_geometry, "trace.resource.parse.geometry") class GeometryExtra { @@ -320,6 +322,7 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate _hfmModel = hfmModel; _materialMapping = materialMapping; + // Copy materials QHash materialIDAtlas; for (const HFMMaterial& material : _hfmModel->materials) { @@ -328,11 +331,16 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate } std::shared_ptr meshes = std::make_shared(); + std::vector triangleListMeshes = std::vector(); int meshID = 0; for (const HFMMesh& mesh : _hfmModel->meshes) { // Copy mesh pointers meshes->emplace_back(mesh._mesh); meshID++; + + auto simpleMesh = hfm::generateMeshIndexedTrianglePos(mesh.positions, mesh.parts); + + triangleListMeshes.emplace_back(simpleMesh); } _meshes = meshes; diff --git a/libraries/shared/src/GLMHelpers.h b/libraries/shared/src/GLMHelpers.h index cfb4bb6398..5787295da6 100644 --- a/libraries/shared/src/GLMHelpers.h +++ b/libraries/shared/src/GLMHelpers.h @@ -392,4 +392,14 @@ inline glm::vec4 extractFov( const glm::mat4& m) { return result; } +inline bool operator<(const glm::vec3& lhs, const glm::vec3& rhs) { + return (lhs.x < rhs.x) || ( + (lhs.x == rhs.x) && ( + (lhs.y < rhs.y) || ( + (lhs.y == rhs.y) && (lhs.z < rhs.z) + ) + ) + ); +} + #endif // hifi_GLMHelpers_h From e9ce467eb9e7d42aafdaccecb0a2c7aa3ca3cff3 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Tue, 22 Oct 2019 01:43:08 -0700 Subject: [PATCH 120/547] Crahs because of ? --- libraries/fbx/src/FBXSerializer_Mesh.cpp | 1 - libraries/hfm/src/hfm/HFM.h | 14 +++++-- libraries/hfm/src/hfm/HFMModelMath.cpp | 9 ++-- libraries/hfm/src/hfm/HFMModelMath.h | 13 +----- .../model-baker/src/model-baker/Baker.cpp | 41 ++++++++++++++++--- .../src/model-networking/ModelCache.cpp | 5 --- 6 files changed, 53 insertions(+), 30 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer_Mesh.cpp b/libraries/fbx/src/FBXSerializer_Mesh.cpp index 895059c6ad..e687f5e9f2 100644 --- a/libraries/fbx/src/FBXSerializer_Mesh.cpp +++ b/libraries/fbx/src/FBXSerializer_Mesh.cpp @@ -174,7 +174,6 @@ void appendIndex(MeshData& data, QVector& indices, int index, bool deduplic data.indices.insert(vertex, newIndex); data.extracted.newIndices.insert(vertexIndex, newIndex); data.extracted.mesh.vertices.append(position); - data.extracted.mesh.positions.emplace_back(position); data.extracted.mesh.originalIndices.append(vertexIndex); data.extracted.mesh.normals.append(normal); data.extracted.mesh.texCoords.append(vertex.texCoord); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ee3a25fc46..419f47d680 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -229,14 +229,22 @@ public: bool needTangentSpace() const; }; + +/// Simple Triangle List vertices; + std::vector indices; + std::vector parts; // Offset in the indices, Number of indices +}; + /// A single mesh (with optional blendshapes). class Mesh { public: std::vector parts; - std::vector positions; QVector vertices; + std::vector _vertices; QVector normals; QVector tangents; QVector colors; @@ -255,6 +263,8 @@ public: // Blendshape attributes QVector blendshapes; + // Simple Triangle List Mesh generated during baking + hfm::TriangleListMesh triangleListMesh; QVector originalIndices; // Original indices of the vertices unsigned int meshIndex; // the order the meshes appeared in the object file @@ -262,8 +272,6 @@ public: graphics::MeshPointer _mesh; bool wasCompressed { false }; - std::vector uniqueVertices; - std::vector trianglesIndices; }; /// A single animation frame. diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index f34a43bf19..1678d5d405 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -145,11 +145,12 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s } -const MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector& srcParts) { +const TriangleListMesh generateTriangleListMesh(const std::vector& srcVertices, const std::vector& srcParts) { - MeshIndexedTrianglesPos dest; - // dest.vertices.resize(srcVertices.size()); - dest.vertices = srcVertices; + TriangleListMesh dest; + + // just copy vertices + dest.vertices.insert(dest.vertices.end(), srcVertices.cbegin(), srcVertices.cend()); /* std::vector remap(srcVertices.size()); { diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index 38d3262042..dc397c5e6f 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -25,8 +25,7 @@ void calculateExtentsForShape(hfm::Shape& shape, const std::vector& m void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); -class ReweightedDeformers { -public: +struct ReweightedDeformers { std::vector indices; std::vector weights; uint16_t weightsPerVertex { 0 }; @@ -37,15 +36,7 @@ const uint16_t DEFAULT_SKINNING_WEIGHTS_PER_VERTEX = 4; ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const std::vector skinClusters, const uint16_t weightsPerVertex = DEFAULT_SKINNING_WEIGHTS_PER_VERTEX); - -struct MeshIndexedTrianglesPos { -public: - std::vector vertices; - std::vector indices; - std::vector parts; // Offset in the indices, Number of indices -}; - -const MeshIndexedTrianglesPos generateMeshIndexedTrianglePos(const std::vector& srcVertices, const std::vector& srcParts); +const TriangleListMesh generateTriangleListMesh(const std::vector& srcVertices, const std::vector& srcParts); }; diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index c63495c169..c6c8be4bdd 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -23,6 +23,7 @@ #include "CalculateExtentsTask.h" #include "BuildDracoMeshTask.h" #include "ParseFlowDataTask.h" +#include namespace baker { @@ -49,6 +50,29 @@ namespace baker { } }; + class BuildMeshTriangleListTask { + public: + using Input = std::vector; + using Output = std::vector; + using JobModel = Job::ModelIO; + + void run(const BakeContextPointer& context, const Input& input, Output& output) { + const auto& meshesIn = input; + auto& indexedTrianglesMeshOut = output; + indexedTrianglesMeshOut.clear(); + indexedTrianglesMeshOut.resize(meshesIn.size()); + + for (int i = 0; i < meshesIn.size(); i++) { + auto& mesh = meshesIn[i]; + + auto meshPointer = const_cast (&mesh); + meshPointer->_vertices = meshPointer->vertices.toStdVector(); + + indexedTrianglesMeshOut[i] = hfm::generateTriangleListMesh(meshPointer->_vertices, mesh.parts); + } + } + }; + class BuildBlendshapesTask { public: using Input = VaryingSet3, std::vector>; @@ -80,21 +104,23 @@ namespace baker { class BuildMeshesTask { public: - using Input = VaryingSet5, std::vector, NormalsPerMesh, TangentsPerMesh, BlendshapesPerMesh>; + using Input = VaryingSet6, std::vector, std::vector, NormalsPerMesh, TangentsPerMesh, BlendshapesPerMesh>; using Output = std::vector; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { auto& meshesIn = input.get0(); int numMeshes = (int)meshesIn.size(); - auto& graphicsMeshesIn = input.get1(); - auto& normalsPerMeshIn = input.get2(); - auto& tangentsPerMeshIn = input.get3(); - auto& blendshapesPerMeshIn = input.get4(); + auto& triangleListMeshesIn = input.get1(); + auto& graphicsMeshesIn = input.get2(); + auto& normalsPerMeshIn = input.get3(); + auto& tangentsPerMeshIn = input.get4(); + auto& blendshapesPerMeshIn = input.get5(); auto meshesOut = meshesIn; for (int i = 0; i < numMeshes; i++) { auto& meshOut = meshesOut[i]; + meshOut.triangleListMesh = triangleListMeshesIn[i]; meshOut._mesh = safeGet(graphicsMeshesIn, i); meshOut.normals = QVector::fromStdVector(safeGet(normalsPerMeshIn, i)); meshOut.tangents = QVector::fromStdVector(safeGet(tangentsPerMeshIn, i)); @@ -162,6 +188,9 @@ namespace baker { const auto collectShapeVerticesInputs = CollectShapeVerticesTask::Input(meshesIn, shapesIn, jointsIn, skinDeformersIn).asVarying(); const auto shapeVerticesPerJoint = model.addJob("CollectShapeVertices", collectShapeVerticesInputs); + // Build the slim triangle list mesh for each hfm::mesh + const auto triangleListMeshes = model.addJob("BuildMeshTriangleListTask", meshesIn); + // Build the graphics::MeshPointer for each hfm::Mesh const auto buildGraphicsMeshInputs = BuildGraphicsMeshTask::Input(meshesIn, url, meshIndicesToModelNames, normalsPerMesh, tangentsPerMesh, shapesIn, skinDeformersIn).asVarying(); const auto graphicsMeshes = model.addJob("BuildGraphicsMesh", buildGraphicsMeshInputs); @@ -200,7 +229,7 @@ namespace baker { // Combine the outputs into a new hfm::Model const auto buildBlendshapesInputs = BuildBlendshapesTask::Input(blendshapesPerMeshIn, normalsPerBlendshapePerMesh, tangentsPerBlendshapePerMesh).asVarying(); const auto blendshapesPerMeshOut = model.addJob("BuildBlendshapes", buildBlendshapesInputs); - const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); + const auto buildMeshesInputs = BuildMeshesTask::Input(meshesIn, triangleListMeshes, graphicsMeshes, normalsPerMesh, tangentsPerMesh, blendshapesPerMeshOut).asVarying(); const auto meshesOut = model.addJob("BuildMeshes", buildMeshesInputs); const auto buildModelInputs = BuildModelTask::Input(hfmModelIn, meshesOut, jointsOut, jointRotationOffsets, jointIndices, flowData, shapeVerticesPerJoint, shapesOut, modelExtentsOut).asVarying(); const auto hfmModelOut = model.addJob("BuildModel", buildModelInputs); diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index f427326f68..e9674d6d26 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -331,16 +331,11 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate } std::shared_ptr meshes = std::make_shared(); - std::vector triangleListMeshes = std::vector(); int meshID = 0; for (const HFMMesh& mesh : _hfmModel->meshes) { // Copy mesh pointers meshes->emplace_back(mesh._mesh); meshID++; - - auto simpleMesh = hfm::generateMeshIndexedTrianglePos(mesh.positions, mesh.parts); - - triangleListMeshes.emplace_back(simpleMesh); } _meshes = meshes; From 7d37a064f2572a97d60b0c9039c6661d1ab96e02 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 30 Oct 2019 16:22:00 -0700 Subject: [PATCH 121/547] Fix crash --- libraries/hfm/src/hfm/HFMModelMath.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 1678d5d405..1086fb711c 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -190,7 +190,7 @@ const TriangleListMesh generateTriangleListMesh(const std::vector& sr dest.indices[i] = qti; //remap[qti]; ++i; } - for (const auto& ti : part.quadTrianglesIndices) { + for (const auto& ti : part.triangleIndices) { dest.indices[i] = ti; //remap[ti]; ++i; } From 023d73a25da3b83ba3aea03acdc109043def44e3 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 10:48:38 -0700 Subject: [PATCH 122/547] Finish TriangleListMesh generation, rename some things --- libraries/hfm/src/hfm/HFM.h | 2 +- libraries/hfm/src/hfm/HFMModelMath.cpp | 48 +++++++++---------- .../model-baker/src/model-baker/Baker.cpp | 2 +- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 419f47d680..07dc17c02c 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -230,7 +230,7 @@ public: }; -/// Simple Triangle List vertices; std::vector indices; diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 1086fb711c..1aeaf6d2b9 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -16,6 +16,9 @@ #include +// TODO: Remove after testing +#include + #include #include @@ -144,38 +147,36 @@ ReweightedDeformers getReweightedDeformers(const size_t numMeshVertices, const s return reweightedDeformers; } - const TriangleListMesh generateTriangleListMesh(const std::vector& srcVertices, const std::vector& srcParts) { TriangleListMesh dest; - // just copy vertices - dest.vertices.insert(dest.vertices.end(), srcVertices.cbegin(), srcVertices.cend()); + // copy vertices for now + dest.vertices = srcVertices; - /* std::vector remap(srcVertices.size()); + std::vector oldToNewIndex(srcVertices.size()); { - std::unordered_map uniqueVertices; - int vi = 0; - int vu = 0; - for (const auto& v : srcVertices) { - auto foundIndex = uniqueVertices.find(v); - if (foundIndex != uniqueVertices.end()) { - remap[vi] = foundIndex->second; + std::unordered_map uniqueVertexToNewIndex; + int oldIndex = 0; + int newIndex = 0; + for (const auto& srcVertex : srcVertices) { + auto foundIndex = uniqueVertexToNewIndex.find(srcVertex); + if (foundIndex != uniqueVertexToNewIndex.end()) { + oldToNewIndex[oldIndex] = foundIndex->second; } else { - uniqueVertices[v] = vu; - remap[vi] = vu; - dest.vertices[vu] = v; - vu++; + uniqueVertexToNewIndex[srcVertex] = newIndex; + oldToNewIndex[oldIndex] = newIndex; + dest.vertices[newIndex] = srcVertex; + ++newIndex; } - ++vi; + ++oldIndex; } - if (uniqueVertices.size() < srcVertices.size()) { - dest.vertices.resize(uniqueVertices.size()); + if (uniqueVertexToNewIndex.size() < srcVertices.size()) { + dest.vertices.resize(uniqueVertexToNewIndex.size()); dest.vertices.shrink_to_fit(); - } } -*/ + auto newIndicesCount = 0; for (const auto& part : srcParts) { newIndicesCount += part.triangleIndices.size() + part.quadTrianglesIndices.size(); @@ -187,18 +188,15 @@ const TriangleListMesh generateTriangleListMesh(const std::vector& sr for (const auto& part : srcParts) { glm::ivec2 spart(i, 0); for (const auto& qti : part.quadTrianglesIndices) { - dest.indices[i] = qti; //remap[qti]; + dest.indices[i] = oldToNewIndex[qti]; ++i; } for (const auto& ti : part.triangleIndices) { - dest.indices[i] = ti; //remap[ti]; + dest.indices[i] = oldToNewIndex[ti]; ++i; } spart.y = i - spart.x; dest.parts.push_back(spart); - - // dest.indices.insert(dest.indices.end(), part.quadTrianglesIndices.cbegin(), part.quadTrianglesIndices.cend()); - // dest.indices.insert(dest.indices.end(), part.triangleIndices.cbegin(), part.triangleIndices.cend()); } } diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index c6c8be4bdd..f17db7397e 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -65,7 +65,7 @@ namespace baker { for (int i = 0; i < meshesIn.size(); i++) { auto& mesh = meshesIn[i]; - auto meshPointer = const_cast (&mesh); + auto meshPointer = const_cast(&mesh); meshPointer->_vertices = meshPointer->vertices.toStdVector(); indexedTrianglesMeshOut[i] = hfm::generateTriangleListMesh(meshPointer->_vertices, mesh.parts); From 297ce9d88bbe94fabf95823fb804a2b89731cc08 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 13:42:19 -0700 Subject: [PATCH 123/547] Remove debug --- libraries/hfm/src/hfm/HFM.h | 1 - libraries/hfm/src/hfm/HFMModelMath.cpp | 4 ---- .../model-networking/src/model-networking/ModelCache.cpp | 3 --- 3 files changed, 8 deletions(-) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 07dc17c02c..ec06832f22 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -244,7 +244,6 @@ public: std::vector parts; QVector vertices; - std::vector _vertices; QVector normals; QVector tangents; QVector colors; diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 1aeaf6d2b9..d0288d684c 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -12,13 +12,9 @@ #include "HFMModelMath.h" #include -#include "ModelFormatLogging.h" #include -// TODO: Remove after testing -#include - #include #include diff --git a/libraries/model-networking/src/model-networking/ModelCache.cpp b/libraries/model-networking/src/model-networking/ModelCache.cpp index e9674d6d26..bb911c6914 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.cpp +++ b/libraries/model-networking/src/model-networking/ModelCache.cpp @@ -29,8 +29,6 @@ #include #include -#include - Q_LOGGING_CATEGORY(trace_resource_parse_geometry, "trace.resource.parse.geometry") class GeometryExtra { @@ -322,7 +320,6 @@ void ModelResource::setGeometryDefinition(HFMModel::Pointer hfmModel, const Mate _hfmModel = hfmModel; _materialMapping = materialMapping; - // Copy materials QHash materialIDAtlas; for (const HFMMaterial& material : _hfmModel->materials) { From 6666df6137f79b50c79f5ac7293dca60e58a4dfc Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 14:49:28 -0700 Subject: [PATCH 124/547] Fix build warnings/errors --- libraries/model-baker/src/model-baker/Baker.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index f17db7397e..bd39b3178f 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -62,13 +62,10 @@ namespace baker { indexedTrianglesMeshOut.clear(); indexedTrianglesMeshOut.resize(meshesIn.size()); - for (int i = 0; i < meshesIn.size(); i++) { + for (size_t i = 0; i < meshesIn.size(); i++) { auto& mesh = meshesIn[i]; - - auto meshPointer = const_cast(&mesh); - meshPointer->_vertices = meshPointer->vertices.toStdVector(); - - indexedTrianglesMeshOut[i] = hfm::generateTriangleListMesh(meshPointer->_vertices, mesh.parts); + const auto verticesStd = mesh.vertices.toStdVector(); + indexedTrianglesMeshOut[i] = hfm::generateTriangleListMesh(verticesStd, mesh.parts); } } }; From a4c10e2903ab56d2f8bda472b5e3a40cf27d87c8 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 1 Nov 2019 10:39:43 -0700 Subject: [PATCH 125/547] Attempt fix for Android build --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index f8fd5b7637..f0304bbaed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,6 +220,7 @@ find_package( Threads ) add_definitions(-DGLM_FORCE_RADIANS) add_definitions(-DGLM_ENABLE_EXPERIMENTAL) add_definitions(-DGLM_FORCE_CTOR_INIT) +add_definitions(-DGLM_LANG_STL11_FORCED) # Workaround for GLM not detecting support for C++11 templates on Android if (WIN32) # Deal with fakakta Visual Studo 2017 bug From d94cd185c1aba419fe35336a044a140312116316 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 15:54:17 -0700 Subject: [PATCH 126/547] Introduce extents for TriangleListMesh and calculate them --- libraries/hfm/src/hfm/HFM.h | 1 + libraries/hfm/src/hfm/HFMModelMath.cpp | 16 ++++++++++++++++ libraries/hfm/src/hfm/HFMModelMath.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ec06832f22..d141c88cd8 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -235,6 +235,7 @@ struct TriangleListMesh { std::vector vertices; std::vector indices; std::vector parts; // Offset in the indices, Number of indices + std::vector partExtents; // Extents of each part with no transform applied. Same length as parts. }; /// A single mesh (with optional blendshapes). diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index d0288d684c..7ce06821ec 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -40,6 +40,20 @@ void thickenFlatExtents(Extents& extents) { extents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); } +void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh) { + triangleListMesh.partExtents.resize(triangleListMesh.parts.size()); + for (size_t partIndex = 0; partIndex < triangleListMesh.parts.size(); ++partIndex) { + const auto& part = triangleListMesh.parts[partIndex]; + auto& extents = triangleListMesh.partExtents[partIndex]; + int partEnd = part.x + part.y; + for (int i = part.x; i < partEnd; ++i) { + auto index = triangleListMesh.indices[i]; + const auto& position = triangleListMesh.vertices[index]; + extents.addPoint(position); + } + } +} + void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints) { auto& shapeExtents = shape.transformedExtents; shapeExtents.reset(); @@ -196,6 +210,8 @@ const TriangleListMesh generateTriangleListMesh(const std::vector& sr } } + calculateExtentsForTriangleListMesh(dest); + return dest; } diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index dc397c5e6f..3ed0584fac 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -20,6 +20,8 @@ void forEachIndex(const hfm::MeshPart& meshPart, std::function f void initializeExtents(Extents& extents); +void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh); + // This can't be moved to model-baker until void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints); From df4ca90d49e1743405abef4b519da85f247f2a06 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 16:06:48 -0700 Subject: [PATCH 127/547] Remove unused cluster fields from hfm --- libraries/fbx/src/FBXSerializer.cpp | 4 +--- libraries/hfm/src/hfm/HFM.h | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d9a7fe1071..f09182c0e6 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1600,12 +1600,10 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const cluster.jointIndex = transformIndex; clusters.push_back(cluster); - std::vector skinClusters; // Skinned mesh instances have an hfm::SkinDeformer - skinDeformer.skinClusterIndices.reserve(clusterIDs.size()); + std::vector skinClusters; for (const auto& clusterID : clusterIDs) { const Cluster& fbxCluster = fbxClusters[clusterID]; - skinDeformer.skinClusterIndices.emplace_back(); skinClusters.emplace_back(); hfm::SkinCluster& skinCluster = skinClusters.back(); size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index d141c88cd8..20fc70f131 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -251,7 +251,6 @@ public: QVector texCoords; QVector texCoords1; - QVector clusters; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::clusters) Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) @@ -317,7 +316,6 @@ public: class SkinDeformer { public: - std::vector skinClusterIndices; // DEPRECATED (see hfm::Mesh.clusterIndices, hfm::Mesh.clusterWeights) std::vector clusters; }; From d9e441d65ef9b47293f917fbc7fb29765b5011a4 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 17:37:46 -0700 Subject: [PATCH 128/547] Make shape extent calculations use slim mesh extents, and rename task to CalculateTransformedExtentsTask --- libraries/hfm/src/hfm/HFMModelMath.cpp | 18 ++++++------------ libraries/hfm/src/hfm/HFMModelMath.h | 2 +- .../model-baker/src/model-baker/Baker.cpp | 10 +++++----- ...cpp => CalculateTransformedExtentsTask.cpp} | 10 +++++----- ...ask.h => CalculateTransformedExtentsTask.h} | 8 ++++---- 5 files changed, 21 insertions(+), 27 deletions(-) rename libraries/model-baker/src/model-baker/{CalculateExtentsTask.cpp => CalculateTransformedExtentsTask.cpp} (74%) rename libraries/model-baker/src/model-baker/{CalculateExtentsTask.h => CalculateTransformedExtentsTask.h} (71%) diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 7ce06821ec..436e520643 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -54,22 +54,16 @@ void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh) { } } -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints) { +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints) { auto& shapeExtents = shape.transformedExtents; shapeExtents.reset(); - const auto& mesh = meshes[shape.mesh]; - const auto& meshPart = mesh.parts[shape.meshPart]; + const auto& triangleListMesh = triangleListMeshes[shape.mesh]; + const auto& partExtent = triangleListMesh.partExtents[shape.meshPart]; - glm::mat4 transform = joints[shape.joint].transform; - forEachIndex(meshPart, [&](int32_t idx){ - if (mesh.vertices.size() <= idx) { - return; - } - const glm::vec3& vertex = mesh.vertices[idx]; - const glm::vec3 transformedVertex = glm::vec3(transform * glm::vec4(vertex, 1.0f)); - shapeExtents.addPoint(transformedVertex); - }); + const glm::mat4& transform = joints[shape.joint].transform; + shapeExtents = partExtent; + shapeExtents.transform(transform); thickenFlatExtents(shapeExtents); } diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index 3ed0584fac..ef86e7379a 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -23,7 +23,7 @@ void initializeExtents(Extents& extents); void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh); // This can't be moved to model-baker until -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints); +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints); void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index bd39b3178f..662b4670ee 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -20,7 +20,7 @@ #include "CalculateBlendshapeNormalsTask.h" #include "CalculateBlendshapeTangentsTask.h" #include "PrepareJointsTask.h" -#include "CalculateExtentsTask.h" +#include "CalculateTransformedExtentsTask.h" #include "BuildDracoMeshTask.h" #include "ParseFlowDataTask.h" #include @@ -200,10 +200,10 @@ namespace baker { const auto jointIndices = jointInfoOut.getN(2); // Use transform information to compute extents - const auto calculateExtentsInputs = CalculateExtentsTask::Input(modelExtentsIn, meshesIn, shapesIn, jointsOut).asVarying(); - const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); - const auto modelExtentsOut = calculateExtentsOutputs.getN(0); - const auto shapesOut = calculateExtentsOutputs.getN(1); + const auto calculateExtentsInputs = CalculateTransformedExtentsTask::Input(modelExtentsIn, triangleListMeshes, shapesIn, jointsOut).asVarying(); + const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); + const auto modelExtentsOut = calculateExtentsOutputs.getN(0); + const auto shapesOut = calculateExtentsOutputs.getN(1); // Parse material mapping const auto parseMaterialMappingInputs = ParseMaterialMappingTask::Input(mapping, materialMappingBaseURL).asVarying(); diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp similarity index 74% rename from libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp rename to libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp index e237cdb402..028dba4939 100644 --- a/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp +++ b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp @@ -1,5 +1,5 @@ // -// CalculateExtentsTask.cpp +// CalculateTransformedExtentsTask.cpp // model-baker/src/model-baker // // Created by Sabrina Shanman on 2019/10/04. @@ -9,13 +9,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "CalculateExtentsTask.h" +#include "CalculateTransformedExtentsTask.h" #include "hfm/HFMModelMath.h" -void CalculateExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { +void CalculateTransformedExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { const auto& modelExtentsIn = input.get0(); - const auto& meshes = input.get1(); + const auto& triangleListMeshes = input.get1(); const auto& shapesIn = input.get2(); const auto& joints = input.get3(); auto& modelExtentsOut = output.edit0(); @@ -31,7 +31,7 @@ void CalculateExtentsTask::run(const baker::BakeContextPointer& context, const I continue; } - hfm::calculateExtentsForShape(shapeOut, meshes, joints); + hfm::calculateExtentsForShape(shapeOut, triangleListMeshes, joints); } modelExtentsOut = modelExtentsIn; diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.h b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h similarity index 71% rename from libraries/model-baker/src/model-baker/CalculateExtentsTask.h rename to libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h index 006688ec5a..aed089a13d 100644 --- a/libraries/model-baker/src/model-baker/CalculateExtentsTask.h +++ b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h @@ -1,5 +1,5 @@ // -// CalculateExtentsTask.h +// CalculateTransformedExtentsTask.h // model-baker/src/model-baker // // Created by Sabrina Shanman on 2019/10/04. @@ -17,11 +17,11 @@ // Calculates any undefined extents in the shapes and the model. Precalculated extents will be left alone. // Bind extents will currently not be calculated -class CalculateExtentsTask { +class CalculateTransformedExtentsTask { public: - using Input = baker::VaryingSet4, std::vector, std::vector>; + using Input = baker::VaryingSet4, std::vector, std::vector>; using Output = baker::VaryingSet2>; - using JobModel = baker::Job::ModelIO; + using JobModel = baker::Job::ModelIO; void run(const baker::BakeContextPointer& context, const Input& input, Output& output); }; From 1b3367fcf9f1cb1f7e762f3ffdb292ee095136b2 Mon Sep 17 00:00:00 2001 From: milad Date: Fri, 1 Nov 2019 10:51:23 -0700 Subject: [PATCH 129/547] logging ids --- .../ScreenshareScriptingInterface.cpp | 32 +++++++++---------- .../scripting/ScreenshareScriptingInterface.h | 2 +- screenshare/src/app.js | 10 ++++-- screenshare/src/main.js | 5 ++- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index b4793067c5..25a167d2b7 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -9,12 +9,14 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "ScreenshareScriptingInterface.h" -#include -#include -#include #include +#include +#include +#include +#include + +#include "ScreenshareScriptingInterface.h" ScreenshareScriptingInterface::ScreenshareScriptingInterface() { }; @@ -23,16 +25,11 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { stopScreenshare(); } -void ScreenshareScriptingInterface::startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey) { +void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( - this, "startScreenshare", - Q_ARG(QString, displayName), - Q_ARG(QString, userName), - Q_ARG(QString, token), - Q_ARG(QString, sessionID), - Q_ARG(QString, apiKey) + this, "startScreenshare" ); return; } @@ -50,14 +47,15 @@ void ScreenshareScriptingInterface::startScreenshare(QString displayName, QStrin return; } - if (displayName.isEmpty() || userName.isEmpty() || token.isEmpty() || sessionID.isEmpty() || apiKey.isEmpty()) { - qDebug() << "Screenshare executable can't launch without connection info."; - return; - } + QUuid currentDomainID = DependencyManager::get()->getDomainID(); + + // Make HTTP GET request to: + // `https://metaverse.highfidelity.com/api/v1/domain/:domain_id/screenshare`, + // passing the Domain ID that the user is connected to, as well as the `roomName`. + // The server will respond with the relevant OpenTok Token, Session ID, and API Key. + // Upon error-free response, do the logic below, passing in that info as necessary. QStringList arguments; - arguments << "--userName=" + userName; - arguments << "--displayName=" + displayName; arguments << "--token=" + token; arguments << "--apiKey=" + apiKey; arguments << "--sessionID=" + sessionID; diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 76aef27826..9cbb1bbdb3 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -14,7 +14,7 @@ public: ScreenshareScriptingInterface(); ~ScreenshareScriptingInterface(); - Q_INVOKABLE void startScreenshare(QString displayName, QString userName, QString token, QString sessionID, QString apiKey); + Q_INVOKABLE void startScreenshare(const QString& roomName); Q_INVOKABLE void stopScreenshare(); signals: diff --git a/screenshare/src/app.js b/screenshare/src/app.js index d724e2baf1..a3e4f88e70 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -117,8 +117,12 @@ function togglePage(){ } for (let source of sources) { + console.log(JSON.stringify(sources,null,4)); sourceMap[source.id] = source; - addSource(source, "selects"); + //*if (source.id.indexOf("screen") > -1) { + // console.log("Adding:", source.id) + addSource(source, "selects"); + //} } }); } @@ -200,7 +204,7 @@ function togglePage(){ var publisherOptions = { videoSource: stream.getVideoTracks()[0], - audioSource: stream.getAudioTracks()[0], + audioSource: null, insertMode: 'append', width: 1280, height: 720 @@ -268,4 +272,4 @@ function togglePage(){ document.addEventListener("DOMContentLoaded", () => { startup(); showSources(); - }) \ No newline at end of file + }) diff --git a/screenshare/src/main.js b/screenshare/src/main.js index c8f7484169..289a4c0ae3 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -33,11 +33,10 @@ function createWindow(){ useContentSize: true, zoomFactor: zoomFactor, resizable: false, - alwaysOnTop: true, // TRY + alwaysOnTop: false, // TRY webPreferences: { nodeIntegration: true - }, - devTools: true + } }); window.loadURL('file://' + __dirname + '/index.html'); window.setMenu(null); From 9273db4844f58db2f88478a03ebf0e9bcc7409ba Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 1 Nov 2019 13:03:16 -0700 Subject: [PATCH 130/547] Fix an issue that prevented new screenshare scripts from running properly --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 25a167d2b7..f8bd57f746 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -54,6 +54,9 @@ void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) { // passing the Domain ID that the user is connected to, as well as the `roomName`. // The server will respond with the relevant OpenTok Token, Session ID, and API Key. // Upon error-free response, do the logic below, passing in that info as necessary. + QString token = ""; + QString apiKey = ""; + QString sessionID = ""; QStringList arguments; arguments << "--token=" + token; From e1b02fb73ae8deae95f997cc25a92c0163a245f2 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Fri, 1 Nov 2019 13:23:25 -0700 Subject: [PATCH 131/547] The same message as the last commit, except do the work this time --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index f8bd57f746..85024049a6 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -29,7 +29,8 @@ void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( - this, "startScreenshare" + this, "startScreenshare", + Q_ARG(const QString&, roomName) ); return; } From 3bb65edafb542b070e4750d48ccab2189b2bbecb Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 2 Nov 2019 09:51:21 +1300 Subject: [PATCH 132/547] Fix Cmd-click multi-select in entity list on Mac --- scripts/system/create/entityList/html/js/entityList.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index b15c4e6703..cda38b879c 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -541,8 +541,9 @@ function loaded() { function onRowClicked(clickEvent) { let entityID = this.dataset.entityID; let selection = [entityID]; + let controlKey = window.navigator.platform.startsWith("Mac") ? clickeEvent.metaKey : clickEvent.ctrlKey; - if (clickEvent.ctrlKey) { + if (controlKey) { let selectedIndex = selectedEntities.indexOf(entityID); if (selectedIndex >= 0) { selection = []; @@ -573,7 +574,7 @@ function loaded() { selection.reverse(); } } - } else if (!clickEvent.ctrlKey && !clickEvent.shiftKey && selectedEntities.length === 1) { + } else if (!controlKey && !clickEvent.shiftKey && selectedEntities.length === 1) { // if reselecting the same entity then start renaming it if (selectedEntities[0] === entityID) { if (renameLastBlur && renameLastEntityID === entityID && (Date.now() - renameLastBlur) < RENAME_COOLDOWN) { From 4e127502555e7b231376461a1707882a6c54d2e2 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 2 Nov 2019 11:00:16 +1300 Subject: [PATCH 133/547] Typo --- scripts/system/create/entityList/html/js/entityList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index cda38b879c..c845a7dad4 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -541,7 +541,7 @@ function loaded() { function onRowClicked(clickEvent) { let entityID = this.dataset.entityID; let selection = [entityID]; - let controlKey = window.navigator.platform.startsWith("Mac") ? clickeEvent.metaKey : clickEvent.ctrlKey; + let controlKey = window.navigator.platform.startsWith("Mac") ? clickEvent.metaKey : clickEvent.ctrlKey; if (controlKey) { let selectedIndex = selectedEntities.indexOf(entityID); From 7db99cce6b5d8dcde669e187959a3049a99e2da3 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Sat, 2 Nov 2019 12:07:11 +1300 Subject: [PATCH 134/547] Fix Cmd-clone entities on Mac --- .../create/entitySelectionTool/entitySelectionTool.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index 6774c72627..c1b512cb10 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -2047,7 +2047,9 @@ SelectionDisplay = (function() { // Duplicate entities if Ctrl is pressed. This will make a // copy of the selected entities and move the _original_ entities, not // the new ones. - if (event.isControl || doDuplicate) { + var isMac = Controller.getValue(Controller.Hardware.Application.PlatformMac); + var isControl = isMac ? event.isMeta : event.isControl; + if (isControl || doDuplicate) { duplicatedEntityIDs = SelectionManager.duplicateSelection(); var ids = []; for (var i = 0; i < duplicatedEntityIDs.length; ++i) { @@ -2273,7 +2275,9 @@ SelectionDisplay = (function() { // Duplicate entities if Ctrl is pressed. This will make a // copy of the selected entities and move the _original_ entities, not // the new ones. - if (event.isControl) { + var isMac = Controller.getValue(Controller.Hardware.Application.PlatformMac); + var isControl = isMac ? event.isMeta : event.isControl; + if (isControl) { duplicatedEntityIDs = SelectionManager.duplicateSelection(); var ids = []; for (var i = 0; i < duplicatedEntityIDs.length; ++i) { From a8173e94776d45571513a02297c5999043471cc5 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 5 Nov 2019 13:55:31 +1300 Subject: [PATCH 135/547] Remove "user" icon from Entity List --- scripts/system/create/entityList/entityList.js | 17 ----------------- .../create/entityList/html/entityList.html | 1 - .../create/entityList/html/js/entityList.js | 5 ----- 3 files changed, 23 deletions(-) diff --git a/scripts/system/create/entityList/entityList.js b/scripts/system/create/entityList/entityList.js index 06e100f457..54a39bd165 100644 --- a/scripts/system/create/entityList/entityList.js +++ b/scripts/system/create/entityList/entityList.js @@ -275,23 +275,6 @@ EntityListTool = function(shouldUseEditTabletApp) { Window.saveFileChanged.connect(onFileSaveChanged); Window.saveAsync("Select Where to Save", "", "*.json"); } - } else if (data.type === "pal") { - var sessionIds = {}; // Collect the sessionsIds of all selected entities, w/o duplicates. - selectionManager.selections.forEach(function (id) { - var lastEditedBy = Entities.getEntityProperties(id, 'lastEditedBy').lastEditedBy; - if (lastEditedBy) { - sessionIds[lastEditedBy] = true; - } - }); - var dedupped = Object.keys(sessionIds); - if (!selectionManager.selections.length) { - Window.alert('No objects selected.'); - } else if (!dedupped.length) { - Window.alert('There were no recent users of the ' + selectionManager.selections.length + ' selected objects.'); - } else { - // No need to subscribe if we're just sending. - Messages.sendMessage('com.highfidelity.pal', JSON.stringify({method: 'select', params: [dedupped, true, false]}), 'local'); - } } else if (data.type === "delete") { deleteSelectedEntities(); } else if (data.type === "toggleLocked") { diff --git a/scripts/system/create/entityList/html/entityList.html b/scripts/system/create/entityList/html/entityList.html index 3e17a66df5..b7ff7cd4e4 100644 --- a/scripts/system/create/entityList/html/entityList.html +++ b/scripts/system/create/entityList/html/entityList.html @@ -29,7 +29,6 @@ - diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index b15c4e6703..e4dc40e44a 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -209,7 +209,6 @@ let elEntityTable, elFilterInView, elFilterRadius, elExport, - elPal, elSelectedEntitiesCount, elVisibleEntitiesCount, elNoEntitiesMessage, @@ -254,7 +253,6 @@ function loaded() { elFilterInView = document.getElementById("filter-in-view"); elFilterRadius = document.getElementById("filter-radius"); elExport = document.getElementById("export"); - elPal = document.getElementById("pal"); elSelectedEntitiesCount = document.getElementById("selected-entities-count"); elVisibleEntitiesCount = document.getElementById("visible-entities-count"); elNoEntitiesMessage = document.getElementById("no-entities"); @@ -272,9 +270,6 @@ function loaded() { elExport.onclick = function() { EventBridge.emitWebEvent(JSON.stringify({ type: 'export'})); }; - elPal.onclick = function() { - EventBridge.emitWebEvent(JSON.stringify({ type: 'pal' })); - }; elDelete.onclick = function() { EventBridge.emitWebEvent(JSON.stringify({ type: 'delete' })); }; From 67e05a70d4a3ab9963e093581ee41d3c3318e021 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 5 Nov 2019 10:56:29 -0800 Subject: [PATCH 136/547] Fix build error with _drawTransform --- libraries/render-utils/src/MeshPartPayload.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 8476b490d8..64140bbb79 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -183,7 +183,7 @@ void MeshPartPayload::render(RenderArgs* args) { auto& schema = _drawMaterials.getSchemaBuffer().get(); glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); outColor = procedural->getColor(outColor); - procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, + procedural->prepare(batch, _worldFromLocalTransform.getTranslation(), _worldFromLocalTransform.getScale(), _worldFromLocalTransform.getRotation(), _created, ProceduralProgramKey(outColor.a < 1.0f)); batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); } else { @@ -463,7 +463,7 @@ void ModelMeshPartPayload::render(RenderArgs* args) { auto& schema = _drawMaterials.getSchemaBuffer().get(); glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); outColor = procedural->getColor(outColor); - procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, + procedural->prepare(batch, _worldFromLocalTransform.getTranslation(), _worldFromLocalTransform.getScale(), _worldFromLocalTransform.getRotation(), _created, ProceduralProgramKey(outColor.a < 1.0f, _shapeKey.isDeformed(), _shapeKey.isDualQuatSkinned())); batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); } else { From ba257634f203c1efc3ba1781350a3aa3fe739516 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 15:54:17 -0700 Subject: [PATCH 137/547] Introduce extents for TriangleListMesh and calculate them --- libraries/hfm/src/hfm/HFM.h | 1 + libraries/hfm/src/hfm/HFMModelMath.cpp | 16 ++++++++++++++++ libraries/hfm/src/hfm/HFMModelMath.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index ec06832f22..d141c88cd8 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -235,6 +235,7 @@ struct TriangleListMesh { std::vector vertices; std::vector indices; std::vector parts; // Offset in the indices, Number of indices + std::vector partExtents; // Extents of each part with no transform applied. Same length as parts. }; /// A single mesh (with optional blendshapes). diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index d0288d684c..7ce06821ec 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -40,6 +40,20 @@ void thickenFlatExtents(Extents& extents) { extents.maximum += glm::vec3(EPSILON, EPSILON, EPSILON); } +void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh) { + triangleListMesh.partExtents.resize(triangleListMesh.parts.size()); + for (size_t partIndex = 0; partIndex < triangleListMesh.parts.size(); ++partIndex) { + const auto& part = triangleListMesh.parts[partIndex]; + auto& extents = triangleListMesh.partExtents[partIndex]; + int partEnd = part.x + part.y; + for (int i = part.x; i < partEnd; ++i) { + auto index = triangleListMesh.indices[i]; + const auto& position = triangleListMesh.vertices[index]; + extents.addPoint(position); + } + } +} + void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints) { auto& shapeExtents = shape.transformedExtents; shapeExtents.reset(); @@ -196,6 +210,8 @@ const TriangleListMesh generateTriangleListMesh(const std::vector& sr } } + calculateExtentsForTriangleListMesh(dest); + return dest; } diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index dc397c5e6f..3ed0584fac 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -20,6 +20,8 @@ void forEachIndex(const hfm::MeshPart& meshPart, std::function f void initializeExtents(Extents& extents); +void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh); + // This can't be moved to model-baker until void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints); From c3af8b5da7a5950c4f67b239e42330ff64262079 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 16:06:48 -0700 Subject: [PATCH 138/547] Remove unused cluster fields from hfm --- libraries/fbx/src/FBXSerializer.cpp | 4 +--- libraries/hfm/src/hfm/HFM.h | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index d9a7fe1071..f09182c0e6 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1600,12 +1600,10 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const cluster.jointIndex = transformIndex; clusters.push_back(cluster); - std::vector skinClusters; // Skinned mesh instances have an hfm::SkinDeformer - skinDeformer.skinClusterIndices.reserve(clusterIDs.size()); + std::vector skinClusters; for (const auto& clusterID : clusterIDs) { const Cluster& fbxCluster = fbxClusters[clusterID]; - skinDeformer.skinClusterIndices.emplace_back(); skinClusters.emplace_back(); hfm::SkinCluster& skinCluster = skinClusters.back(); size_t indexWeightPairs = (size_t)std::min(fbxCluster.indices.size(), fbxCluster.weights.size()); diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index d141c88cd8..20fc70f131 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -251,7 +251,6 @@ public: QVector texCoords; QVector texCoords1; - QVector clusters; // DEPRECATED (see hfm::Shape::dynamicTransform, hfm::DynamicTransform::clusters) Extents meshExtents; // DEPRECATED (see hfm::Shape::transformedExtents) glm::mat4 modelTransform; // DEPRECATED (see hfm::Joint::globalTransform, hfm::Shape::transform, hfm::Model::joints) @@ -317,7 +316,6 @@ public: class SkinDeformer { public: - std::vector skinClusterIndices; // DEPRECATED (see hfm::Mesh.clusterIndices, hfm::Mesh.clusterWeights) std::vector clusters; }; From 27643023a3675cbc46b7658570bf2eb47af066b4 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 31 Oct 2019 17:37:46 -0700 Subject: [PATCH 139/547] Make shape extent calculations use slim mesh extents, and rename task to CalculateTransformedExtentsTask --- libraries/hfm/src/hfm/HFMModelMath.cpp | 18 ++++++------------ libraries/hfm/src/hfm/HFMModelMath.h | 2 +- .../model-baker/src/model-baker/Baker.cpp | 10 +++++----- ...cpp => CalculateTransformedExtentsTask.cpp} | 10 +++++----- ...ask.h => CalculateTransformedExtentsTask.h} | 8 ++++---- 5 files changed, 21 insertions(+), 27 deletions(-) rename libraries/model-baker/src/model-baker/{CalculateExtentsTask.cpp => CalculateTransformedExtentsTask.cpp} (74%) rename libraries/model-baker/src/model-baker/{CalculateExtentsTask.h => CalculateTransformedExtentsTask.h} (71%) diff --git a/libraries/hfm/src/hfm/HFMModelMath.cpp b/libraries/hfm/src/hfm/HFMModelMath.cpp index 7ce06821ec..436e520643 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.cpp +++ b/libraries/hfm/src/hfm/HFMModelMath.cpp @@ -54,22 +54,16 @@ void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh) { } } -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints) { +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints) { auto& shapeExtents = shape.transformedExtents; shapeExtents.reset(); - const auto& mesh = meshes[shape.mesh]; - const auto& meshPart = mesh.parts[shape.meshPart]; + const auto& triangleListMesh = triangleListMeshes[shape.mesh]; + const auto& partExtent = triangleListMesh.partExtents[shape.meshPart]; - glm::mat4 transform = joints[shape.joint].transform; - forEachIndex(meshPart, [&](int32_t idx){ - if (mesh.vertices.size() <= idx) { - return; - } - const glm::vec3& vertex = mesh.vertices[idx]; - const glm::vec3 transformedVertex = glm::vec3(transform * glm::vec4(vertex, 1.0f)); - shapeExtents.addPoint(transformedVertex); - }); + const glm::mat4& transform = joints[shape.joint].transform; + shapeExtents = partExtent; + shapeExtents.transform(transform); thickenFlatExtents(shapeExtents); } diff --git a/libraries/hfm/src/hfm/HFMModelMath.h b/libraries/hfm/src/hfm/HFMModelMath.h index 3ed0584fac..ef86e7379a 100644 --- a/libraries/hfm/src/hfm/HFMModelMath.h +++ b/libraries/hfm/src/hfm/HFMModelMath.h @@ -23,7 +23,7 @@ void initializeExtents(Extents& extents); void calculateExtentsForTriangleListMesh(TriangleListMesh& triangleListMesh); // This can't be moved to model-baker until -void calculateExtentsForShape(hfm::Shape& shape, const std::vector& meshes, const std::vector joints); +void calculateExtentsForShape(hfm::Shape& shape, const std::vector& triangleListMeshes, const std::vector& joints); void calculateExtentsForModel(Extents& modelExtents, const std::vector& shapes); diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index bd39b3178f..662b4670ee 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -20,7 +20,7 @@ #include "CalculateBlendshapeNormalsTask.h" #include "CalculateBlendshapeTangentsTask.h" #include "PrepareJointsTask.h" -#include "CalculateExtentsTask.h" +#include "CalculateTransformedExtentsTask.h" #include "BuildDracoMeshTask.h" #include "ParseFlowDataTask.h" #include @@ -200,10 +200,10 @@ namespace baker { const auto jointIndices = jointInfoOut.getN(2); // Use transform information to compute extents - const auto calculateExtentsInputs = CalculateExtentsTask::Input(modelExtentsIn, meshesIn, shapesIn, jointsOut).asVarying(); - const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); - const auto modelExtentsOut = calculateExtentsOutputs.getN(0); - const auto shapesOut = calculateExtentsOutputs.getN(1); + const auto calculateExtentsInputs = CalculateTransformedExtentsTask::Input(modelExtentsIn, triangleListMeshes, shapesIn, jointsOut).asVarying(); + const auto calculateExtentsOutputs = model.addJob("CalculateExtents", calculateExtentsInputs); + const auto modelExtentsOut = calculateExtentsOutputs.getN(0); + const auto shapesOut = calculateExtentsOutputs.getN(1); // Parse material mapping const auto parseMaterialMappingInputs = ParseMaterialMappingTask::Input(mapping, materialMappingBaseURL).asVarying(); diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp similarity index 74% rename from libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp rename to libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp index e237cdb402..028dba4939 100644 --- a/libraries/model-baker/src/model-baker/CalculateExtentsTask.cpp +++ b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.cpp @@ -1,5 +1,5 @@ // -// CalculateExtentsTask.cpp +// CalculateTransformedExtentsTask.cpp // model-baker/src/model-baker // // Created by Sabrina Shanman on 2019/10/04. @@ -9,13 +9,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include "CalculateExtentsTask.h" +#include "CalculateTransformedExtentsTask.h" #include "hfm/HFMModelMath.h" -void CalculateExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { +void CalculateTransformedExtentsTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) { const auto& modelExtentsIn = input.get0(); - const auto& meshes = input.get1(); + const auto& triangleListMeshes = input.get1(); const auto& shapesIn = input.get2(); const auto& joints = input.get3(); auto& modelExtentsOut = output.edit0(); @@ -31,7 +31,7 @@ void CalculateExtentsTask::run(const baker::BakeContextPointer& context, const I continue; } - hfm::calculateExtentsForShape(shapeOut, meshes, joints); + hfm::calculateExtentsForShape(shapeOut, triangleListMeshes, joints); } modelExtentsOut = modelExtentsIn; diff --git a/libraries/model-baker/src/model-baker/CalculateExtentsTask.h b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h similarity index 71% rename from libraries/model-baker/src/model-baker/CalculateExtentsTask.h rename to libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h index 006688ec5a..aed089a13d 100644 --- a/libraries/model-baker/src/model-baker/CalculateExtentsTask.h +++ b/libraries/model-baker/src/model-baker/CalculateTransformedExtentsTask.h @@ -1,5 +1,5 @@ // -// CalculateExtentsTask.h +// CalculateTransformedExtentsTask.h // model-baker/src/model-baker // // Created by Sabrina Shanman on 2019/10/04. @@ -17,11 +17,11 @@ // Calculates any undefined extents in the shapes and the model. Precalculated extents will be left alone. // Bind extents will currently not be calculated -class CalculateExtentsTask { +class CalculateTransformedExtentsTask { public: - using Input = baker::VaryingSet4, std::vector, std::vector>; + using Input = baker::VaryingSet4, std::vector, std::vector>; using Output = baker::VaryingSet2>; - using JobModel = baker::Job::ModelIO; + using JobModel = baker::Job::ModelIO; void run(const baker::BakeContextPointer& context, const Input& input, Output& output); }; From 7af09408460e783a25c3cab0b70f899096116346 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 18 Oct 2019 17:45:44 -0700 Subject: [PATCH 140/547] getting coision to work --- .../src/RenderableModelEntityItem.cpp | 26 ++++++++++++++++--- libraries/hfm/src/hfm/HFM.h | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 287f022007..0029a20f40 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -473,20 +473,38 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { // compute meshPart local transforms QVector localTransforms; const HFMModel& hfmModel = model->getHFMModel(); + uint32_t numHFMShapes = (uint32_t)hfmModel.shapes.size(); uint32_t numHFMMeshes = (uint32_t)hfmModel.meshes.size(); int totalNumVertices = 0; glm::vec3 dimensions = getScaledDimensions(); glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); - for (uint32_t i = 0; i < numHFMMeshes; i++) { - const HFMMesh& mesh = hfmModel.meshes.at(i); - if (i < hfmModel.skinDeformers.size() && hfmModel.skinDeformers[i].clusters.size() > 0) { + for (uint32_t s = 0; s < numHFMShapes; s++) { + const HFMShape& shape = hfmModel.shapes[s]; + // for (uint32_t i = 0; i < numHFMMeshes; i++) { + const HFMMesh& mesh = hfmModel.meshes.at(shape.mesh); + const HFMMeshPart& part = mesh.parts.at(shape.meshPart); + /* if (shape.skinDeformer != hfm::UNDEFINED_KEY) { + const HFMCluster& cluster = hfmModel.skinDeformers[shape.skinDeformer].clusters.at(0); + auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); + // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later + localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); + } else {*/ + + if (shape.joint != hfm::UNDEFINED_KEY) { + auto jointMatrix = model->getRig().getJointTransform(shape.joint); + // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later + localTransforms.push_back(invRegistraionOffset * jointMatrix/* * cluster.inverseBindMatrix*/); + } else { + localTransforms.push_back(invRegistraionOffset); + } + /* if (i < hfmModel.skinDeformers.size() && hfmModel.skinDeformers[i].clusters.size() > 0) { const HFMCluster& cluster = hfmModel.skinDeformers[i].clusters.at(0); auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); } else { localTransforms.push_back(invRegistraionOffset); - } + }*/ totalNumVertices += mesh.vertices.size(); } const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index 20fc70f131..f092c91e99 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -401,6 +401,7 @@ typedef hfm::Mesh HFMMesh; typedef hfm::SkinDeformer HFMSkinDeformer; typedef hfm::AnimationFrame HFMAnimationFrame; typedef hfm::Light HFMLight; +typedef hfm::Shape HFMShape; typedef hfm::Model HFMModel; typedef hfm::FlowData FlowData; From 921eed1ec165aabc79e535b25c3abb8ba8657001 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 1 Nov 2019 18:01:22 -0700 Subject: [PATCH 141/547] Remove CollisionPick::computeShapeInfo --- interface/src/raypick/CollisionPick.cpp | 234 +----------------------- interface/src/raypick/CollisionPick.h | 1 - 2 files changed, 3 insertions(+), 232 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index 9f8510c603..756c8fab7f 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -121,8 +121,9 @@ bool CollisionPick::isLoaded() const { bool CollisionPick::getShapeInfoReady(const CollisionRegion& pick) { if (_mathPick.shouldComputeShapeInfo()) { if (_cachedResource && _cachedResource->isLoaded()) { - computeShapeInfo(pick, *_mathPick.shapeInfo, _cachedResource); - _mathPick.loaded = true; + // TODO: Model CollisionPick support + //computeShapeInfo(pick, *_mathPick.shapeInfo, _cachedResource); + //_mathPick.loaded = true; } else { _mathPick.loaded = false; } @@ -147,235 +148,6 @@ void CollisionPick::computeShapeInfoDimensionsOnly(const CollisionRegion& pick, } } -void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource) { - // This code was copied and modified from RenderableModelEntityItem::computeShapeInfo - // TODO: Move to some shared code area (in entities-renderer? model-networking?) - // after we verify this is working and do a diff comparison with RenderableModelEntityItem::computeShapeInfo - // to consolidate the code. - // We may also want to make computeShapeInfo always abstract away from the gpu model mesh, like it does here. - const uint32_t TRIANGLE_STRIDE = 3; - const uint32_t QUAD_STRIDE = 4; - - ShapeType type = shapeInfo.getType(); - glm::vec3 dimensions = pick.transform.getScale(); - if (type == SHAPE_TYPE_COMPOUND) { - // should never fall in here when collision model not fully loaded - // TODO: assert that all geometries exist and are loaded - //assert(_model && _model->isLoaded() && _compoundShapeResource && _compoundShapeResource->isLoaded()); - const HFMModel& collisionModel = resource->getHFMModel(); - - ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); - pointCollection.clear(); - uint32_t i = 0; - - // the way OBJ files get read, each section under a "g" line is its own meshPart. We only expect - // to find one actual "mesh" (with one or more meshParts in it), but we loop over the meshes, just in case. - foreach (const HFMMesh& mesh, collisionModel.meshes) { - // each meshPart is a convex hull - foreach (const HFMMeshPart &meshPart, mesh.parts) { - pointCollection.push_back(QVector()); - ShapeInfo::PointList& pointsInPart = pointCollection[i]; - - // run through all the triangles and (uniquely) add each point to the hull - uint32_t numIndices = (uint32_t)meshPart.triangleIndices.size(); - // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up - //assert(numIndices % TRIANGLE_STRIDE == 0); - numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - for (uint32_t j = 0; j < numIndices; j += TRIANGLE_STRIDE) { - glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; - glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; - glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; - if (!pointsInPart.contains(p0)) { - pointsInPart << p0; - } - if (!pointsInPart.contains(p1)) { - pointsInPart << p1; - } - if (!pointsInPart.contains(p2)) { - pointsInPart << p2; - } - } - - // run through all the quads and (uniquely) add each point to the hull - numIndices = (uint32_t)meshPart.quadIndices.size(); - // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up - //assert(numIndices % QUAD_STRIDE == 0); - numIndices -= numIndices % QUAD_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - for (uint32_t j = 0; j < numIndices; j += QUAD_STRIDE) { - glm::vec3 p0 = mesh.vertices[meshPart.quadIndices[j]]; - glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; - glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; - glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; - if (!pointsInPart.contains(p0)) { - pointsInPart << p0; - } - if (!pointsInPart.contains(p1)) { - pointsInPart << p1; - } - if (!pointsInPart.contains(p2)) { - pointsInPart << p2; - } - if (!pointsInPart.contains(p3)) { - pointsInPart << p3; - } - } - - if (pointsInPart.size() == 0) { - qCDebug(scriptengine) << "Warning -- meshPart has no faces"; - pointCollection.pop_back(); - continue; - } - ++i; - } - } - - // We expect that the collision model will have the same units and will be displaced - // from its origin in the same way the visual model is. The visual model has - // been centered and probably scaled. We take the scaling and offset which were applied - // to the visual model and apply them to the collision model (without regard for the - // collision model's extents). - - glm::vec3 scaleToFit = dimensions / resource->getHFMModel().getUnscaledMeshExtents().size(); - // multiply each point by scale - for (int32_t i = 0; i < pointCollection.size(); i++) { - for (int32_t j = 0; j < pointCollection[i].size(); j++) { - // back compensate for registration so we can apply that offset to the shapeInfo later - pointCollection[i][j] = scaleToFit * pointCollection[i][j]; - } - } - shapeInfo.setParams(type, dimensions, resource->getURL().toString()); - } else if (type >= SHAPE_TYPE_SIMPLE_HULL && type <= SHAPE_TYPE_STATIC_MESH) { - const HFMModel& hfmModel = resource->getHFMModel(); - uint32_t numHFMMeshes = (uint32_t)hfmModel.meshes.size(); - int totalNumVertices = 0; - for (uint32_t i = 0; i < numHFMMeshes; i++) { - const HFMMesh& mesh = hfmModel.meshes.at(i); - totalNumVertices += mesh.vertices.size(); - } - const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; - if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { - qWarning() << "model" << "has too many vertices" << totalNumVertices << "and will collide as a box."; - shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); - return; - } - - auto& meshes = resource->getHFMModel().meshes; - int32_t numMeshes = (int32_t)(meshes.size()); - - const int MAX_ALLOWED_MESH_COUNT = 1000; - if (numMeshes > MAX_ALLOWED_MESH_COUNT) { - // too many will cause the deadlock timer to throw... - shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); - return; - } - - ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); - pointCollection.clear(); - if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - pointCollection.resize(numMeshes); - } else { - pointCollection.resize(1); - } - - ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); - triangleIndices.clear(); - - Extents extents; - int32_t meshCount = 0; - int32_t pointListIndex = 0; - for (auto& mesh : meshes) { - if (!mesh.vertices.size()) { - continue; - } - QVector vertices = mesh.vertices; - - ShapeInfo::PointList& points = pointCollection[pointListIndex]; - - // reserve room - int32_t sizeToReserve = (int32_t)(vertices.count()); - if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // a list of points for each mesh - pointListIndex++; - } else { - // only one list of points - sizeToReserve += (int32_t)points.size(); - } - points.reserve(sizeToReserve); - - // copy points - const glm::vec3* vertexItr = vertices.cbegin(); - while (vertexItr != vertices.cend()) { - glm::vec3 point = *vertexItr; - points.push_back(point); - extents.addPoint(point); - ++vertexItr; - } - - if (type == SHAPE_TYPE_STATIC_MESH) { - // copy into triangleIndices - size_t triangleIndicesCount = 0; - for (const HFMMeshPart& meshPart : mesh.parts) { - triangleIndicesCount += meshPart.triangleIndices.count(); - } - triangleIndices.reserve((int)triangleIndicesCount); - - for (const HFMMeshPart& meshPart : mesh.parts) { - const int* indexItr = meshPart.triangleIndices.cbegin(); - while (indexItr != meshPart.triangleIndices.cend()) { - triangleIndices.push_back(*indexItr); - ++indexItr; - } - } - } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // for each mesh copy unique part indices, separated by special bogus (flag) index values - for (const HFMMeshPart& meshPart : mesh.parts) { - // collect unique list of indices for this part - std::set uniqueIndices; - auto numIndices = meshPart.triangleIndices.count(); - // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up - //assert(numIndices% TRIANGLE_STRIDE == 0); - numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - auto indexItr = meshPart.triangleIndices.cbegin(); - while (indexItr != meshPart.triangleIndices.cend()) { - uniqueIndices.insert(*indexItr); - ++indexItr; - } - - // store uniqueIndices in triangleIndices - triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); - for (auto index : uniqueIndices) { - triangleIndices.push_back(index); - } - // flag end of part - triangleIndices.push_back(END_OF_MESH_PART); - } - // flag end of mesh - triangleIndices.push_back(END_OF_MESH); - } - ++meshCount; - } - - // scale and shift - glm::vec3 extentsSize = extents.size(); - glm::vec3 scaleToFit = dimensions / extentsSize; - for (int32_t i = 0; i < 3; ++i) { - if (extentsSize[i] < 1.0e-6f) { - scaleToFit[i] = 1.0f; - } - } - for (auto points : pointCollection) { - for (int32_t i = 0; i < points.size(); ++i) { - points[i] = (points[i] * scaleToFit); - } - } - - shapeInfo.setParams(type, 0.5f * dimensions, resource->getURL().toString()); - } -} - CollisionPick::CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, bool scaleWithParent, CollisionRegion collisionRegion, PhysicsEnginePointer physicsEngine) : Pick(collisionRegion, filter, maxDistance, enabled), _scaleWithParent(scaleWithParent), diff --git a/interface/src/raypick/CollisionPick.h b/interface/src/raypick/CollisionPick.h index 115ee1727e..617c7b1f00 100644 --- a/interface/src/raypick/CollisionPick.h +++ b/interface/src/raypick/CollisionPick.h @@ -63,7 +63,6 @@ protected: bool isLoaded() const; // Returns true if _mathPick.shapeInfo is valid. Otherwise, attempts to get the _mathPick ready for use. bool getShapeInfoReady(const CollisionRegion& pick); - void computeShapeInfo(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); void computeShapeInfoDimensionsOnly(const CollisionRegion& pick, ShapeInfo& shapeInfo, QSharedPointer resource); void filterIntersections(std::vector& intersections) const; From da5f80c139f9de9fd66eed4c4aa6f7a2c96614eb Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 1 Nov 2019 18:01:41 -0700 Subject: [PATCH 142/547] Use std::vector types in ShapeInfo --- .../src/RenderableModelEntityItem.cpp | 30 ++++++------ .../src/RenderablePolyVoxEntityItem.cpp | 49 ++++++++----------- libraries/physics/src/ShapeFactory.cpp | 8 +-- libraries/render-utils/src/GeometryCache.cpp | 2 +- libraries/render-utils/src/GeometryCache.h | 2 +- libraries/shared/src/ShapeInfo.cpp | 10 ++-- libraries/shared/src/ShapeInfo.h | 12 ++--- 7 files changed, 53 insertions(+), 60 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 0029a20f40..1276c1361f 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -387,7 +387,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { foreach (const HFMMesh& mesh, collisionGeometry.meshes) { // each meshPart is a convex hull foreach (const HFMMeshPart &meshPart, mesh.parts) { - pointCollection.push_back(QVector()); + pointCollection.emplace_back(); ShapeInfo::PointList& pointsInPart = pointCollection[i]; // run through all the triangles and (uniquely) add each point to the hull @@ -400,14 +400,14 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; - if (!pointsInPart.contains(p0)) { - pointsInPart << p0; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p0) == pointsInPart.cend()) { + pointsInPart.push_back(p0); } - if (!pointsInPart.contains(p1)) { - pointsInPart << p1; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p1) == pointsInPart.cend()) { + pointsInPart.push_back(p1); } - if (!pointsInPart.contains(p2)) { - pointsInPart << p2; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p2) == pointsInPart.cend()) { + pointsInPart.push_back(p2); } } @@ -422,17 +422,17 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; - if (!pointsInPart.contains(p0)) { - pointsInPart << p0; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p0) == pointsInPart.cend()) { + pointsInPart.push_back(p0); } - if (!pointsInPart.contains(p1)) { - pointsInPart << p1; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p1) == pointsInPart.cend()) { + pointsInPart.push_back(p1); } - if (!pointsInPart.contains(p2)) { - pointsInPart << p2; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p2) == pointsInPart.cend()) { + pointsInPart.push_back(p2); } - if (!pointsInPart.contains(p3)) { - pointsInPart << p3; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p3) == pointsInPart.cend()) { + pointsInPart.push_back(p3); } } diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 853e36b45b..09abd73d53 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -1429,14 +1429,13 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { QtConcurrent::run([entity, voxelSurfaceStyle, voxelVolumeSize, mesh] { auto polyVoxEntity = std::static_pointer_cast(entity); - QVector> pointCollection; + ShapeInfo::PointCollection pointCollection; AABox box; glm::mat4 vtoM = std::static_pointer_cast(entity)->voxelToLocalMatrix(); if (voxelSurfaceStyle == PolyVoxEntityItem::SURFACE_MARCHING_CUBES || voxelSurfaceStyle == PolyVoxEntityItem::SURFACE_EDGED_MARCHING_CUBES) { // pull each triangle in the mesh into a polyhedron which can be collided with - unsigned int i = 0; const gpu::BufferView& vertexBufferView = mesh->getVertexBuffer(); const gpu::BufferView& indexBufferView = mesh->getIndexBuffer(); @@ -1465,19 +1464,16 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { box += p2Model; box += p3Model; - QVector pointsInPart; - pointsInPart << p0Model; - pointsInPart << p1Model; - pointsInPart << p2Model; - pointsInPart << p3Model; - // add next convex hull - QVector newMeshPoints; - pointCollection << newMeshPoints; - // add points to the new convex hull - pointCollection[i++] << pointsInPart; + ShapeInfo::PointList pointsInPart; + pointsInPart.push_back(p0Model); + pointsInPart.push_back(p1Model); + pointsInPart.push_back(p2Model); + pointsInPart.push_back(p3Model); + + // add points to a new convex hull + pointCollection.push_back(pointsInPart); } } else { - unsigned int i = 0; polyVoxEntity->forEachVoxelValue(voxelVolumeSize, [&](const ivec3& v, uint8_t value) { if (value > 0) { const auto& x = v.x; @@ -1496,7 +1492,7 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { return; } - QVector pointsInPart; + ShapeInfo::PointList pointsInPart; float offL = -0.5f; float offH = 0.5f; @@ -1523,20 +1519,17 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { box += p110; box += p111; - pointsInPart << p000; - pointsInPart << p001; - pointsInPart << p010; - pointsInPart << p011; - pointsInPart << p100; - pointsInPart << p101; - pointsInPart << p110; - pointsInPart << p111; + pointsInPart.push_back(p000); + pointsInPart.push_back(p001); + pointsInPart.push_back(p010); + pointsInPart.push_back(p011); + pointsInPart.push_back(p100); + pointsInPart.push_back(p101); + pointsInPart.push_back(p110); + pointsInPart.push_back(p111); - // add next convex hull - QVector newMeshPoints; - pointCollection << newMeshPoints; - // add points to the new convex hull - pointCollection[i++] << pointsInPart; + // add points to a new convex hull + pointCollection.push_back(pointsInPart); } }); } @@ -1546,7 +1539,7 @@ void RenderablePolyVoxEntityItem::computeShapeInfoWorker() { void RenderablePolyVoxEntityItem::setCollisionPoints(ShapeInfo::PointCollection pointCollection, AABox box) { // this catches the payload from computeShapeInfoWorker - if (pointCollection.isEmpty()) { + if (pointCollection.empty()) { EntityItem::computeShapeInfo(_shapeInfo); withWriteLock([&] { _shapeReady = true; diff --git a/libraries/physics/src/ShapeFactory.cpp b/libraries/physics/src/ShapeFactory.cpp index ef5213df8f..569ddb52ce 100644 --- a/libraries/physics/src/ShapeFactory.cpp +++ b/libraries/physics/src/ShapeFactory.cpp @@ -217,7 +217,7 @@ btTriangleIndexVertexArray* createStaticMeshArray(const ShapeInfo& info) { } const ShapeInfo::TriangleIndices& triangleIndices = info.getTriangleIndices(); - int32_t numIndices = triangleIndices.size(); + int32_t numIndices = (int32_t)triangleIndices.size(); if (numIndices < 3) { // not enough indices to make a single triangle return nullptr; @@ -237,7 +237,7 @@ btTriangleIndexVertexArray* createStaticMeshArray(const ShapeInfo& info) { mesh.m_indexType = PHY_INTEGER; mesh.m_triangleIndexStride = VERTICES_PER_TRIANGLE * sizeof(int32_t); } - mesh.m_numVertices = pointList.size(); + mesh.m_numVertices = (int)pointList.size(); mesh.m_vertexBase = new unsigned char[VERTICES_PER_TRIANGLE * sizeof(btScalar) * (size_t)mesh.m_numVertices]; mesh.m_vertexStride = VERTICES_PER_TRIANGLE * sizeof(btScalar); mesh.m_vertexType = PHY_FLOAT; @@ -362,7 +362,7 @@ const btCollisionShape* ShapeFactory::createShapeFromInfo(const ShapeInfo& info) const ShapeInfo::PointCollection& pointCollection = info.getPointCollection(); uint32_t numSubShapes = info.getNumSubShapes(); if (numSubShapes == 1) { - if (!pointCollection.isEmpty()) { + if (!pointCollection.empty()) { shape = createConvexHull(pointCollection[0]); } } else { @@ -380,7 +380,7 @@ const btCollisionShape* ShapeFactory::createShapeFromInfo(const ShapeInfo& info) case SHAPE_TYPE_SIMPLE_COMPOUND: { const ShapeInfo::PointCollection& pointCollection = info.getPointCollection(); const ShapeInfo::TriangleIndices& triangleIndices = info.getTriangleIndices(); - uint32_t numIndices = triangleIndices.size(); + uint32_t numIndices = (uint32_t)triangleIndices.size(); uint32_t numMeshes = info.getNumSubShapes(); const uint32_t MIN_NUM_SIMPLE_COMPOUND_INDICES = 2; // END_OF_MESH_PART + END_OF_MESH if (numMeshes > 0 && numIndices > MIN_NUM_SIMPLE_COMPOUND_INDICES) { diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp index 997f87b8d6..621c20227c 100644 --- a/libraries/render-utils/src/GeometryCache.cpp +++ b/libraries/render-utils/src/GeometryCache.cpp @@ -116,7 +116,7 @@ static const uint SHAPE_TANGENT_OFFSET = offsetof(GeometryCache::ShapeVertex, ta std::map, gpu::PipelinePointer> GeometryCache::_webPipelines; std::map, gpu::PipelinePointer> GeometryCache::_gridPipelines; -void GeometryCache::computeSimpleHullPointListForShape(const int entityShape, const glm::vec3 &entityExtents, QVector &outPointList) { +void GeometryCache::computeSimpleHullPointListForShape(const int entityShape, const glm::vec3 &entityExtents, ShapeInfo::PointList &outPointList) { auto geometryCache = DependencyManager::get(); const GeometryCache::Shape geometryShape = GeometryCache::getShapeForEntityShape( entityShape ); diff --git a/libraries/render-utils/src/GeometryCache.h b/libraries/render-utils/src/GeometryCache.h index b474e6c712..bfd133183d 100644 --- a/libraries/render-utils/src/GeometryCache.h +++ b/libraries/render-utils/src/GeometryCache.h @@ -155,7 +155,7 @@ public: static GeometryCache::Shape getShapeForEntityShape(int entityShapeEnum); static QString stringFromShape(GeometryCache::Shape geoShape); - static void computeSimpleHullPointListForShape(int entityShape, const glm::vec3 &entityExtents, QVector &outPointList); + static void computeSimpleHullPointListForShape(int entityShape, const glm::vec3 &entityExtents, ShapeInfo::PointList &outPointList); int allocateID() { return _nextID++; } void releaseID(int id); diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index c60d1c2574..048cdaaf0d 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -189,7 +189,7 @@ uint32_t ShapeInfo::getNumSubShapes() const { return 0; case SHAPE_TYPE_COMPOUND: case SHAPE_TYPE_SIMPLE_COMPOUND: - return _pointCollection.size(); + return (uint32_t)_pointCollection.size(); case SHAPE_TYPE_MULTISPHERE: case SHAPE_TYPE_SIMPLE_HULL: case SHAPE_TYPE_STATIC_MESH: @@ -200,10 +200,10 @@ uint32_t ShapeInfo::getNumSubShapes() const { } } -int ShapeInfo::getLargestSubshapePointCount() const { - int numPoints = 0; - for (int i = 0; i < _pointCollection.size(); ++i) { - int n = _pointCollection[i].size(); +uint32_t ShapeInfo::getLargestSubshapePointCount() const { + uint32_t numPoints = 0; + for (uint32_t i = 0; i < (uint32_t)_pointCollection.size(); ++i) { + uint32_t n = _pointCollection[i].size(); if (n > numPoints) { numPoints = n; } diff --git a/libraries/shared/src/ShapeInfo.h b/libraries/shared/src/ShapeInfo.h index 6b0f981b24..676f38d087 100644 --- a/libraries/shared/src/ShapeInfo.h +++ b/libraries/shared/src/ShapeInfo.h @@ -12,7 +12,7 @@ #ifndef hifi_ShapeInfo_h #define hifi_ShapeInfo_h -#include +#include #include #include #include @@ -53,11 +53,11 @@ class ShapeInfo { public: - using PointList = QVector; - using PointCollection = QVector; - using TriangleIndices = QVector; + using PointList = std::vector; + using PointCollection = std::vector; + using TriangleIndices = std::vector; using SphereData = glm::vec4; - using SphereCollection = QVector; + using SphereCollection = std::vector; static QString getNameForShapeType(ShapeType type); static ShapeType getShapeTypeForName(QString string); @@ -85,7 +85,7 @@ public: TriangleIndices& getTriangleIndices() { return _triangleIndices; } const TriangleIndices& getTriangleIndices() const { return _triangleIndices; } - int getLargestSubshapePointCount() const; + uint32_t getLargestSubshapePointCount() const; float computeVolume() const; From 88b6472cedcdc5d1ade53917240e5a81144541e2 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 4 Nov 2019 10:29:13 -0800 Subject: [PATCH 143/547] Fix build warning --- libraries/shared/src/ShapeInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/shared/src/ShapeInfo.cpp b/libraries/shared/src/ShapeInfo.cpp index 048cdaaf0d..cb9ad41fd0 100644 --- a/libraries/shared/src/ShapeInfo.cpp +++ b/libraries/shared/src/ShapeInfo.cpp @@ -203,7 +203,7 @@ uint32_t ShapeInfo::getNumSubShapes() const { uint32_t ShapeInfo::getLargestSubshapePointCount() const { uint32_t numPoints = 0; for (uint32_t i = 0; i < (uint32_t)_pointCollection.size(); ++i) { - uint32_t n = _pointCollection[i].size(); + uint32_t n = (uint32_t)_pointCollection[i].size(); if (n > numPoints) { numPoints = n; } From 5fb18566fe331c8223dadfa662b1d02fda3f13d3 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 Nov 2019 09:55:16 +1300 Subject: [PATCH 144/547] Use Alt to clone entities on Mac --- .../entitySelectionTool/entitySelectionTool.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index c1b512cb10..98f1deb4ad 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -2044,12 +2044,11 @@ SelectionDisplay = (function() { Vec3.print(" pickResult.intersection", pickResult.intersection); } - // Duplicate entities if Ctrl is pressed. This will make a - // copy of the selected entities and move the _original_ entities, not - // the new ones. + // Duplicate entities if Ctrl is pressed on Windows or Alt is press on Mac. + // This will make a copy of the selected entities and move the _original_ entities, not the new ones. var isMac = Controller.getValue(Controller.Hardware.Application.PlatformMac); - var isControl = isMac ? event.isMeta : event.isControl; - if (isControl || doDuplicate) { + var isDuplicate = isMac ? event.isAlt : event.isControl; + if (isDuplicate || doDuplicate) { duplicatedEntityIDs = SelectionManager.duplicateSelection(); var ids = []; for (var i = 0; i < duplicatedEntityIDs.length; ++i) { @@ -2272,12 +2271,11 @@ SelectionDisplay = (function() { addHandleTool(overlay, { mode: mode, onBegin: function(event, pickRay, pickResult) { - // Duplicate entities if Ctrl is pressed. This will make a - // copy of the selected entities and move the _original_ entities, not - // the new ones. + // Duplicate entities if Ctrl is pressed on Windows or Alt is pressed on Mac. + // This will make a copy of the selected entities and move the _original_ entities, not the new ones. var isMac = Controller.getValue(Controller.Hardware.Application.PlatformMac); - var isControl = isMac ? event.isMeta : event.isControl; - if (isControl) { + var isDuplicate = isMac ? event.isAlt : event.isControl; + if (isDuplicate) { duplicatedEntityIDs = SelectionManager.duplicateSelection(); var ids = []; for (var i = 0; i < duplicatedEntityIDs.length; ++i) { From 6e7f2226083a4c4455ea9302fe01f254726e6a90 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 5 Nov 2019 14:16:10 -0800 Subject: [PATCH 145/547] Fix for assert in AnimBlendDirectional on startup Specifically, std::vector subscript out of range. --- libraries/animation/src/AnimBlendDirectional.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/animation/src/AnimBlendDirectional.cpp b/libraries/animation/src/AnimBlendDirectional.cpp index 4e7c67f276..4cc67683da 100644 --- a/libraries/animation/src/AnimBlendDirectional.cpp +++ b/libraries/animation/src/AnimBlendDirectional.cpp @@ -96,7 +96,9 @@ const AnimPoseVec& AnimBlendDirectional::evaluate(const AnimVariantMap& animVars } } _poses.resize(minSize); - blend4(minSize, &poseVecs[0][0], &poseVecs[1][0], &poseVecs[2][0], &poseVecs[3][0], &alphas[0], &_poses[0]); + if (minSize > 0) { + blend4(minSize, &poseVecs[0][0], &poseVecs[1][0], &poseVecs[2][0], &poseVecs[3][0], &alphas[0], &_poses[0]); + } // animation stack debug stats for (int i = 0; i < 9; i++) { From 33bb0e2b19e9df3f7c2a5ff138d49840c5beb8ed Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 4 Nov 2019 13:59:36 -0800 Subject: [PATCH 146/547] Change RenderableModelEntityItem::computeShapeInfo to support new HFM format --- .../src/RenderableModelEntityItem.cpp | 370 ++++++++---------- 1 file changed, 162 insertions(+), 208 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 1276c1361f..c87d24c425 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -380,26 +380,35 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); pointCollection.clear(); - uint32_t i = 0; + + size_t numParts = 0; + for (const HFMMesh& mesh : collisionGeometry.meshes) { + numParts += mesh.triangleListMesh.parts.size(); + } + pointCollection.reserve(numParts); // the way OBJ files get read, each section under a "g" line is its own meshPart. We only expect // to find one actual "mesh" (with one or more meshParts in it), but we loop over the meshes, just in case. - foreach (const HFMMesh& mesh, collisionGeometry.meshes) { + for (const HFMMesh& mesh : collisionGeometry.meshes) { + const hfm::TriangleListMesh& triangleListMesh = mesh.triangleListMesh; // each meshPart is a convex hull - foreach (const HFMMeshPart &meshPart, mesh.parts) { - pointCollection.emplace_back(); - ShapeInfo::PointList& pointsInPart = pointCollection[i]; - + for (const glm::ivec2& part : triangleListMesh.parts) { // run through all the triangles and (uniquely) add each point to the hull - uint32_t numIndices = (uint32_t)meshPart.triangleIndices.size(); + + pointCollection.emplace_back(); + ShapeInfo::PointList& pointsInPart = pointCollection.back(); + + uint32_t numIndices = (uint32_t)part.y; // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices % TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - for (uint32_t j = 0; j < numIndices; j += TRIANGLE_STRIDE) { - glm::vec3 p0 = mesh.vertices[meshPart.triangleIndices[j]]; - glm::vec3 p1 = mesh.vertices[meshPart.triangleIndices[j + 1]]; - glm::vec3 p2 = mesh.vertices[meshPart.triangleIndices[j + 2]]; + uint32_t indexStart = (uint32_t)part.x; + uint32_t indexEnd = indexStart + numIndices; + for (uint32_t j = indexStart; j < indexEnd; j += TRIANGLE_STRIDE) { + // NOTE: It seems odd to skip vertices when initializing a btConvexHullShape, but let's keep the behavior similar to the old behavior for now + glm::vec3 p0 = triangleListMesh.vertices[triangleListMesh.indices[j]]; + glm::vec3 p1 = triangleListMesh.vertices[triangleListMesh.indices[j + 1]]; + glm::vec3 p2 = triangleListMesh.vertices[triangleListMesh.indices[j + 2]]; if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p0) == pointsInPart.cend()) { pointsInPart.push_back(p0); } @@ -411,37 +420,11 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { } } - // run through all the quads and (uniquely) add each point to the hull - numIndices = (uint32_t)meshPart.quadIndices.size(); - // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up - //assert(numIndices % QUAD_STRIDE == 0); - numIndices -= numIndices % QUAD_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - for (uint32_t j = 0; j < numIndices; j += QUAD_STRIDE) { - glm::vec3 p0 = mesh.vertices[meshPart.quadIndices[j]]; - glm::vec3 p1 = mesh.vertices[meshPart.quadIndices[j + 1]]; - glm::vec3 p2 = mesh.vertices[meshPart.quadIndices[j + 2]]; - glm::vec3 p3 = mesh.vertices[meshPart.quadIndices[j + 3]]; - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p0) == pointsInPart.cend()) { - pointsInPart.push_back(p0); - } - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p1) == pointsInPart.cend()) { - pointsInPart.push_back(p1); - } - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p2) == pointsInPart.cend()) { - pointsInPart.push_back(p2); - } - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p3) == pointsInPart.cend()) { - pointsInPart.push_back(p3); - } - } - if (pointsInPart.size() == 0) { qCDebug(entitiesrenderer) << "Warning -- meshPart has no faces"; pointCollection.pop_back(); continue; } - ++i; } } @@ -474,61 +457,83 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { QVector localTransforms; const HFMModel& hfmModel = model->getHFMModel(); uint32_t numHFMShapes = (uint32_t)hfmModel.shapes.size(); - uint32_t numHFMMeshes = (uint32_t)hfmModel.meshes.size(); - int totalNumVertices = 0; + localTransforms.reserve(numHFMShapes); glm::vec3 dimensions = getScaledDimensions(); glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); for (uint32_t s = 0; s < numHFMShapes; s++) { const HFMShape& shape = hfmModel.shapes[s]; - // for (uint32_t i = 0; i < numHFMMeshes; i++) { - const HFMMesh& mesh = hfmModel.meshes.at(shape.mesh); - const HFMMeshPart& part = mesh.parts.at(shape.meshPart); - /* if (shape.skinDeformer != hfm::UNDEFINED_KEY) { - const HFMCluster& cluster = hfmModel.skinDeformers[shape.skinDeformer].clusters.at(0); - auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); - // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later - localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); - } else {*/ - if (shape.joint != hfm::UNDEFINED_KEY) { auto jointMatrix = model->getRig().getJointTransform(shape.joint); // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later - localTransforms.push_back(invRegistraionOffset * jointMatrix/* * cluster.inverseBindMatrix*/); + if (shape.skinDeformer != hfm::UNDEFINED_KEY) { + const auto& skinDeformer = hfmModel.skinDeformers[shape.skinDeformer]; + glm::mat4 inverseBindMatrix; + if (!skinDeformer.clusters.empty()) { + const auto& cluster = skinDeformer.clusters.back(); + inverseBindMatrix = cluster.inverseBindMatrix; + } + localTransforms.push_back(invRegistraionOffset * jointMatrix * inverseBindMatrix); + } else { + localTransforms.push_back(invRegistraionOffset * jointMatrix); + } } else { localTransforms.push_back(invRegistraionOffset); } - /* if (i < hfmModel.skinDeformers.size() && hfmModel.skinDeformers[i].clusters.size() > 0) { - const HFMCluster& cluster = hfmModel.skinDeformers[i].clusters.at(0); - auto jointMatrix = model->getRig().getJointTransform(cluster.jointIndex); - // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later - localTransforms.push_back(invRegistraionOffset * jointMatrix * cluster.inverseBindMatrix); - } else { - localTransforms.push_back(invRegistraionOffset); - }*/ - totalNumVertices += mesh.vertices.size(); } - const int32_t MAX_VERTICES_PER_STATIC_MESH = 1e6; - if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { - qWarning() << "model" << getModelURL() << "has too many vertices" << totalNumVertices << "and will collide as a box."; + + ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); + triangleIndices.clear(); + + Extents extents; + int32_t shapeCount = 0; + int32_t instanceIndex = 0; + + // NOTE: Each pointCollection corresponds to a mesh. Therefore, we should have one pointCollection per mesh instance + // A mesh instance is a unique combination of mesh/transform. For every mesh instance, there are as many shapes as there are parts for that mesh. + // We assume the shapes are grouped by mesh instance, and the group contains one of each mesh part. + uint32_t numInstances = 0; + std::vector>> shapesPerInstancePerMesh; + shapesPerInstancePerMesh.resize(hfmModel.meshes.size()); + for (uint32_t shapeIndex = 0; shapeIndex < hfmModel.shapes.size();) { + const auto& shape = hfmModel.shapes[shapeIndex]; + uint32_t meshIndex = shape.mesh; + const auto& mesh = hfmModel.meshes[meshIndex]; + uint32_t numMeshParts = (uint32_t)mesh.parts.size(); + assert(numMeshParts != 0); + + auto& shapesPerInstance = shapesPerInstancePerMesh[meshIndex]; + shapesPerInstance.emplace_back(); + + auto& shapes = shapesPerInstance.back(); + shapes.resize(numMeshParts); + std::iota(shapes.begin(), shapes.end(), shapeIndex); + + shapeIndex += numMeshParts; + ++numInstances; + } + + const uint32_t MAX_ALLOWED_MESH_COUNT = 1000; + if (numInstances > MAX_ALLOWED_MESH_COUNT) { + // too many will cause the deadlock timer to throw... + qWarning() << "model" << getModelURL() << "has too many collision meshes" << numInstances << "and will collide as a box."; shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); return; } - std::vector> meshes; - if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - auto& hfmMeshes = _collisionGeometryResource->getHFMModel().meshes; - meshes.reserve(hfmMeshes.size()); - for (auto& hfmMesh : hfmMeshes) { - meshes.push_back(hfmMesh._mesh); + size_t totalNumVertices = 0; + for (const auto& shapesPerInstance : shapesPerInstancePerMesh) { + for (const auto& instanceShapes : shapesPerInstance) { + const uint32_t firstShapeIndex = instanceShapes.front(); + const auto& firstShape = hfmModel.shapes[firstShapeIndex]; + const auto& mesh = hfmModel.meshes[firstShape.mesh]; + const auto& triangleListMesh = mesh.triangleListMesh; + // Added once per instance per mesh + totalNumVertices += triangleListMesh.vertices.size(); } - } else { - meshes = model->getNetworkModel()->getMeshes(); } - int32_t numMeshes = (int32_t)(meshes.size()); - - const int MAX_ALLOWED_MESH_COUNT = 1000; - if (numMeshes > MAX_ALLOWED_MESH_COUNT) { - // too many will cause the deadlock timer to throw... + const size_t MAX_VERTICES_PER_STATIC_MESH = 1e6; + if (totalNumVertices > MAX_VERTICES_PER_STATIC_MESH) { + qWarning() << "model" << getModelURL() << "has too many vertices" << totalNumVertices << "and will collide as a box."; shapeInfo.setParams(SHAPE_TYPE_BOX, 0.5f * dimensions); return; } @@ -536,169 +541,118 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { ShapeInfo::PointCollection& pointCollection = shapeInfo.getPointCollection(); pointCollection.clear(); if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - pointCollection.resize(numMeshes); + pointCollection.resize(numInstances); } else { pointCollection.resize(1); } - ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); - triangleIndices.clear(); + for (uint32_t meshIndex = 0; meshIndex < hfmModel.meshes.size(); ++meshIndex) { + const auto& mesh = hfmModel.meshes[meshIndex]; + const auto& triangleListMesh = mesh.triangleListMesh; + const auto& vertices = triangleListMesh.vertices; + const auto& indices = triangleListMesh.indices; + const std::vector& parts = triangleListMesh.parts; - Extents extents; - int32_t meshCount = 0; - int32_t pointListIndex = 0; - for (auto& mesh : meshes) { - if (!mesh) { - continue; - } - const gpu::BufferView& vertices = mesh->getVertexBuffer(); - const gpu::BufferView& indices = mesh->getIndexBuffer(); - const gpu::BufferView& parts = mesh->getPartBuffer(); + const auto& shapesPerInstance = shapesPerInstancePerMesh[meshIndex]; + for (const std::vector& instanceShapes : shapesPerInstance) { + ShapeInfo::PointList& points = pointCollection[instanceIndex]; - ShapeInfo::PointList& points = pointCollection[pointListIndex]; + // reserve room + int32_t sizeToReserve = (int32_t)(vertices.size()); + if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // a list of points for each instance + instanceIndex++; + } else { + // only one list of points + sizeToReserve += (int32_t)((gpu::Size)points.size()); + } + points.reserve(sizeToReserve); + + // get mesh instance transform + const uint32_t meshIndexOffset = (uint32_t)points.size(); + const uint32_t instanceShapeIndexForTransform = instanceShapes.front(); + const auto& instanceShapeForTransform = hfmModel.shapes[instanceShapeIndexForTransform]; + glm::mat4 localTransform; + if (instanceShapeForTransform.joint != hfm::UNDEFINED_KEY) { + auto jointMatrix = model->getRig().getJointTransform(instanceShapeForTransform.joint); + // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later + if (instanceShapeForTransform.skinDeformer != hfm::UNDEFINED_KEY) { + const auto& skinDeformer = hfmModel.skinDeformers[instanceShapeForTransform.skinDeformer]; + glm::mat4 inverseBindMatrix; + if (!skinDeformer.clusters.empty()) { + const auto& cluster = skinDeformer.clusters.back(); + inverseBindMatrix = cluster.inverseBindMatrix; + } + localTransform = invRegistraionOffset * jointMatrix * inverseBindMatrix; + } else { + localTransform = invRegistraionOffset * jointMatrix; + } + } else { + localTransform = invRegistraionOffset; + } - // reserve room - int32_t sizeToReserve = (int32_t)(vertices.getNumElements()); - if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // a list of points for each mesh - pointListIndex++; - } else { - // only one list of points - sizeToReserve += (int32_t)((gpu::Size)points.size()); - } - points.reserve(sizeToReserve); + // copy points + auto vertexItr = vertices.cbegin(); + while (vertexItr != vertices.cend()) { + glm::vec3 point = extractTranslation(localTransform * glm::translate(*vertexItr)); + points.push_back(point); + ++vertexItr; + } + for (const auto& instanceShapeIndex : instanceShapes) { + const auto& instanceShape = hfmModel.shapes[instanceShapeIndex]; + extents.addExtents(instanceShape.transformedExtents); + } - // copy points - uint32_t meshIndexOffset = (uint32_t)points.size(); - const glm::mat4& localTransform = localTransforms[meshCount]; - gpu::BufferView::Iterator vertexItr = vertices.cbegin(); - while (vertexItr != vertices.cend()) { - glm::vec3 point = extractTranslation(localTransform * glm::translate(*vertexItr)); - points.push_back(point); - extents.addPoint(point); - ++vertexItr; - } - - if (type == SHAPE_TYPE_STATIC_MESH) { - // copy into triangleIndices - triangleIndices.reserve((int32_t)((gpu::Size)(triangleIndices.size()) + indices.getNumElements())); - gpu::BufferView::Iterator partItr = parts.cbegin(); - while (partItr != parts.cend()) { - auto numIndices = partItr->_numIndices; - if (partItr->_topology == graphics::Mesh::TRIANGLES) { + if (type == SHAPE_TYPE_STATIC_MESH) { + // copy into triangleIndices + triangleIndices.reserve((int32_t)((gpu::Size)(triangleIndices.size()) + indices.size())); + auto partItr = parts.cbegin(); + while (partItr != parts.cend()) { + auto numIndices = partItr->y; // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices % TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - auto indexItr = indices.cbegin() + partItr->_startIndex; + auto indexItr = indices.cbegin() + partItr->x; auto indexEnd = indexItr + numIndices; while (indexItr != indexEnd) { triangleIndices.push_back(*indexItr + meshIndexOffset); ++indexItr; } - } else if (partItr->_topology == graphics::Mesh::TRIANGLE_STRIP) { - // TODO: resurrect assert after we start sanitizing HFMMesh higher up - //assert(numIndices > 2); - - uint32_t approxNumIndices = TRIANGLE_STRIDE * numIndices; - if (approxNumIndices > (uint32_t)(triangleIndices.capacity() - triangleIndices.size())) { - // we underestimated the final size of triangleIndices so we pre-emptively expand it - triangleIndices.reserve(triangleIndices.size() + approxNumIndices); - } - - auto indexItr = indices.cbegin() + partItr->_startIndex; - auto indexEnd = indexItr + (numIndices - 2); - - // first triangle uses the first three indices - triangleIndices.push_back(*(indexItr++) + meshIndexOffset); - triangleIndices.push_back(*(indexItr++) + meshIndexOffset); - triangleIndices.push_back(*(indexItr++) + meshIndexOffset); - - // the rest use previous and next index - uint32_t triangleCount = 1; - while (indexItr != indexEnd) { - if ((*indexItr) != graphics::Mesh::PRIMITIVE_RESTART_INDEX) { - if (triangleCount % 2 == 0) { - // even triangles use first two indices in order - triangleIndices.push_back(*(indexItr - 2) + meshIndexOffset); - triangleIndices.push_back(*(indexItr - 1) + meshIndexOffset); - } else { - // odd triangles swap order of first two indices - triangleIndices.push_back(*(indexItr - 1) + meshIndexOffset); - triangleIndices.push_back(*(indexItr - 2) + meshIndexOffset); - } - triangleIndices.push_back(*indexItr + meshIndexOffset); - ++triangleCount; - } - ++indexItr; - } + ++partItr; } - ++partItr; - } - } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { - // for each mesh copy unique part indices, separated by special bogus (flag) index values - gpu::BufferView::Iterator partItr = parts.cbegin(); - while (partItr != parts.cend()) { - // collect unique list of indices for this part - std::set uniqueIndices; - auto numIndices = partItr->_numIndices; - if (partItr->_topology == graphics::Mesh::TRIANGLES) { + } else if (type == SHAPE_TYPE_SIMPLE_COMPOUND) { + // for each mesh copy unique part indices, separated by special bogus (flag) index values + auto partItr = parts.cbegin(); + while (partItr != parts.cend()) { + // collect unique list of indices for this part + std::set uniqueIndices; + auto numIndices = partItr->y; // TODO: assert rather than workaround after we start sanitizing HFMMesh higher up //assert(numIndices% TRIANGLE_STRIDE == 0); numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer - - auto indexItr = indices.cbegin() + partItr->_startIndex; + auto indexItr = indices.cbegin() + partItr->x; auto indexEnd = indexItr + numIndices; while (indexItr != indexEnd) { uniqueIndices.insert(*indexItr); ++indexItr; } - } else if (partItr->_topology == graphics::Mesh::TRIANGLE_STRIP) { - // TODO: resurrect assert after we start sanitizing HFMMesh higher up - //assert(numIndices > TRIANGLE_STRIDE - 1); - auto indexItr = indices.cbegin() + partItr->_startIndex; - auto indexEnd = indexItr + (numIndices - 2); - - // first triangle uses the first three indices - uniqueIndices.insert(*(indexItr++)); - uniqueIndices.insert(*(indexItr++)); - uniqueIndices.insert(*(indexItr++)); - - // the rest use previous and next index - uint32_t triangleCount = 1; - while (indexItr != indexEnd) { - if ((*indexItr) != graphics::Mesh::PRIMITIVE_RESTART_INDEX) { - if (triangleCount % 2 == 0) { - // EVEN triangles use first two indices in order - uniqueIndices.insert(*(indexItr - 2)); - uniqueIndices.insert(*(indexItr - 1)); - } else { - // ODD triangles swap order of first two indices - uniqueIndices.insert(*(indexItr - 1)); - uniqueIndices.insert(*(indexItr - 2)); - } - uniqueIndices.insert(*indexItr); - ++triangleCount; - } - ++indexItr; + // store uniqueIndices in triangleIndices + triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); + for (auto index : uniqueIndices) { + triangleIndices.push_back(index); } - } + // flag end of part + triangleIndices.push_back(END_OF_MESH_PART); - // store uniqueIndices in triangleIndices - triangleIndices.reserve(triangleIndices.size() + (int32_t)uniqueIndices.size()); - for (auto index : uniqueIndices) { - triangleIndices.push_back(index); + ++partItr; } - // flag end of part - triangleIndices.push_back(END_OF_MESH_PART); - - ++partItr; + // flag end of mesh + triangleIndices.push_back(END_OF_MESH); } - // flag end of mesh - triangleIndices.push_back(END_OF_MESH); } - ++meshCount; + + ++shapeCount; } // scale and shift From eeceec35d6deca45fc78e348989fb9b87b05da4e Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 6 Nov 2019 12:22:45 +1300 Subject: [PATCH 147/547] Fix entities list "filter to frustum" button --- scripts/system/create/entityList/entityList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/system/create/entityList/entityList.js b/scripts/system/create/entityList/entityList.js index 06e100f457..4146d11522 100644 --- a/scripts/system/create/entityList/entityList.js +++ b/scripts/system/create/entityList/entityList.js @@ -177,7 +177,7 @@ EntityListTool = function(shouldUseEditTabletApp) { var cameraPosition = Camera.position; PROFILE("getMultipleProperties", function () { - var multipleProperties = Entities.getMultipleEntityProperties(ids, ['name', 'type', 'locked', + var multipleProperties = Entities.getMultipleEntityProperties(ids, ['position', 'name', 'type', 'locked', 'visible', 'renderInfo', 'modelURL', 'materialURL', 'imageURL', 'script', 'certificateID', 'skybox.url', 'ambientLight.url']); for (var i = 0; i < multipleProperties.length; i++) { From e08ddf521cae3d558715aca57e9ad38f681d4d5f Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 5 Nov 2019 17:28:21 -0800 Subject: [PATCH 148/547] updated electron app ui --- screenshare/src/app.js | 22 ++++++++--- screenshare/src/index.html | 4 +- screenshare/src/styles.css | 80 +++++++++++++++++++++++++++++++------- 3 files changed, 83 insertions(+), 23 deletions(-) diff --git a/screenshare/src/app.js b/screenshare/src/app.js index a3e4f88e70..0fbddd4a2d 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -43,7 +43,7 @@ for (let index = 0; index < images; index++) { let currentScreensharePickID = ""; function screensharePicked(id){ currentScreensharePickID = id; - // console.log(currentScreensharePickID); + console.log(currentScreensharePickID); document.getElementById("share_pick").innerHTML = ""; addSource(sourceMap[id], "share_pick"); togglePage(); @@ -77,14 +77,22 @@ function togglePage(){ let sourceBody = document.createElement('div') let thumbnail = isBrowser ? source.thumbnail : source.thumbnail.toDataURL(); sourceBody.classList.add("box") + if (type === "share_pick") { + sourceBody.style.marginLeft = "0px"; + } + let circle = `
` + let image = ""; + if (source.appIcon) { + image = ``; + } sourceBody.innerHTML = `
- ${type === "selects" ? circle : ""} + ${image} ${source.name}
-
- +
+
` // console.log(sourceBody.innerHTML); @@ -92,6 +100,7 @@ function togglePage(){ document.getElementById("selects").appendChild(sourceBody); } else { document.getElementById("share_pick").appendChild(sourceBody); + document.getElementById("content_name").innerHTML = source.name; } } @@ -110,14 +119,15 @@ function togglePage(){ thumbnailSize: { width: imageWidth, height: imageHeight - } + }, + fetchWindowIcons: true }, (error, sources) => { if (error) { console.log("Error getting sources", error); } for (let source of sources) { - console.log(JSON.stringify(sources,null,4)); + // console.log(JSON.stringify(sources,null,4)); sourceMap[source.id] = source; //*if (source.id.indexOf("screen") > -1) { // console.log("Adding:", source.id) diff --git a/screenshare/src/index.html b/screenshare/src/index.html index 3ba1fa8d8e..60adf5f3ce 100644 --- a/screenshare/src/index.html +++ b/screenshare/src/index.html @@ -40,14 +40,14 @@ Others will be able to everything contained within this view.

-
+
Yes, share this content
No, don't share this content
-
+
button_selection diff --git a/screenshare/src/styles.css b/screenshare/src/styles.css index 63b3bf94e5..14e0c9d424 100644 --- a/screenshare/src/styles.css +++ b/screenshare/src/styles.css @@ -1,14 +1,53 @@ body { background: black; - box-sizing: 0px; + box-sizing: border-box; /* display: -webkit-flex; */ /* -webkit-justify-content: center; */ /* -webkit-align-items: center; */ /* -webkit-flex-direction: column; */ font-family: "Graphik"; margin: 0px; + + } +html::-webkit-scrollbar { + overflow: scroll; + overflow-x: hidden; + width: 0px; } +#confirmation_screen { + /* background-color: orange; */ + width: 100%; + display: flex; + text-align: center; + justify-content: center; + align-items: center; +} + +#confirmation_text { + margin-top: 25px; + font-size: 25px; + line-height: 25px; +} + +#confirmation_text p { + margin: 0px; +} + +#button_selection { + margin-top: 25px; + width: 100%; + display: flex; + text-align: center; + justify-content: center; + align-items: center; + flex-direction: column; +} + + +#share_pick { + /* background-color: blue; */ +} .text_title { color: white; @@ -54,8 +93,8 @@ h3 { .screen_label { max-width: 220px; - font-size: 18px; - line-height: 24px; + font-size: 25px; + line-height: 25px; margin-left: 15px; color: white; white-space: nowrap; @@ -63,11 +102,11 @@ h3 { text-overflow: ellipsis; } -.circle { +.icon { display: inline-block; background: #C4C4C4; - width: 30px; - height: 30px; + width: 20px; + height: 20px; border-radius: 50%; } @@ -80,25 +119,28 @@ h3 { margin: 4px; cursor: pointer; width: 250px; + height: 75px; + line-height: 75px; + text-align: center; + vertical-align: middle; } .button_confirmation:hover { - border: 2px solid white; + outline: solid white 2px; width: 250px; } .box { - background-color: orange; + /* background-color: orange; */ height: 165px; width: 265px; display: inline-block; - margin-left: 20px; + margin-left: 35px; margin-bottom: 40px; margin-top: 20px; } .heading { - background-color: red; height: 35px; display: flex; align-items: center; @@ -112,18 +154,26 @@ h3 { max-width: 265px; } +.image:hover { + outline: solid white 3px; +} + +.image_no_hover { + background-color: blue; + width: 265px; + height: 165px; + max-height: 165px; + max-width: 265px; +} + img { width: 265px; height: 165px; } .scrollbar { - /* background-color: #F5F5F5; */ float: right; - height: 100%; - /* margin-bottom: 25px; */ - /* margin-left: 22px; */ - /* margin-top: 40px; */ + height: 470px; margin-right: 20px; width: 100%; overflow-y: scroll; From c6f7c058bc1140027e10e3941e25114215e663ce Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 5 Nov 2019 17:30:09 -0800 Subject: [PATCH 149/547] merging master --- assignment-client/CMakeLists.txt | 1 + assignment-client/src/avatars/AvatarMixer.cpp | 4 +- interface/src/Application.cpp | 15 +- interface/src/Menu.cpp | 6 + interface/src/Menu.h | 1 + interface/src/ui/PreferencesDialog.cpp | 10 + libraries/avatars-renderer/CMakeLists.txt | 4 +- .../src/avatars-renderer/Avatar.h | 4 +- libraries/avatars/CMakeLists.txt | 3 +- libraries/avatars/src/AvatarData.h | 4 - libraries/avatars/src/AvatarHashMap.h | 1 + libraries/baking/CMakeLists.txt | 3 +- libraries/baking/src/MaterialBaker.h | 2 +- libraries/baking/src/TextureBaker.h | 2 +- libraries/display-plugins/CMakeLists.txt | 1 + .../src/RenderableMaterialEntityItem.cpp | 68 ++++-- .../src/RenderableMaterialEntityItem.h | 2 +- .../src/RenderableModelEntityItem.cpp | 2 +- .../src/RenderableShapeEntityItem.cpp | 181 +++++++-------- .../src/RenderableShapeEntityItem.h | 8 +- libraries/entities/CMakeLists.txt | 4 +- libraries/gpu/src/gpu/Shader.h | 3 - libraries/gpu/src/gpu/ShaderConstants.h | 1 - .../src/graphics-scripting/Forward.h | 3 + .../GraphicsScriptingInterface.cpp | 218 +++++++++--------- .../graphics-scripting/ScriptableModel.cpp | 182 ++++++++------- libraries/graphics/src/graphics/Material.cpp | 4 +- libraries/graphics/src/graphics/Material.h | 11 +- libraries/model-baker/CMakeLists.txt | 3 +- .../model-baker/ParseMaterialMappingTask.h | 2 +- libraries/model-networking/CMakeLists.txt | 5 +- .../src/model-networking/ModelCache.h | 2 +- libraries/physics/CMakeLists.txt | 7 +- libraries/procedural/CMakeLists.txt | 2 +- .../procedural/src/procedural/Procedural.cpp | 112 +++++---- .../procedural/src/procedural/Procedural.h | 81 ++++++- .../src/procedural/ProceduralCommon.slh | 2 +- .../src/procedural/ProceduralSkybox.cpp | 6 +- .../src/procedural/ShaderConstants.h | 15 +- .../src/CauterizedMeshPartPayload.cpp | 5 +- .../src/CauterizedMeshPartPayload.h | 2 +- .../render-utils/src/CauterizedModel.cpp | 2 +- .../render-utils/src/MeshPartPayload.cpp | 139 +++++++---- libraries/render-utils/src/MeshPartPayload.h | 7 +- libraries/render-utils/src/Model.cpp | 7 +- libraries/render-utils/src/Model.h | 4 +- .../render-utils/src/RenderPipelines.cpp | 1 + .../src/render-utils/simple_procedural.slp | 2 +- .../render-utils/src/simple_procedural.slv | 32 ++- libraries/script-engine/CMakeLists.txt | 10 +- libraries/script-engine/src/Quat.cpp | 2 - .../src/SceneScriptingInterface.cpp | 129 +---------- .../src/SceneScriptingInterface.h | 197 +--------------- libraries/ui/src/MainWindow.cpp | 3 +- tests-manual/render-perf/src/main.cpp | 62 ----- tools/oven/CMakeLists.txt | 2 +- tools/oven/src/Oven.cpp | 2 +- tools/oven/src/OvenCLIApplication.cpp | 2 + 58 files changed, 724 insertions(+), 871 deletions(-) diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index b7afc3ed9e..b4042cf294 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -16,6 +16,7 @@ link_hifi_libraries( controllers physics plugins midi image material-networking model-networking ktx shaders ) +include_hifi_library_headers(procedural) add_dependencies(${TARGET_NAME} oven) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 36fd04681a..c7ab810c9a 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -512,10 +512,10 @@ void AvatarMixer::handleAvatarKilled(SharedNodePointer avatarNode) { // we relay avatar kill packets to agents that are not upstream // and downstream avatar mixers, if the node that was just killed was being replicatedConnectedAgent return node->getActiveSocket() && - ((node->getType() == NodeType::Agent && !node->isUpstream()) || + (((node->getType() == NodeType::Agent || node->getType() == NodeType::EntityScriptServer) && !node->isUpstream()) || (avatarNode->isReplicated() && shouldReplicateTo(*avatarNode, *node))); }, [&](const SharedNodePointer& node) { - if (node->getType() == NodeType::Agent) { + if (node->getType() == NodeType::Agent || node->getType() == NodeType::EntityScriptServer) { if (!killPacket) { killPacket = NLPacket::create(PacketType::KillAvatar, NUM_BYTES_RFC4122_UUID + sizeof(KillAvatarReason), true); killPacket->write(avatarNode->getUUID().toRfc4122()); diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 156f2d564b..f7ba8beb26 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -106,7 +106,7 @@ #include #include #include -#include +#include #include #include #include @@ -159,7 +159,8 @@ #include #include #include -#include +#include +#include #include "recording/ClipCache.h" #include "AudioClient.h" @@ -2096,7 +2097,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo EntityTreeRenderer::setAddMaterialToAvatarOperator([](const QUuid& avatarID, graphics::MaterialLayer material, const std::string& parentMaterialName) { auto avatarManager = DependencyManager::get(); - auto avatar = avatarManager->getAvatarBySessionID(avatarID); + auto avatar = static_pointer_cast(avatarManager->getAvatarBySessionID(avatarID)); if (avatar) { avatar->addMaterial(material, parentMaterialName); return true; @@ -2105,13 +2106,15 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo }); EntityTreeRenderer::setRemoveMaterialFromAvatarOperator([](const QUuid& avatarID, graphics::MaterialPointer material, const std::string& parentMaterialName) { auto avatarManager = DependencyManager::get(); - auto avatar = avatarManager->getAvatarBySessionID(avatarID); + auto avatar = static_pointer_cast(avatarManager->getAvatarBySessionID(avatarID)); if (avatar) { avatar->removeMaterial(material, parentMaterialName); return true; } return false; }); + Procedural::opaqueStencil = [](gpu::StatePointer state) { PrepareStencil::testMaskDrawShape(*state); }; + Procedural::transparentStencil = [](gpu::StatePointer state) { PrepareStencil::testMask(*state); }; EntityTree::setGetEntityObjectOperator([this](const QUuid& id) -> QObject* { auto entities = getEntities(); @@ -7092,10 +7095,6 @@ void Application::clearDomainOctreeDetails(bool clearAll) { // reset the model renderer clearAll ? getEntities()->clear() : getEntities()->clearDomainAndNonOwnedEntities(); - auto skyStage = DependencyManager::get()->getSkyStage(); - - skyStage->setBackgroundMode(graphics::SunSkyStage::SKY_DEFAULT); - DependencyManager::get()->clearUnusedResources(); DependencyManager::get()->clearUnusedResources(); DependencyManager::get()->clearUnusedResources(); diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index fe269a6a64..9700ff6336 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -53,6 +53,7 @@ #include "SpeechRecognizer.h" #endif +#include "MeshPartPayload.h" #include "scripting/RenderScriptingInterface.h" extern bool DEV_DECIMATE_TEXTURES; @@ -470,6 +471,11 @@ Menu::Menu() { addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ComputeBlendshapes, 0, true, DependencyManager::get().data(), SLOT(setComputeBlendshapes(bool))); + action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::MeshShaders, 0, false); + connect(action, &QAction::triggered, [action] { + MeshPartPayload::enableMeshShaders = action->isChecked(); + }); + { auto drawStatusConfig = qApp->getRenderEngine()->getConfiguration()->getConfig("RenderMainView.DrawStatus"); addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::HighlightTransitions, 0, false, diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 4a2a97b168..4c6a6c48dc 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -228,6 +228,7 @@ namespace MenuOption { const QString ForceCoarsePicking = "Force Coarse Picking"; const QString ComputeBlendshapes = "Compute Blendshapes"; const QString HighlightTransitions = "Highlight Transitions"; + const QString MeshShaders = "Enable Procedural Materials on Meshes"; } #endif // hifi_Menu_h diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index 9e98b84edc..4e4fd965a8 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -102,6 +102,16 @@ void setupPreferences() { preference->setItems(refreshRateProfiles); preferences->addPreference(preference); + + auto getterMeshShaders = []() -> bool { + auto menu = Menu::getInstance(); + return menu->isOptionChecked(MenuOption::MeshShaders); + }; + auto setterMeshShaders = [](bool value) { + auto menu = Menu::getInstance(); + menu->setIsOptionChecked(MenuOption::MeshShaders, value); + }; + preferences->addPreference(new CheckPreference(GRAPHICS_QUALITY, "Enable Procedural Materials on Meshes", getterMeshShaders, setterMeshShaders)); } { // Expose the Viewport Resolution Scale diff --git a/libraries/avatars-renderer/CMakeLists.txt b/libraries/avatars-renderer/CMakeLists.txt index 7929be8b04..deba2913c1 100644 --- a/libraries/avatars-renderer/CMakeLists.txt +++ b/libraries/avatars-renderer/CMakeLists.txt @@ -1,6 +1,6 @@ set(TARGET_NAME avatars-renderer) setup_hifi_library(Network Script) -link_hifi_libraries(shared shaders gpu graphics animation material-networking model-networking script-engine render render-utils image entities-renderer) +link_hifi_libraries(shared shaders gpu graphics animation material-networking model-networking script-engine render render-utils image entities-renderer physics) include_hifi_library_headers(avatars) include_hifi_library_headers(networking) include_hifi_library_headers(hfm) @@ -8,8 +8,6 @@ include_hifi_library_headers(fbx) include_hifi_library_headers(recording) include_hifi_library_headers(ktx) include_hifi_library_headers(procedural) -include_hifi_library_headers(physics) -include_hifi_library_headers(entities-renderer) include_hifi_library_headers(audio) include_hifi_library_headers(entities) include_hifi_library_headers(octree) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 610f34ed45..031b2f1309 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -547,8 +547,8 @@ public: virtual void setEnableMeshVisible(bool isEnabled); virtual bool getEnableMeshVisible() const; - void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName) override; - void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) override; + void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName); + void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName); virtual scriptable::ScriptableModelBase getScriptableModel() override; diff --git a/libraries/avatars/CMakeLists.txt b/libraries/avatars/CMakeLists.txt index 13fda28f40..fc6d15cced 100644 --- a/libraries/avatars/CMakeLists.txt +++ b/libraries/avatars/CMakeLists.txt @@ -1,4 +1,3 @@ set(TARGET_NAME avatars) setup_hifi_library(Network Script) -include_hifi_library_headers(gpu) -link_hifi_libraries(shared networking graphics) +link_hifi_libraries(shared networking) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index 16fe4d82d4..e8aee1f3d2 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -55,8 +55,6 @@ #include "HeadData.h" #include "PathUtils.h" -#include - using AvatarSharedPointer = std::shared_ptr; using AvatarWeakPointer = std::weak_ptr; using AvatarHash = QHash; @@ -1493,8 +1491,6 @@ public: bool getIsReplicated() const { return _isReplicated; } - virtual void addMaterial(graphics::MaterialLayer material, const std::string& parentMaterialName) {} - virtual void removeMaterial(graphics::MaterialPointer material, const std::string& parentMaterialName) {} void setReplicaIndex(int replicaIndex) { _replicaIndex = replicaIndex; } int getReplicaIndex() { return _replicaIndex; } diff --git a/libraries/avatars/src/AvatarHashMap.h b/libraries/avatars/src/AvatarHashMap.h index 17a3d28eb0..c474353451 100644 --- a/libraries/avatars/src/AvatarHashMap.h +++ b/libraries/avatars/src/AvatarHashMap.h @@ -44,6 +44,7 @@ const quint64 MIN_TIME_BETWEEN_MY_AVATAR_DATA_SENDS = USECS_PER_SECOND / CLIENT_ * @namespace AvatarList * * @hifi-assignment-client + * @hifi-server-entity */ class AvatarReplicas { diff --git a/libraries/baking/CMakeLists.txt b/libraries/baking/CMakeLists.txt index 73618427f6..4350f386ab 100644 --- a/libraries/baking/CMakeLists.txt +++ b/libraries/baking/CMakeLists.txt @@ -1,6 +1,7 @@ set(TARGET_NAME baking) setup_hifi_library(Concurrent) -link_hifi_libraries(shared shaders graphics networking material-networking graphics-scripting ktx image fbx model-baker task) +link_hifi_libraries(shared shaders graphics networking procedural graphics-scripting ktx image fbx model-baker task) include_hifi_library_headers(gpu) include_hifi_library_headers(hfm) +include_hifi_library_headers(material-networking) \ No newline at end of file diff --git a/libraries/baking/src/MaterialBaker.h b/libraries/baking/src/MaterialBaker.h index 04782443f0..33123cfc73 100644 --- a/libraries/baking/src/MaterialBaker.h +++ b/libraries/baking/src/MaterialBaker.h @@ -17,7 +17,7 @@ #include "TextureBaker.h" #include "baking/TextureFileNamer.h" -#include +#include static const QString BAKED_MATERIAL_EXTENSION = ".baked.json"; diff --git a/libraries/baking/src/TextureBaker.h b/libraries/baking/src/TextureBaker.h index 5fda05e9b4..5c6c85ea16 100644 --- a/libraries/baking/src/TextureBaker.h +++ b/libraries/baking/src/TextureBaker.h @@ -22,7 +22,7 @@ #include "Baker.h" -#include +#include extern const QString BAKED_TEXTURE_KTX_EXT; extern const QString BAKED_META_TEXTURE_SUFFIX; diff --git a/libraries/display-plugins/CMakeLists.txt b/libraries/display-plugins/CMakeLists.txt index ad6503b22d..bfe88f2eb8 100644 --- a/libraries/display-plugins/CMakeLists.txt +++ b/libraries/display-plugins/CMakeLists.txt @@ -11,6 +11,7 @@ include_hifi_library_headers(fbx) include_hifi_library_headers(image) include_hifi_library_headers(ktx) include_hifi_library_headers(render) +include_hifi_library_headers(procedural) target_opengl() diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp index eae0561343..a013ff75b7 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.cpp @@ -11,6 +11,8 @@ #include "RenderPipelines.h" #include "GeometryCache.h" +#include + using namespace render; using namespace render::entities; @@ -227,31 +229,31 @@ ItemKey MaterialEntityRenderer::getKey() { } ShapeKey MaterialEntityRenderer::getShapeKey() { + ShapeKey::Builder builder; graphics::MaterialKey drawMaterialKey; const auto drawMaterial = getMaterial(); if (drawMaterial) { drawMaterialKey = drawMaterial->getKey(); } - bool isTranslucent = drawMaterialKey.isTranslucent(); - bool hasTangents = drawMaterialKey.isNormalMap(); - bool hasLightmap = drawMaterialKey.isLightMap(); - bool isUnlit = drawMaterialKey.isUnlit(); - - ShapeKey::Builder builder; - builder.withMaterial(); - - if (isTranslucent) { + if (drawMaterialKey.isTranslucent()) { builder.withTranslucent(); } - if (hasTangents) { - builder.withTangents(); - } - if (hasLightmap) { - builder.withLightMap(); - } - if (isUnlit) { - builder.withUnlit(); + + if (drawMaterial && drawMaterial->isProcedural() && drawMaterial->isReady()) { + builder.withOwnPipeline(); + } else { + builder.withMaterial(); + + if (drawMaterialKey.isNormalMap()) { + builder.withTangents(); + } + if (drawMaterialKey.isLightMap()) { + builder.withLightMap(); + } + if (drawMaterialKey.isUnlit()) { + builder.withUnlit(); + } } if (_primitiveMode == PrimitiveMode::LINES) { @@ -277,6 +279,7 @@ void MaterialEntityRenderer::doRender(RenderArgs* args) { Transform renderTransform; graphics::MaterialPointer drawMaterial; + bool proceduralRender = false; Transform textureTransform; withReadLock([&] { renderTransform = _renderTransform; @@ -284,6 +287,10 @@ void MaterialEntityRenderer::doRender(RenderArgs* args) { textureTransform.setTranslation(glm::vec3(_materialMappingPos, 0)); textureTransform.setRotation(glm::vec3(0, 0, glm::radians(_materialMappingRot))); textureTransform.setScale(glm::vec3(_materialMappingScale, 1)); + + if (drawMaterial && drawMaterial->isProcedural() && drawMaterial->isReady()) { + proceduralRender = true; + } }); if (!drawMaterial) { return; @@ -291,14 +298,27 @@ void MaterialEntityRenderer::doRender(RenderArgs* args) { batch.setModelTransform(renderTransform); - drawMaterial->setTextureTransforms(textureTransform, MaterialMappingMode::UV, true); - // bind the material - if (RenderPipelines::bindMaterial(drawMaterial, batch, args->_renderMode, args->_enableTexturing)) { - args->_details._materialSwitches++; - } + if (!proceduralRender) { + drawMaterial->setTextureTransforms(textureTransform, MaterialMappingMode::UV, true); + // bind the material + if (RenderPipelines::bindMaterial(drawMaterial, batch, args->_renderMode, args->_enableTexturing)) { + args->_details._materialSwitches++; + } - // Draw! - DependencyManager::get()->renderSphere(batch); + // Draw! + DependencyManager::get()->renderSphere(batch); + } else { + auto proceduralDrawMaterial = std::static_pointer_cast(drawMaterial); + glm::vec4 outColor = glm::vec4(drawMaterial->getAlbedo(), drawMaterial->getOpacity()); + outColor = proceduralDrawMaterial->getColor(outColor); + proceduralDrawMaterial->prepare(batch, renderTransform.getTranslation(), renderTransform.getScale(), + renderTransform.getRotation(), _created, ProceduralProgramKey(outColor.a < 1.0f)); + if (render::ShapeKey(args->_globalShapeKey).isWireframe() || _primitiveMode == PrimitiveMode::LINES) { + DependencyManager::get()->renderWireSphere(batch, outColor); + } else { + DependencyManager::get()->renderSphere(batch, outColor); + } + } args->_details._trianglesRendered += (int)DependencyManager::get()->getSphereTriangleCount(); } diff --git a/libraries/entities-renderer/src/RenderableMaterialEntityItem.h b/libraries/entities-renderer/src/RenderableMaterialEntityItem.h index 0c347155e0..ff7367a44e 100644 --- a/libraries/entities-renderer/src/RenderableMaterialEntityItem.h +++ b/libraries/entities-renderer/src/RenderableMaterialEntityItem.h @@ -13,7 +13,7 @@ #include -#include +#include class NetworkMaterial; diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 6314cc8ce4..1f2be0c488 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -1316,7 +1316,7 @@ void ModelEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce // Check for addition if (_hasModel && !model) { - model = std::make_shared(nullptr, entity.get()); + model = std::make_shared(nullptr, entity.get(), _created); connect(model.get(), &Model::requestRenderUpdate, this, &ModelEntityRenderer::requestRenderUpdate); connect(model.get(), &Model::setURLFinished, this, [&](bool didVisualGeometryRequestSucceed) { setKey(didVisualGeometryRequestSucceed); diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp index 4f1ebaecb9..88cc78b6b6 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp @@ -12,17 +12,11 @@ #include #include -#include #include #include -#include #include "RenderPipelines.h" -//#define SHAPE_ENTITY_USE_FADE_EFFECT -#ifdef SHAPE_ENTITY_USE_FADE_EFFECT -#include -#endif using namespace render; using namespace render::entities; @@ -31,25 +25,20 @@ using namespace render::entities; static const float SPHERE_ENTITY_SCALE = 0.5f; ShapeEntityRenderer::ShapeEntityRenderer(const EntityItemPointer& entity) : Parent(entity) { - _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural); - // FIXME: Setup proper uniform slots and use correct pipelines for forward rendering - _procedural._opaqueFragmentSource = gpu::Shader::Source::get(shader::render_utils::fragment::simple_procedural); - _procedural._transparentFragmentSource = gpu::Shader::Source::get(shader::render_utils::fragment::simple_procedural_translucent); - - // TODO: move into Procedural.cpp - PrepareStencil::testMaskDrawShape(*_procedural._opaqueState); - PrepareStencil::testMask(*_procedural._transparentState); - addMaterial(graphics::MaterialLayer(_material, 0), "0"); } bool ShapeEntityRenderer::needsRenderUpdate() const { if (resultWithReadLock([&] { - if (_procedural.isEnabled() && _procedural.isFading()) { - return true; + auto mat = _materials.find("0"); + if (mat != _materials.end() && mat->second.top().material && mat->second.top().material->isProcedural() && + mat->second.top().material->isEnabled()) { + auto procedural = std::static_pointer_cast(mat->second.top().material); + if (procedural->isFading()) { + return true; + } } - auto mat = _materials.find("0"); if (mat != _materials.end() && mat->second.shouldUpdate()) { return true; } @@ -67,7 +56,7 @@ bool ShapeEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoin return true; } - if (_lastUserData != entity->getUserData()) { + if (_proceduralData != entity->getUserData()) { return true; } @@ -76,12 +65,6 @@ bool ShapeEntityRenderer::needsRenderUpdateFromTypedEntity(const TypedEntityPoin void ShapeEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) { withWriteLock([&] { - auto userData = entity->getUserData(); - if (_lastUserData != userData) { - _lastUserData = userData; - _procedural.setProceduralData(ProceduralData::parse(_lastUserData)); - } - _shape = entity->getShape(); _pulseProperties = entity->getPulseProperties(); }); @@ -106,25 +89,45 @@ void ShapeEntityRenderer::doRenderUpdateSynchronousTyped(const ScenePointer& sce void ShapeEntityRenderer::doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) { withReadLock([&] { - if (_procedural.isEnabled() && _procedural.isFading()) { - float isFading = Interpolate::calculateFadeRatio(_procedural.getFadeStartTime()) < 1.0f; - _procedural.setIsFading(isFading); + auto mat = _materials.find("0"); + if (mat != _materials.end() && mat->second.top().material && mat->second.top().material->isProcedural() && mat->second.top().material->isEnabled()) { + auto procedural = std::static_pointer_cast(mat->second.top().material); + if (procedural->isFading()) { + procedural->setIsFading(Interpolate::calculateFadeRatio(procedural->getFadeStartTime()) < 1.0f); + } } }); - glm::vec3 color = toGlm(entity->getColor()); - float alpha = entity->getAlpha(); - if (_color != color || _alpha != alpha) { - _color = color; - _alpha = alpha; - _material->setAlbedo(color); - _material->setOpacity(_alpha); - - auto materials = _materials.find("0"); - if (materials != _materials.end()) { - materials->second.setNeedsUpdate(true); + withWriteLock([&] { + bool materialChanged = false; + glm::vec3 color = toGlm(entity->getColor()); + if (_color != color) { + _color = color; + _material->setAlbedo(color); + materialChanged = true; } - } + + float alpha = entity->getAlpha(); + if (_alpha != alpha) { + _alpha = alpha; + _material->setOpacity(alpha); + materialChanged = true; + } + + auto userData = entity->getUserData(); + if (_proceduralData != userData) { + _proceduralData = userData; + _material->setProceduralData(_proceduralData); + materialChanged = true; + } + + if (materialChanged) { + auto materials = _materials.find("0"); + if (materials != _materials.end()) { + materials->second.setNeedsUpdate(true); + } + } + }); } bool ShapeEntityRenderer::isTransparent() const { @@ -132,12 +135,15 @@ bool ShapeEntityRenderer::isTransparent() const { return true; } - if (_procedural.isEnabled() && _procedural.isFading()) { - return Interpolate::calculateFadeRatio(_procedural.getFadeStartTime()) < 1.0f; - } - auto mat = _materials.find("0"); - if (mat != _materials.end()) { + if (mat != _materials.end() && mat->second.top().material) { + if (mat->second.top().material->isProcedural() && mat->second.top().material->isEnabled()) { + auto procedural = std::static_pointer_cast(mat->second.top().material); + if (procedural->isFading()) { + return true; + } + } + if (mat->second.getMaterialKey().isTranslucent()) { return true; } @@ -146,80 +152,59 @@ bool ShapeEntityRenderer::isTransparent() const { return Parent::isTransparent(); } -bool ShapeEntityRenderer::useMaterialPipeline(const graphics::MultiMaterial& materials) const { - bool proceduralReady = resultWithReadLock([&] { - return _procedural.isReady(); - }); - if (proceduralReady) { - return false; +ShapeEntityRenderer::Pipeline ShapeEntityRenderer::getPipelineType(const graphics::MultiMaterial& materials) const { + if (materials.top().material && materials.top().material->isProcedural() && materials.top().material->isReady()) { + return Pipeline::PROCEDURAL; } graphics::MaterialKey drawMaterialKey = materials.getMaterialKey(); if (drawMaterialKey.isEmissive() || drawMaterialKey.isUnlit() || drawMaterialKey.isMetallic() || drawMaterialKey.isScattering()) { - return true; + return Pipeline::MATERIAL; } // If the material is using any map, we need to use a material ShapeKey for (int i = 0; i < graphics::Material::MapChannel::NUM_MAP_CHANNELS; i++) { if (drawMaterialKey.isMapChannel(graphics::Material::MapChannel(i))) { - return true; + return Pipeline::MATERIAL; } } - return false; + return Pipeline::SIMPLE; } ShapeKey ShapeEntityRenderer::getShapeKey() { + ShapeKey::Builder builder; auto mat = _materials.find("0"); if (mat != _materials.end() && mat->second.shouldUpdate()) { RenderPipelines::updateMultiMaterial(mat->second); } - if (mat != _materials.end() && useMaterialPipeline(mat->second)) { - graphics::MaterialKey drawMaterialKey = mat->second.getMaterialKey(); + if (isTransparent()) { + builder.withTranslucent(); + } - bool isTranslucent = drawMaterialKey.isTranslucent(); - bool hasTangents = drawMaterialKey.isNormalMap(); - bool hasLightmap = drawMaterialKey.isLightMap(); - bool isUnlit = drawMaterialKey.isUnlit(); + if (_primitiveMode == PrimitiveMode::LINES) { + builder.withWireframe(); + } - ShapeKey::Builder builder; + auto pipelineType = getPipelineType(mat->second); + if (pipelineType == Pipeline::MATERIAL) { builder.withMaterial(); - if (isTranslucent) { - builder.withTranslucent(); - } - if (hasTangents) { + graphics::MaterialKey drawMaterialKey = mat->second.getMaterialKey(); + if (drawMaterialKey.isNormalMap()) { builder.withTangents(); } - if (hasLightmap) { + if (drawMaterialKey.isLightMap()) { builder.withLightMap(); } - if (isUnlit) { + if (drawMaterialKey.isUnlit()) { builder.withUnlit(); } - - if (_primitiveMode == PrimitiveMode::LINES) { - builder.withWireframe(); - } - - return builder.build(); - } else { - ShapeKey::Builder builder; - bool proceduralReady = resultWithReadLock([&] { - return _procedural.isReady(); - }); - if (proceduralReady) { - builder.withOwnPipeline(); - } - if (isTransparent()) { - builder.withTranslucent(); - } - - if (_primitiveMode == PrimitiveMode::LINES) { - builder.withWireframe(); - } - return builder.build(); + } else if (pipelineType == Pipeline::PROCEDURAL) { + builder.withOwnPipeline(); } + + return builder.build(); } void ShapeEntityRenderer::doRender(RenderArgs* args) { @@ -233,36 +218,36 @@ void ShapeEntityRenderer::doRender(RenderArgs* args) { GeometryCache::Shape geometryShape; PrimitiveMode primitiveMode; RenderLayer renderLayer; - bool proceduralRender = false; glm::vec4 outColor; + Pipeline pipelineType; withReadLock([&] { geometryShape = geometryCache->getShapeForEntityShape(_shape); primitiveMode = _primitiveMode; renderLayer = _renderLayer; batch.setModelTransform(_renderTransform); // use a transform with scale, rotation, registration point and translation materials = _materials["0"]; + pipelineType = getPipelineType(materials); auto& schema = materials.getSchemaBuffer().get(); outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); outColor = EntityRenderer::calculatePulseColor(outColor, _pulseProperties, _created); - if (_procedural.isReady()) { - outColor = _procedural.getColor(outColor); - outColor.a *= _procedural.isFading() ? Interpolate::calculateFadeRatio(_procedural.getFadeStartTime()) : 1.0f; - _procedural.prepare(batch, _position, _dimensions, _orientation, _created, ProceduralProgramKey(outColor.a < 1.0f)); - proceduralRender = true; - } }); if (outColor.a == 0.0f) { return; } - if (proceduralRender) { + if (pipelineType == Pipeline::PROCEDURAL) { + auto procedural = std::static_pointer_cast(materials.top().material); + outColor = procedural->getColor(outColor); + outColor.a *= procedural->isFading() ? Interpolate::calculateFadeRatio(procedural->getFadeStartTime()) : 1.0f; + procedural->prepare(batch, _position, _dimensions, _orientation, _created, ProceduralProgramKey(outColor.a < 1.0f)); + if (render::ShapeKey(args->_globalShapeKey).isWireframe() || primitiveMode == PrimitiveMode::LINES) { geometryCache->renderWireShape(batch, geometryShape, outColor); } else { geometryCache->renderShape(batch, geometryShape, outColor); } - } else if (!useMaterialPipeline(materials)) { + } else if (pipelineType == Pipeline::SIMPLE) { // FIXME, support instanced multi-shape rendering using multidraw indirect outColor.a *= _isFading ? Interpolate::calculateFadeRatio(_fadeStartTime) : 1.0f; render::ShapePipelinePointer pipeline = geometryCache->getShapePipelinePointer(outColor.a < 1.0f, false, diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.h b/libraries/entities-renderer/src/RenderableShapeEntityItem.h index 6e4b05f716..6061526f75 100644 --- a/libraries/entities-renderer/src/RenderableShapeEntityItem.h +++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.h @@ -35,14 +35,14 @@ private: virtual void doRender(RenderArgs* args) override; virtual bool isTransparent() const override; - bool useMaterialPipeline(const graphics::MultiMaterial& materials) const; + enum Pipeline { SIMPLE, MATERIAL, PROCEDURAL }; + Pipeline getPipelineType(const graphics::MultiMaterial& materials) const; - Procedural _procedural; - QString _lastUserData; + QString _proceduralData; entity::Shape _shape { entity::Sphere }; PulsePropertyGroup _pulseProperties; - std::shared_ptr _material { std::make_shared() }; + std::shared_ptr _material { std::make_shared() }; glm::vec3 _color { NAN }; float _alpha; diff --git a/libraries/entities/CMakeLists.txt b/libraries/entities/CMakeLists.txt index 56adb59914..3157a6552b 100644 --- a/libraries/entities/CMakeLists.txt +++ b/libraries/entities/CMakeLists.txt @@ -6,4 +6,6 @@ include_hifi_library_headers(fbx) include_hifi_library_headers(gpu) include_hifi_library_headers(image) include_hifi_library_headers(ktx) -link_hifi_libraries(shared shaders networking octree avatars graphics material-networking model-networking) +include_hifi_library_headers(material-networking) +include_hifi_library_headers(procedural) +link_hifi_libraries(shared shaders networking octree avatars graphics model-networking) diff --git a/libraries/gpu/src/gpu/Shader.h b/libraries/gpu/src/gpu/Shader.h index f4f37b1815..9220f301d6 100755 --- a/libraries/gpu/src/gpu/Shader.h +++ b/libraries/gpu/src/gpu/Shader.h @@ -119,9 +119,6 @@ protected: Shader(Type type, const Source& source, bool dynamic); Shader(Type type, const Pointer& vertex, const Pointer& geometry, const Pointer& pixel); - Shader(const Shader& shader); // deep copy of the sysmem shader - Shader& operator=(const Shader& shader); // deep copy of the sysmem texture - // Source contains the actual source code or nothing if the shader is a program const Source _source; diff --git a/libraries/gpu/src/gpu/ShaderConstants.h b/libraries/gpu/src/gpu/ShaderConstants.h index 1a37c69784..c2637e2dfb 100644 --- a/libraries/gpu/src/gpu/ShaderConstants.h +++ b/libraries/gpu/src/gpu/ShaderConstants.h @@ -21,7 +21,6 @@ #define GPU_TEXTURE_TRANSFORM_OBJECT 31 - #define GPU_RESOURCE_BUFFER_SLOT0_TEXTURE 35 #define GPU_RESOURCE_BUFFER_SLOT1_TEXTURE 36 #define GPU_RESOURCE_BUFFER_SLOT0_STORAGE 0 diff --git a/libraries/graphics-scripting/src/graphics-scripting/Forward.h b/libraries/graphics-scripting/src/graphics-scripting/Forward.h index 1295fc5722..9efaa0a90d 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/Forward.h +++ b/libraries/graphics-scripting/src/graphics-scripting/Forward.h @@ -66,6 +66,7 @@ namespace scriptable { * @property {string} lightmapParams * @property {string} materialParams * @property {boolean} defaultFallthrough + * @property {string} procedural */ class ScriptableMaterial { public: @@ -101,6 +102,8 @@ namespace scriptable { bool defaultFallthrough; std::unordered_map propertyFallthroughs; // not actually exposed to script + QString procedural; + graphics::MaterialKey key { 0 }; }; diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index ca9634e365..d76c1fcbd2 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -368,129 +368,135 @@ namespace scriptable { obj.setProperty("opacity", material.opacity); } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::GLOSSY_VAL_BIT)) { - obj.setProperty("roughness", FALLTHROUGH); - } else if (material.key.isGlossy()) { - obj.setProperty("roughness", material.roughness); - } - - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::METALLIC_VAL_BIT)) { - obj.setProperty("metallic", FALLTHROUGH); - } else if (material.key.isMetallic()) { - obj.setProperty("metallic", material.metallic); - } - - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::SCATTERING_VAL_BIT)) { - obj.setProperty("scattering", FALLTHROUGH); - } else if (material.key.isScattering()) { - obj.setProperty("scattering", material.scattering); - } - - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::UNLIT_VAL_BIT)) { - obj.setProperty("unlit", FALLTHROUGH); - } else if (material.key.isUnlit()) { - obj.setProperty("unlit", material.unlit); - } - - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::EMISSIVE_VAL_BIT)) { - obj.setProperty("emissive", FALLTHROUGH); - } else if (material.key.isEmissive()) { - obj.setProperty("emissive", vec3ColorToScriptValue(engine, material.emissive)); - } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::ALBEDO_VAL_BIT)) { obj.setProperty("albedo", FALLTHROUGH); } else if (material.key.isAlbedo()) { obj.setProperty("albedo", vec3ColorToScriptValue(engine, material.albedo)); } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::EMISSIVE_MAP_BIT)) { - obj.setProperty("emissiveMap", FALLTHROUGH); - } else if (!material.emissiveMap.isEmpty()) { - obj.setProperty("emissiveMap", material.emissiveMap); - } + if (material.model.toStdString() == graphics::Material::HIFI_PBR) { + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT)) { + obj.setProperty("opacityCutoff", FALLTHROUGH); + } else if (material.key.isOpacityCutoff()) { + obj.setProperty("opacityCutoff", material.opacityCutoff); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::ALBEDO_MAP_BIT)) { - obj.setProperty("albedoMap", FALLTHROUGH); - } else if (!material.albedoMap.isEmpty()) { - obj.setProperty("albedoMap", material.albedoMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_MAP_MODE_BIT)) { + obj.setProperty("opacityMapMode", FALLTHROUGH); + } else if (material.key.isOpacityMapMode()) { + obj.setProperty("opacityMapMode", material.opacityMapMode); + } - if (!material.opacityMap.isEmpty()) { - obj.setProperty("opacityMap", material.opacityMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::GLOSSY_VAL_BIT)) { + obj.setProperty("roughness", FALLTHROUGH); + } else if (material.key.isGlossy()) { + obj.setProperty("roughness", material.roughness); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_TRANSLUCENT_MAP_BIT | graphics::MaterialKey::OPACITY_MASK_MAP_BIT)) { - obj.setProperty("opacityMapMode", FALLTHROUGH); - } else if (material.key.getOpacityMapMode() != graphics::Material::DEFAULT_OPACITY_MAP_MODE) { - obj.setProperty("opacityMapMode", material.opacityMapMode); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::METALLIC_VAL_BIT)) { + obj.setProperty("metallic", FALLTHROUGH); + } else if (material.key.isMetallic()) { + obj.setProperty("metallic", material.metallic); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT)) { - obj.setProperty("opacityCutoff", FALLTHROUGH); - } else if (material.key.isOpacityCutoff()) { - obj.setProperty("opacityCutoff", material.opacityCutoff); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::SCATTERING_VAL_BIT)) { + obj.setProperty("scattering", FALLTHROUGH); + } else if (material.key.isScattering()) { + obj.setProperty("scattering", material.scattering); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OCCLUSION_MAP_BIT)) { - obj.setProperty("occlusionMap", FALLTHROUGH); - } else if (!material.occlusionMap.isEmpty()) { - obj.setProperty("occlusionMap", material.occlusionMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::UNLIT_VAL_BIT)) { + obj.setProperty("unlit", FALLTHROUGH); + } else if (material.key.isUnlit()) { + obj.setProperty("unlit", material.unlit); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::LIGHT_MAP_BIT)) { - obj.setProperty("lightMap", FALLTHROUGH); - } else if (!material.lightMap.isEmpty()) { - obj.setProperty("lightMap", material.lightMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::EMISSIVE_VAL_BIT)) { + obj.setProperty("emissive", FALLTHROUGH); + } else if (material.key.isEmissive()) { + obj.setProperty("emissive", vec3ColorToScriptValue(engine, material.emissive)); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::SCATTERING_MAP_BIT)) { - obj.setProperty("scatteringMap", FALLTHROUGH); - } else if (!material.scatteringMap.isEmpty()) { - obj.setProperty("scatteringMap", material.scatteringMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::EMISSIVE_MAP_BIT)) { + obj.setProperty("emissiveMap", FALLTHROUGH); + } else if (!material.emissiveMap.isEmpty()) { + obj.setProperty("emissiveMap", material.emissiveMap); + } - // Only set one of each of these - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::METALLIC_MAP_BIT)) { - obj.setProperty("metallicMap", FALLTHROUGH); - } else if (!material.metallicMap.isEmpty()) { - obj.setProperty("metallicMap", material.metallicMap); - } else if (!material.specularMap.isEmpty()) { - obj.setProperty("specularMap", material.specularMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::ALBEDO_MAP_BIT)) { + obj.setProperty("albedoMap", FALLTHROUGH); + } else if (!material.albedoMap.isEmpty()) { + obj.setProperty("albedoMap", material.albedoMap); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::ROUGHNESS_MAP_BIT)) { - obj.setProperty("roughnessMap", FALLTHROUGH); - } else if (!material.roughnessMap.isEmpty()) { - obj.setProperty("roughnessMap", material.roughnessMap); - } else if (!material.glossMap.isEmpty()) { - obj.setProperty("glossMap", material.glossMap); - } + if (!material.opacityMap.isEmpty()) { + obj.setProperty("opacityMap", material.opacityMap); + } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::NORMAL_MAP_BIT)) { - obj.setProperty("normalMap", FALLTHROUGH); - } else if (!material.normalMap.isEmpty()) { - obj.setProperty("normalMap", material.normalMap); - } else if (!material.bumpMap.isEmpty()) { - obj.setProperty("bumpMap", material.bumpMap); - } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::OCCLUSION_MAP_BIT)) { + obj.setProperty("occlusionMap", FALLTHROUGH); + } else if (!material.occlusionMap.isEmpty()) { + obj.setProperty("occlusionMap", material.occlusionMap); + } - // These need to be implemented, but set the fallthrough for now - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM0)) { - obj.setProperty("texCoordTransform0", FALLTHROUGH); - } else if (material.texCoordTransforms[0] != mat4()) { - obj.setProperty("texCoordTransform0", mat4toScriptValue(engine, material.texCoordTransforms[0])); - } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM1)) { - obj.setProperty("texCoordTransform1", FALLTHROUGH); - } else if (material.texCoordTransforms[1] != mat4()) { - obj.setProperty("texCoordTransform1", mat4toScriptValue(engine, material.texCoordTransforms[1])); - } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::LIGHTMAP_PARAMS)) { - obj.setProperty("lightmapParams", FALLTHROUGH); - } - if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::MATERIAL_PARAMS)) { - obj.setProperty("materialParams", FALLTHROUGH); + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::LIGHT_MAP_BIT)) { + obj.setProperty("lightMap", FALLTHROUGH); + } else if (!material.lightMap.isEmpty()) { + obj.setProperty("lightMap", material.lightMap); + } + + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::SCATTERING_MAP_BIT)) { + obj.setProperty("scatteringMap", FALLTHROUGH); + } else if (!material.scatteringMap.isEmpty()) { + obj.setProperty("scatteringMap", material.scatteringMap); + } + + // Only set one of each of these + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::METALLIC_MAP_BIT)) { + obj.setProperty("metallicMap", FALLTHROUGH); + } else if (!material.metallicMap.isEmpty()) { + obj.setProperty("metallicMap", material.metallicMap); + } else if (!material.specularMap.isEmpty()) { + obj.setProperty("specularMap", material.specularMap); + } + + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::ROUGHNESS_MAP_BIT)) { + obj.setProperty("roughnessMap", FALLTHROUGH); + } else if (!material.roughnessMap.isEmpty()) { + obj.setProperty("roughnessMap", material.roughnessMap); + } else if (!material.glossMap.isEmpty()) { + obj.setProperty("glossMap", material.glossMap); + } + + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::MaterialKey::NORMAL_MAP_BIT)) { + obj.setProperty("normalMap", FALLTHROUGH); + } else if (!material.normalMap.isEmpty()) { + obj.setProperty("normalMap", material.normalMap); + } else if (!material.bumpMap.isEmpty()) { + obj.setProperty("bumpMap", material.bumpMap); + } + + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM0)) { + obj.setProperty("texCoordTransform0", FALLTHROUGH); + } else if (material.texCoordTransforms[0] != mat4()) { + obj.setProperty("texCoordTransform0", mat4toScriptValue(engine, material.texCoordTransforms[0])); + } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::TEXCOORDTRANSFORM1)) { + obj.setProperty("texCoordTransform1", FALLTHROUGH); + } else if (material.texCoordTransforms[1] != mat4()) { + obj.setProperty("texCoordTransform1", mat4toScriptValue(engine, material.texCoordTransforms[1])); + } + + // These need to be implemented, but set the fallthrough for now + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::LIGHTMAP_PARAMS)) { + obj.setProperty("lightmapParams", FALLTHROUGH); + } + if (hasPropertyFallthroughs && material.propertyFallthroughs.at(graphics::Material::MATERIAL_PARAMS)) { + obj.setProperty("materialParams", FALLTHROUGH); + } + + } else if (material.model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { + obj.setProperty("procedural", material.procedural); } obj.setProperty("defaultFallthrough", material.defaultFallthrough); diff --git a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp index bc610108ec..4a56db0d04 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/ScriptableModel.cpp @@ -23,27 +23,31 @@ scriptable::ScriptableMaterial& scriptable::ScriptableMaterial::operator=(const name = material.name; model = material.model; opacity = material.opacity; - roughness = material.roughness; - metallic = material.metallic; - scattering = material.scattering; - opacityCutoff = material.opacityCutoff; - unlit = material.unlit; - emissive = material.emissive; albedo = material.albedo; - emissiveMap = material.emissiveMap; - albedoMap = material.albedoMap; - opacityMap = material.opacityMap; - metallicMap = material.metallicMap; - specularMap = material.specularMap; - roughnessMap = material.roughnessMap; - glossMap = material.glossMap; - normalMap = material.normalMap; - bumpMap = material.bumpMap; - occlusionMap = material.occlusionMap; - lightMap = material.lightMap; - scatteringMap = material.scatteringMap; - opacityMapMode = material.opacityMapMode; + if (model.toStdString() == graphics::Material::HIFI_PBR) { + opacityCutoff = material.opacityCutoff; + opacityMapMode = material.opacityMapMode; + roughness = material.roughness; + metallic = material.metallic; + scattering = material.scattering; + unlit = material.unlit; + emissive = material.emissive; + emissiveMap = material.emissiveMap; + albedoMap = material.albedoMap; + opacityMap = material.opacityMap; + metallicMap = material.metallicMap; + specularMap = material.specularMap; + roughnessMap = material.roughnessMap; + glossMap = material.glossMap; + normalMap = material.normalMap; + bumpMap = material.bumpMap; + occlusionMap = material.occlusionMap; + lightMap = material.lightMap; + scatteringMap = material.scatteringMap; + } else if (model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { + procedural = material.procedural; + } defaultFallthrough = material.defaultFallthrough; propertyFallthroughs = material.propertyFallthroughs; @@ -58,77 +62,83 @@ scriptable::ScriptableMaterial::ScriptableMaterial(const graphics::MaterialPoint name = material->getName().c_str(); model = material->getModel().c_str(); opacity = material->getOpacity(); - - opacityMapMode = QString(graphics::MaterialKey::getOpacityMapModeName(material->getOpacityMapMode()).c_str()); - roughness = material->getRoughness(); - metallic = material->getMetallic(); - scattering = material->getScattering(); - opacityCutoff = material->getOpacityCutoff(); - unlit = material->isUnlit(); - emissive = material->getEmissive(); albedo = material->getAlbedo(); + + if (model.toStdString() == graphics::Material::HIFI_PBR) { + opacityCutoff = material->getOpacityCutoff(); + opacityMapMode = QString(graphics::MaterialKey::getOpacityMapModeName(material->getOpacityMapMode()).c_str()); + roughness = material->getRoughness(); + metallic = material->getMetallic(); + scattering = material->getScattering(); + unlit = material->isUnlit(); + emissive = material->getEmissive(); + + auto map = material->getTextureMap(graphics::Material::MapChannel::EMISSIVE_MAP); + if (map && map->getTextureSource()) { + emissiveMap = map->getTextureSource()->getUrl().toString(); + } + + map = material->getTextureMap(graphics::Material::MapChannel::ALBEDO_MAP); + if (map && map->getTextureSource()) { + albedoMap = map->getTextureSource()->getUrl().toString(); + if (map->useAlphaChannel()) { + opacityMap = albedoMap; + } + } + + map = material->getTextureMap(graphics::Material::MapChannel::METALLIC_MAP); + if (map && map->getTextureSource()) { + if (map->getTextureSource()->getType() == image::TextureUsage::Type::METALLIC_TEXTURE) { + metallicMap = map->getTextureSource()->getUrl().toString(); + } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::SPECULAR_TEXTURE) { + specularMap = map->getTextureSource()->getUrl().toString(); + } + } + + map = material->getTextureMap(graphics::Material::MapChannel::ROUGHNESS_MAP); + if (map && map->getTextureSource()) { + if (map->getTextureSource()->getType() == image::TextureUsage::Type::ROUGHNESS_TEXTURE) { + roughnessMap = map->getTextureSource()->getUrl().toString(); + } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::GLOSS_TEXTURE) { + glossMap = map->getTextureSource()->getUrl().toString(); + } + } + + map = material->getTextureMap(graphics::Material::MapChannel::NORMAL_MAP); + if (map && map->getTextureSource()) { + if (map->getTextureSource()->getType() == image::TextureUsage::Type::NORMAL_TEXTURE) { + normalMap = map->getTextureSource()->getUrl().toString(); + } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::BUMP_TEXTURE) { + bumpMap = map->getTextureSource()->getUrl().toString(); + } + } + + map = material->getTextureMap(graphics::Material::MapChannel::OCCLUSION_MAP); + if (map && map->getTextureSource()) { + occlusionMap = map->getTextureSource()->getUrl().toString(); + } + + map = material->getTextureMap(graphics::Material::MapChannel::LIGHT_MAP); + if (map && map->getTextureSource()) { + lightMap = map->getTextureSource()->getUrl().toString(); + } + + map = material->getTextureMap(graphics::Material::MapChannel::SCATTERING_MAP); + if (map && map->getTextureSource()) { + scatteringMap = map->getTextureSource()->getUrl().toString(); + } + + for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { + texCoordTransforms[i] = material->getTexCoordTransform(i); + } + } else if (model.toStdString() == graphics::Material::HIFI_SHADER_SIMPLE) { + procedural = material->getProceduralString(); + } + defaultFallthrough = material->getDefaultFallthrough(); propertyFallthroughs = material->getPropertyFallthroughs(); + key = material->getKey(); - - auto map = material->getTextureMap(graphics::Material::MapChannel::EMISSIVE_MAP); - if (map && map->getTextureSource()) { - emissiveMap = map->getTextureSource()->getUrl().toString(); - } - - map = material->getTextureMap(graphics::Material::MapChannel::ALBEDO_MAP); - if (map && map->getTextureSource()) { - albedoMap = map->getTextureSource()->getUrl().toString(); - if (map->useAlphaChannel()) { - opacityMap = albedoMap; - } - } - - map = material->getTextureMap(graphics::Material::MapChannel::METALLIC_MAP); - if (map && map->getTextureSource()) { - if (map->getTextureSource()->getType() == image::TextureUsage::Type::METALLIC_TEXTURE) { - metallicMap = map->getTextureSource()->getUrl().toString(); - } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::SPECULAR_TEXTURE) { - specularMap = map->getTextureSource()->getUrl().toString(); - } - } - - map = material->getTextureMap(graphics::Material::MapChannel::ROUGHNESS_MAP); - if (map && map->getTextureSource()) { - if (map->getTextureSource()->getType() == image::TextureUsage::Type::ROUGHNESS_TEXTURE) { - roughnessMap = map->getTextureSource()->getUrl().toString(); - } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::GLOSS_TEXTURE) { - glossMap = map->getTextureSource()->getUrl().toString(); - } - } - - map = material->getTextureMap(graphics::Material::MapChannel::NORMAL_MAP); - if (map && map->getTextureSource()) { - if (map->getTextureSource()->getType() == image::TextureUsage::Type::NORMAL_TEXTURE) { - normalMap = map->getTextureSource()->getUrl().toString(); - } else if (map->getTextureSource()->getType() == image::TextureUsage::Type::BUMP_TEXTURE) { - bumpMap = map->getTextureSource()->getUrl().toString(); - } - } - - map = material->getTextureMap(graphics::Material::MapChannel::OCCLUSION_MAP); - if (map && map->getTextureSource()) { - occlusionMap = map->getTextureSource()->getUrl().toString(); - } - - map = material->getTextureMap(graphics::Material::MapChannel::LIGHT_MAP); - if (map && map->getTextureSource()) { - lightMap = map->getTextureSource()->getUrl().toString(); - } - - map = material->getTextureMap(graphics::Material::MapChannel::SCATTERING_MAP); - if (map && map->getTextureSource()) { - scatteringMap = map->getTextureSource()->getUrl().toString(); - } - - for (int i = 0; i < graphics::Material::NUM_TEXCOORD_TRANSFORMS; i++) { - texCoordTransforms[i] = material->getTexCoordTransform(i); - } } } diff --git a/libraries/graphics/src/graphics/Material.cpp b/libraries/graphics/src/graphics/Material.cpp index dffc52e29f..d80c3adfbc 100755 --- a/libraries/graphics/src/graphics/Material.cpp +++ b/libraries/graphics/src/graphics/Material.cpp @@ -34,7 +34,6 @@ std::string MaterialKey::getOpacityMapModeName(OpacityMapMode mode) { return names[mode]; } - bool MaterialKey::getOpacityMapModeFromName(const std::string& modeName, MaterialKey::OpacityMapMode& mode) { for (int i = OPACITY_MAP_OPAQUE; i <= OPACITY_MAP_BLEND; i++) { mode = (MaterialKey::OpacityMapMode) i; @@ -45,6 +44,9 @@ bool MaterialKey::getOpacityMapModeFromName(const std::string& modeName, Materia return false; } +const std::string Material::HIFI_PBR { "hifi_pbr" }; +const std::string Material::HIFI_SHADER_SIMPLE { "hifi_shader_simple" }; + Material::Material() { for (int i = 0; i < NUM_TOTAL_FLAGS; i++) { _propertyFallthroughs[i] = false; diff --git a/libraries/graphics/src/graphics/Material.h b/libraries/graphics/src/graphics/Material.h index 25ff711c0c..48ab8151c5 100755 --- a/libraries/graphics/src/graphics/Material.h +++ b/libraries/graphics/src/graphics/Material.h @@ -328,6 +328,7 @@ public: Material(); Material(const Material& material); + virtual ~Material() = default; Material& operator= (const Material& material); const MaterialKey& getKey() const { return _key; } @@ -409,11 +410,19 @@ public: bool getPropertyFallthrough(uint property) { return _propertyFallthroughs[property]; } void setPropertyDoesFallthrough(uint property) { _propertyFallthroughs[property] = true; } + virtual bool isProcedural() const { return false; } + virtual bool isEnabled() const { return true; } + virtual bool isReady() const { return true; } + virtual QString getProceduralString() const { return QString(); } + + static const std::string HIFI_PBR; + static const std::string HIFI_SHADER_SIMPLE; + protected: std::string _name { "" }; private: - std::string _model { "hifi_pbr" }; + std::string _model { HIFI_PBR }; mutable MaterialKey _key { 0 }; // Material properties diff --git a/libraries/model-baker/CMakeLists.txt b/libraries/model-baker/CMakeLists.txt index 6c0f220340..bf75db4750 100644 --- a/libraries/model-baker/CMakeLists.txt +++ b/libraries/model-baker/CMakeLists.txt @@ -1,7 +1,8 @@ set(TARGET_NAME model-baker) setup_hifi_library() -link_hifi_libraries(shared shaders task gpu graphics hfm material-networking) +link_hifi_libraries(shared shaders task gpu graphics hfm procedural) +include_hifi_library_headers(material-networking) include_hifi_library_headers(networking) include_hifi_library_headers(image) include_hifi_library_headers(ktx) diff --git a/libraries/model-baker/src/model-baker/ParseMaterialMappingTask.h b/libraries/model-baker/src/model-baker/ParseMaterialMappingTask.h index 7c94661b28..3e967a7d3f 100644 --- a/libraries/model-baker/src/model-baker/ParseMaterialMappingTask.h +++ b/libraries/model-baker/src/model-baker/ParseMaterialMappingTask.h @@ -18,7 +18,7 @@ #include "Engine.h" #include "BakerTypes.h" -#include +#include class ParseMaterialMappingTask { public: diff --git a/libraries/model-networking/CMakeLists.txt b/libraries/model-networking/CMakeLists.txt index e79d18f779..b71d125586 100644 --- a/libraries/model-networking/CMakeLists.txt +++ b/libraries/model-networking/CMakeLists.txt @@ -1,8 +1,9 @@ set(TARGET_NAME model-networking) setup_hifi_library() -link_hifi_libraries(shared shaders networking graphics fbx material-networking model-baker) +link_hifi_libraries(shared shaders networking graphics fbx procedural model-baker) include_hifi_library_headers(hfm) include_hifi_library_headers(task) include_hifi_library_headers(gpu) include_hifi_library_headers(image) -include_hifi_library_headers(ktx) \ No newline at end of file +include_hifi_library_headers(ktx) +include_hifi_library_headers(material-networking) \ No newline at end of file diff --git a/libraries/model-networking/src/model-networking/ModelCache.h b/libraries/model-networking/src/model-networking/ModelCache.h index 5b78c18184..615951345f 100644 --- a/libraries/model-networking/src/model-networking/ModelCache.h +++ b/libraries/model-networking/src/model-networking/ModelCache.h @@ -18,7 +18,7 @@ #include #include "FBXSerializer.h" -#include +#include #include #include "ModelLoader.h" diff --git a/libraries/physics/CMakeLists.txt b/libraries/physics/CMakeLists.txt index d7ce40641d..c1410a6bfc 100644 --- a/libraries/physics/CMakeLists.txt +++ b/libraries/physics/CMakeLists.txt @@ -1,17 +1,18 @@ set(TARGET_NAME physics) setup_hifi_library() -link_hifi_libraries(shared task workload fbx entities graphics shaders) +link_hifi_libraries(shared workload entities shaders) include_hifi_library_headers(networking) include_hifi_library_headers(gpu) include_hifi_library_headers(avatars) -include_hifi_library_headers(audio) include_hifi_library_headers(octree) -include_hifi_library_headers(animation) include_hifi_library_headers(material-networking) include_hifi_library_headers(model-networking) +include_hifi_library_headers(procedural) include_hifi_library_headers(image) include_hifi_library_headers(ktx) include_hifi_library_headers(gpu) include_hifi_library_headers(hfm) +include_hifi_library_headers(fbx) +include_hifi_library_headers(graphics) target_bullet() diff --git a/libraries/procedural/CMakeLists.txt b/libraries/procedural/CMakeLists.txt index d08a7aef02..d737d34e95 100644 --- a/libraries/procedural/CMakeLists.txt +++ b/libraries/procedural/CMakeLists.txt @@ -1,4 +1,4 @@ set(TARGET_NAME procedural) setup_hifi_library() -link_hifi_libraries(shared gpu shaders networking graphics material-networking ktx image) +link_hifi_libraries(shared gpu shaders networking graphics material-networking ktx image hfm) diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp index ce4fbb2a38..43c6b25dcb 100644 --- a/libraries/procedural/src/procedural/Procedural.cpp +++ b/libraries/procedural/src/procedural/Procedural.cpp @@ -29,6 +29,7 @@ Q_LOGGING_CATEGORY(proceduralLog, "hifi.gpu.procedural") // User-data parsing constants static const QString PROCEDURAL_USER_DATA_KEY = "ProceduralEntity"; +static const QString FRAGMENT_URL_KEY = "fragmentShaderURL"; static const QString URL_KEY = "shaderUrl"; static const QString VERSION_KEY = "version"; static const QString UNIFORMS_KEY = "uniforms"; @@ -40,7 +41,7 @@ static const std::string PROCEDURAL_VERSION = "//PROCEDURAL_VERSION"; bool operator==(const ProceduralData& a, const ProceduralData& b) { return ((a.version == b.version) && - (a.shaderUrl == b.shaderUrl) && + (a.fragmentShaderUrl == b.fragmentShaderUrl) && (a.uniforms == b.uniforms) && (a.channels == b.channels)); } @@ -56,7 +57,13 @@ QJsonValue ProceduralData::getProceduralData(const QString& proceduralJson) { return QJsonValue(); } - return doc.object()[PROCEDURAL_USER_DATA_KEY]; + auto object = doc.object(); + auto userDataIt = object.find(PROCEDURAL_USER_DATA_KEY); + if (userDataIt != object.end()) { + return userDataIt.value(); + } + + return object; } ProceduralData ProceduralData::parse(const QString& proceduralData) { @@ -84,11 +91,18 @@ void ProceduralData::parse(const QJsonObject& proceduralData) { } } - auto rawShaderUrl = proceduralData[URL_KEY].toString(); - shaderUrl = DependencyManager::get()->normalizeURL(rawShaderUrl); + { // Fragment shader URL (either fragmentShaderURL or shaderUrl) + auto rawShaderUrl = proceduralData[FRAGMENT_URL_KEY].toString(); + fragmentShaderUrl = DependencyManager::get()->normalizeURL(rawShaderUrl); + + if (fragmentShaderUrl.isEmpty()) { + rawShaderUrl = proceduralData[URL_KEY].toString(); + fragmentShaderUrl = DependencyManager::get()->normalizeURL(rawShaderUrl); + } + } // Empty shader URL isn't valid - if (shaderUrl.isEmpty()) { + if (fragmentShaderUrl.isEmpty()) { return; } @@ -96,12 +110,8 @@ void ProceduralData::parse(const QJsonObject& proceduralData) { channels = proceduralData[CHANNELS_KEY].toArray(); } -// Example -//{ -// "ProceduralEntity": { -// "shaderUrl": "file:///C:/Users/bdavis/Git/hifi/examples/shaders/test.fs", -// } -//} +std::function Procedural::opaqueStencil = [](gpu::StatePointer state) {}; +std::function Procedural::transparentStencil = [](gpu::StatePointer state) {}; Procedural::Procedural() { _opaqueState->setCullMode(gpu::State::CULL_NONE); @@ -109,12 +119,14 @@ Procedural::Procedural() { _opaqueState->setBlendFunction(false, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + opaqueStencil(_opaqueState); _transparentState->setCullMode(gpu::State::CULL_NONE); _transparentState->setDepthTest(true, true, gpu::LESS_EQUAL); _transparentState->setBlendFunction(true, gpu::State::SRC_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::INV_SRC_ALPHA, gpu::State::FACTOR_ALPHA, gpu::State::BLEND_OP_ADD, gpu::State::ONE); + transparentStencil(_transparentState); _standardInputsBuffer = std::make_shared(sizeof(StandardInputs), nullptr); } @@ -158,14 +170,14 @@ void Procedural::setProceduralData(const ProceduralData& proceduralData) { } } - if (proceduralData.shaderUrl != _data.shaderUrl) { - _data.shaderUrl = proceduralData.shaderUrl; - const auto& shaderUrl = _data.shaderUrl; + if (proceduralData.fragmentShaderUrl != _data.fragmentShaderUrl) { + _data.fragmentShaderUrl = proceduralData.fragmentShaderUrl; + const auto& shaderUrl = _data.fragmentShaderUrl; _shaderDirty = true; - _networkShader.reset(); - _shaderPath.clear(); - _shaderSource.clear(); + _networkFragmentShader.reset(); + _fragmentShaderPath.clear(); + _fragmentShaderSource.clear(); if (shaderUrl.isEmpty() || !shaderUrl.isValid()) { return; @@ -175,11 +187,11 @@ void Procedural::setProceduralData(const ProceduralData& proceduralData) { if (!QFileInfo(shaderUrl.toLocalFile()).exists()) { return; } - _shaderPath = shaderUrl.toLocalFile(); + _fragmentShaderPath = shaderUrl.toLocalFile(); } else if (shaderUrl.scheme() == URL_SCHEME_QRC) { - _shaderPath = ":" + shaderUrl.path(); + _fragmentShaderPath = ":" + shaderUrl.path(); } else { - _networkShader = ShaderCache::instance().getShader(shaderUrl); + _networkFragmentShader = ShaderCache::instance().getShader(shaderUrl); } } @@ -202,7 +214,7 @@ bool Procedural::isReady() const { } // Do we have a network or local shader, and if so, is it loaded? - if (_shaderPath.isEmpty() && (!_networkShader || !_networkShader->isLoaded())) { + if (_fragmentShaderPath.isEmpty() && (!_networkFragmentShader || !_networkFragmentShader->isLoaded())) { return false; } @@ -232,17 +244,17 @@ void Procedural::prepare(gpu::Batch& batch, _entityPosition = position; _entityOrientation = glm::mat3_cast(orientation); _entityCreated = created; - if (!_shaderPath.isEmpty()) { - auto lastModified = (uint64_t)QFileInfo(_shaderPath).lastModified().toMSecsSinceEpoch(); - if (lastModified > _shaderModified) { - QFile file(_shaderPath); + if (!_fragmentShaderPath.isEmpty()) { + auto lastModified = (uint64_t)QFileInfo(_fragmentShaderPath).lastModified().toMSecsSinceEpoch(); + if (lastModified > _fragmentShaderModified) { + QFile file(_fragmentShaderPath); file.open(QIODevice::ReadOnly); - _shaderSource = QTextStream(&file).readAll(); + _fragmentShaderSource = QTextStream(&file).readAll(); _shaderDirty = true; - _shaderModified = lastModified; + _fragmentShaderModified = lastModified; } - } else if (_shaderSource.isEmpty() && _networkShader && _networkShader->isLoaded()) { - _shaderSource = _networkShader->_source; + } else if (_fragmentShaderSource.isEmpty() && _networkFragmentShader && _networkFragmentShader->isLoaded()) { + _fragmentShaderSource = _networkFragmentShader->_source; _shaderDirty = true; } @@ -253,8 +265,13 @@ void Procedural::prepare(gpu::Batch& batch, auto pipeline = _proceduralPipelines.find(key); bool recompiledShader = false; if (pipeline == _proceduralPipelines.end()) { - if (!_vertexShader) { - _vertexShader = gpu::Shader::createVertex(_vertexSource); + gpu::Shader::Source vertexSource; + if (key.isSkinnedDQ()) { + vertexSource = _vertexSourceSkinnedDQ; + } else if (key.isSkinned()) { + vertexSource = _vertexSourceSkinned; + } else { + vertexSource = _vertexSource; } gpu::Shader::Source& fragmentSource = (key.isTransparent() && _transparentFragmentSource.valid()) ? _transparentFragmentSource : _opaqueFragmentSource; @@ -262,7 +279,7 @@ void Procedural::prepare(gpu::Batch& batch, // Build the fragment shader fragmentSource.replacements.clear(); fragmentSource.replacements[PROCEDURAL_VERSION] = "#define PROCEDURAL_V" + std::to_string(_data.version); - fragmentSource.replacements[PROCEDURAL_BLOCK] = _shaderSource.toStdString(); + fragmentSource.replacements[PROCEDURAL_BLOCK] = _fragmentShaderSource.toStdString(); // Set any userdata specified uniforms (if any) if (!_data.uniforms.empty()) { @@ -287,8 +304,9 @@ void Procedural::prepare(gpu::Batch& batch, // Leave this here for debugging //qCDebug(proceduralLog) << "FragmentShader:\n" << fragmentSource.getSource(shader::Dialect::glsl450, shader::Variant::Mono).c_str(); + gpu::ShaderPointer vertexShader = gpu::Shader::createVertex(vertexSource); gpu::ShaderPointer fragmentShader = gpu::Shader::createPixel(fragmentSource); - gpu::ShaderPointer program = gpu::Shader::createProgram(_vertexShader, fragmentShader); + gpu::ShaderPointer program = gpu::Shader::createProgram(vertexShader, fragmentShader); _proceduralPipelines[key] = gpu::Pipeline::create(program, key.isTransparent() ? _transparentState : _opaqueState); @@ -303,10 +321,12 @@ void Procedural::prepare(gpu::Batch& batch, // FIXME: need to handle forward rendering batch.setPipeline(recompiledShader ? _proceduralPipelines[key] : pipeline->second); - if (_shaderDirty || _uniformsDirty) { + bool recreateUniforms = _shaderDirty || _uniformsDirty || recompiledShader || _prevKey != key; + if (recreateUniforms) { setupUniforms(); } + _prevKey = key; _shaderDirty = _uniformsDirty = false; for (auto lambda : _uniforms) { @@ -341,7 +361,7 @@ void Procedural::setupUniforms() { QJsonValue value = _data.uniforms[key]; if (value.isDouble()) { float v = value.toDouble(); - _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); + _uniforms.push_back([slot, v](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); } else if (value.isArray()) { auto valueArray = value.toArray(); switch (valueArray.size()) { @@ -350,13 +370,13 @@ void Procedural::setupUniforms() { case 1: { float v = valueArray[0].toDouble(); - _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); + _uniforms.push_back([slot, v](gpu::Batch& batch) { batch._glUniform1f(slot, v); }); break; } case 2: { glm::vec2 v{ valueArray[0].toDouble(), valueArray[1].toDouble() }; - _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform2f(slot, v.x, v.y); }); + _uniforms.push_back([slot, v](gpu::Batch& batch) { batch._glUniform2f(slot, v.x, v.y); }); break; } @@ -366,7 +386,7 @@ void Procedural::setupUniforms() { valueArray[1].toDouble(), valueArray[2].toDouble(), }; - _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform3f(slot, v.x, v.y, v.z); }); + _uniforms.push_back([slot, v](gpu::Batch& batch) { batch._glUniform3f(slot, v.x, v.y, v.z); }); break; } @@ -378,7 +398,7 @@ void Procedural::setupUniforms() { valueArray[2].toDouble(), valueArray[3].toDouble(), }; - _uniforms.push_back([=](gpu::Batch& batch) { batch._glUniform4f(slot, v.x, v.y, v.z, v.w); }); + _uniforms.push_back([slot, v](gpu::Batch& batch) { batch._glUniform4f(slot, v.x, v.y, v.z, v.w); }); break; } } @@ -386,7 +406,7 @@ void Procedural::setupUniforms() { slot++; } - _uniforms.push_back([=](gpu::Batch& batch) { + _uniforms.push_back([this](gpu::Batch& batch) { _standardInputs.position = vec4(_entityPosition, 1.0f); // Minimize floating point error by doing an integer division to milliseconds, before the floating point division to seconds auto now = usecTimestampNow(); @@ -422,7 +442,7 @@ void Procedural::setupUniforms() { } _standardInputsBuffer->setSubData(0, _standardInputs); - batch.setUniformBuffer(0, _standardInputsBuffer, 0, sizeof(StandardInputs)); + batch.setUniformBuffer(procedural::slot::buffer::Inputs, _standardInputsBuffer, 0, sizeof(StandardInputs)); }); } @@ -432,3 +452,13 @@ glm::vec4 Procedural::getColor(const glm::vec4& entityColor) const { } return entityColor; } + +void graphics::ProceduralMaterial::initializeProcedural() { + _procedural._vertexSource = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural); + _procedural._vertexSourceSkinned = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural_deformed); + _procedural._vertexSourceSkinnedDQ = gpu::Shader::getVertexShaderSource(shader::render_utils::vertex::simple_procedural_deformeddq); + + // FIXME: Setup proper uniform slots and use correct pipelines for forward rendering + _procedural._opaqueFragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple_procedural); + _procedural._transparentFragmentSource = gpu::Shader::getFragmentShaderSource(shader::render_utils::fragment::simple_procedural_translucent); +} \ No newline at end of file diff --git a/libraries/procedural/src/procedural/Procedural.h b/libraries/procedural/src/procedural/Procedural.h index 956cef368f..aac353bf7c 100644 --- a/libraries/procedural/src/procedural/Procedural.h +++ b/libraries/procedural/src/procedural/Procedural.h @@ -21,11 +21,26 @@ #include #include #include +#include "ProceduralMaterialCache.h" using UniformLambdas = std::list>; const size_t MAX_PROCEDURAL_TEXTURE_CHANNELS{ 4 }; +/**jsdoc + * An object containing user-defined uniforms for communicating data to shaders. + * @typedef {object} ProceduralUniforms + */ + +/**jsdoc + * The data used to define a Procedural shader material. + * @typedef {object} ProceduralData + * @property {number} version=1 - The version of the procedural shader. + * @property {string} fragmentShaderURL - A link to a fragment shader. Currently, only GLSL shaders are supported. The shader must implement a different method depending on the version. + * shaderUrl is an alias. + * @property {string[]} channels=[] - An array of input texture URLs. Currently, up to 4 are supported. + * @property {ProceduralUniforms} uniforms={} - A {@link ProceduralUniforms} object containing all the custom uniforms to be passed to the shader. + */ struct ProceduralData { static QJsonValue getProceduralData(const QString& proceduralJson); @@ -34,7 +49,7 @@ struct ProceduralData { // Rendering object descriptions, from userData uint8_t version { 0 }; - QUrl shaderUrl; + QUrl fragmentShaderUrl; QJsonObject uniforms; QJsonArray channels; }; @@ -43,19 +58,23 @@ class ProceduralProgramKey { public: enum FlagBit { IS_TRANSPARENT = 0, + IS_SKINNED, + IS_SKINNED_DQ, + NUM_FLAGS }; - typedef std::bitset Flags; Flags _flags; bool isTransparent() const { return _flags[IS_TRANSPARENT]; } + bool isSkinned() const { return _flags[IS_SKINNED]; } + bool isSkinnedDQ() const { return _flags[IS_SKINNED_DQ]; } - ProceduralProgramKey(bool transparent = false) { - if (transparent) { - _flags.set(IS_TRANSPARENT); - } + ProceduralProgramKey(bool transparent = false, bool isSkinned = false, bool isSkinnedDQ = false) { + _flags.set(IS_TRANSPARENT, transparent); + _flags.set(IS_SKINNED, isSkinned); + _flags.set(IS_SKINNED_DQ, isSkinnedDQ); } }; namespace std { @@ -92,12 +111,16 @@ public: void setDoesFade(bool doesFade) { _doesFade = doesFade; } gpu::Shader::Source _vertexSource; + gpu::Shader::Source _vertexSourceSkinned; + gpu::Shader::Source _vertexSourceSkinnedDQ; gpu::Shader::Source _opaqueFragmentSource; gpu::Shader::Source _transparentFragmentSource; gpu::StatePointer _opaqueState { std::make_shared() }; gpu::StatePointer _transparentState { std::make_shared() }; + static std::function opaqueStencil; + static std::function transparentStencil; protected: // DO NOT TOUCH @@ -134,10 +157,10 @@ protected: int32_t _frameCount { 0 }; // Rendering object descriptions, from userData - QString _shaderSource; - QString _shaderPath; - uint64_t _shaderModified { 0 }; - NetworkShaderPointer _networkShader; + QString _fragmentShaderSource; + QString _fragmentShaderPath; + uint64_t _fragmentShaderModified { 0 }; + NetworkShaderPointer _networkFragmentShader; bool _shaderDirty { true }; bool _uniformsDirty { true }; @@ -147,8 +170,6 @@ protected: std::unordered_map _proceduralPipelines; - gpu::ShaderPointer _vertexShader; - StandardInputs _standardInputs; gpu::BufferPointer _standardInputsBuffer; @@ -165,5 +186,41 @@ private: mutable bool _hasStartedFade { false }; mutable bool _isFading { false }; bool _doesFade { true }; + ProceduralProgramKey _prevKey; mutable std::mutex _mutex; }; + +namespace graphics { + +class ProceduralMaterial : public NetworkMaterial { +public: + ProceduralMaterial() : NetworkMaterial() { initializeProcedural(); } + ProceduralMaterial(const NetworkMaterial& material) : NetworkMaterial(material) { initializeProcedural(); } + + bool isProcedural() const override { return true; } + bool isEnabled() const override { return _procedural.isEnabled(); } + bool isReady() const override { return _procedural.isReady(); } + QString getProceduralString() const override { return _proceduralString; } + + void setProceduralData(const QString& data) { + _proceduralString = data; + _procedural.setProceduralData(ProceduralData::parse(data)); + } + glm::vec4 getColor(const glm::vec4& color) const { return _procedural.getColor(color); } + bool isFading() const { return _procedural.isFading(); } + void setIsFading(bool isFading) { _procedural.setIsFading(isFading); } + uint64_t getFadeStartTime() const { return _procedural.getFadeStartTime(); } + void prepare(gpu::Batch& batch, const glm::vec3& position, const glm::vec3& size, const glm::quat& orientation, + const uint64_t& created, const ProceduralProgramKey key = ProceduralProgramKey()) { + _procedural.prepare(batch, position, size, orientation, created, key); + } + + void initializeProcedural(); + +private: + QString _proceduralString; + Procedural _procedural; +}; +typedef std::shared_ptr ProceduralMaterialPointer; + +} \ No newline at end of file diff --git a/libraries/procedural/src/procedural/ProceduralCommon.slh b/libraries/procedural/src/procedural/ProceduralCommon.slh index 6e73534440..2915f096e6 100644 --- a/libraries/procedural/src/procedural/ProceduralCommon.slh +++ b/libraries/procedural/src/procedural/ProceduralCommon.slh @@ -24,7 +24,7 @@ LAYOUT(binding=PROCEDURAL_TEXTURE_CHANNEL3) uniform sampler2D iChannel3; // comptability with existing procedural shaders that previously relied on these // inputs as uniforms, not members of a UBO -LAYOUT_STD140(binding=0) uniform standardInputsBuffer { +LAYOUT_STD140(binding=PROCEDURAL_BUFFER_INPUTS) uniform standardInputsBuffer { // Offset 0 vec4 date; // Offset 16, acts as vec4 for alignment purposes diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp index 5e8c6f4865..432e02fe10 100644 --- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp +++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp @@ -19,10 +19,12 @@ ProceduralSkybox::ProceduralSkybox(uint64_t created) : graphics::Skybox(), _created(created) { // FIXME: support forward rendering for procedural skyboxes (needs haze calculation) - _procedural._vertexSource = gpu::Shader::createVertex(shader::graphics::vertex::skybox)->getSource(); + _procedural._vertexSource = shader::Source::get(shader::graphics::vertex::skybox); _procedural._opaqueFragmentSource = shader::Source::get(shader::procedural::fragment::proceduralSkybox); - // Adjust the pipeline state for background using the stencil test + _procedural.setDoesFade(false); + + // Adjust the pipeline state for background using the stencil test // Must match PrepareStencil::STENCIL_BACKGROUND const int8_t STENCIL_BACKGROUND = 0; _procedural._opaqueState->setStencilTest(true, 0xFF, gpu::State::StencilTest(STENCIL_BACKGROUND, 0xFF, gpu::EQUAL, diff --git a/libraries/procedural/src/procedural/ShaderConstants.h b/libraries/procedural/src/procedural/ShaderConstants.h index cd0d997050..f1336b6479 100644 --- a/libraries/procedural/src/procedural/ShaderConstants.h +++ b/libraries/procedural/src/procedural/ShaderConstants.h @@ -14,17 +14,24 @@ #ifndef PROCEDURAL_SHADER_CONSTANTS_H #define PROCEDURAL_SHADER_CONSTANTS_H +#define PROCEDURAL_BUFFER_INPUTS 7 + #define PROCEDURAL_UNIFORM_CUSTOM 220 -#define PROCEDURAL_TEXTURE_CHANNEL0 0 -#define PROCEDURAL_TEXTURE_CHANNEL1 1 -#define PROCEDURAL_TEXTURE_CHANNEL2 2 -#define PROCEDURAL_TEXTURE_CHANNEL3 3 +#define PROCEDURAL_TEXTURE_CHANNEL0 2 +#define PROCEDURAL_TEXTURE_CHANNEL1 3 +#define PROCEDURAL_TEXTURE_CHANNEL2 4 +#define PROCEDURAL_TEXTURE_CHANNEL3 5 // & clusterMatrices, const std::vector& cauterizedClusterMatrices) { diff --git a/libraries/render-utils/src/CauterizedMeshPartPayload.h b/libraries/render-utils/src/CauterizedMeshPartPayload.h index 9a6cea8b9f..f1fe5faa35 100644 --- a/libraries/render-utils/src/CauterizedMeshPartPayload.h +++ b/libraries/render-utils/src/CauterizedMeshPartPayload.h @@ -13,7 +13,7 @@ class CauterizedMeshPartPayload : public ModelMeshPartPayload { public: - CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + CauterizedMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform, const uint64_t& created); // matrix palette skinning void updateClusterBuffer(const std::vector& clusterMatrices, diff --git a/libraries/render-utils/src/CauterizedModel.cpp b/libraries/render-utils/src/CauterizedModel.cpp index 9cdefa0545..7f42b05fa4 100644 --- a/libraries/render-utils/src/CauterizedModel.cpp +++ b/libraries/render-utils/src/CauterizedModel.cpp @@ -85,7 +85,7 @@ void CauterizedModel::createRenderItemSet() { // Create the render payloads int numParts = (int)mesh->getNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); + auto ptr = std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset, _created); _modelMeshRenderItems << std::static_pointer_cast(ptr); auto material = getGeometry()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 1a6e5dbadc..9525d9c105 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -11,15 +11,23 @@ #include "MeshPartPayload.h" +#include + #include #include #include #include "render-utils/ShaderConstants.h" +#include #include "DeferredLightingEffect.h" #include "RenderPipelines.h" +static const QString ENABLE_MESH_SHADERS_STRING { "HIFI_ENABLE_MESH_SHADERS" }; +static bool ENABLE_MESH_SHADERS = QProcessEnvironment::systemEnvironment().contains(ENABLE_MESH_SHADERS_STRING); + +bool MeshPartPayload::enableMeshShaders = false; + using namespace render; namespace render { @@ -49,7 +57,9 @@ template <> void payloadRender(const MeshPartPayload::Pointer& payload, RenderAr } } -MeshPartPayload::MeshPartPayload(const std::shared_ptr& mesh, int partIndex, graphics::MaterialPointer material) { +MeshPartPayload::MeshPartPayload(const std::shared_ptr& mesh, int partIndex, graphics::MaterialPointer material, const uint64_t& created) : + _created(created) +{ updateMeshPart(mesh, partIndex); addMaterial(graphics::MaterialLayer(material, 0)); } @@ -104,20 +114,30 @@ Item::Bound MeshPartPayload::getBound() const { } ShapeKey MeshPartPayload::getShapeKey() const { - graphics::MaterialKey drawMaterialKey = _drawMaterials.getMaterialKey(); - ShapeKey::Builder builder; - builder.withMaterial(); + graphics::MaterialPointer material = _drawMaterials.empty() ? nullptr : _drawMaterials.top().material; + graphics::MaterialKey drawMaterialKey = _drawMaterials.getMaterialKey(); if (drawMaterialKey.isTranslucent()) { builder.withTranslucent(); } - if (drawMaterialKey.isNormalMap()) { - builder.withTangents(); - } - if (drawMaterialKey.isLightMap()) { - builder.withLightMap(); + + if (material && material->isProcedural() && material->isReady()) { + builder.withOwnPipeline(); + } else { + builder.withMaterial(); + + if (drawMaterialKey.isNormalMap()) { + builder.withTangents(); + } + if (drawMaterialKey.isLightMap()) { + builder.withLightMap(); + } + if (drawMaterialKey.isUnlit()) { + builder.withUnlit(); + } } + return builder.build(); } @@ -153,9 +173,20 @@ void MeshPartPayload::render(RenderArgs* args) { //Bind the index buffer and vertex buffer and Blend shapes if needed bindMesh(batch); - // apply material properties - if (RenderPipelines::bindMaterials(_drawMaterials, batch, args->_renderMode, args->_enableTexturing)) { - args->_details._materialSwitches++; + if (!_drawMaterials.empty() && _drawMaterials.top().material && _drawMaterials.top().material->isProcedural() && + _drawMaterials.top().material->isReady()) { + auto procedural = std::static_pointer_cast(_drawMaterials.top().material); + auto& schema = _drawMaterials.getSchemaBuffer().get(); + glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); + outColor = procedural->getColor(outColor); + procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, + ProceduralProgramKey(outColor.a < 1.0f)); + batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); + } else { + // apply material properties + if (RenderPipelines::bindMaterials(_drawMaterials, batch, args->_renderMode, args->_enableTexturing)) { + args->_details._materialSwitches++; + } } // Draw! @@ -196,7 +227,8 @@ template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, Ren } -ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform) : +ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, + const Transform& transform, const Transform& offsetTransform, const uint64_t& created) : _meshIndex(meshIndex), _shapeID(shapeIndex) { @@ -248,6 +280,7 @@ ModelMeshPartPayload::ModelMeshPartPayload(ModelPointer model, int meshIndex, in } #endif + _created = created; } void ModelMeshPartPayload::initCache(const ModelPointer& model) { @@ -350,43 +383,47 @@ void ModelMeshPartPayload::setShapeKey(bool invalidateShapeKey, PrimitiveMode pr RenderPipelines::updateMultiMaterial(_drawMaterials); } + ShapeKey::Builder builder; + graphics::MaterialPointer material = _drawMaterials.empty() ? nullptr : _drawMaterials.top().material; graphics::MaterialKey drawMaterialKey = _drawMaterials.getMaterialKey(); - bool isTranslucent = drawMaterialKey.isTranslucent(); - bool hasTangents = drawMaterialKey.isNormalMap() && _hasTangents; - bool hasLightmap = drawMaterialKey.isLightMap(); - bool isUnlit = drawMaterialKey.isUnlit(); - - bool isDeformed = _isBlendShaped || _isSkinned; bool isWireframe = primitiveMode == PrimitiveMode::LINES; if (isWireframe) { - isTranslucent = hasTangents = hasLightmap = false; - } - - ShapeKey::Builder builder; - builder.withMaterial(); - - if (isTranslucent) { + builder.withWireframe(); + } else if (drawMaterialKey.isTranslucent()) { builder.withTranslucent(); } - if (hasTangents) { - builder.withTangents(); - } - if (hasLightmap) { - builder.withLightMap(); - } - if (isUnlit) { - builder.withUnlit(); - } - if (isDeformed) { + + if (_isSkinned || (_isBlendShaped && _meshBlendshapeBuffer)) { builder.withDeformed(); + if (useDualQuaternionSkinning) { + builder.withDualQuatSkinned(); + } } - if (isWireframe) { - builder.withWireframe(); - } - if (isDeformed && useDualQuaternionSkinning) { - builder.withDualQuatSkinned(); + + if (material && material->isProcedural() && material->isReady()) { + builder.withOwnPipeline(); + } else { + bool hasTangents = drawMaterialKey.isNormalMap() && _hasTangents; + bool hasLightmap = drawMaterialKey.isLightMap(); + bool isUnlit = drawMaterialKey.isUnlit(); + + if (isWireframe) { + hasTangents = hasLightmap = false; + } + + builder.withMaterial(); + + if (hasTangents) { + builder.withTangents(); + } + if (hasLightmap) { + builder.withLightMap(); + } + if (isUnlit) { + builder.withUnlit(); + } } _shapeKey = builder.build(); @@ -432,9 +469,23 @@ void ModelMeshPartPayload::render(RenderArgs* args) { batch.setDrawcallUniform(drawcallInfo); } - // apply material properties - if (RenderPipelines::bindMaterials(_drawMaterials, batch, args->_renderMode, args->_enableTexturing)) { - args->_details._materialSwitches++; + if (!_drawMaterials.empty() && _drawMaterials.top().material && _drawMaterials.top().material->isProcedural() && + _drawMaterials.top().material->isReady()) { + if (!(enableMeshShaders && ENABLE_MESH_SHADERS)) { + return; + } + auto procedural = std::static_pointer_cast(_drawMaterials.top().material); + auto& schema = _drawMaterials.getSchemaBuffer().get(); + glm::vec4 outColor = glm::vec4(ColorUtils::tosRGBVec3(schema._albedo), schema._opacity); + outColor = procedural->getColor(outColor); + procedural->prepare(batch, _drawTransform.getTranslation(), _drawTransform.getScale(), _drawTransform.getRotation(), _created, + ProceduralProgramKey(outColor.a < 1.0f, _shapeKey.isDeformed(), _shapeKey.isDualQuatSkinned())); + batch._glColor4f(outColor.r, outColor.g, outColor.b, outColor.a); + } else { + // apply material properties + if (RenderPipelines::bindMaterials(_drawMaterials, batch, args->_renderMode, args->_enableTexturing)) { + args->_details._materialSwitches++; + } } // Draw! diff --git a/libraries/render-utils/src/MeshPartPayload.h b/libraries/render-utils/src/MeshPartPayload.h index 641fc81487..18ef513a87 100644 --- a/libraries/render-utils/src/MeshPartPayload.h +++ b/libraries/render-utils/src/MeshPartPayload.h @@ -27,7 +27,7 @@ class Model; class MeshPartPayload { public: MeshPartPayload() = default; - MeshPartPayload(const std::shared_ptr& mesh, int partIndex, graphics::MaterialPointer material); + MeshPartPayload(const std::shared_ptr& mesh, int partIndex, graphics::MaterialPointer material, const uint64_t& created); virtual ~MeshPartPayload() = default; typedef render::Payload Payload; @@ -73,8 +73,11 @@ public: void addMaterial(graphics::MaterialLayer material); void removeMaterial(graphics::MaterialPointer material); + static bool enableMeshShaders; + protected: render::ItemKey _itemKey{ render::ItemKey::Builder::opaqueShape().build() }; + uint64_t _created; }; namespace render { @@ -86,7 +89,7 @@ namespace render { class ModelMeshPartPayload : public MeshPartPayload { public: - ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform); + ModelMeshPartPayload(ModelPointer model, int meshIndex, int partIndex, int shapeIndex, const Transform& transform, const Transform& offsetTransform, const uint64_t& created); typedef render::Payload Payload; typedef Payload::DataPointer Pointer; diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index a7e098e1b7..3a2e450d4b 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -50,7 +50,7 @@ int normalTypeVecTypeId = qRegisterMetaType>("QVectorgetNumParts(); for (int partIndex = 0; partIndex < numParts; partIndex++) { - _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset); + _modelMeshRenderItems << std::make_shared(shared_from_this(), i, partIndex, shapeID, transform, offset, _created); auto material = getGeometry()->getShapeMaterial(shapeID); _modelMeshMaterialNames.push_back(material ? material->getName() : ""); _modelMeshRenderItemShapes.emplace_back(ShapeInfo{ (int)i }); diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index 2ea1f87fae..597fe552f7 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -99,7 +99,7 @@ public: static void setAbstractViewStateInterface(AbstractViewStateInterface* viewState) { _viewState = viewState; } - Model(QObject* parent = nullptr, SpatiallyNestable* spatiallyNestableOverride = nullptr); + Model(QObject* parent = nullptr, SpatiallyNestable* spatiallyNestableOverride = nullptr, uint64_t created = 0); virtual ~Model(); inline ModelPointer getThisPointer() const { @@ -506,6 +506,8 @@ protected: bool shouldInvalidatePayloadShapeKey(int meshIndex); + uint64_t _created; + private: float _loadingPriority { 0.0f }; diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp index 518e43a8ec..2b0d197819 100644 --- a/libraries/render-utils/src/RenderPipelines.cpp +++ b/libraries/render-utils/src/RenderPipelines.cpp @@ -675,6 +675,7 @@ void RenderPipelines::updateMultiMaterial(graphics::MultiMaterial& multiMaterial case graphics::MaterialKey::METALLIC_VAL_BIT: case graphics::MaterialKey::GLOSSY_VAL_BIT: case graphics::MaterialKey::OPACITY_VAL_BIT: + case graphics::MaterialKey::OPACITY_CUTOFF_VAL_BIT: case graphics::MaterialKey::SCATTERING_VAL_BIT: case graphics::Material::TEXCOORDTRANSFORM0: case graphics::Material::TEXCOORDTRANSFORM1: diff --git a/libraries/render-utils/src/render-utils/simple_procedural.slp b/libraries/render-utils/src/render-utils/simple_procedural.slp index 1348d72a8d..219062d50c 100644 --- a/libraries/render-utils/src/render-utils/simple_procedural.slp +++ b/libraries/render-utils/src/render-utils/simple_procedural.slp @@ -1 +1 @@ -DEFINES translucent:f \ No newline at end of file +DEFINES translucent:f deformed:v/deformeddq:v \ No newline at end of file diff --git a/libraries/render-utils/src/simple_procedural.slv b/libraries/render-utils/src/simple_procedural.slv index 181afa50bd..a8d494f72d 100644 --- a/libraries/render-utils/src/simple_procedural.slv +++ b/libraries/render-utils/src/simple_procedural.slv @@ -17,6 +17,16 @@ <@include render-utils/ShaderConstants.h@> +<@if HIFI_USE_DEFORMED or HIFI_USE_DEFORMEDDQ@> + <@include MeshDeformer.slh@> + <@if HIFI_USE_DEFORMED@> + <$declareMeshDeformer(1, _SCRIBE_NULL, 1, _SCRIBE_NULL, 1)$> + <@else@> + <$declareMeshDeformer(1, _SCRIBE_NULL, 1, 1, 1)$> + <@endif@> + <$declareMeshDeformerActivation(1, 1)$> +<@endif@> + layout(location=RENDER_UTILS_ATTR_POSITION_MS) out vec4 _positionMS; layout(location=RENDER_UTILS_ATTR_POSITION_ES) out vec4 _positionES; layout(location=RENDER_UTILS_ATTR_NORMAL_MS) out vec3 _normalMS; @@ -25,13 +35,23 @@ layout(location=RENDER_UTILS_ATTR_COLOR) out vec4 _color; layout(location=RENDER_UTILS_ATTR_TEXCOORD01) out vec4 _texCoord01; void main(void) { - _color = color_sRGBAToLinear(inColor); - _texCoord01 = vec4(inTexCoord0.st, 0.0, 0.0); - _positionMS = inPosition; - _normalMS = inNormal.xyz; + vec4 positionMS = inPosition; + vec3 normalMS = inNormal.xyz; + +<@if HIFI_USE_DEFORMED or HIFI_USE_DEFORMEDDQ@> + evalMeshDeformer(inPosition, positionMS, inNormal.xyz, normalMS, + meshDeformer_doSkinning(_drawCallInfo.y), inSkinClusterIndex, inSkinClusterWeight, + meshDeformer_doBlendshape(_drawCallInfo.y), gl_VertexID); +<@endif@> + + _positionMS = positionMS; + _normalMS = normalMS; TransformCamera cam = getTransformCamera(); TransformObject obj = getTransformObject(); - <$transformModelToEyeAndClipPos(cam, obj, inPosition, _positionES, gl_Position)$> - <$transformModelToWorldDir(cam, obj, inNormal.xyz, _normalWS)$> + <$transformModelToEyeAndClipPos(cam, obj, positionMS, _positionES, gl_Position)$> + <$transformModelToWorldDir(cam, obj, normalMS, _normalWS)$> + + _color = color_sRGBAToLinear(inColor); + _texCoord01 = vec4(inTexCoord0.st, 0.0, 0.0); } \ No newline at end of file diff --git a/libraries/script-engine/CMakeLists.txt b/libraries/script-engine/CMakeLists.txt index 82c408f386..0fefff1c4c 100644 --- a/libraries/script-engine/CMakeLists.txt +++ b/libraries/script-engine/CMakeLists.txt @@ -17,6 +17,12 @@ if (NOT ANDROID) endif () -link_hifi_libraries(shared networking octree shaders gpu procedural graphics material-networking model-networking ktx recording avatars fbx hfm entities controllers animation audio physics image midi) -# ui includes gl, but link_hifi_libraries does not use transitive includes, so gl must be explicit +link_hifi_libraries(shared networking shaders material-networking model-networking recording avatars fbx entities controllers animation audio midi) include_hifi_library_headers(gl) +include_hifi_library_headers(hfm) +include_hifi_library_headers(gpu) +include_hifi_library_headers(ktx) +include_hifi_library_headers(image) +include_hifi_library_headers(graphics) +include_hifi_library_headers(octree) +include_hifi_library_headers(procedural) \ No newline at end of file diff --git a/libraries/script-engine/src/Quat.cpp b/libraries/script-engine/src/Quat.cpp index afff0a6b03..8335cb9adf 100644 --- a/libraries/script-engine/src/Quat.cpp +++ b/libraries/script-engine/src/Quat.cpp @@ -16,8 +16,6 @@ #include -#include - #include "ScriptEngineLogging.h" #include "ScriptEngine.h" diff --git a/libraries/script-engine/src/SceneScriptingInterface.cpp b/libraries/script-engine/src/SceneScriptingInterface.cpp index 7b36b815fb..90159f8ee6 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.cpp +++ b/libraries/script-engine/src/SceneScriptingInterface.cpp @@ -11,129 +11,6 @@ #include "SceneScriptingInterface.h" -#include - -float SceneScripting::Location::getLongitude() const { - return _skyStage->getOriginLongitude(); -} - -float SceneScripting::Location::getLatitude() const { - return _skyStage->getOriginLatitude(); -} - -float SceneScripting::Location::getAltitude() const { - return _skyStage->getOriginSurfaceAltitude(); -} - -void SceneScripting::Location::setLongitude(float longitude) { - _skyStage->setOriginLongitude(longitude); -} - -void SceneScripting::Location::setLatitude(float latitude) { - _skyStage->setOriginLatitude(latitude); -} - -void SceneScripting::Location::setAltitude(float altitude) { - _skyStage->setOriginSurfaceAltitude(altitude); -} - -void SceneScripting::Time::setHour(float hour) { - _skyStage->setDayTime(hour); -} - -float SceneScripting::Time::getHour() const { - return _skyStage->getDayTime(); -} - -void SceneScripting::Time::setDay(int day) { - _skyStage->setYearTime(day); -} - -int SceneScripting::Time::getDay() const { - return _skyStage->getYearTime(); -} - -glm::vec3 SceneScripting::KeyLight::getColor() const { - return _skyStage->getSunColor(); -} - -void SceneScripting::KeyLight::setColor(const glm::vec3& color) { - _skyStage->setSunColor(color); -} - -float SceneScripting::KeyLight::getIntensity() const { - return _skyStage->getSunIntensity(); -} - -void SceneScripting::KeyLight::setIntensity(float intensity) { - _skyStage->setSunIntensity(intensity); -} - -float SceneScripting::KeyLight::getAmbientIntensity() const { - return _skyStage->getSunAmbientIntensity(); -} - -void SceneScripting::KeyLight::setAmbientIntensity(float intensity) { - _skyStage->setSunAmbientIntensity(intensity); -} - -void SceneScripting::KeyLight::setAmbientSphere(const gpu::SHPointer& sphere) { - _skyStage->setSunAmbientSphere(sphere); -} - -void SceneScripting::KeyLight::setAmbientMap(const gpu::TexturePointer& map) { - _skyStage->setSunAmbientMap(map); -} - - -glm::vec3 SceneScripting::KeyLight::getDirection() const { - return _skyStage->getSunDirection(); -} - -void SceneScripting::KeyLight::setDirection(const glm::vec3& direction) { - _skyStage->setSunDirection(direction); -} - -void SceneScripting::Stage::setOrientation(const glm::quat& orientation) const { - _skyStage->setOriginOrientation(orientation); -} - -void SceneScripting::Stage::setLocation(float longitude, float latitude, float altitude) { - _skyStage->setOriginLocation(longitude, latitude, altitude); -} - -void SceneScripting::Stage::setSunModelEnable(bool isEnabled) { - _skyStage->setSunModelEnable(isEnabled); -} - -bool SceneScripting::Stage::isSunModelEnabled() const { - return _skyStage->isSunModelEnabled(); -} - -void SceneScripting::Stage::setBackgroundMode(const QString& mode) { - if (mode == QString("inherit")) { - _skyStage->setBackgroundMode(graphics::SunSkyStage::NO_BACKGROUND); - } else if (mode == QString("skybox")) { - _skyStage->setBackgroundMode(graphics::SunSkyStage::SKY_BOX); - } -} - -QString SceneScripting::Stage::getBackgroundMode() const { - switch (_skyStage->getBackgroundMode()) { - case graphics::SunSkyStage::NO_BACKGROUND: - return QString("inherit"); - case graphics::SunSkyStage::SKY_BOX: - return QString("skybox"); - default: - return QString("inherit"); - }; -} - -SceneScriptingInterface::SceneScriptingInterface() : _stage{ new SceneScripting::Stage{ _skyStage } } { - // Let's make sure the sunSkyStage is using a proceduralSkybox - _skyStage->setSkybox(graphics::SkyboxPointer(new ProceduralSkybox())); -} - void SceneScriptingInterface::setShouldRenderAvatars(bool shouldRenderAvatars) { if (shouldRenderAvatars != _shouldRenderAvatars) { _shouldRenderAvatars = shouldRenderAvatars; @@ -146,8 +23,4 @@ void SceneScriptingInterface::setShouldRenderEntities(bool shouldRenderEntities) _shouldRenderEntities = shouldRenderEntities; emit shouldRenderEntitiesChanged(_shouldRenderEntities); } -} - -graphics::SunSkyStagePointer SceneScriptingInterface::getSkyStage() const { - return _skyStage; -} +} \ No newline at end of file diff --git a/libraries/script-engine/src/SceneScriptingInterface.h b/libraries/script-engine/src/SceneScriptingInterface.h index fa67666676..ce205bdf3c 100644 --- a/libraries/script-engine/src/SceneScriptingInterface.h +++ b/libraries/script-engine/src/SceneScriptingInterface.h @@ -12,183 +12,8 @@ #ifndef hifi_SceneScriptingInterface_h #define hifi_SceneScriptingInterface_h -#include // QObject -#include // Dependency - -#include "graphics/Stage.h" - -// TODO: if QT moc ever supports nested classes, subclass these to the interface instead of namespacing -namespace SceneScripting { - - /**jsdoc - * Stage location. - * @typedef {object} Stage.Location - * @property {number} longitude - Longitude. - * @property {number} latitude - Latitude. - * @property {number} altitude - Altitude. - */ - class Location : public QObject { - Q_OBJECT - - public: - Location(graphics::SunSkyStagePointer skyStage) : _skyStage{ skyStage } {} - - Q_PROPERTY(float longitude READ getLongitude WRITE setLongitude) - Q_PROPERTY(float latitude READ getLatitude WRITE setLatitude) - Q_PROPERTY(float altitude READ getAltitude WRITE setAltitude) - - float getLongitude() const; - float getLatitude() const; - float getAltitude() const; - void setLongitude(float longitude); - void setLatitude(float latitude); - void setAltitude(float altitude); - - protected: - graphics::SunSkyStagePointer _skyStage; - }; - using LocationPointer = std::unique_ptr; - - /**jsdoc - * Stage time. - * @typedef {object} Stage.Time - * @property {number} hour - Hour. - * @property {number} day - Day. - */ - class Time : public QObject { - Q_OBJECT - - public: - Time(graphics::SunSkyStagePointer skyStage) : _skyStage{ skyStage } {} - - Q_PROPERTY(float hour READ getHour WRITE setHour) - Q_PROPERTY(int day READ getDay WRITE setDay) - - float getHour() const; - void setHour(float hour); - int getDay() const; - void setDay(int day); - - protected: - graphics::SunSkyStagePointer _skyStage; - }; - using TimePointer = std::unique_ptr
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�yD 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%0D_33AVwHd5LWYq~=etOdduw*v2L2 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

T0DZI=VKrjhf#DhMV~cXe41A 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

=&%;{zsNw2mcRQ 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

QY?lANyodMXzO`hK^0gg$a7z7T2s&3?gj(eT)R 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 dmy*u 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 T$Nhj`hh;`|Lm4S|iPQfFGy#+e delta 392623 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

Ol(#1vDe(?_6#*Cb+}64( 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%0AyQgAIv%e`Ij#T8KZ^(QGuyog(Q%JeBD6A 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

*kY2}izb8peia@gc4-4i8}}wsLMRx( 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 diff --git a/interface/resources/avatar/animations/sitting_idle05.fbx b/interface/resources/avatar/animations/sitting_idle05.fbx index 1b89d26f15885d6320e4a4d1922c22be474f28ba..bef1e3f73b5c44afd8dab02017f8ffde4f043d12 100644 GIT binary patch literal 422656 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 z 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 o#^7c>{C3os=1jw`f%jaG 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 Ku~|!+mib=<7&jsS delta 198329 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

&P@eXRjQ2K{9zqx^3 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 diff --git a/interface/resources/avatar/animations/sitting_idle_once_lookfidget.fbx b/interface/resources/avatar/animations/sitting_idle_once_lookfidget.fbx index b3ab378c2626e04389f3ca6df10e2d95004795d4..ce0f4861cc9f5330899cc24381b97c4af7f6dd65 100644 GIT binary patch delta 210314 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 @`Iag(agnvZHdabZ(rez6369q` zRWAK_pE}-{E|O`6^X@k5H+7>acXvIzOZ|9gJmV9cLXRk$nyn2aFTTr?-rn?M(cXz530xNHgtpRZa6|aQ_>bTA?Nz+Ri&MmeqFe_N>r%{zPpW%=s?eRgk)d)X zzjNkf2Zt)^;=;ZbZgQ>(Hk@Q#ULdcWc(!%N^JnvlZQ$dx90ojRC>vB6U@s_5S*7o4NYc z{E?oe(QoRW$up-a_c&3aT3#jSb-Jr=&oJD&) zujTEvsqF3+`ok|QG21*ka%b};&WFvKzj0>UF_=nfw@&i?_`AEIp4F0LXrIq&n%lP? zQ3PbV(WcIwFvKGD02w|7yfac29@CYkl*>Z!#` z_B)Bb%mm##JZUM>S(Hyan(uoDRIF-xYBs&lVSuD>N+XSp|=kfFk!xQU9fHmx$xoRnFEz!jlieIDz#IyJm; zq72&fV~ab?oWIjJ!&K6#%0{`VTX!nsQX*GRg_uUI{?y|vVBXs5zqQrpPmQ;+40B2^ z2-sP@@x5?m)o)mjX^wWRd!cT_=CL{7sIdVB%l$2GT!)3-tz{){)q^YtV#C`%H`Qj1 z`W4ovajz$C`TI>e+)@~0)7l8lu5!#bxF?VHyb&kO8t>x03f}lBu z3WMm@O+PZXprRU~pJHuJ!(Tls+-N#Ao0u2yg3mY9j8l1Tg#>PQEe2$a_UHNADN4+G zxIc;c6N#I?Tu(g5Y<9mI%iIyTusqeB;n4MDr3*t0&dU3A95Y_$$ctLF*^$-DRcX}wZf}|G$?srZ>!VV2U z6L&2fp)C-9ei%2%O(CBoV;r;MGt@99!}4xT`?%UMAE6GHa*CXD->u&=GRAD&tD@#C2xN z&dF*QbEEnjd&NS{ho{1}@0F##&KA0|C6wITaX-zA{ML8vhFmjS>yMg-(lb5hq|+>- z2jsJa(u$IHy~l37y*7}m;Ud%ibggfBwGO{+-DbbBDWc@5tc2J)MYYK z%%PsQdyTH2rWuam`sU~XH`%drH-vtBV6SpBTlz@0)WbEGZ}*1>1!dKkhm1B$-#u(} z@@5rjrcxX|o{b33JfIY6EEjsTC_P`iM^lM&aVqIwwB%x+y&9_FBe`ZPC}&5bMqnMb zm5KQ&;pC@`PVK$?KJs<3+3i5HJC%8EMdcB@7oDiOT}v#)d-b^7bq%UtRW@ptzvv%T zX&ezZOmaz{d~nGy-v6BRd#&i25kpQf?d8K1Y%G3S(z(2i=MLA~Uf00q3pe@dE}Jzo z;;55DGplzi#T#q|^}wBqn+xPSTLNgZ&F4b1 z??yizTFg$N|}u?~ER)HaU$W`{+r7 zH+K=+r4Q-7(igktW#JeiSuf-&&EruWBmcSe>FTdxv9AX9YW7JDR-M7G@0TYz`8`8{HMn%bAJ?s) z1M=Q$daG<$(bTWnd5veMCokPKKg3wl(o>9Mv7z4FeAYyllx2D|EQD*^sb$RkZNrJ0 zXGQHhWV$(8S?_;(CaV7KJ{|g59amLgN;{LSFu_IhWzlCS+iX<0u{U3M^!rzyK~)Wg z#c#Tnaw)ev-=waFDWyNL@=9dns?JQU%6v3r$obOX2iM~uP37uLp6|LY>Yd8()ot>p z%1@s|uXlA$HGDQ4>t*Z{3sv}xFURPNG5gmHp4fChl`62Vv%!s?Vu^PU|7tJdy_c4? zu1)~waS_K*<*YkbN>oTSUjr9{XF;=<{Y7Wo4>%l36{!m^>y!iz`DJGSp$ z2@4y2%<&1j{$21=#h{t?Krz)35q@R2t`qU`+c|u`@mpzrr|?dS^pDHJR4f+UBg7-a z+PoHxGv_oXcQ@u%{%lL*0@X%SJ7;%xw>QE%){_{i?$mYtdS>CAFT1yh+uM_Lnis<1 zy0Ydd=+H;slP{cmpMG?R=Pk{x)R1p;f=zpg*xxgVxl&hTwIsnsPg-Jqv8Ccp$U$zi zOtt5(O*6X_k)jVJ?K&7XZrA%(ptl_q%wJUs_1YAMva85{DYCfNx;ZD0PiLM&x7~~6 z%67Zm7tl~E;bKyMKfh=x*MBU6#>&6Y8Yj)uSZ8g*)n8Eg@vKde+PmG^kIqWcyY}DZ z`se6E1Jw^t4kWVFaeoP&*z_2!5Bj*->O_+}+Gx3}4Uh7Uten}16AHQiH<#|m7 z<#a0dd5PP~HZz2Bt;vbV1oy(mj-e+utE2Y|oBx!JsiN<;G${ejc}Gwuekk{b<-O z6>M|C2A};wpIXRE*Re$16yjhK?@(R6QdWDmSKaf>E5Sbp{q-W8+P5ix&iwK3*Qxu{ zs6D-M)upv!crW|@7PVxSr6DukB>++C(}>zO^zByG%;erAx1x`q6GLX+nH*skbk4TaBr*c?D~Y%9oxt zr1ubce|Ot^$Nd(WS?WU{rY8l)-0PjT@mWXv3hHOYRJKA@^OAqRw{Ye8x*2{Nw_ma1HnSP$#wT+yZx^NJ!&%H3>(!(mdm_c;+`j`T zC4+Wh_t1jF34MzJ6M=dDpEvrhPX;;u-r-s%WZhUw_UiNuvo7(Auu5i=zi$@3Ycj(S z*D2_6$`T#3$dR>!&=t%Dg)hhQxJ9I9`_*Pnws+ywUo&ja>Wq3WyweZ3r*~o=r=~_* zV>iB1c&%Tp!Sq?`9dTwq!WsjO=i+;A1^(M|a@?3I{#}V-Wfhi$b=>LJtEClV<+MvG zk>|YL?ajKK4p7TYSy?I5i*DU{ZmcUJy;s!IQ}`>7>_=r^!+IP}(1g$3zG3z_|7%LG znC_tdvD=HH%G^KbJS?gx66SEh>o~<^Gu)r3(;JDZ_gZ(_GrYZUTp~kvH%;U3pWa>j zaAxD$+;N39s>O1;T$!lWP3m87TpIqA`q6t@mdGTf8%wl`nr+>C##ZI`PP!v9 zX-uF5wKDQsZE^91qDm@%to4)5$Ab^Xk2E#as`|1^o^mzPm$Jke`vDA&i$CuDop z-gNCQKV^QztBIvV7WM&r@qu8 z6EgNbp<^|Vef7{!<&Xz;vGvV$(YRguLa*)f3ctK-Eb^Q-JGyo=j431)#MambTUXXo zGU~$kMaQazVrO?{@HP_EQ?s3aZZnuIa!B7_LX^Z+s{NFPd($*(x^{b)B(J>8(aYb9 z-%+tC8coVz-iV%i-rrd;a>~?Z%Z}GaKQOxSSATJz`*E?LP zA>*1qZaA^fI=Xd-OwCzS&FzzY-dJ5mrl;A|@&4BFwjEae`qBrRTW$FK>e!86Z-ee- zFN@s5$6VP>?;NC0Rr;`Ao#am5gnwa+3*1dCrZS!k>hzbo7^9}IKx^$-zqLiEKGaZh zHtg_N>=T;oh4Gc@u~R&oG2)T9dZqgViz%rkOn@zr<)~&vGTj>^g zW5HQG3k6>vL!Rn)7=~wE$R!tK?yT5sM=T%I?j*>QW!kk{)GV5RQ>S0l#tBEdb@-;c^l;Ve{i?cPd8GOsxmdy2gP`58ZmYVLuJU!+wZ&^A8XMhHi+1$| z+hIG`7U?GOCT2ex{)l|Byjm?dFW<)`S1faDGjUMqO^3SsUi z_4ta*TAeV*#x7mWJVS$<7K8mn%JTO1wdW3&$2-s?4Ll26JXEs+M{dpRJa<_sxxiV_ z)N3t1`29Iw!=h$EM0N$!M3@(k18wK#nH!zzihH5=1s4*Jf4tm(F1mFmSay4>E)kcD z+3|C}7qhcRW;o00Ysg7j`U}dEmj1kMf0zDcoTQ~c+`*Yh7Ys4OiTtFsKP9Ia=|kFu z^j(kj|Gw)9R_Jl&MtM@q{Gy9xlV+fOpLRUUGHh{ui+yHcTK|LN(Vonhh*wSg0}^@{ zqX(0nq>{u-X}U@Rho5B!yIGq`w%k_tydTG0!0PKwtI!-{p9c;x>q2{Cuf z8cSOaNj>a)X|}9;OR%kGRmhNg@A;F`(!|@>Q*Wm{H|4#!C@Y2cZ`i(;d#&|ZmTU1? z%+9l?1ZzvBHfHzilP)a=U#%ZD+;j0O`hA+*@We*pHTfHEZ;|369_0p=T&f%Kf9hts zaqJ2KZ>g_Eitrs9IZ)j8_?Vruc6R0?jdyY-cmis!Qo8=$(ccwyYsb}Q>|4{%G|3C8 zZZ`PZa2vlKKkZC!+57I6;E%H_`E6IZy`-N7U;DH4PV|b3a_QrrT0)M(m3T+@_MUr2 z!%ih%_Z&A%uayNg%jQ-VG~(}BeoU>XvY*kyMVt9wtGwFfAC;skMyN@*|8&IV=Ht0a zyRvl3n+4XlA|@HXjpEtD&NGh-z7rhw{*97nVfoNo9zMF}mBD7CN2PV)!^+*D;+!y@ zU$jq7@AO@a+R0^niGO&rsrll@R1}R7mnAK^Rs!Mqc383K>y#IBDT4X5F6R@bW2JKO znx44d7nr*Z6AuhD9=!Q;#IeC|p zYt{ZVJ2n431b$>r$vhID=|4t!_*YH%#HM0DnfX;UFVwB`ob0qsX%%RSBUQ0yv+K^e z{)(US??gRbOzPV1VdpG*G(oGSH>|{bZ{2;N5ohtmb=bu6rhs}6tHNm1SfFYh$E^nj zrNz{EnjP}c=z~(ncgPn+pAvLV`CQ$;5J_=eGShvg)j4>BN`$*4Lww4lyRPGznv%1Q zP36$1#nr6tm6Z6K5#sk(OVT?z)zS^rzIHn$-wyi2_T_bu`g>MajL)Cz-#-zKvM;@& zYGG}iap>>_8$_wF$qyB<=<*s<%X)EITY zeD;-g?9PL??E|%@vs)i#1>Vq%w11h@Y?PS4@tguz67%LFSJQ<_lG>{y?K7{)Lrm&dD3(fow%) zEf;>3DRSd1#4cdALZwf*2}OjI9D9{@%crNuK<`&vKm}`k~Kr z$=ab}<)zhFei|i-X@{Ey=vDo!E#aVv`QJ#+0PS?)WGGoWb<{a&$-wQX%n5jN&?@gK1GDs%* zID6d0g*(I}|F)!h?&)`*pqkvVTfujPe>nHskI5bUopb$6L1XDv_A>6!twRZK4@}lw zJrH( zyyGtoH&&z34Q+y48$4s~^U>ey!;CU7Z))9BRlc+QhP}J(Tw*la+22+vY$K-j=clUj zgp1-oYr6^SxR<7{I?Mf*ze__iU-bN3Y0A4YS8#FfWfQ-B`dv%jt@oVpp8ZsZ>-?Fqp(BOa`OITET3+t{5(zF%Q&-Dm zUi>uHh;Sld{9xHiFe=-TxIe4Yueh{}oJq#C~C{y#t5oWdJFZ&q$Rwy9J$pOqwh z>2h8{m0`Eu(r3~|(v71AxN)@V z$EozJa}&HKI9tTd9J4cGSDnvS%~5C`5EIFDzj(3ELZ0oSfw_y%tmbts8M{-jrUf>= z4Ca5=FB-l5R{mAQ^i5==pC0~=N%?#K^@7g1Dap>}t(DEHu~eQhAGO)s?Ck7vnc!p# zyVp`XWB9$jt=4bqo@RVgIGpU!At#ZuJu##1GyS|lOCC&~0|tp_rFSnPv^f0`RPW5! z+M0uzb}|kg6+cQ9Lo%m$f3>bg_J>U#?=8WE9?0K5P5nSrBm&2lRvEt;RX`QSld$5{ znetiatNgs~twoW(dK;yI+G;H=X?#Afq{3!FWg*&oxA=g|<0oi|V;s1$&D~@3-qmCa zEh0A;bx#__Of|X=)66FOtnC6!^=CPwWF3l~z^f=3D+&@pRj@uhKQ z|7eH73QgfJ9ko$o|Atl>6-&_42$>wxTF}Zhd(C8@=aNavRRKcZY1tWR< zg`A07E)UANS+<7mRRo^-&Ee5FvHi63L1T!7u3F6I@LGvRwd7=TJx`!wZRWGx1M(G> zbq?r-rVZ~Mb>G&i#vl%-2S#_@qdLP|Mc zJrQImYPMV=vV=y!0mm(Fes_glq>*9eYX&|)i>;<`nqu2ei(9PE#$U-=ym!pQo5jy+ z{NAQyWijXOuqVs>}zCCQ5hxZ5dYje$%^5 z2j@K{yCk|1XjZ7muuN-=O7hA-I)xT)8g5?!LUR%Yq9al;e^TD%{8`ZG23am=#V zOYWNm?c(9;eeK~hJI}xDYKt#uj(W=Tba6YeC2loW;Om0MT)Z`F4hT!E`>%ctHFDv; zzkNfbX=YcEpZ3G-Gj6Imp39aCdzqPvzwVDIG58faSS~D{EM?xr^>T5|Pm-CZ7De=@Xrk)*zBa{q*HTmez>Qz^@ zX`7B*SG&I*^OLna&?s_SwLaUfDr#3_sm6aJP`DHCTOa1(wd2=qnuFyKuI|prWN5Yh z|A@E`cdGyJ@#9JM%HAX)o9ubYND{JTk3{y$JkC2?X2=%V$xc?rvG)ks^Vl5YaBv)) zbAH$N+vj(E|A+VWzOTpiyzf^K{_4Bh4X==-PN`M$KIOQ+VVDvNI+9&#)7ef~w9@g<_+!tSZj;k>Sc=BIX@)MC2 zy!?>BJLA8hjDC+bL&t*f*NGyrwX^nQ;442qu={Y1>{{J4x{c2zEoLpiG8S7#2#l?F z4LW23&Vl@F1)QOmq7qkV1U$;Px5D~S&)GFd%DIAZ!rUuGD|`=u4?zHQ`P~dTe%(#C zfw*?BF-9*r=%)kxN?n61k>;~9CC`8^23h1Q#oNMn^lW+ZWbW0QA%jT$NVD7%l{hKS z9;dvrQ~P-FytFt%=~$8|{IYQ%Ql|Pe$_+q$yrE@-8BFLFa0FtmFHg}(cFA4{hnH`- zzgc2rja75_Zi6*aWP?BQD8QN(Guu*&PC zw6Ig7n?P)JAOGi?p*>YorC)RqiC7f;y@#-dVx zqnmn#t)~AS$HrQfUsOG(CuB{zBjO^5vF~P|)Vw&VXE?O!5 z$3+U&f1^1qWAY~+3lKx_zojTG#E@=|xxea)ny0+9w4vemuG%YC{ZIV*WbgTTA5iDa z_SOuKAD=bUOSGPR{pv)ZIz~b$7h3!$W%{0hzT)D&!YX}!YJFB7kp6w1ndik96-Lz0 z(9X{I(xrLRaL$RWEQOPh6Gi{LwO1pb$Ig_b_orPctAEa)0uW+H?U-V()D>;sPg1;s zPgD)98w1MtNBfw&FN(VBhhnL$^o3+g0=x@)=6RzvF6HCd{03LH?+^RUA9!V=2%=+y z*_=CIwW4EO$M2&r-$r}Js|v*itrR(=*#bkYZ zkzZ&U+*IgW3aGr}mxdUfE`a+6vSPnN4Gqcp6Co3}w&gv$mXxjU)cMb!moG9pc>dHH zp|afQ>nr=928V2?lr%h^D3R~s8QPo@qv5%r(p%)d-uv{kX$dx+!46*YHZX%>{I5_8aA9w3$5sR(`_k7PuYo18Bz7o7dLkJ4?|$?*K9w+FVI zH+$S$!?0@ki2N1pkEnUm}<_+4TrH&x4vQ1=)cr` z6&JB`a49Vxx>R>EXVc6n!E-pd(gzFE1p!H*qXOA%(tKX(*`nX9|FBt<_{JqN3NAmO zD*&;qxY{&QcWF~yWQay`$_wStmIP>hDW%ox@7Q{R^2(4{5D{m!%oFsL3)aZ7v>4OZ zP9HH(`mF}~^aSDe1?Ql?kG7*rlqLU7x%8_Hvv{&ZMDN8D8(KyOg_=yx2v?R*PLu%= zKqcK>lJ4KKTnpTlK`%1%ME(*)Rx&ooSnf_*9sH^(*^MwAd%l&8NaKPP&rV$UKl(P{ zqCDl=KvK}t9UdJ~h>9RF%QPiwN!|{ts>SOiG~B#>`u!G};6VcRzy2j8+LsqtX{&ozEYlzxKUo>r3drue5({ zY5hd=vG|bY6ZExEYE~U@$n-196$fvdu%QaoXT1LR7L1v<_{yI_W>R%e4!~9}BlfOd z9OW}Dy~~3I2m5U4jqeO{)5mu5?s!e!Q7F47YqYuhsShH;hSWQ)Ou8fjj~>VXkD)!C zNJ3iRZS4(SI8Q3M2zk&xXxAaADPs=zgL&$u+-Av}BpLWkLUz$GUHHIH^29Gp0f`6b z-_}!y~kruuN&Vl&MTn9bXe+dr1@g-hH z6%OyeH9Lj>*6aYq^j(h5)3VCfm1es9pkZg`f`{}K(Rz6s{N}>UcBS*@T0iXhci-#P z=|AjWD3wyl+Vq!&D6-7d+a;=R{XG}xF{GP0b6Ffm!?DXiF7^O(ZH4*}QUkxX%D90% zqWRSOrf$+U_gHoXioJmX3J;;-V>ca9Kq|L?CmGSvdJRsALL_Fmk?|6@_AKI9bo#f@ zFOw6qfM*p-U=2A_9#`DeI*Do15({?4m*)0`96Q89H9sb}l;+Zdkr6)*d6K+s4|!ge z-z9vYXnK2FqtAb>%jz3xEhi=dft;+#IqaOT%;u^oc zobT}0%T5%$a@9_3=knWyemy#Hy<{k2Bg{poot1*;t z_4^SSRPoyXswZKhHAr>D|&9l~7;oy9w z5+Hhe9xR-jaV{MqD-X<*j#K$W61{3)w<8NOmI!fNGyauSZhMQyljyas`0=bGuwrz5 zm%`cxlyfNn8=9+!QMGqOxQI%3lAIi=`*LM;Q$+>}ez| z!li3qy%YAj8L`X|FyD!v?%^LUGxx;0h?jYT(L*G%=F4JdIbe0tDRKAfdV2o6wactx zFMLMT6tsEtrq+RRuJv2;u3Pr0_%G|_jJtfUvC+a*^PL+=+|j|{OIRSZEdfBrlk8eHcun;EG8VftkKRpR9x~UVeRnC^8M?@7$&j)HT zf-!$`{Me>!$699@ZT7a}lm@m6A0o!A!G^+$OWp@A~!XH*i z4m6vbc+?I&vz9d-LYiKN(w%-D71>JFr@@OuP6PoRY-<{&x<#-CV+9y9h6VBY;kTEv z(3=r=+jdFm3a^gdP0_0sc9dJ2H_4ghE{xdmdT8AexxBv3>>VKHK#YkS06DxXrr9}Z z?8X=I_@7VcR)?V9MQ|Nk#^P)PV9URLy42H5uSFiSj>=pq$R27cgKY(ligRMGx|P6C zAU?|=su^so&e+6Prv!r^j$uXjWQnAgvq0w#9!Mj zTI=Ar>sS}^ap^hDda)eNt)rJHzSTzC}q@IZxrj)8EP5W8F1OAy>P-TZu|vvG-ip=|)N2r08*W2VK*SD2nsrY5mJ>jduUtRe}G{Pj9vU z^AlL>pP$qX|MOF)**`zo{>yEK|NpcKG~>^C$J0UN!=t8JVm`LrEormv6C^q>`pJIa zuh>HPzF)61{9tNPOev24OVA6JK*er4;j|HSh;vHil71a~ufg#)B;CCDC@BECdO2AY z8wQh3@(vdwZr}dYdLV)5Z-tNtIZphQakJ@X4rUfv8)^hPVu6HePe;$CJU4|$?}UvW zURpf1`?>J&9TWGvDR&LOQ)Hj(`Y}zTbw}oYyXRXNiQnjMmr8o@WGoMZ>CZoQWXAX1 z#+4@}9R?l|9_HL-mxd|DwV%w|<++==uEy{hTsS}ZieI0J`XZvh=Fw~S;nlq9B%7a( zY)m@|DO+1+Y&Ht$czWp9ldN$aAg{%)I=r$^DxUpT*&a_a} zJ$ED!f2$o?Gi5ZtU)lX?3D2<6f1L>aTrm^FG_q@GfAW@j)kRdr?LC8zHg8eeE$i*t zwoPuecNeF9nT@ppo0`HQOj*I&q#V}JufF_vkDLs^aMd9MP)9x_P`lru9+ZDe z5v~*mq+i$lSM<(|Ei5!UmB$HEEuSS2}*IuWeqEv0M6hnB)6ocPT&2*`Y zbqG-|e|4xexKDsolIZ;N0`G!|_1g)`?@!Y{QIk>8XAcQlRaRfGr_(gt18lDs_hV(Y zp4FLz#`DQZpV&Y6#XjCE7Os1& z^&=0IuSG{&tX(D{&G%6EO7oRN6_0&xl9Qj z7DX$$0bhW1@pA3-WLmmZ`={a!{dCjGBYj)?mao+7NniLr_zK?k`o-rjF(%|y#7kj$ zaCOX;UwEA;YCc`~eZh6C>Izq=CY)O}_-Io?Bx3iod zLe}X&WG*(Okf`BeerkgpI9xzMUg;{N_o)@v0o)A>ho82D6wv2lOLfjObQef(+JvkegttStiM z_g_!7_(Jk;dPuQL!U(Jyb9^6V`17Va^tu$UXPyu?v5j}mc99+@){a_kF^;CSr93Tv z!d!VoX8Zm~UCca{+?Sh1=tgzjVT*t8yeiz~uG^P<$^LY~=T007jB7hCw(|>`#DL8E zaJFss`2b;}U-la|q$b^)8a@RNZXJ)|N5&SLln4u(GIR05**6Pxqk=Dm8c#jqodb6T zefS;I1xXxllC^sX1%Az|_wD*mhoIkG{|I8HAUoRM`Nm^J@n#B5q80n6sgPD*kj9_5 z+^J63P4-bKf`jCuU7828DSR7Q$qs-GCc1{N(z*~2?3kR;c3^Lr`}Go7KLfTf!tesw z9zOCh)M5Aj)&oQI^|!yLv~%Ib1s?s;M8(V`G6iGzmY_bS^mGV{|kunR%tu z%KE8MUIGjcVY=^CtAELle}1`oJ3f&4 z{B$b&QJ=4&JnArV_B_ssv>$F#Eh zH+z)+Wi_#XS#9pUq0t<3zZbE3q0sj?G;Cq&YHvRm^w-vIv=b*s1jdjO!U$L+bdsV%<>R(2o2sDW(re{Q7*8;n= zd%H!kVeH-^x^Zys2>>~0ADPKYAY>HV$o@`b&ObZR4y;vSVgpSh@vGG}_Cle-daSnK|ZH&eUhtZRB~4LX|Ty_}nn=?${3 z7L4-8RNuduP8&tqe5rrUy{fCw18_)JHhfHNXXx2>^Ft(?Si+i-T(vpsij_N1W<Ts z6o>wTm(K?;wy36(s(6Y!{i0_oC3a6{RVaK-u7j;wE1#f7v?1J*ilK|p+A5kBu!RcC z^9*jE;>1t0&2n+VmdZ8Sd7_gsXbtQ3&Wjmo_S#ez{AC*?g$3x0y{&vlK+&`l<20rC z)Qa;7d9?3pMC+>oSUW(;%LHxpA+0>vMR%+es<_vu&W*qwnTAkBPuxD~Thx?jSUpyQ z(_zVWr+;&??iwriA9f&hrJrmdI zwd0MMd1B94ht=!8@w5vQTwVrP;nOk``0ki8(oLn@zcJ`x0CQ4ivWc;|64Y*$&1;?Q z$XqiWYpPw;=0viOo8k?;yXnFc&w)WId}S-8$u58Lf3yrAULP74kk!vPIr$+-^cg36 z#;oY;N4soxEpoUpj51OA!FOf@zjHND=+RvAmVVhUa?PZ@01T88jdx!d8O)e^1ma%4 zvQOK9G-$H}Q5V+sB6I%aI-56LlH)YHT#wKM-Yu&h^BfrcDsR|LBGGzwv5KtnZ{oy1 zU%J&fcYCZA2g6qKw>$g%6xIuc!NBk)aK!G00k0T8Za$wm`sDhWu6Q4@z0CpA>*dFgIoTfXBPMX|8e9oWyu{G!=bU z>^-cq&q2MHGN^nu%Cae8Q*j8>Gp=T%M4JAk2jZADa)DIJE6A@))#o1PE6jvK&rGpO zNYteLcPf)FJwDSN(GtI}f-x;pG#C-`k}gVQ_xhj^#9H*`>dEoRPqf551SXj`aCYk< z4{+$kBH5E#$UHuKw{-Bx;NQ5|uHJ=ji)X-7gDn4eTt6jnbzQ!faW38C5-f?>Gh}ov zlOwbaa$s}~KGK#QN?A(^392LY3fVe^GNdLT7ueo>ypWC)>w;K-e?8@1J=yKRyXu+G zGKEGhSPpJuMW_T%ZxPrn-nQ9WGSg}hFliZjvqYHC=|f5cYXlvJUOdUSgCu@fT30dA zxQfVLsYn zw&uHYuyS7z9M=D+1!#X^7N>(d}!8U7dUyxbBtCcQvA%lP*;LWhl9# z=nWNvJ+7j)b)7KU!t|Kan~QDp!^$M-+QJ%sFx&5YIKN%uTQ$s`YTeNjKa?;9!PO&99@;;rWvW8O@+SM;)%@~h#7FB_26);jj_ z>o$h*gqqMMjx{p1;B2>#CTZ4;-CsLm}EGXmq6U%bDe*`QF{4b$-{~rO#?f)a-Bl~{@JaYMu zfLUJu#&F8NgckX~360`QuqXWt`v6bWTbjEs5=@!w20znLhZR5O`n9D>ompJWL?A>( z{X~U}TCcM}Ujd&>&8lC8zjz@SmD?VCdAQ0-@#m4+=K`bdk*;p0(TclwjTHD{Mr@K{ ze~<(Ik;GS?S zok_CX@ZlSgHPFG7i*>|dA@NKG+m5K$RjK8alAbqaA}mc(1yAkiWnuiSaX2KoXB&XW8F@-tyZ)`8WDvmOmj;TaC$?5BLwc7ybx1mD5H<*qFWe)1YNj!|2PvVhvg} zWcxKlx%6vhDaJkL6Yaf{6XHv()@vEFCkLV_d7+dwx!wU<8jsCSe)5`#f2gqw5=}*V zC}Dy3Ki@k~wylV+C!9Yf@_YUstNrDZ@yE-MRc}cOLB({Gv2TvT?6K$It;*T4%Fr?- zWnhUw@PI&}R@v=c!Ye}M=5=DVNkmAf+qGT2?{LE>vGAY+M6-;?#% z`6@+O`^ut9J3hi=yWL{>toGoIvk-Ts&D4Crb=-A&^yTCrL(=4~V*je7rS>1TlbXN{ zmrajUjTPb~JQTefGsm1s;Gz7c7syD$zHsNjVhr;{`~1V$JWn=kB6Ihx_OWf!(xy_! zQss;G;}oOaDc5t;_K~q35v8ce%V;_SV}Yp&0aDJ(JzTTK#tR?+#(}ya4y~pj$;$wM z+^Sf!a%vtU*&|O+`>wUJb>lvCc`LY+*Zo~)96(i9I#7x(9O+EOyYOnrHD$2x{P_4R zB>&8Ptk^!A3z(MdmwaX@p|Dzpdf%h-;ptG-$MX@qBHvEfBp!)i$V*5G`b|;cgiQwb z7-fUrka+4dtWl2U;*M+f`XnrcaX=PWj*<7xP#|aCMu2m+BHL5AZyp7MzQ|Ukgbqb`)9TN#g=Ubo5V&?Q`iUS?|8WpPdgIn%>k4$*`t`x7ZX2Y&!*=INGIn|u5rBu}5hL^Pn zXjq@%qX}L)Fd|uXagn%vv~3<}oaCvQxlK)uT{i2RSqpBvEPdxwzVE8vnInPEGDn!Z zNaq=()u~&5*E{e0O~{=6El(f*u7ys1jOXCni)|^*z|cn}Z(dvQzPM?yEg!5TyI0Xf z9NR(XD#<~a=qu|rVC&)&QQ2hKEkOtC;K-K>0LxoWPZqq--je7Jc>LxNm{wdWgJ&q$ zP@bVL3wevo4D>2LIXE3(Oj-nV*4p20F&RB_ei`kYH#XgDAc@KUV`zLcy5wmnp9ZgDs{PwtYT74O%?n;X{z3Rq z>N@H=3Wr7kfbs>X8!lq*)Yoho!UP-w#cU8%$)=~>1|I^5i`i7SXz-<0+SwqL)r=iM zd*u)v^xZB>Eo1`jc^n70DseVS((0(P$b)rWH$tJgB+(AI&@2_gyqxaqwh`e#hca=_ zqxp*7%`$=?>klpr*l@r_MpDl$p-&;KX2&CZCGju{(5#47^>fUb0Lzv8%!(yhFYl1g+xI|F- z`zuiwKPZD$`NuUv=Ga#oY^fC+y6_uEttkBulfsbh9+4D(+d5ilsJQaJ zTL&G#Z)egSHgHyB70x7BgS+;hhQA}MMIHQ-7YD9;ny5t=Tp~_?9}jfvwn@OkKnk5_ zwoEzA`XS$v(x0+k&T0qm{fm=av`FC z5o_eFq28TgfhEi7uZ~j}Q z724PFSMRu$btRX!AFetM-e{N(I`u*Whi|eBRG;kl3;dxJNpR}J{?34r61|$6)b z$Hl*~Nc5=OJ?!rYFFBlFI`#DlTLZC(kd4K-M_pwv+SKt6(Mgky#klC%n}ndM8?E&& zp7;?oE0quMMUq_=^MGGum(wqh3J&)T=4|Vzxr247V!1Tf??T;$_TG-Ay4tp2w?pVJ zHqa74{$=*_^BiN6+QMBSMdkPL#)??mEatYAVuFE@3oR4BbyQc0_Z=wbu5PIl%+SdD|hj&*&8t!0Co?{|^10F^BuU>)J$eVa6J1kSHDxx0h z3EZ@X#6xHp>(=CuXl&~J*O8keKHlq3;?x3AQXaAh4Bn_l9u6h5^P?9HHKwNmc30n8 zj6uyji>_7L}!6Z0$h zmO3$DbeC&MLvamlA|T$Oh~vr2nz!B*@UF#?V;vH)s^DLUi2`JU9S9CDT=(z^TQA^+ zP?4B}IX2ydL?ezk*&-%%V88`!L+pto_LJO%^>y<$5LMIIv)i>g@Y>>Df6&>r zn9ROr* z46X(J=q0z-Tz>ar79(~~SJ)|92@Hx#T9n!ds`JhwVtl)>ew_kO0_ckAZm52O@QDtN zyFT!@Ve_}mzxRUYr2IT5$_#9y4+fY#s@A-kt0H!9ie5rENvBTH!5-=l`f;Am9_IqH zB<|-ei9s6eU|Vxwpne`|RJyi~6{uOu{$OlYhnv?fM+EspI0JjQn7uye-gTu>%P|W1 zc$NKpRaCw)QAJUIWB*jGtmss{B$eZs+>TL|7Y$L1U zUgjnpUxVlEFZ0*0-$H;^R)_F_F>-@>Ujo1*DDJlyln|JBWqOQ*9GF^&D#uR1bXOn| z?A>Ur+_%KZ7)(jT>5ckw7>e5elS!xOYEs{o#9DheyrHF){>10(cED=fmjMoc?+i=_c zO^adwxhXj2pPQopxhd$Mo6-Ue4UO0a5)32gk{@x2nJ2ytORHDh5%+kvy4%5=X?tJw zsl}fyHYuKr2V(Vf2CucA$1jsG3hciS$kyT*F8L`oMj$b*zxlR>O?-wl}CbxNF4UTS@RiKJl-O`_SitQ3=6d#MWKM3%}5VjYaFTpILIUsU`u zyDzM(*f4*G2PuqsIcjMbe%wDT?Dm1vCm!oHU$%sy%_HMkNoT{<&ia>RB@7(2t!T71 z59uVA_MtEB3+F=Hd%CPY=u|tj25eTxr5edk@~?vkX*upkd>Fju%XNxU1@*|ImuYw& zi`^S|PRaosiPqj*Z{q!$?(}t7PsDi4=ZRBJxQQy;c?vv&l|`mU%I>$5Ea#uc`_+2P z1<7JB>|?Y#IIF~M>iQ#)EG9@c#i;?!J`z5+5)rJi?@R38{Z>MYBr@lh1SJCmCi3_A zR4BX`3Er0x9J6!{nGnb+KhvvxpmtpE2Fm3RSEM=wNTcCL@}QM_Q^uFubwLQ!apnDRFbB+ z&ys+QqV^N`8rCIxzwKeT7j;%8#oI}+M2<5LQIQQ@yTEh%Ko@c5#~GnMKIJPZ zBd3cNrN-Mo_q9I_mi%@WA~6_1Tvq8VKOTj(1BtGsx;$3%e1u^(M- zwr9U|NjH1D0n554QyP93r_&6!2=J+tozq$bA;tW%mn z+@EGcHMbfnaxt3Qr4 zKp@NC)$mpQ>2SZ=4&UR$db4>%)Tgi3N15vLz2!&UH0EE`zhe7CCiS#4@*YL&Ln>BG0XB~J>GRoeQ+cEg)QAz^P|g8>Aq(k`){l`12lpd z&+cWGm^hq`K9(a+Fe#2xB5=&71%KvpN~Q!sU&^U=cP71$WXMd|xzdz0UIC*v8 z18Lr^Ztb^mhn`LuHe%@gFEsTc|Z$bB5ziZw` zMrkM5>6$C6=6CS>keAnT57J;V1|+0c%rjC6Y5VVeb#%BVvYx{a-dC4B4r@H^a|XXHT*G>T}Nhz`eBXt4PSBYD`jXh^e?Mr$e|<^gzq74i#kv1^ z@59>hG5znD%rvq00@IXH*75Es=~^Q z39%pK7j61Z&K_p{ffcCUo3MI!L5A9IA>{7nbR(4r1Co<9qKBGMSlo)wMtTRiW^|Vo ztr)6d_uM9_jWPh|$y0gcN1C^9K}f-Q{N7UT z_GdjFL=2(CrrZnWY?AE_w_55>N=lrGyHMK)Q)w36%^Dc*!%ef2q zGVjV%}rFr@A3EG^8I}<Ttaf|e3}|0F2X7t z$$m1>vt#wU_WYVv+EoQ3g>LZN>c$H||6r_r7IjTzr^KKt0kgb}sx|3bLQv*MBBs8p zBRmvFVG3*GQ8f+wo%POqJ#ar95E~?;*g~2UZPb-rM%mqE@6k1dP22HM5UpPGcA~sq z`5A|^c2+_e#%$(rtcB&wu}H_9cCl#5df|oGmq~44evEs*?GUtZXkx%F4^rg?@iH~G zGT&kS;2xF6tBjy4;RBa;Qs!k8Qc&HlhF`RDC=<->utk#*jjaD%okr9F1ZjxQDwV4$ z)Dzq3{+e~=oDc*u`9ZTyoLp|eFIJTK$qUll4qoQtml$dhP2&NuQsSoVOal*-=n6n@ zPsHAfp~?SC%xU)Jo=b<$PsRbQ-D&H(i(ICBx@&UmfmQ1*%b}z&Qqa&`I1R#@sS!2cs=98?4TW!`@ z`PM_tS8IKhOSJf^O+F;=HV_)|Y)swO^$pN%K*-t<C~J z(m!b8Ba+-`J*_UImJ=F77FKex=3*9#Ttyec}) z#K30dy`l#bpt*WNlrCj+dmD5N^@IBMn%ta(rn&gq?q74x%x|LE3nodeXCzc`59>jZ zZn$+M=KAb;Z^rp-SNbODIyYwszBPyc{X9-~0;*yNc~ko`Ve}i}Pzrx4TcxRs4B*IJ zbakRF5EphbW{R)7DC@+R=r4LjpZMo>U%>u_H>w=SrA6k;fa9+ZA@YQ+AEG*^(9fUP zv-hIoRTp8ii6aQ@KSMkfOQ)!)uMh)# zErpfJG2(Z({VqAIUwy_~97hD#Ml4{hO!aPf&s4L2txGxAA+XDDzN6~ts}O0M(pMoE zePEv;+D|961XTl`SqZAcc4m%|PEu{w!$dW%ZQT6Xa~Yp2jINg~Id)Uja6DL3Yo~Gd zTO%{ycj=nC-b`cJi|+e-Vry=|sNtm~0z%#t#a@VQ%sdg!HBqjd4BwUp=bx>Optuw6 zYsEvA=E#q4V|R=8i2{|+gn`JQyZF^T0IqQtRrNl@j(RR({U%^BPGT?m7x4Z$3uzrl zi^3iz_w^Q1o#n&m)$Sq1+I#!?k^R;5-$2ixu_eSrIa~fbh|w#q+8-uQ+hI)sY2-L1 zO8|qigO(^xAMor70z(+|FKvQNU5n%XASH0X>Wg#humJBMQHXAi$_R}1Llewgq=g(! ze}Rc9Q#cAQLFuAOOT*`J2vjPJBf~ua{?bjut4+65$pXg-YW^-rIR3ToWpwoB^8Za|j(?kn)c-aQ({P}_Bpd^&e`q+if>##Rgawx`zgHdWoBJ6x+t+Kh zFuA!0dAdwlS*+^up|%({erT*QgJWlG-7OM8pSqjqQ(;ra=1O!;^ew4+&+=Omd} zoxAvU8k$XC1Nb@q`Vj|@WQ{~a_dn8^H!VLmv|!)4%i6{466#4%@ZbzDEXU|I+02!< zX+ll2b8VsF{K20@Kta&+aUI1&50woRDX{=Ys81!;*XQ`3nJ-{ZJ!Q;Hj~=&Defe?H z?Y6{z-trgrR7c7#%`PI+q+)3 z=$tp|S8}!Fp$Y!2301$=inbq z=?Qj1-}^EH9}y<$jClEr!PKD{#kM&A?X z`Den5Kfzr6Zmf#q zA*3=rT+PZPQCWSvh>a5!+XNZj>$QPtUh^07qln_sPD7n|vFWw%nZ55xQWbpDyi(qY z;YFfHFK6iE8{D`hC^J;4Z?C8za2nhMji{8%1 zLR{eT3t)$nq5n>r{O#K}hM*C`L#@xYK^f$i3l|98AL^gm??EnPy2SaPZ`LcS9gjsF zx7`s^Q0@@c9`G_(4ufuNa`rQSkEedn_&nyVCjM}f(`mnP(wITTAZo6`_ib<5^33rs zx792NT)a?}^jD0NThyHYleRx|U0tn|%Q5n|!g~OvBzZWyh`_m@2#TQ~j7WU_YVc1{ zRd)scwyf17wY8E8r=#Ct;j?enx3{|Os_vU7T88_3bG=;Mv3+Mv`6rp6@!3awKu6=n z0MDOQy4!SyXo}TPQ;A&?znLH~1C}qI{r1kaufMEWz{Blw&RDABem&%a-p7gSv!zV; z+HJXk)6+M_j$WRn=)0wGk**S93haWSkP&kIG(NhRnxkU0UcxPs3I|}@k@ad%LRViik58=!KY^4kD2wE6!XW+Ipzz$AS1FmG|cti-gupG zXS~p5?>uEAB8_c-b|g!2rW2l^p><*$O}#8~7U zFcponR6T-<7UC|&Iw~;CS!a&-(QW-v#RQ{55EX4i2iS4H zm!8I{wLemI<`fGA_^e)rQ406lo~Bc<&o?Mvfm@C4#>zxmA8)}*G3pP$~rTgC-nzsbQm9cLe-K~?l}SVT@obn+Qt4CXO!j48X*aeKH<$n=@QH@u8zAi`((U&`<@Zq@IyW_$w? z5(A?D-H-(<&dqUldSysicBH(B5FX1;Ar*gRopOvxp`hO{HJfy(`pi30lJ%mnG(XeKVBA23L9-Ox-T>bT;^8)HQ30cH|Z80V1ZwTwr8eEA&lT(9m4iJ3ds~WBHgA#wTF86}-;_A? zhnjm`soHbhEAEz_t~jfE z#QJYZD2g882Cjp@i?#xKMDQEEcRU+YmjelD+zwH>~5tesjr>6?N3S7{eS^c%Mt%iudFULKJO zg)i4n9wOI&7ig>-@D?C08fe#Ba;$7HvJ4#2Q1((PE%-zbf)-Jw5QEpt7U@D?q7~;H=BIOZ#Xxn+HRTY}uYO9&#BA5_udpk|h!a4U>yX%^r)t-{o zWA5WvdSemPHrb&TJgRRh-;pL`vAuD{aeWxQD;L9o$Bpu>-Zq z_;}ju-cFja2lRGLT|N&MmHl*K0y6SpsH#|qx;psrqWS-kb>HuBci-N?BYN*dPY|LL zz0Qq@=tA^Pbb{#h6TK5ei5dhUYKRhLbP;8ucQd1n-X_XmW}fSNa-Vaa>v{G+uzy?Y zdR^PAwcA{_I(S^nu6YS$)0|56h3WPOt)Km!L)k#m4x!QVWgq) z-atoe7bs;qFSY$#UdU7qAaIK%@#$${*7;D@xv6dEH4~u#tr|tz``!i*MlY~N%ZFsb z#xQoLK>K@o?+w_{X~#ZM(7*s~qrWGQrE~$J)bFn9&|zyMXd$fh9iUeoH=~!+FH*A8 zpPI3Xg_@K)KcL$TE*MCM!9d6TWOV^3b;1gz7u7CX2L&Z|WxGBJU`{;E$DDkR_epz#{NO2lwv;!S54^)BmHiW~HM`vK-^*P=uN8XEL z4;eR6O}kI#z0$WugKnM4+W}34yQRDA4fv`1dxOG~!v$yR+}5^Q8DYi}z^kDqa^b6U zZ^S;Xoh#scp8g5*ESJXg=B`b=gWUpb8H=$QL@FJ;&$yXHKOA1Lew5}sJ6r;vaU{qq zIUoB9PpEtn6o26)^UX=YGJEwMrmDpkEwm5Ac;rEDLxT~|T0~gtiJ=0wRP0ONsV9Fy z-p#!I26GD(F_pt65xS-U8)2y&3-_eeJ`YS^+By4AVc{ItSA|1;Y6&IsSfw42aeWG# z@jP;Da|*cXGm2%ryNUhJ{)+9wEdE=cFek2{9>{~w2<~AprFiVs(3!&fos&NsK?YTe zPl^rp+0_km*jM@r+?N_as)zf@yVE2`}wsP2a)vk13n)hkRZ8I<#T0 z&xNiv&W(a*kL?%x1qm)q}6^`Fq|c%2N1`zF`V|WiMmp5 z@UoipPv2~YGVl*xOs|Zh9oH_*2gB9*VKnII(@eyjBIm@FXf+MaHnVc9d0raOW=fttnjq>ynoWy(scu0K=@e2xlU zSqvNG?6`Jw>Rl)9bbjU5NZ?Ixgh_{uCksY)L$CG~><)IXLq_QgeMi_I#_JES`s*;U zTxItAbh+<)afooZbEmX$Xu0m;yS_`j-(9{9abY6U1l@DK!m0evXNmuFE_(io?~~vE zitpK%f5m6{<*)c2H~lNVgVw({)&3ormHay}3)g?Oz%=~Wo;ZI>SK^u20}0in%F0Ry za&tkMDFX9HkL)CJUh(ox^}W!DwF)>{3cXtI>}1Sou(H~6h)m-7;-Y{0)oAk?iEHmB z_vIzoV1}!Tkv5h424kWIgagv$JXwe+3@pA1U#Gq9h7Ie)b{Nvp@XDMG19FQDCgWQ# z17>+W6jn_Jl_s780b*9}g|Er^pS2NhRCc_Gm{5aiGTw@i7R%H&R`hGke2V6nl$V)C zz-}KAE^x@WgiL54pT%A<(iev)_bSJ>Z7t>5$n6&CkBej;7G8f%-4aQ9aPui4;}r{S z;F1O;;8d+3OKpjS%R08W4j{RK;5XmkWz-38V877R8wC5*{p#@HC!Q1T2_060$45;% z<8_2?hsJGbqzJrxB4C)%M#nlve+ZH@YabXD8qh#L;`M@P%@*$6Ne1SaSn#W!M z@}}|G2i?PGMLSb+Ci1HaH)#dmzixF)X5M;9t6r`7rB0oxAB0J2I8XV?8QRQs7*_h8 zXX;v%^=043#S%w<1$=cdca&M{D0U~M)AxZ3W9am7D%T93(RlZC%Fx(!(AMpPh!yqj zopMxOI)X-UTEuj<4A0A#&z%N+CorI=lV8$hbE~0u>f6@xK`~1UX2mgO*p;Glaa!|epv(6lq!y{qib}WLOOS07I!Uc@r0k5g1H8alx5~*kV}EVI(GizEJ*D(k zvuic^?AzzH0X-)6$u-eLKCwhyQH>8jQbJ~ImlotYV&x7vUt4bMY;Q7ecQ6CNmYdB| z+20fS3si(F0mY3nD9xWrB2FIS*1}f_d7n;yUQy(CCRgt_BCm8=Hp@K8w&^ou4SqT} zlXgfh4X1t`67(|qc|bkBOC|9!%IIU1mL3Uvccs3!3VhCrgmm4cUGbCmAFn9q6QT&o zxuKt)%C1$gI_A+)+CfHs!D>IMW{9p8IJF2@iiCa91^DRT?3OhiX>Z&ngL0~}MX+X9 zd3}|raIrM2pW2;$a;;zfr#4RNi;w3st~!m)4eRW6DaM!7!U{xpby0@XCf)J)&_ZfI zE9#UEKGT~b7%u*0&QMY-D*o@-x)hc+afCKD)Y>sQPof5k=b< zy0)*}Y=FLNNkx;veix^q^Xj`a!%G+c52JGiSs8D#Vgj<(NOhtJ$%VV@PA^Ca7^_&i zqz69PwJLk&99F$k-ZhNQjUz8qCD;rlKO7-<(wtNMw%k5}R1u4Ck+>GnN!D73QFp`n4k?AN;>RdA# zPXkD)_9#S=@%MaLqPD=Dku|HSg_EQi-@oM>?G+?g>Z{JreD8YO%^+Z^zVRnSN_wtY zRBpWKPE^gxPKj-V40In>(a_c0q_mTGFZZrDV{@Ff?b9!P1Uc{r{8S)Fc))%_N_?-K+nziE`$P(uE zh)0zy1rdRn$+y#5I4BM@$0BtdsuA1QAPKOU9Mw3c?(2`<0Pq0=cyp%IYeq@Mhlup8A^np>7q?k8v$ zn6m67XH9Gv^KXm4(zA6(Hv-fEiX7xs%e&Z+!H6+{B7@FV$}g z^k7TTMJ^>DyIGBYZZ;|z@p}%M1P=G(mpYy%F)p3T<&rnHU<{F=jU~}0IirIpvd}j% zz_+S3k2`A6b|(ww&wFCQ3GCqt*O0wZ1K_gR^t2)i?cH0^m!aIO~TA_{=^ zf?RRuHGLFfM<2<2bs%Kzwk1&*F-k>Gr>DkOpk8fW=f9;voNAd?ZPx<2lx#4`nWmX1zUMOXmRDNhVnUt6s-k{+UP;TpZfG1 zyV2iSpKvYqOH<@bf;)8d_|l}`E(2lLFTTmH+U26=(M%ln+uUiq6Vitt5|I1n8I1D- z*NK#tU&dpde=t1)@8x`NMCNxl9-)mITiEL~CWP&~m9wt9hSpdHBVOFL10}1tkw@)EzSkhDw~MbiN*MQUTqD9vcCh8Zq? z)n(d7uTp>ULjH_BUE3gU+;6166NGUNXYD}FOk;0Iy3_l`&r?LfXL`6+LnueZJBnjZ zFp2Z8wBF?8BRC;pD$M=>h}il{5kWT6xf(AI){I1k``PY=U2O}$Ou7Kx1T$NMEAe{l z*2$$KJk5D7MG8ep*JUSYF145mc~5qGgK*~jy}junfmXge8%Vdw0i8%Y?+;bNfPun%6zO(8*|NkPu0GEQMQfze7V<;qJ@8`lq#8_R_0C@dtXbBdvGoyef#@nSxh*34D^G-hcBA!dUbQEQxH zUAG|meEl9Bs=X!z!bV5MX{K^-z;x;;k&+2ae)Qq1n10Fu{Og_pNi*n)NNg{VvP3s>0TC( zYe#J@m%)&If?*R~iM|`MKaeQN1CxGYt!pJRKO)tz_9I-GG0aw&PfuverWlY#Syfv6 zCA5p98W%~`CX^IgfwXALfI4uX?V1e6LBg5fl8>vKS2N^G(k{@}8=S(3D#q3)9KgE+ zw2?QUOcW+pd=i+QkKnsD#3=fn$fjXhOHR>L?8~u1HctSM`xKhASfnlYrFTCXFX*8F zhj91OJ?H1refdIsr=u8+Mn6Eosmc~R;I%k9h)$Hg5x?UWp>JJ!MPdUK6LcuO)VAo|# zbPkr7{ilttUP~-JQy2(hDVKoyvY8JX-J$pX)v6%#=`qbQvroe-OOd^h%C(*(#P@oP zY!`38G0&yRa2URPXj|_i&*6Ie+c-!e3|DCVv|wn&c4SiA`;{(Dq0$FaqLKnX_IY;Q zNH%S8ST)5`W9+TJOm)LO!hLJ`QaW7u_E+P~=sr*o;(D%jfZ%oIZU6R%{`bXZUJB88l z#eK(`HeVe|HqWoS10eS~L6Jv&;Fz+_q0gaoo1JU@X%r@IwF zK?~#lX^o24Lc-f4iw4%ZPqwr4w5kt;k zt!aK}JPoMgb^*G#eupI@WD?VJxkFMuJG8!@;vZ$-mY33c3K32y;Fb~cZ>`*a_Gy#l zv-qjL!-Q*Ubu9CNw0jJ<+o8tv>EdS}F;%WRfz+5Ox$F)(*>b$E;&_2xB*$tRN{XDL zvLYHtv3Af5%u9@*NPwJYT=M!@db=T~P&?<3URGhJ$P>VqxDd5Z!9o07n7T_^wGl{y z+2%bAtA2PMu6*enl@=bg%&PqJk#euyclK8p5j^$mhVZYjc%i7{iKw+-O2(IeKv5=s zeG_9*NOaVC)qO9@Q9q-GpN}#@yc#4qFQhzjS8KDlmEISoNw%Xal#L1^ujgUoOwk9> z>SkYpPC|f8C1=T{W%0Dj&Y?56sAnobce16~F}=t$>!A8vzOUz$;Ihu0`}R4lXPVQu z9GQfk%}?0Y=rNFd(D9GxNi7QV8aA?8KW~S|Sg%ftJf_2ke?CMH5n2!zA944rja~^@ z4f?k)D(ps4znND&**Ur=&Gzf=ZVivpcgA~V2#^FA>t?LlrDQ&4tR(GyjvnA&KRsl4 zb0LKsdGAzqEL|Na^;V%ik~;7}?C3i!X7-_+*0+Fq*lnVmNu|4BQvGI_w$K7%j_QFy z>W z51fzyZY_w`9N`s~r1GRfmIB`zkMm+Vd77VU_t38lv) zFcy1Uo=*;*)t9MBD{?*{3e|Ej>Kx9^kfROt2iEy$?(}?+?n#5UY@;nEkIy2LDoQg; z2e^ZizRsUze#m{y@me!Z(F^7&734Si54-qvTSFgP#r8yaRG!r$YqC*yC|8x&X!rHp?%h%a^7&_2l!dqPcDKiuJ2(N?S2E$0#xtFyREk{k zbbwdN1G2=l={d6OzKL6qN(pM4k{@}#Lmu6w5}hDPpuWR&9nZ8{VBZ+l-j~Kc+O0YI zp)N^w=x#0Bt--@6YD3ug>4Qgm7a1{u)zg$%)i|&mtM+y0I7b|By%xDHYmsq?S7Z=8^tOVlKQz7|8T7}?=DKlI@F1tsaS(G zI8$@B*;OJ93Q3BxoOhz95?|4-+%G8KaL>EcuhN{`S_4b}_OD5NT%5dc&b z3u9i(GDXa3ptXdbBie(ew>f`~>HLSgzCR5?fw+E#N2~!w!(cq7$^d5WkKeVk{Nhd7?)_32F%|-*t-mnbrXsFBr)~vIOi-sec zQ1`Q>+M(9Yxc6Od4BbXU#1&&970Oe8Iy4)UjBjo^j&4vDPR=z=sR-Lw{1YZPb_?57L=j`!kqmHeoNt!wz=h|7`GOb8(Q^$TW<{pP3 zGTG9FX}Giv>b4lNs%tHp<>fomN0itR{+LC~J}L+RBSQZ(06Wpr)zzK!)h+gjTPFK% zgS~|UibEulDp=srru1nLEi(PhQ_w8r?!9~iwnRB*Vd2g*@0H6^KTD&E%F`~fCL>M{ z8#lk-n!B%4J+w-BUwteIqf5h_OftoYf->$6?7aU$wz4>WD9JsvO`zRY=KD{29$@9v|CNtK&jGfbA zx5sv->cIJ|tU}}nb#IXAr!OIPi#3Ae3=4YC%$&cUM#y`HtMmLh_sUDYEvXS2x#;wO z_7i81521y&NW_X`(ITg~RSVuB{z`{$TFIr(r{a#BYx+9h2*rLk*R~TWzk)5LrY>@v z-C4B~B7*^ql;In;mAS|LXo)9@QD}d!zS4m5(-2Z6o2=$V>zmhm!xXuB?1FE_>-WJ^gg_UUepl2vtQ-^Ab)hWm= zi{o1Q?e=Rn+++kakemHLYrc!Hj!~4xxkg2K5*f zhymcJMVE2xEakZP+ePekk<|k|Em^jlNi+#NUt=Ufupu z40tV9(r-ei*Uu2n2wO4_gvIdx2neKm>x1qx|Bidn`Yi~w?|UK*?xi#=enomv4h#6A z?Q-RhfLnwr*q&Xtk^X4n@V!V8gL;;p00Y4~ch-~~#gVIsZN2tl6LpH!APxF?CEK`L zNhpZp!mo;#{DQj}yiv8cSmL@6b_jV_`cbz{yxx9ITsU7$Nts>MyU>*e^gG7~ z48%i&dJVbyyp5e@y12NRr9Pxbv$$o!JhmI`xV9yNhQ~zg1`uN2nh@f4foTpU&#~JM z-wx(;hrNZDl=VCueXY~lvsvw!Uq42;`)|bDU`X+eAw;>?D)o_niA*VGv)f%C`%gq#>R|hmt}ToWV1a5ieoJr=7eVfQOdipj3e_p!D6J(k7 zmf^C)jHrQ03HKI1xSxNFvH#!z75>)n4hM-;`jm31rFsGX4Ph9d><2J$m<_byvVPKy z7zt~9x3L)G6_^H1b78h6mU@FeHWl1oxpS5u=as4_U$1I-hf4qTDx~>l+u9fY*(ntz?dcJ_T z>NA3CHU^=U5Wz}JfYs@PTSuk=nhdS11b3X_ie*9$Uq;HD~*qQpcGKEE^(t4X6nx`PX zCm{OhtZ=s=)-7dVhdG5U6KpWOQhrq|VsDW}{W_He4DtCY@II7MyEpmhyL;@FuM65- z#%qD6J!~5PvK@hMQ!hh=V8I*6I(cf6LGY-JxT5WV^&h27)_d{VQ!izEexC5R_dOrH@~Veq;hC&wu2hhgo{h0c23 zE3^&Vex7ZlrI7F%LH0;Xsqqw^gmqiDKY7{oJWsmdG}PRqK24!pgT=aS0WZhgbbw^Q z!WLm!EPd!X@E%|sM)vzIfH_U9%!nJ_^2Gy(0x{5^pX$BFxsbjrMFnW8Rae65bke~IiA>_^E;T5WZWNO#{M}avC%{Suwn{RY~HH&|LC^+HW z0hd}Y{1NBC7!zwAFBuZcw<{_tgX`3o^t{vMwL7O9_x|jsQqEXrtrb4??MEa@+?+pt zr8wn3ujW%rw6|;d7mEo3ys_>a* zCHR3aC0 zL|6G)Os07H)~ZHgW$Du-Fk0)^Kaq4+9Ur(-4L;Wy{EAoHW#jAVF-Y6dl#!LbzlN#) z!+)Po0WmVmhvVl=m{CHf5-UU&{(_rOkVXkaKU9f$s+*e2b)(f+R_$gGk-XiY9XTzZ z*doE40C;J@NyDGkTQw)%2Jpm7lg9ko_{c#wa*5A8?Ef`y=@a*MOOy|s#8~kIvdg%S zq9bXpYL;xr{d98fboH|x+>hKQbzam?KNZs876meFw)@CD1EyaEcu77=rp$n~;kV5= zg3JQ;NKp8b(Q_WyM`?jp)VXg{LcJi+qec1}@OP!^Uh1nQFV=Kz26?WG=&z!+A1IdJ0+m#*GI=_9u{+QOc*&0g_1=_I(3Y6OG91b3w5 zewr!IuBtNpxTBXUQP*nD)57^$hbPY~y{5(8%jYX7`M8_A}@Q%7zJXRA2 zLYQxUcwehONhMSz@*#$wMpH4T+66VFY>oI%+r^cQF7S_upK~ns4jbObk13G zcE^KU$HN{=8OpfWhh--gEbP25%Ko+4OQ&!@^970K!*7;adbyc93tKWr8HP$~eTi!% zX%TfW-H%Z*@UAMe$t4w8fL;Hz&T66r&@un8@~KrRLt32dPj+Rd;@EiqgzFQ|X|v3X zG^2vac}Z8nnY=u)yz$qLoFcE>7T-S3-0Zm&Bz zZ0H%v^XC9pu7o<3k)%VjBoaOCBz5;ThACWURzzW3$ARnRG5KoyOGx+FZBxsGRT7vEm7he8kPXCnf!^!|?h?$utzHtYEUy9=W+%q2ekciC-zQzb_;AEkhvT7fPF zDo~I%8^`XRk7aS->DF%+2Md7>qy_H8<$Ri&aKM4aN2{E!)rj&R>zL}xz}s{Scd$h)8%pDEriyiIpXr zApYz|P`yd*U^g+*J7wu$e-Wrzas**_O%E6aST=8ShYrH*N&SXSj%O#D{r4$Qgrseq zzA-{4#zZ&Q4Dj^H06QIYcxm@q>M^T`9DfzfJRjnB1ygN7DeuXtM|~i7=7hGXfc~E! zIh_l$U+n2#{CF(^JltmS(0K2y1AasDGtda%b76kfl% z?v1U43k7iKZ*F|v0P*8D=Zx4g(WeU8#7%(mX>r9^7t5X%Rwz5n(DX1{GICG*DnkU` z@P&OY9GEL|vR-{ZJi|jLKL3*ERYR45^qo4Ea8x6ey>I(p)rlSbZ4`!oRrmbA*VHT_ z|5;NLzDqJD0;}*zy60_vG5T>A@dGND*zcNJWXYbj-fb-Yv_N0?!UgIMukN{3*v^cSWQ*Uk^S^J;Pzw%oY|^% zx>l#={kszc^qV!&dzWoWUi((Xe1QV=og0Mk=PJ&meB zO%#kzVY!y9+pnCM4{u-!wbflX?%Pun>!DP+X;@&b(mU1^z<^Ks{Rf_FiWRR?-(T7O z+$aAH96zAl+I!6AxeN5wKnsU3BHD$NB4kh^i$c-o5uI~yf_7bLJZeqxv<^VRSZ$%S z200&^;PV$PB~6~Q13k8}5!`8*k$OU1hmvFOfiuUUMj2dlla96> zfs?-c_|Pe9IgIuunnVn^nUp{E;4LOxtLLBs?dFgGoeAh7^7Z&@%vYaNRd;%Y^8*H% zi)p*|*Kg#*M)cE=7r);Ugx%y4wB*i%K|E?g^Vsx+TW^#LZ`V`?7{r)`H#ouL5mVLn zqfcG;^lF_+E(tx6%>QmP-qLpOE`AO0quaQfNMeH#SG{hOfKF<&ARxXjObU{G1X9FA z@7$erqK^D>`s)JO2dK@_Ul6_BO)?F0NJW^G75-h@LKcj!+1V5-l<4S^r}7K|ymUaYBCx;0NB zy(zIs=sHos?0P&>7aX&_JmB53F0bj+^-(FOF`$m`Fv}=DZ13*21zDenmOV`EM`d)Q zXeZ6P85c^3tADtOfofcZYP9)? z5O;98fg1+>24pv=Tbk=_R*1D*L(Wd44(^WZAoJ`MrYG5=^sF17DG$_p`a?{1&aM!4 z4at{kj2}x5M{Z*SATL{_Yuuu?2MTR+rvNG-pp02J;w7Gdm0n+yXMLj|I_EY1hQb3O zo%nR1ktAn_S1H|_VL|*tUp{Ok@9L!S=a4A`e7MjHi2OofnpPXB&L*NmzBs?`rVMjh zB?$^9y3&%vS_*+Ip~IhTo^|6}FxCv+JS9UZ@mWkq23fW_RWGg^Cqta`N#mw4RxyP{6A_S+7!`~-b(@CXt+;9T;o zPpTQXMt>Tz!$Tg(Zxi!g4cVdz#kUf2fw_APA3f5}2)YVk2{?q;TPIGZr%#U|+g`&D zkIPWPmIv&3z?BPcp7R}e~T z2i;1yOSZUEqD5wc^`J-oE?{Sr#JGq=G!$Dq?C~tjdd_cgq?HQcYh%w*&vAnT>a*sH zZ2WVR#j)~<>PkL{5=uz(wT3!($GLK1;BIo+GYX6frx2XLp2HvW`rPq;*G#FZ05*{7 zW@%sp5A2XWL*bP=ZrH?Eymc#9%FaBUNOyi<;MykNf~$DPm#o!t#{qu)UPxSpRJJ;@!o^y+sn;KvG zvQ5wq`eul$m~zvDX@2HUNxt`l7WwtBR_i~2a25XiL0zQQ>NmKbgO{l}q=$T(2X1C^e zzvj3m0$LUFX(~>fv`*AIxVa$55MK`nYF5q zj$~#6F}TWk{&?rhkKXsM-s_JzLqv9hLf_nqsWQEIZb!5bDDv>!O%UF;amMz_XI^h2 zEKu_0yjx0x&c$PTy8@#R#fi?ZomuOh9e$e943(yM69`7hf`>~Y!F;AA)wZth?(=Hl zpELFpf~ssMlz?FoJOjhpXW>#05I<0h5iBZRK=6}CLw2TKJ){vtxwJpo6${o zA1lggl_y?`B)X2$lxoln@h1-B)0lKWF7$kCF8H{1c&-bu(HYW`+>}df<9YmENikzL zhWmAAmf2c<|5BkrJA5%qoA|22Lnywh%KQHC?D2MFQ(FeEY*cS&s7c`XI3=4tNwy4UF3QW(jW zi3QieqXcNr*An@V8<^^j!dm2Gr&17_FVbU|XrquP?|B0i|7Gk{3umSh)P*E%DASY{ zQmid$G*7%rro$<3qS|Ae?ob{1g>f&znV`^Z=8H|kfJ1Z6p`rOV75~}R-S+A!Kz#O# zvr6q=0JQ33SXSH&ubi$xX2*J+{b-sD#n^^xx}n%|?ap>5@#1T4>OUuR2K$D=CoD6y zazZ8zZXHtfk4M!;JUH0QP1v5QvyFU^3z6P`AXmo~n9ttHs;JerFU#J*JD~}okyZrd zRh=!Z$NqG#^u2SEdjzV?LMKON0-s~Y<-RyKDv#w3F|!_Jj;>_(2F~%f&JCW=5We)& zOZ^mJLX;$+{8R2OD1S?J!C3EDFfjH$;Zq~2C&s2_rdQ8rCD!T3s;sEPq0B?WOzJ~# zN@$uU9hxo^_zv;Qd`V^!v$zk;e;BMc_+nGB$jiEC$<*R$T|{t0bSqaw6};I#tSRXgkL2P$G?cxsQ2(9BHeNN_u z*{Qaki9&Ks89BkU--!*t*Fvc!AQ|vwTGWx?-Ojq(vfuC->0Xajf6A#5xvYW z;7p^GGX#oGZq@IG5U3*G2ypW%vZq0tC+p%l-8FMQb3O(Og<>@4p|OF$o7yNs35L^` zfex{YHY&f13#m0vVsitrYzU1+;t^K_>4 zMQLZb**AT$XleKl;_(IGJc4+*6Me;VZM;Z+4dN^J9?z;?6lu0~zusFRcM-9IFpk{P zZ-mh8R>H$Pe;%rK89~O>Jw(_<_7$Uj?YqWX2#(E52QlP&=jz>SX7RQi)f|EoZC{-$ zEyu4cnJ7Tkn|NBc@>aFIm@j06@Z8cAty_+Q@9YQV);YL=oiRZFG$zDw?7fJCCx}&6 zmssoemh6=sXqdCOzs)3|cN)_ad>1~B`DrdxU!}fw@BAdK^Bp=X&14PUX?iG<3Q!#x zT!o%#eB@8Ty3Nb~gvy#z*fhV1ZRngI5V85(+mx1eTB+=?IK)XaX{`9pfril`eBITC zM5Os?R0Wb!M;I84hzZvIkbEE}wNH>6i`RE1pJ_Y6Vs;7{V`@0FNxVMR4Q;>J5#2ZA zlE0^QkjthNhdMg=LCymG-7BtQ2pgq5f(x(EJN$r z%l;Cn-2O;0o8EI~kZC@)zb9hWrqrhoO&9LWd?)jb8aNtQVd&Lx2u2K{w2((%yCb1l zl|J_`t4^&2Swl@IFGQC5k=|a*dI=3j9~-EURT9T>kSpo_34RBgrtX6=zSEd3jwz+U zezsZX3_22y1;@URmywNriXQ1bl?=$h!I6Gm>;v)>s61mt#wS8xbuIoPJ-p(=3I8tJkZ(my_z5WjaF$qC!SP{QbLO>BX^yZfHQ0)rQ9Eo&qVt(vjjn$2({cYb&$ z7ysfZhnjc60>6xf|8wD;z+KDx7Ea%KCX5_+PyC^D;DthhKvTsPTx&;rinh9=p&-KW z;{l2{&A%gHzh5qH7)Tdh2Hl$k8|s3oCk9dOUQ72))OY%sQiT9- z({1WSfrWdBIj_gy^c+hAiG*8fxEG$*!HkI_l6nQy&`u(6!yj9L9ste_lhMt~;J9#) zTNvo@L3+qrXPE(}6~LaC9`l&XR>?3xOqfD#RW#x;tDgdm(v%@t zK~+HivdwikZ{YYpmOrpp&RrE$S6Iu}%!e*Jgj%(QpRPvMK3}f_4B~33H-F=1fc~8Ej(feixQ`4 z-Qd-i$P*Szd!(UcoVSi83c#$<+rxpJjc;TLQfy%v5xz^K5vD*uxhra$b6joo_@Z_1gh&i4f z#GEvqbp?laO`fbXa0lr3+SP>7))_V0w@~P=qq#haz3JzR_M?zGLB%HHIdBDD9qCAs zV)*U3ToLUCaW>AWb7GS>6h_^CRIbu4`xP%Dr#>bZFeL^bn30G6D2_t(1d#Q}h%@P8 zoarn-z$pU*bz-_3I7V*h!#r_q%#O&^uS#MTIw||uUdmnP025H#J=9E_n@KXF4nAE- zFf|uyGT=)=Fi>RU`A!cT$arUMLC_^sipL&ULlLkHB^hgBzLxI}Xb=9Svv|8Kd2P3A z)~>-w$l^{0ixRoAQ+)bk4R*H>4)^hyJjGdha9j|tK28M@F~tFSZG_8<$3W!O_Jv!( z9td1_gH&6fO;P73h~|R$klh|f3o>A4^-IMEi!9L|48OJ&0fVo0(%?NxGmh^rr_Y2G zg}j01sfDVF^%t~aCGS6O+NEZY96?tVDA`#NWS#!rccYAL4qa?#=0V(VA4Kdn#8e>n z&^;!?^$QGNrRmGQm$TRjoOqrlRz8zKd&q^!J*3xV$0*jFtN=xF-1bbE!jd=B~HMcyydFB+gk*Q^nnEk*_u3{@H&x0@K&vEG0-TH0y$M$EE)iD+?X)AS} zn`TBoD}R)#MqW`??#SO#h`FBZJXyazRz!?n`C4yz42|{e z@+R^glfc`>*16Kw=tpvEjUnB3KUWCAutVRTk5FZc_QIgZt_+w82LBcdM&98!# zCyiYlOPP)H-^Q8-=}bd}zK8YnPD?F3^(n5f?{T!Pta!euK`MB4@}11R@ekORuU)xa z??kId@7k$FA7pm@HjXM+SOFcSFJ@>8Qr?v@SU9GVx|j{(jOCngoK+jMsuJo3<}F!- zGDZL)n*-nXJrIo5rmXv@tQQj|{_&;W7~R|~c0{htaDm1`=({=NSM$lF1EGmLt#6F@+Rd2x%#_;>ay2LLG*jO1) zw-(=(iQ&vVCrH`n@OFRo&(e1s=O6efx@0bsWbJpxy-~P0Ci%EY@-cg}vf~xIqDNK( zuZH8Q4JVAdzxd9)A);-;A4fm3y}b>IkANaG-kpV5&jgozbq`yvZ3w(2b0dX&k&Af& z9ti-1L|vkaLNzvB*OX)+r>08qO_$@Y9(%)^KQ4L48LZo9THm$$-{!WjSQ(@(km9W0n%NAXz6q%HQqAB|@E6})wymUrk(!bVbe16n z2fOcsz}`oJbp!nfw)PSDu#A;n;1d)uVmD~6+Q#F!9|MnkKCrhL=UOvgLdGl1WS!(M z8`v<085OShD9pRid1rd?HaswW^CSC!n_~T-IrDRih@Xuu2#aIml3dnr3V|9(V+!UE z+1D$vpp977{bbW^*AH&iweQ!g^2%4AQPOtt#wwYqRB;yBRF3Ps{4c}8OEHpD~nb>_t+BikXHgWyh1|z*pO~%PUQ#XU4p-i z!KnVhqy8A&{$Z~E1M>Zj@_nldt8pc}=dte%Ylg1ksx3yQgk193#Sdra zaNk|O^L}-!Tz(nrh?d|rayAMEIN+H(imzn9q*1+@k-Mv8C4V*VMc15wrIdI@tHreYxBUF#~K2%wVU(pmLZqGM7g7Z(vdu= zsgx`If*NBDA}I)2ZqIPUXQx*kqH?=4^fW!qe8sO$1Csh^pC+8g_$H-O7B;ts6W#sp z#tP@74gRx2eT?v~45zl*t32gjx|DOBzh?ULM4PPoTXvV@3~`twaRh$d&qUt8o4v=x z`hM=Xxn-Gm;SA;81^Maj9%hYs_{>~0VTS?!x=BAMeI7iT=_YuhRF6L38H?jdAAXxo zcLDE;V0VSK3tI0^&yP787dM@89&{o0Qp zAV^4ugouE&bc2Y1v`9;Lx4-}cw{(Lbp;98HbaxKj(n$A64k648!_4gUKDhU@*Z#i0 zXRYIR-Pf!&=Y7n1Me2;xVw%LXX^9c^d;xxm-bRdGoMFJ7d2r}O0MMD4mztV7?F`K( z($~}<$KIg2x-1Gx^oVliq(}g{DpBf**{nOsLwXyBq5;hqfPmZ_8wR~2o$r7QAzS8` zCX&9ENxiqMO{ZK*v2@)lW0F5<5%(NirNwwn#(xmXG%G4-9zCIl;K4qwZxVd=9(M8> zN2M~OH`syCvx7C>RzgUF)T1K@FNk&!qImq!>Z3d1&8W5RqLU?ayAWVPmh=$Z3x*r^ zh14o*E|$JyzG-!lEI)IV zD;F~lza)oZj}HaB0CR@;EkSI!-&=~!z>sogvNGgCk8dZgXSC>~p|UpL*4q@?&ElMO z2%decrzOO1@m(**39$PMU8~l-I^9J*pGgAD|6Uablk0&bU(leuf(9`k* z^@^?IJ(awtvfizm3w}<^5V$@JqK?%km1iLaA{(?ydr_p>%CdA>KOkFY zGX-U%k%w^G{)EF9qdcwTRkAzxRY0So5yvo^PTa%7ac=5?{%w~-KUN?MsZ3!N^sA+5 zW4JE*Cnopf-3y79svE^a zvBj~9d)t}-lb}KfS@2B?mh4w?45xqC;1QDP z>gVrv{sffLpx!+u4-gIW(|hmxx5?y@1oPYWafIhU@cbmSsn3w$EH<*VdiNx=d2N0O zX1Pl}W7S4tzgXoTwEI0X?9}Evrx!+=Pq;>ILVMCGxP5e-JL1si{H@?o!11w~Rr|yY zq1=2Ie#iqiA_25HZKu(*`)j5Sr0^sRy_Rtv5syP&sEPBAC$bT2G@t+8W4wd7Bxx4{ z2Q+|iyM2qEtG8>ONpS+@e|+eUK+^bfJ4|FyU#6(c9Iep2CcEx90wGXfuZ|HkmdY=W zn&fbmDD2~cmwbhq=z}T))0eV~+(#R@0=C~dz0e)Ba!<(TCv%8$Gi7%V{2(A>Nmv(P zLJ@rpNcqrRdgM)?1Bdd*0R-o$!hrkd+CUzPWF($M zZroj*mhVFk()3w98i#Y2`$pRu*eIuo56R`4m9 z%3wq%4~RA~DE0$AqSY2%CM|lyuff5wxJL{k5lC%(k#5;L@;#yAtsC(0#gIg)1??qI zhT~*C_HKqQw=kYV6))z#3m67?zs{Mp#cb0-L(=|U06cuH_H+;RVF{`|B{!OcqCD`V zKHE_7MofRZizw~~8)aiR63RZoXh&{3%PYM~ADlp|mT@hWZpcCVH1sP!!4I^&%TEyd3yo<}4;f$)a0OuayVzDkVqSh1 z#EO`dtf3Edvh7~oUr3&vwjPH0qVkS>!JR*%SNGB@w_IgqBUk|}SLNRshuGMmbFJ~3 zAlbxd`7}hVlbGUm<^GBAU%v?7j>F<4(?#^4N`#r4CGMVCvPdB-R%1Mp$fCNKODv%H zk58Vt-M^XqRp}X*&j&E3xZ*^s`&v2$lFbY3K-E1jk31KVH59yZfG!d0DB{qA*UUwr z{z#3H@#q5~=R4Y7f9}K0s73>c{X@TIn+sut!E*ud=`b#$4?`hgb4Vy5E{IP$yG)!J z#TV@(_a<~V)5B8skEU(437Agi0M6Y0vq<%^X%}z2aCJv^7a;IC*azoqZUmesSQ^rx z29iC)aPek)bv>Q)?LmKoA%i7~s;HsC(Jl-V@Gy(kjrXrGYbQ>_P^Xy^VV+2&9afAW zH|I=c5nLrJGq-{pBD#Sa)X(^y{m0;Dv`f6DO@UA|rjF;d@a-MOBMcMo@o0qG2%^J! z{b3wp)XD+myhE~H@^Q?J9GIGb6`2Vd$G|gAQ4`$U1ZTcc+1PA8)tF@V0Z5$w4fB$1 z3-j4k@+WLcqH>H1$?9|2m_vagk$Hn=tP=VLJzww0ae%5<;{l8Gj%qDpPde^Oyz0F} zlZ5pke6RDq`e9~%8IA$Y6X9D|dhhz5D^W7ux)KlLUsw9`8Eod8EE^8MGxwmt9T*yHY`-%~E^g5CXKzS{%;-O(PM=Ad|oWJ}pbA+Gwv1ID{= z7^`20K_Djgi4WdBtA1r_+JASH;kgJ8`Mbo?F^q&T94hMrn4<0RthI4UL|)X$ZANBg zJYT$QxC_eqKrPC0h{AVtqSpbuEeUstgqg*SH?HRbiQX{&hJ~{S<9U2>oWv6JpwOci^$-`K7+Ux_@*~QB9{e6Q37jwowG~GuQLZd zBN`51KS}SF1yZa&X_^Y5Ym@KZ4YT1ugY3PrKQE?^6?@ZICb9J0L%GlGN5dU+_zHq7 zB*e68B+AvdlK+wP@!$lem>82Q9Ykd9$;Ze@*$jlKM!D$g240$r+%0&6f2Nv2wMtfa z@A6GZAbB5~H2E$`3SXuY4OV~Wz<-7+rhJWE==0;+WwV#ZZqJ%l3mrYqmFjvD^*6QZ zsb0}})em0LK3wZ)P;P@n8R1GtDIdlD@Omk$ztMWGD@HG+JAIr0sHd_ip1D+OS&Yb( z;h9z%D>p3!9t6pNx-8UI-lkL%JgzdeHFYLr)ne$Gz^nPQ#JMFbb8PhaWwI}YTX3vI zI{W#SzEHTJlWRu<9#7RV@s68ar#`;N0CgJZiFFEtx~I~UF0F{^i;5VG6IUD-|Fyx9 zO8p8!WEU;Z3t5Rjz-%J8#ZBEp@1*H1`lBIf8r?00WF#xi0>9R{UP55@wPCpF_dkw7GTrrC!td@eNr9-K>*1pV`C?6G%wr)_L7^^Xw` zV=B|h&+HBzi=~)X~=P%ZR=~_yl6+5Mmjl4!>Qa7c5`j)eedIT zjQ?p76GRl=`8K%$^NAA*V3O4CwAmban*`SBpNqG+$h-o)r5w_&ciw88wY?~Gx9wmlHYF>iPnEO`7^nl1(b5M#g}gOE0+E-A=9(3 z!q;y-G1T{s^UxD6t+g5ek!$*1Nq!N z_P&{4r?9Ub)pfR)++?FvXlE|VBsqDXJPkx6>;j&Qn`{T9F>2R&F-Bk7ylSCWT^-z9 z$t8#MWISpV@p#fXldNmlUXvLhRJo^M_Cq?B@FY9YbMVc{#3?ElGe$R^fDX6xWTi(BKWl&mT#< zDo!H!FP^mYY>LoE)$X+?bQS1Ng zP@8vP>GpD#N_0vsZg@dI?3hD$(q{e5flnav73mBS(}$9$72eW+3Udu4^*@oOiYyg; zTy1tUR(|)a$#IhMEmZ~iv_hbBbXVmhEEze9y6mW2zeJlaT(*UDp-S@e^93!Lbt{Vs ziY^Ab0CePM^C-&sxo%m2oc;7DC3AzYvH#S4(h@PL(0Ar{Bc{q9Xm`ee2+?@rYIsPz z{=GWNFq$4x#lt_+cc?y?=laK>g$~<1gp0XZi1c(!W0q-eRban@HOdp^$+_K8AMBzL zB|_$i*F<~4YT0Xt| zvjR!=`B{k3TfnB9AzfmvVt;T0Lo`r?2HvSEgrqb!oJLV5sH5_9#4_Wy2|UbAIIi=P ziOjv9kR$2cc7PDS_y#UoR9UL1)jr~mLfbR>l#*G`MrAfeG)%aPxBviQ;k%v>1|2m)|V#m~Q?I(#wes7dE_ zi^q-00n=nb{a-8r_cl4gD`N@b%3p`X9)4{^F1ejafp6+Ws^yOvm^K7g>o#D_$?s{8 zT4IqSAgG8dE$p89VP5$q&c$}i0N%yI5d{4kJjdkKH7OUp%4^u&Ht5njeRjM|mY@4| zRK5q8DkFnTV}yB~cek$jgcovn0y8FL`*_kSJ?FX^cR0J~;*lTlZphX=(T|qeOdm#2 z!ksp+6FKky&l!&w5rkLawL^C%)I{DFp$9YMyD#C)qCJS7HM1CX)I+A7i#p`}Rc|lM z+p2?JS(JHMA7ZQlz8Rv=bE9a^)Xx2bI0VrDLgo<26ty0!73Q<;*S$}GAzaQw+?}sD zxmiX^=h<>l9vVAU)6Tc*|HFCLJS@3*B}#f;KJ)@@(R*p)TP-K)UVM5PAk+0R*Hj5O zqzMiZwAc^Ss^^yD99S2)*NxQm_2Ss;b(&&YTnPwOJA&E5gqm5<*#Mx~w*aIq z*$a4e(c!x*cu=#D^ZQW}OUc8l6h|j484Se+`1&!foMDTq>#?P0HJ{eW=FiZ>4M%cY zaoQoF(#i5+XtA@98#`zIt$?5b$PDT7S97P3!@7zO*pALAZZEmClFm?))_^X#QKN{< zPe<(!Nk31nOBY#uC!ZATxKlN<1;BXLb>?E)GR)pnyWm{p|0C&$geW7n!~69@CC$zqxCi}4k&4t8d!C9tgs4jEOR z=m%>VMnksG5kcHCQPAC}3y*?a!(`gt4iCQQER#!1wmOQPg*p4^z(Uk$Z5r(3M32lQ zO(|>x^Z8&HUM5B>HICw1mft`Y|8!9Vqe7Rf{Who(#@qDG-c+mCc_uO9zNeTkN#}c7=t>w%Q9~1#b0$T zT_6SRTZy+5k9JViYoEDdXqOy&eLMdka%f`KV=tmCO!^_Dxx=2iKFl)B#Y9Q1HxJgB zQ55`h$6@MUe#viG@o)JMNp>PX$i_s^Ufl4%{SpD{3k6AVu@eD)A{HbM^LD_lS%(Rr zgAm|xdi_y_HhXn}G$$aU$9 zga^rt`Q4YaRQlFHu{4;BjMTno`lA1rpccmooK0&Ta{1Q9$_ab$>&86agfbKyR4X4L zUMcyf3E50s*AIZ?%zdk?j&xf-RSm>^^tAUCJ)$a%h>qZ~j90hWjB*R6n+yzR+R_wG z>h;Px=}`(-JZsOhRd7gqSAdSwZQ499&N|(yI@m;-`CDDy7*=z`$W6cQTo|>6;H485 zZGoc7Lvs{{Iv!>UZDk6a({+RFJok zf#YE0rcEbcKI-of9WUNa3ZboMS^VdzE_M+)w5B;@m$TZFFIE7ug*wqJ=r0eRnV%u^ zn;;``Yhgx%#`5>529j$*m@U?s@R^H3^BR-PSc;Q)KVDt7>?K4bdiS9MoCZ z)gF(SntgbB9);6fDL`%hwS#nR>(5VxG3_rvXXr<@1P_;l2&hILemoi=V4Hj%Pb+*Y zaDHmH0=HrHpTGqQ-wIr+@Lz#5k@;8PaDf*%nJ&AyoIqN@YpN)w$hpGiuTQr^A4J$G z%$kwnnO0I~+K?HYjFRA23~={6dZjxR_>z+YpFZ9xK}9IBA@PHT{u_0|RCI9IJT6}k z-G@@k$AYSp>E&E0BJ79`G(rMud&+pR05v zeC7A#I83LstEQr)lE7ootlIv%?i-nz}Xw zIYg1kaWJCx*R$L|jD8db_feO1fDS6Zc_zj!X`0J`M=94==yyE)pg-Wmjg^-hmv6Pd zP^SIiPB*QD7qX9k6jfwKc%1cBs1JYA=T4Fi_$WV;wUVb#=f)kfRAe1o80VvDeiX0} z4<7~EC8P`@D|M854A;QT;{+XE9C- zdrbW_DqsboqbB!UKp?a6Zf4P>(b>M}?=7O5<7ukSr8y!pCY#AKM=ct`oG~j(td3y~ ze=zJ+3-6zub4Jyavr+}QJXP|qzv0l0Uxfk}s)2TLjZqIE{En)tjH>1xxoekRdJXhL z$HLWiC806m#P5<2NE>`2XObr;;?<|hj08e9KVlMlEW?~h_dNmr z_{T@(xy8pdHwU&mstvK}`}QMoV=G$17mvp@G6u$634{;bznqd&GG}Rwoe8Eqv$bs) z?u(nUH)a0Rg5hOuTi~VQSKl#pp^yvU(&L_fEopb!rEhFn&;R1kp{N5)u8pdd0C9v9 zxXjR9xC!yB*PZI;ewK+O?@jh<|40j{oDUmaM;92&u*W@jp_@Dodo^^)CKx2vYh(Y$ ztZGLulV_nx;(Vh1Vdae~?+HLcYC^8%o18YM6qIZflVw8FjbQZ)pKxCz;rWgSVb z@M~)N?^sXR{E&ga}LfuIAHS$ zpGM^%gW-A;T|znKa)x0*RDUZ|`wQ7qfP!iID}3&S=qmm;lTV!>ct$6f47b47 z1u3h4<@@|jSofIrSzcQ|iv^d!MjA)3Z)lSIP78OLr z#CEU|`<2tD1j!`JQW{Cmyx0Zw@AJ6#U!ZMqM{H$_9)4>EJF{XjqF)N6w?V%gUj~nl zB{~p-Z+st%%d0)Mc@$e`k}4=w^s`w257k3O`m*@juP;*53wm+!Gxz+opyPY*7?K?} zg1J7b3fE5ESdq(OYbhww6yq))${Y;sMh(7URL}VK&S=CtkG)w6`evyG_~bFaQ;p3t z5TX8+V3IoAGcU4o!r@ar1UWXMq&Bf>HmH9;#%@)gN4SUFdVcV2)^%-noJ`i8SW@fT z(WKwbCj#4nKY8rVt{)4d!EEX47|qnM(V`#r9aLpBu|J-3`mdsGQ>&8S5eE)Y2hmQ6 z^6Z!!S5-7(f|g58N?hSdfY>iTGTBDaq&(h^jK-pBgY2oob{E`*`rgiDgk=X8l`s6SXi#*7&f`<(AGJpV2tk}^N}xf!+U{xIIn zRs}RXm9DgQ>$jZsqsoa_b9u_mN?-Pu-0YX_g`K2?Ex5;K>pwL&12Zo*l42p&l%>%e zu5uSmVHNn|72+;w*hjRvaqiK zF3K^h!3i4@5laB039)x->zzV-U;K49X0=;)le={{!N2YnERp^{XF5^{jmIWxQ7||= zzg|?=@Xb~nBG%+DJ^Vty!(NkS9`)JLm50ert>RA@tDgB6F1>_vzo#Bf74Q$!dNYn+ z3ROjI;PrDS6Bd(jq|J5NuL?R&9cPKtJ=^_)TozC2aT-S~$UIDuk~b@V zbemr|NSPXg?p=(QhHsqj5u74sNr2x~C%jQXOiPw^_r*8%C7q3U`sh%XZ|&|{2neVI zdC4kfU^!^#)pe~xFETdJ_q>|goIh80fZFqlvj>q6L#!=$T;*r1I1U7ZAk;|yeO<`h zp_%0wSQAM0r%Ceg+akVc8ab|R?#kVV4sjy91R0%J?#HA2)fshI0$wsQ0_}68G;sJL z;@-AEv-3BK%E8ksx4wR~G_Gh)$v7A@>kK9 zsC{MW^B~L+{^9B-ocyMmi^e@^Bx;qwd-I#DTr~)d5vXEa@B9tWH&@Ni9(MD%80G0h z9To`T>N1$5i&Xh+>_)@UTPy6jfs2uh`D>EArnV;ET?oeCHm|!1oPHWMjRUgV{s-)_ zJ?U9vC%Pif`C$HXA>8f`lTnqI!aZJd?Gq*8^k>+UY$MS37{8+(6n2+_YY853(1Ye^ zJ?$tSK5d)^tN`rD5y+x+Qb^uo(((_m7eXAe`iTJ8>W3CN@m<8KH9>B+t~J01@lZCN z^?$@h8^ifhuX?i{2drn${ZMIlDUiE@M&q`x_aoEvfvx(oaotZ&a(G0lt+Mm4fwVVZC-@6cSG9ez+ljw$_u!PJqQVD03 z#VgS>2IDFylPt0x)l7WL@J^OZp1^?9A+a^uE%Yavg}950SHOccPvBa&+PxeT8;?mGnUA0?poGZ6M#kT zTFX^QO~L!l1^a*m(dV7i(qo%Gb_sdy042JMd-(l2DVlgKH-&icgf|SXYye>ohHe=1 zb6SxtQ#J3NFf58$6SlX5*-dqG?>Y>yL`P=;=RrpkuJgKrBN&uo$JDxg8S#lQSv2LK zM95;cRi97c9}6{7HvTmr%QM8{hJu2VHa8Q3ys+}Z7K*uKJEV8;m75;iO;$Py*{3|6J(%>^pWq|Z^>(Q>(Pi2{SZe)Pf*!?K7&*#<6>2|&#O;f)RB2V$=bO#!wI zMjPGc%bf+I$@gjND4Nl<7;(KBD=kcn2~#c}z;Z(bPb`VW+uF~ts-Bv~J^l6vM`E>( zaQ+WKWDzn1cT)NxIWJB1?4kLdFxiP96zT6r@=^x8LU`r22~P*f2lGQE@56mUQ8u7= z@s*}@z_uHyN34J7LlK1B+GX++ps&eQ`fk;4zV~xzl2em7atRd+0%(JG4l6h~Rq)1A zXg#mCr8UMSNh@5@9!+nM5!q|*i?X_a)o#q@Z+mVcO&0^txQsG%?hQgu(aS~Yp@^Ai zCr=d&bMum?>`Hq^mjL}Mfp57*snn-eGt8&#nbwQ%IDtH=Pl)?lI{7z1kP3KBLze$X z1k?$!)OPuzs>Uyx%+xbHS@t4=_8PxOi%r!t*`2wZT9?433&D9bwSv#1xro^-RqI2i zPC~qnRW{CKfaX$Pp>lS~u)ypQBpvC^r=%LM=Q6ATL^2Iw>xL=>HxKfjuHphYeh-pl zvi_0gXoJW`Uv9Rp1vLZf#A3k&9y!#w@sqtlcmascmZu$f(k-Hp)hgx959Q=WGMJjo z)=$`CD~@dGX&iXeDV(h&momoU#Ow|g!ezBq`w`=-EvJj&0oBzQEFMqG zGfOA6TRl^-zSXmTJpR+OF|}Jg+fnuir{L98k^lGYf$Dzc>o$|uT zOv%5aK*$qtnhBhzq1td zUk?3`+Z@3ke{-&DZfD7{x#?L0jw?QHdGlZPqwfFxYfh@iS{Aa2fC|ZU0Nyh218gVSf__5dS9NR%39Q&?p=z9_}B^Z3K=j zeiJtit~&uvBYx%=LR>SPFy_C&l>dPA1es^7xDRm!32<-M-CmP5<*(ol-opu?X?jM9 z8;pzF-hc2#=3DqF z^Iv!i=PjHN%y-NBal5KF``=DANqVrJzCObMYsItT*Xljh(_?R@rfWo<5jtH(a}*+V z4{$%KYCK?)%nUmDg~~?tbU@dFDib)Q!V5k`(myETIACbF`N~+FzBl;&_4J0JUD4~e zNl~Q6sAT_R|EkN%y0uH0Nsqi1_js#u4qB*cE&L(4eo65F>kC{}Ow-G&Lf6;ZBpsTK z5sHL4E$oF2&5M$2{S{V;zpz}z*m~>EF&=xYK)*=k)R0_-&T^?&wNk-Fq4Eh{qK9%@ z^U}^%ZCM0Tb`{*PHtw=7bz+cn=}s0+K|(W6SI*4#)Rk%_gY_(!|Fh_@ty<@B9Ph`? zPuW_+T)%CseF3#j30BD#eQ)=iLbyY!m}uK3?#Fo-j+1Q;Rdo&J8(ywB)rq9^_M49z z7=OGvhx>kO&py3zdUmNAeqzSVkQDG!?({*^a4&*{`TF?sXR7UKNcYAF8GgZiJZeKc z3x?F~=qIr6u=&+AnP5c+t+Owt^ zwxb_*pH-oZ|0y5EZ)BKYK-h|8n4Dx-!>=&7IhAXG`DxXD*vaQGT>7wb`mpQFyP9}m z?anH`A!GXQ1OvbIv**hR9(%ecA zRM5WlQ=yqL}m0;ygbf_-D zXb6cz@^5+g*X-CNLXZr}@VOxvH;15c!2&4Jp-!|C>iC5Jr;+gw!2-nshm80*FpZUOKM3`}hLXZ!`Ov`e}&xs`W}6hwpK!?ytCsTO%a z%Fd5qzf4sIYT>!ECp>xC- za;2*XT?6oVk$chX7h;`UrZm^AFaD*7Ccx-4vkiM9*M5J@$x` znn(38>V&d|o6xCG*;O8RH)A>ds%gAK1IshMz^-xb!K@?dVtxDemTH z7(stgaxY8#WlRVatBXSf?j`w%|4WH^a;vMwrv#ZwPA-Yl+g8ywt>MW0-dVqB*cMY^YBx_w?#^7U;5YB(HxVV4nkfZ`uiE;2c+9~lK-4rre+qY z@UHPUeJaDKbm4x6%-47G{ZBQZ%Y2W$!%fI0diyi}|FgMr(Zxs?&eVPOnt|~}g4%;2 zT(z%pago+v8%RD>Pf$ND8u@xJ?zw`}_xBrkHChq>%t?^Dk^h7g5>YXwR`ic3X8!CY|jO7 z(`hsT(}djJMfpQz7SQN%yhHs51;-F!7Wdii0t}45>4j87j0NuI)v>!~x$M?ysnMmOCG_NqZ4 zBYUy~H;IvwjYQD0EttEfO&zIwYa{7eit~G$G}h{7;PC#{kia)7e6bVH=>AJoFuNNB ze2DwP%46Ibu{CVCS^L%naV~iuar0KPoqL&DuJlbW*Lq;LL7Ce|o=w*vcyZPv0_ZY% z8ZIwbHFzB}=+U(M%|HSZp(!Vo4;;2VXrzk^TXt}LZ_~9zJlYy&*>XU7eb{wQ!#m-z z8v10%f_mZ3B>e~L_G2jmkjr~&Q(ilyKEHVkfdePRi`8Tk&&R*Vg$;ud%Uq!G@C?HK#Cce|nkEyd%0{mh0n}L^Wypbiuu!u}-3x!v{-xYT_>%33u{6fa7 znUb`9?H@zV!rqYZ6%RHYfZ!)^b9jG~dXLBmjJa{hmEx1J*g`ZfjCwKm)}}jpSbx8N zqqgRhM%x568H4JeG$zHYu*uZw8{%@K5m1$rh(i_b&G!%vgqAWVxZdrb5cvagnO`%E zur4fVP1IpmLwF9ER1ZtWQm>O=xy8a$g?5J##Xosv9R##jGNG3MeC+l5_7rZPu)JW; zHJ79(gwh{m>flo5iRnKqI!D|&JgiBC!=MhbzL4wQy|)PaN9!d5@*Ba+Wjm-HNAC4O ztxK+-xhCweGMvx!=crm$ocKZE_BDzNL)r&KoG&{Gv20M8y~D!`(rWOq{g}mh4`v+NdI8ex7XoDm~(~~CsmBHz|;$!dyLaIs+ zV~03{-!&#q)sb%06J3VZB8-7DguBa{+MChGE843|5;@gflR22XO~~}#$k?K4vrSUa zn+;qx><#&C5jms-1KXKhGwi);-QopCCa<^K=T!gVPc3oUi zY2j_;G5asm2)>EW8=><=i$Ch|uQE*XyV@K;*yB;ybD5S4p`-8oVg1`xQ$Ktm;ELjN z^tazo3ZQRXej|iOZAekZ=i?oNjwT9>b_IbeR=jfI506Sc1T5n3KedePM9#ZOZf%{3 z!k3%wEvwg5zSowN31=g|VOE=rg9P@?A4f3x^L67LG0lbUtt+{}Rwnc=EchQ2U>z3Kf0;M?)B+(ZvUBk3HG*Xsxt!qFq*WYX9D>w8g24L04}2C74o z&FbH`wVQ_(5nUsGOZ0t&k8Y9-5T3GYhiL0-94KMdE+pj9&TLyr_aU2hddVCR&GCLC zfisK*ST!1b=KGT5%A~j#CAAqyQ_d9`B)^1f7&5tD5~z~;K)Wd+Vz)Tc(kn#Aczj4+ z_eua!r3eNn=CK0(^0@n+f6MFt=l(yMM_<($EEz}~570`` zcBom`Dp6#7^!spT!|OsdHEWS*pzw(nhqDurGx%37VH^IB1r=G8umRUiyaQSMi!6WYW*q{ z!WfnHHtEI7==R2tiVCRwm{Q3&9czgQg|p8(iZ+j^{W^8vYGf@!$N@8+?zvw&$=P4- ztN#xCv8h*@bZ#Ka13Tmrn5A?oDG}0Ev9;jBn!O&GC*rFtXlNF99x9#vKwipfR#fb3 zOo*-KQ%=9Z)wZCvE|hrX2<9jra7sWs;DowQNhn3;uRM%V-}mN_F%I?jd1TI-?>bev z=Xd#53b5#PSGwoMBnRjrrK+7^?>}e{lXDU!^fPBhMx|89izBE+Ciqp|T^yU@M8Uak z?Ck}q{rTVD2=d>QR(GLwKr)}lG}{T^!kG+6f2^#7AE1sND>pN8?Cgis+V|J-*^Bbn zc1ko(ST*l!WaMIbbT2rj{Z>*pSoa)D6A|k6Z9{+_n*sU@KTw|4+qZs&Hgg=ek4qVK zRnj<>5G?Y_cKj@@L$}^Uc}X}EDb%lYvvkOQ(+Q`%Ds|jM${40e&&DN;1U>dSdYIyD zpH%5Xk@9hMi1;Ss=>_`}8vL`-SW!BX_-4LFO(YaDz?BQJGI=korG(-vTxGWt4Nmiia?31snO}Lax@x;{govI zZWF>=tx}GHZ3_LpZ$s*4--t@*rKIeyRJ^93q0lm0Axh1hR21KHDXo;MG20s&n{hu9 zN;SH&lJjRFsJ7bU&_GilZ_c%{p-*gtq*IpKxaUdKw}7(T94g-BaF@-Hc5iROu?bFf z&p3-42`W^GKcInXLir@dt_(s!hhD7W{J*F$P z*KeXhxyvp^6clptG#~3nLJ)UN2(Yi#D?a`nnD?GVQGGd|>08R_7cC{NTfKBmmKq#J zK?C4jdBD93!LJRG2NI4C`91+Pq0)`Cpw7x%YC;DPwmqZxCj)q3wpy?TKmKE$qfD$f zNL1^BN5`Ct^Q&<(N|Y%&T+ONNTaQAqy_uU}Q5EoL@$8=V8=^B`UdxCX*0rUbk8e|= zFIigj1ct33oK0ieOu7)EXHuzJHyyGP+L~;Yj(|8#QroGc8mnG+XVF6o6Hlw&*ErXSl5HCu_dJhj=f0Q=x^2C8 zJb3o)WX#gp5W~OL#7LDS=1*cMgtjaAMm_xruY~>Vo5jc*(iC}D;f!Sv$t#Yl2)@* zzH(>z#kU&Q!mZ@_s+FScwKK55V*;z!o3HV>QTp{$FC4YRAFeu+`GR_%)!F}UEMAr$ z;S4>ywZVk8b*q1y(P#U<(+I(pR!Lm5t0vP{N{D?I--_xhr4E_Q+FI)!vvgP2GL@RA zy9|+%{+2*N=N*U)er#Q7vIA!JTc{z&SGKjo93yC|}9+ zS0YT|Un-_*x3k$AZA}|ZoyE+G_4G{Qbh18;VlKfUKzUcY#X1xjk_Uy$KyPxPj!sTa zd`vg5Ds8^noQ`&3QNq&#kwIH(zy|Fy_U=MSOAm?7pH1ggj?bU49%sg$h-8<|p6@!R zRpAsU=oeRm_(uAwh-5Q4Jm@Fph-iz%H?im<WD+xx?l8XxbeY1Eu=80j{<>l z+pFI2C)r*lRBOMRhSgnxs-_}p11Zv;bd|~8>FZ^=)o&CRcCC|yi=xu=#i4QmC){7w1n0U^CZ);yhfoO+u1X0FS zlYRypcJ^|>2o{5tdnqG;fUn1Gr|-o(Z3ixAl2~FS7ZRT33flu2)pm(^<-xhfGaAb& z+Ls*yE7nkwL1TtT>o_yVr(IfwkkNw{7ShX3WtknL7>(>M6(jm=cp)zTr#bv}-pa_# zjnGN1P z7w4w#k>Z@wtV5H{NcLFIa$Zugvm8QoC}lwI1z8(ZfEFs;_T(S2AJy+Ieyu<*YK6)| z;bVN!cDRwJui&gpPw_fWztLsnf&bC26dwd7HJS9%lLFd5&1)RQv)8T2;38ijhiME) zD*G2@iK1oXc?+L5YZljkFf*TCVi7&bEJu+hqm{jKe6X_q8&2jknKLjzutkdQ^(@|h znz)E9t0~z0z>kZF2!o*pdtE&!eDRQpl~Bl@dcnqZ1V zrpY_~O(_DipP*G8`zUg(%gDW}=y&obV@_8T3vFg5+8k2Pib=&_Nh$GOnqKtfv>(Xi zvmmGx_b8q%u|%!YPF#air%R*eu@16r!E?7LplpvZ%FH1lyy!yyk|39}cf$UAKXO%9 zuUBDUWqr8pQq&qHTPrYS{uXu`X9HT}FX{>{I!;#3>%G=*-;KVpH~`-%^W)n1K{$Mx z#B}F0Es9Xy%$Xp4y{^sfHMX_1!U+)C2Tv6mj z7r1`YsGq#y^0d#yZ5JP;AT zyGZG0Oi84|yBECdP{%(%!<7PUa*@3g)AqImLeragIz0LAOiqnSFlw6^5pvL4_#E4b zRPb!Q^00CGd=6z{Tl}PEvUG{FxpmL;t?f^bLXPH;Cv%^XL4!9!$NxXCD6NqkC>a$ zYPRlbG%fc(jN)367^L98VVg7|a5q=%^r+?86#lGK-NXr7A10Gm2HFn<;azLpIDPkf zkr=xDAKjSA>X88$`!uwxu$k(xKu|<4{=)FdL}Wvv^~R-f|LI|Z`67D4_K2*^)ev!z z8`GCp|Qm23UGe>C8=KAd{6K>z3S(Wg4P5bGDjX$+>X#~f+ozImB$4Q$uMl#@LG zAHi4QC&8oWRrq__2CwqIm$NSwpBbbw^u4lMDUyoyisB?u*8TXYHQ{Z4F+WNAhqccb zuf3ZKX@`lMPUwZ~sJV;fOC?!aTLFDaJR2U31e$CeYDpCda(N_3xbB~}mQslQne z$^C1xjB%x;+PnNkYj012yY&5&5ym{8x~CcgE#}3eztK@UmWFANJz1hv`*gJY_q$Pg zkTu{=FX$N-U8+&A(0oQA~;11P=6O*?FWoY+%YKQuk431 zg4&$+l}R2+6TQErj&*%;@}+_^?{4yiB_7^YNraCdhapIN8WY2=G!*_9SNHu5cNhK( zKheABof|>)=$$(RNwkpYooLaC&U~UrkKT#iqW3y_FCo#z7&ZDZ7{iQt*7@c>>zwEO z1^c(X*K57s*S-wDZ|!;vRG*7;2bW(&b0;kMFrx9rA4HU`3OESf(5%=Kq=^7(54od< z_6hNvjBiS}YJvy;1cp|;fc;DLbPWg16~;CbcC?JkH4*0R872}%hN~MEw}Yb#c04&; z%7RpSx>S$)75W=(9G35s(#dI8owPiQP?PTPH7LJ{Pq@^Vv`BUd{_Vsm^0J&)qkQ9b z?tm+M-&wM}{WbII`=Lm41A#z*S1c%Yyyty?OEXg7a+ivEyh6C^>oqRz+FV+Lq62B) zH!sBwM=pt`9F@6W^BMn$Rp?p=WWhWB3#LpZlZ`O&sgrO+L_9wOi>x_{XK9cn%zSkZ&i@h}SkX zwo1Y5Wt;^t9$JPgAHb6|m+B?c#}Peo+{D0^JyH@%GJBm%NF*uNA)YT-nB~v+>t%{? zLPm$U9$Wo~$)R+!xL39f+zEwl<(>;pgQCLu7d11LL!u(;AH-ZiWIAKJDOc94EbO?_ z2DB+}&0iKxD69C3^ts2q?lT$G__+l03}WE)UiPxmu*Ze+S9h!$48_?#^{xAwz2yr- zxTPO9x(%t5&c*&f8ecY@mnJc_AH7EDbKcB@r1#VVw;UpN4-oE>ls(;{cB2Y+Z1KK* zAqHmuW3>!y96s!NTkK4fDi#wEf%oWt>KwxVInBu^)sVLT;$>0gzfWE~!8QI6_c@IG zEq)r#lcGwo%V+VpkDXPkums~|S*pUmjW5uSL=vrK$WHFNRlnzY9A<=w4GMVA?27Nx zP#jtPOzgDc9#BftK^1s!de8QDzTT7)&DPBL4K{Uf{OEXx0WiR=28i96Qo&{T(KeNN zj#YO};UF1=XOMh%XRF(xtHlOwn;314p|ggatHdDBXJqRsL-?o61lKA);`A)+(Cr%j zy2Xz{F5Fe|()_VpxSxqE!M<KTCose=iao~V3=5Z8Zx~|1$z6ozTwVJ!51PuhT>&ly(rK$RfYn6#u7%W;IqH7 z8g_7H)crfy*W>d(x6i>&A>o`gIfU<`UzPMSk8z=(hUv{oqkcSU-CXTeQF3ugGUW!Ny1Hqqm4 z%#GxcvRPp7&q%yqeobNnJ@z!BMuELR|EsI}U47c%Rel_hO&+4+K3fmLT#ral3C(gp zLJ&iffFm*JlQ;osR50a6%Nl7NY5hy^T9&YtmKMilVNPqmpClw)tB)xbopUopa%;En zqT{JW5tU`VRGVVM&?upYMxBD|2V$m7rXkOP>pwgp=s~@su;B-~rJU-Qa%qWSoJ!|v zeJz_sDVZxtM>)=aFbxWH@O;*5YJ-Olk>>~G04K>765shNX5}aO?22I|XaN}?ZrV_Q zF0uW!9f(+_8H(k1@>r{9Z|HMW=qcVc?I_-ncJclfo2PzZpo*W#O5dAIz+A^*_d~uk z;CQJmeFJBK&D?N#80GNG&n;84dh3%V8C{dyGj012`#QQu3&)>^|IAIV^t%ONF>kg5 z^xBq(k987u5J(hPcBK-=Um(x>7k$Q=Whw;!R-Vs7l;z+)c~RCse8*n8>jbAqc-?@j zk5$)iX^6Cd#lxP&z^GhE&r+axO;2ZQFnm5Z@du5 zsQoT4BCakkbf&^QoN3n(s_@$ZdPoBVc2s5|x+N_T6gpF>)|;;_83w4Z@drW}uAFm| zzuZr6frL_PmCc-VaV&v5kzfOg$M}q1O5oQlQU1rIEK5`e`*<32J0o6xwf?MTc$84U z$mnR;KTZ>yi7aymF6wkbH7sTJJsRVkH76C4uKEQd??8ikxHMWRu^_$w?g2z;==Ww> z{yfFkSa!dtHQ=f{A0M^wuPMtni9hfe9jfBx_0ajuD{zW1ehjX!W!smEy)HwpHVcaA zd>(W2|7b^tYQ=c3EMDRJcTM=-zK9hTIIZ`A_UHF$)w!Iw{!=FF-k_!_|n3ji9XF=Vr{&d&%+=^-ev?4q@h4v}#|`_Kn}VkuNAIWy)g zSgea+>t!KelRm*-f0`H$@O_F5!B2>;@K1_@bPGq{*Kdv@hBE#v!?rt9lOZgFXvc|o zbyQ%ijDP~$0ds)T#|_468p}e%b69|9e9FOyCYS};y)P7PF1ObJ9O(Vru|dBL5uep5 zvzESe7W5lfCPK<@T2H`_&~(nbO6E5t*S1H|oUHeuxMul7w?$CNFH8bnVdm&l=-LNP z={7Jan%Dx4gty&;DG+)6$f+@zZx$s?2USb+u`|<2s7cag@`z{9xXxMFcu5J=L_^HT zUYy=H-aj6B&I~w)t#`EztlOVO2i@{Dm`l=sFRsINY(HL)PfJV=<@yhyp(sK z>Oxg85ufKhL6h#42RZu0hBEG}iq``oiC2IxcLHa&ea6KH^r2`Io z7u^@JN9R5`!+lk?)ci$CXgstG9hY=q-6!?|c=itUVj`i!_t)7$XItKeEk)_SVBp}zLbNQt@<>x( z5I(ZU{(rPa67-+eO8-x6XaC`^)<7Tr)0(>L|JIuKU#&I%)mrI)9m=4$Y0C_wc0WEn zk7=h@=^v+$Bs%}Zo$zkHN9#gVUy zqGUVa86ltOsHiWupiPXHPga(%EPKc-GS$>nF|YDE^NAO;X~RT=y3M~2YUQ)bE|Q#g$A;j2SNn~Rx5BfD{zX& zaCv#dlDLVmsBosn7!avAA(+Lg^ZCY;<*J8pvJxL|onPZD6~+3`PBe7?XuSQR^Zti2 z(T*JT9Sa|g)O#;Ei9YjcDyN_G$3C*twDF?6pCPVU{P@dH?Jq@ldTn6yQ+e zkdUCzm0)>gioD257img(5v_UoaeTwoVSy$xA1=O9=PjdSg?#0(2+`kXZic52DUpo# z@C#PfeYsTSPCvq}xX)Gy~1^?kNFRG(h&c zpeQ*L24zpyVez@h^=-hD{r0dsMe&(%9fyIdF{@>{=bO&a_cTK9`AKMbNgyroLPohz z>svQMm$QudZBciD^obrWZ={`c2)4G}O2D6%d`*?9ru0#H(gd{`->;c}b{o5b`FQ9R zPf4Eye2d6XpM(h}{dnG*SGaETDG&Jav$-clLn1xcmsk7XkF<_Fy)Ep6jPrRy3d{wk zQ&!WAu=z0jxm_fMfR4gY%i6Q%1%BA_n9 zCmbp2nfV6oNhwYUM7SEWpm6q-ZT7YnnnsUj<8or*E)Dobx=@~;lCPeIAsaxzxOyY_ zvs6y+%Xd8_wbx(M&Wb*yM1R{Y`qUUb<`)3F3Uut+vmVeQA8J>4^|M!c6X7NQw!gJX zQB)Cb4J!T`p&uF1P24HGI+ym14M<>9l{(^yL^($#O%k*Eg8taoEUF%_Yu}hjt_V)< zz(dWdeRuUbpDvGQm<=8MlZA}wp*8R=E`>-eU%`hqgtczPMybCX_DwZ0j&7 z=q#^1Hz_MuePQX)VDo%~hQj59reloYhQ`sXu*PGG{Ce3X{}xCJHJFLzss39iyWD?qyEkL8;@d;|pcz0X z2_SFDP(LS}J>1M#HoiHAMcW7su|p~bF9R*jH_E9IC7mN$TzA8^RMPdb#5**g?k&-7 zaicnfhdL`cNLqsdz*%2~KPZTc5nPMk^!=%5aQd!x;_%#$W}8ec zp`o{#@X~xDpV&dj^pRZIT$u1#NJQ|^;(S97@EiXw%?6lEM)S?TIQB1SbUkMmI`EFq ziVO_+DP~>&{gqKcJqfXz(zO;4xp#q$CjRPPriGQav4aO}zKw-{g^vUXs`R)6+nmz# z2yqugnPBkI@Mir8x@Klcy@%(4(G14JbqBB0jL<>*&>u31lWj1DMK zJR6fpREPe7@=5RbjP9XQ-2rjykUG*-`H?^x*+U2V}eJKr1dSTSWHp*!^5lHU#H(Ly&C zTxdEQv4REMu`hek&+#Suyr>fs6-bmO<{~Z6w8QoSaTE9XJbU@OfD|i8akxh|S-p-z zB=$D=Fy!+w^kUqu10-Bn&sLuwhI9*+5&>DQbKky>4{Thi? z0{hrbT3orA8=kTvcR{1-w~9sv7U6IilwjdpxME#_jS_%H65R$G$n8&EWBKCSpvztB zi@`TGeQc7Z88!+xY@`E?nXLU(mLCSa(9P$9>Hr?+MZ%6DQL0b8`FPr3?bJ;*|szoEp&6(PL7YwC`_Zr2JG>I=f0th2=Wo7l3=s#{?E zbwmpA0l6s?D}-X;!mP{iUT~dlr2nSc(cIgZWy9hjU1@u4h&$f2qN=Ip6U4 z!E~4)8$Vgz2&*3)#9WLlcJ)U(kcL;({pS|S;wxno}2B9HC zF%=PsttcS?G11hKp!PYLb?!6u(8-#+zqW10{ zXPf|Ikb@G)0gz2J1t&kE=EUTb0bPF(7ngd&d&t#%u-XHv8NPLCD67ByFb=N}Xnfgw zAJ;yZeU=PcE9@*R_~>3r!XndHL0wIyLv9i#S z^~8b8JKJVfz7e!Yg6F%Khtn%u*uCMkb#JlAw4r3;ApG(ODyMMR5MT|6GV3xC=Ngf0 zA^8yXHH2^D&^fJLLzlO$vGTk1!A_yqrQDZjzPm)yZC$SLtit(VhQ9PPqN!_^dd+H@ z`$aeeA5nu0G5y*>c2U2WTwBz4-3FW~`zkf+1#7HP>-FJ>90ZJpcz#|*@Qw%0BQvr@GEJb0@XtTe-$NXcaOuysXy4Yle`5Nn_wOr1F z+RqWISKx1-2p-vG{y+W#r~LJo)wloSFPosh{t68G&tEDL|M{ye_OHK;|JEio|JEiK zq)SKbdMKyhM!+ZPD6jFeL&VforL#(b!(60r#^tC#1>l;RfLYIfl& z)W*%4qpOg|{kS7Kn(@G&x>Wg1%AL@jcriJw>~`LQNzl7X8fExcuU$ypAX`zdo!-Vf zp3qE+_~N|6;CYqbaC;5f)B5gFPY(R;nRzJmEB`aL-oyyt+2Hp8;_CI?Kf>KnHY4Dz z{c9HSpOatZ^}?2t%ATkj*aTJ+izS+fv+in-hSk1*-w|C+hRH5q0I6^lm%L}bk?8ct zrYearIFTmaHo7b%*=G0C54TBxJeX%VOs5zq_-Umi#ri0wa^x>^Cb3)PL>_K_SgOW8r0txn(0RdJM?bud0iSi3@^$V zUijC1`>6#7p=;n2xpeDAoeUDiR)7Pu*wH`|7gNrf6b=Ul8tx)hn!R+!mN!+%M~5BU z*FCx00lki;ZYgQ6>;vuFk8ntW%;moK{q5HY`M%zRrx?efOcdw3j+whZt>5Vvnq@?K z+PglbnY}*eEyncU8>V~ab-dS-nZ`zANZ+ZB6a6}~YQHX{YpsUC29qRGypd+Vc^a27 z=0?X>?Tnq}>G;X&m4GCy{bs2I)e~Ze;ETL|WYItUUsvcBmxVc!zqS<`hlx* zuBWo!U$={s{0Wcxnu4{gdz&T~Qh%z_6Paf7CTv_YNDS>XBRNT-Iv=bfeu!zxFLi26 z<4r0{C6ufDDH^p@5K}ywpPWWV`C>4B=2sPs@_aSZp)h8rif<~xep%-26+Zu6MgG@O z*Mt~M$zzE+${)@6vRBeC;y~P_dMy@JdaekptK4$-E|K_1q;`+4^DwN$+hf&-+LB&_ z-L#uJDg{fjD*h`EtK3wrFx};;>B4QPls*bc6M~9JPVrl-6Qn>gz4CWpd0lCh{L=6u zz8-m6g25JAvZcO@{a;X2CUi*o`{eu`!3I?R2Z`n@LGtMVto;|Ml|EJ6d>ItUX-}PB zce2Quzs{z%y{wK}D`wJTpZPj%)%{G2FGKu{)VzW56SLSez3)!l&(c$p-)2peO-pv) zFT(>+d+0kw@HyiCJ|E&;aNzfpGUlnbzPbrFs|v;>>${ ztDe~|y9R^f!mVq5ZG9p*roQrrnna>rk(e0S&_tb6gW9N$$MU5d>~LANp`)PtEHJXc zqRW)0XRwScBiAjo!n}~I=F{Pj%wc%exs^M~$^Ab%Lfvz<`qkm zM@bgmpGU6soZrtwXy_Pv=H?&MCb1#LH*{Cd(;YVTiqhSFS}1({!uDtCUm)Pc1x%G{ z*4@@rX4<`gyi}Q9CkI)6_LpXXoJsl09E(muOow2$=DG54PQqM{OGiqAwpZd(% zwgbJB20(mku(wHkdELH*sO@?ukCCGLhF%S&4Te=RFiCxsAD>V^UK377wJsa&9AIEs zn(EOfa*=5zEPQ5oaSM5W>H|Dnr!~{NOjPy9E(`xV!_Ag zCPzLUBxJ)KWF4t$$d~|p{1=S(`Rihp%~n5h$P2&3(y4+XR(lq5zto?wL|=Ek|3DV4 ziY668M&9qB;s2Z%79tL;>`L6BdmvLNqL$biT^<9wqW1YkSC3gYbd-r%m01tUuF*MS3u=EH zp}uTFcQNFnI9*B_dvVY5?E?Zv`UNcjK&&i?uv7%|u=9 z8t4lSJs4OEEQ#8c&O-NGQ$4{D_bfb1St(pHq#m7HVJUWQRG$hc{kwqlGK8e>7_D$q z;t#Gn6450<%yrL-=qqQE34|#C4H2j6`ql?27Q5c{y~NS2JVUy6HGGlR!{~rSCSjUU zeu;D_urh?bA`Fr{c~ZF2Ks?*n8d-=ZGjQ6C3|N=_t!%adNnp7kvIba_cN$rHEnjcV z#RVu*AFNlbMj)SZX}v(>5~_SrGH8w(LB1(Jt);&4v-?BQwkf<=k72m;hz5l4SbDXD-&0;M?fM%227hA6by!1q|%k!~7)lPub z?FsR4I-|3dC%Vg2oqF)jp8qzu?zk}aAXz0tky!~~U|wry^cB;M8o55O0J0Jv6pu;5 zSs*ZUQ}Bbt@Vg*c>(v7C2Kc4oiohL1Ugd96%#k1YX0H?hEyA)^&XnB@y!sjnTNLAk zTf)Db6^1b;Hg=0~$RM?V% zB4#}vd7o^E<~6JLtH33b6wM@pFMsj?T!gg#4K}wIa8crUL^f|ioRlRyL|cwhfbTIr zJOm&;B=3HrrbKRoJ$W|_MevZ_AG4LN?a4g*qEs0zAdycGX~%6^o3kg%6~tae5m@X!OuzmM}st}e>EtW`kw}Ga{tqyP0`<{ zS?_Ner}{r>98Fq~|FSprn23|9jww6e!m~))#V-*@Wj@B8<%H%hV;1#RZJeFVCyow- zW)I-#hb6u53td@h6gIm7-{U&3J9Z@x)xIm_luD-WB*B9V&ygUdgS@$WFHsC-l#gyk z2EXZ@46XYoO~tL1z)9VuX)%PT&ciirh&<5jey#cHx|BOWNO9MHhg5y((^!vhB56Ip z>-oEdcj;6LX)g}nOuVw&5HGU}73I+B+~qB+@Abl?T6dj&JUOghyDwU{&T6MiHI{pkC=;EA*fh8k)TacL zk9(D0o7Oz7ZQImH>#jxon=AaMio~gC81%%qjv7ygg7J=+YK_=?mMSn`Q2zJ(XKq4f zzu&CbAj6I$z)vVeBV#=Wo!>>CC_{H`paWSRJ8^?YG*LSm%C!m@f8#&BYR}gH5zkm} zH;mxY9?ue#zld)bE#|Yl^(psA*rS~W+8WUe+eWR0nYJ?G$J`CaTn7t`rI|u-CzD)2>9+Ac%6}DPmTqM?kR!4 z8tbASdvPok*qvfn_Q%>T`_O9BJTVR~XduU}FGqRAB2%l-euX%hxK7Iml3fh)y&>(i z(jC97{u;5v-paxOVx?}hdOy6T&e5g7EOH$BB`S!6oAk@GBi6>>yfxZlS;c5y5#6aH{u6C&v3|9z$QrPKlJ5#E?|zzDqBb6R6X*&#$2l z=8qSqD&HsMk0wwu=Lj~V^YAzPccc6>OWEUtG@MVuWLXz_{qDKg`)7pyZP^!rxv-MM zBIC&Cqo1R8n=#^oTkL&=D?2Ie{JaIv+_fnPqDb=3{ ziPV2LeE4mX=c2C&`S#2B;gUQg@`z7W3^Qp>j@;$0w+>Tr(*_mL1_xSE1 z!tW*L-qFtKB^tZAC8p%p0?hu?v)T2T#t<2nX$OFaNvl0SHFBRHYrzXE#gc&Dl=a79 z&FA|h+z(tt4wihVJig$yWf&vx@Z6I=l1TZVH^YXfC$#Wi>igXvixNB+T*1%R?Ss%A zKi2lw?V4xr#(I1-v%KCr2D}_co4=};cyNjKeA59rOH29w-pmo+4v2hTW57F2FXEL1 zt74|oX(XG^i+g}(J^zXYhrFhSw@zkGNZ0a%-}|}s=^Mf)eQZnyG?P)P<(VXVZ>h=< zQf)kaRBz_mf7@n3oFA$U)N8QjDzCoIH-3ePKXtMm{~A+%A;hk-9FW20^XdGM-fd%; zTt6_6cHyLM&Rq<33T#$DXt{F}Q);FUt_PFr_MsD_kr(ZL^%wp{$noG@5eS8wAN4vJ z_fN6jVeeCmx&0bt)=45>3tGKv>v6w(<-h{M*HUvEtCBX|3S+~n?{ffy5S9h7=#(80TAwu?OX`YU@Nd{e0$xHq#?t`iwRQCRVA_ z-=)D;9Zyeb3z~jsD!g8SXjHbaFk)=~y$*UzyoC2lm~=ejb3E5$t~jhWTAUKr|L%1^ z_8}a_h!6dOjf)Fmup!Rq=jBEJS6YTug`N5J80WvVO!U9BEWj*XpRwQ5H!DpwmfGwQ zwonrj$NnQkaj`|wR~%biDm>~Ey$Ln%9)d3foK60rI4=e!(!|vWp3n=$&Bo6scu~J% zQ2VnpxDao)AYl8;_(2woNJ34WAIMC37kFE2!YvdO6cnbYT8V7EZQ+;)1O_8i!GIG7 zw4LO>L@hyW8+5BAPFzYd;?O?W=R@;iQ(IEI-B1h{`;8&(a%}Epks*(Ha1{ML= z!mRD+3lOGVd__ry%}oSN;3f;;)+qs{p*%j`R);7h+MFWA*Zd*SNFMva8a^i3VRUtJ zZ8+01)4&3S_N% zprEi5A?2}q{swk*eAeVh$6^pWtU-m=%-D!PYU(|#s?uZSM9~~d5p!EW=y#i2t+?A> zCPUkXwsroNRsX3sk=@e~Jlnx|qoEO1hPJEYmm9taTH5a?EQVb zlh9ZlN~mgpoyRa*2RhURVBOj@FrkVtT+@)BAf~?CKN2l-WP(xes*UTVuPrISHqylR zdl$wsW|d8Ezg%}OvpoVn$vinL*e9&d-XU7gZw+l`WE3fEdAQ^EYm0-QlXj8tTy2Dk z(bC&0sU(>WrbAU2J>?IB*`9?YTPCd0o;wu!Ne#BMsSVM+p&PsagjWaHYHs`Hf{U2p zui=DZ2`7|r^g|*eYhn=9!^F4ZcP?xXO^@XrcOILPKHF0DLmB8pCw3zlC6wP99gnb2ZNqIcXwBrpe+)cFY7Wd(ug)|J26!@9< z2T5a~IllhWrr>uQNpQd;YMG=yl&U**i=&XmBY#HdHv3pnx?7GER9;B5etp@)>z&E& zCfi7`G%OH-Ery1&D0&%Duss5=pW_9o8xJjaCu|wAUH}he71;^5oyx*10t@(Oxw8l7 zTlYO|0!fZsjBY3Yepm~yNsXkIw0$9)1;9{FJa(MFGn&>3)H#nxk!5vLr_|MRw| zn#k@8xtz;qXGj;B<)@}$$k3HR$cn9s!WvJ;Y1lbeAC@UuBB$lyohB>W=$)9?=8KTh z(=qLQa)5G~KjFajY|MY^qoh?&ljyp3Be?yBL>_X%DBtt&EDxd-iujr2x|pStGiQ}T zyr0PnhiWAl!%hV(S2WOKqvU`dj>f^dSl3ITx^rC}F4W>S_X^L=Q!{Xo@OPJl$kR-Q z!3AWmx&+HMD)fQ25|Tzy2wAISZ>i57yN8ql#^T$!v`oXV%=V`vy(1 zPS43Bso<5^8{_iB7dAnMw~MdKR+56(OJHW#PX70Pmi=g`ZxPTi10`(|i;?X$45Vqg_fzeUZ4`m|p^}Ew6iB9i#gxbcn>af)TMCPY9DsNVA!vtL>vk4dmdH>uV}jn`RH9rf2@zZcmTw`YABA4 z6|8@AEmiCl@u22h+hD)L0d)+yq~Q>;uuF8|$-()H1(aMHi50l?BCJ^CmsFE;w(@lQ z@^gkd%#on9yr05}?bJDOw>tZmnzLRqu<^u2PVP?%NWkGg@*jamZ6FEkO`4e-*Uor+ zR{;Ao1SG+>l*Tk<;;;!>0~S#V-g5UW@Y_%qJLAs|;Ctm*t+u^4V#X+W zE8|WWR{aHxOy&z#Eb2@!HXebJ!2eZd9HIVS8{X;ln4>slSOyo!<5?%HMe@*!jNmVK zc+|9yER_DAG!4}MUz;)g|M;n^>aU*`s{Zp+Zqt8$0(Ja7e&Vm6dj4xOy1soMO%o+j zt{Y3CrI98YoA6qEyM@DQei$d6pc}D?>w9kgL<$R+!npF^&$zyHD|TR`XI4MTvj$!? zykKxvc_~^|tY~7J`f*X$v{s}XFC{&u3ZhE9c7Kctn9CMB=$Vu0=Bdv1SoRpO9(nkl zFa!VYvS?~#0hms5hfvh^DHr3%y*7I{yQ0YiO!~pP4~2x%1N=dqNv~5GjX!u%Azex5 zu5$=YlgEmtnJ<%a9E}PGP6#;l8j@99)#}vBY$Zxdf+X|Tf2;Y{ONyf27G0MPwrJzV z(kRpNZJ<_KLwYQS)t==0jyDR{rCm=s>=~D}l2&CFoZ1%RoIs(l@HJ%NMB>p!uLY12`j{m42*3tFp)3>}Rp}fT(W)7Vu>wf7r*-P3mec`z3=}h($#$(Ab6Q_E zjJeoH-vGl3G^;g7et|ESG-;5UwLb4k>_)#tNu4=nQI(I}WMm+XO+a=_+X6pQva0rm z83ortb#@oFqzcOtJGi(XHGO>lNaV>or*bp#mB9WkgG*nj6d=!kh;B-3M*rQ_8< zU4BN%;XLIuUbQ{?C1J0MOmtf4fp%}tLWPrDQUWMKYKbv9=kjK4Os}tMNt55M!a_Jz zgeCMEN5)PKgY!a$qC*mrQ~|`cUm*R7r$|u$YvuTGtFnSA7N4GLT|qXw72_waWq~?0 zx=>pC5GQL72U198=%-Gbt`=ePc}QTMPLhOatBQ?dA-Zr-R_%s{R1gWgfSXwiA;YfnMqN+ zs(cGfx6D1;@=+I>ts}iEuv9nf9PG;xze{>`(&*TEne;T#_d6Hrmx=6AiZtAu(sYiC zDnuh6qZbqB#xn6vuM=shkf5rj-L)hF2F8c4v5iTlCsaias4$LVeq=Q7fU<~h)uN-P zd-5@L9MG0@%iB|&CKt1r+I`PgT<_|7r!tyE-)w6jlbh4F3cS|JO=QYFJ)~DvmA~Ys z^$G=gn|;{yvl014iSXpTOOyZpPSoiw(*JpN!*SYR}348sQ>1xUw|N| zH-Ey0VkOKYW3Ysms7oMH=@TzsI}tAk_q2uxjCw!Xs=HtJ%-bx%87*py7F|$faBY~( z`}UET8Y}MC2Dx3`Oe({vR720Nf1_9X6_Y}1H(pF1({@UErx;_o{5rVq6}5U*o;-z&x6bZ1 za|}W1a1?D!)!0)?HjNKa#~$)2l^^weUQjl2ab)tuiIWoaxYGVfr0`cT+xuA5|K-I$ zKe?@Z2{-sDZU>(};Ugdc^FF5*hH0hrKW_im_RBbV3}xL3b-~L&p2OA6r!!U~fG<@y z)~YyAigJdq|xc znZBY}ni<+VN`a4H+6QE9q<(c0aFb-**ke4_&xhX#;^BFp5vJty?Nd}-ovYBGLH7i+ zkN5O}^_YvW(tU5HUqRratYVXoVqi)Lz2TjQ_Dy5gw8o2;Xzlcp`oa7Sf~pFo<LJQ27kwro;8d0s5q%A~kI@cPc*CK_Olwx@qu%2OOkPZ$L$ZL8$@w;kZL5*{F9t3F zDS}9`KuBb-jTp2#M_al9#gOMDLzM*)ga#J;RyN`!5n%jV>e zn)-r@N$Ec`J?hMf^4hM={ky}dqFF_l%EY6&yMcoc{_dv*d;PBY>n7TYRuHbCJ0Z!95d$?^b34%!)P|2 zg)^7k^0^FY0R%pYL-$s{UN=5DkW7<(7Y)TUcNWof%BNe4x)93GTfoACAVEIy9GV^RKHWp(n_kyuI*0H&Ndm3I47RrnV zqpMxNXdLTYUer_ER|v@BpI7(dL<7cn2Zi!DL9SWkmak`r4`lpQ@t7BHsC@~b!N*gy z;}ypJz-<>Z%kU{3CN@~bWCr%0d(ImnUjSL8+qdcQGcPqcNooNU<|xgF{YQfg>Wabb zGLOL4+2r^IjuAn$Gagh2?p5MZ*sPc6mNV#+{oE{XAb<4}%|$?UH;mYPr$IoU?wBTU zChByd1=>JUl7*22TlgQWxmzdgmBD;wW*UGN@Vo9XSim?or4=0NBE4>|%X#DeeE;3b z(Z?q)GFG_fWIM>b%~^Q63&bwIP;B}JVf(KSwTJJz!qb`tb}(AHp3q~5sa)o3Ab9G z5Aj!$4*pGh_FVJxRNRKO6I!UYzDVh{o2hkK1(`s8{euY2T%ltD`Phb>)af0A{oS}F z%Dc|wq~cR=bg#)c`1Kq%sAiDW7hw39=ZhYrqA;4M9 zI7Zy(A*M8v<=(pgTp}<+l50qheZV@;TtKc;5~KK>YcIU50xC zXYIv*TyEWoHV@Pj?>U5K+J$<_uFZb9M9wVf58Cx5c)(_rjdCoPRj|=-(_BN@Xjmh{ zlP(mUFIH$Tc-HPkv=F5S2)42e*rmHMUo8Jctvg?{mB}P z@1`A5hP({!>krh`?EwJE{omEJh3?cP0epEu(Foj~w-1VaPgW8yL>CFC79<3{@}?|L`$6_ZH>UbYEAjQLM6Mn$NkCg!pvzLClgwtSb01EWxemT=B5gpX%(_?b7 z{4qD_<4bq>cUYD_I}c{p96P6m{~uR({S{^0G>%`9P7$O-Nofh`5R?{B5Ts;jq`Tvi zE&&ng5|M7{+NDFfI~D|_Sr*t`mR-K*x%GMO^Zon-GuKbooY$Fo&sYg#H%Z?wZgk=t zE|t1=jj>$Q-KJI1cWjJOhq%R|#>BPRKs}(-oL04Ni zs8^8IA2@JjP%#y1Wd&z@Q`4XktP#oF`0ic*dRCx?f95LtueoNs{+jEk>z}zAhyR)D z^~B$b9QxN>UjH!{XKJ9E!Q8`s=9gMr#%g#G<}uIjbKPfoz$^TWM?sjUhA`%7j4eko z>U^z!q7@MWditE`KCk)Hmw7x9cT4D~9eV18McBSQdHwCl)0nR`AMSsU+4@K>St_=c zi>~|KF^XYuJTtM*Ch@nWDuzkb zC*BG;*2+CRq0+n@*1U){b!S@JMy@;<+*eY4qpG?gnnoaQG%!)yaofPznqsr=UvMK} z(d7kouzPIN`FJmJFyGd1bqJAREl1-DUo7|Bcu04(KyLt8Ev5^+r6s9*{zu#dc^qVM zS#g`h!OXpHx=jjoi*yUB{#@lqQXb*>#$p~IEZ|h8OMB!s_vF*LQ}5vg6*Po#6or~Zn4zmup4 zGNMUr?6}UGtgblIHCL10hE0vIOkAF|U|xK^KK=fq0p23Ey!|de&?&o|&P9UMZ)8$z zxfYS5s*x~Q`yj~$kL5Tj;3ey2OWrQ5RK=xDwf9kyXRz!#hDT!?_C!(hYf*C{@M`ss zuz$5hFMRnFn>PBg>X2aPLhkN}=nIt_>463p_n#qDC65{QUh)#}t4n#2kTJs5ui=$KNO(K*>ukED*J?Fkvj0lR7=x<}kn^YPo8 zPO1r8Qz&IsNYEf7JJXANcQGwrfXTmKSgY~UynY+Yn27BRQn5jfPOU!_FUQZHF=cKz zAxR7LHIX-UE+gb`wBk>h5vU5d{o}1<8(8pU@T}U>`-rFC`irHAiMzx3lh#V6L&p|a zoW+o0Z$R*i#B<+{>le*rJ^Sx_hHarI&OOV``ZCwmtqDC5ay<*G5vK}N0E;Zg+x30z zmt>h1_zF;7?`QVIBYrRFYu=7z@(0N;KGh49JbX=G=%Q>$`?9p-&99v-U3_hxozXA4 z(w7Of`wkIJ3%?AXiD^WWvj7i&)u^h_dlW`h??i=*l8MsLS09VrV2U3XXMyz|$yQ5W zg@{y2TDAm67wl;EGPcI`qI-7Vj{JBKUz3;mV;$MIow(nam=UmoG|`@+3nuYUy^LB<%{8Mp zN|@`{<4dshGf`>EYx4xcB9%A4oNSd->>J*2D2r)b|FL#hB==fZ_d3&vu6jN5&G=V& z({R@8(Gk}BHV?xOphBt-TTc($*3rRv2z9QM;kE}SD-H(^2iU8PTde1X_q_In4+@}; z{3BH_x4BaV>aLMjk9aRe0+k|Q?bhj;{knDiP>bOV9D9FPnGpfwjdEeB>BLY|#vR7PnKPdrY~u+xv?N^wy5-L+ z$yZO+w7zt=#N=H!{2tt5=Dfn~AWC-e_|QZ0;uzoX@|ynWoR%zSFj?9W38;9{RT9gS z2YMNIO`|C2-Yv%FgVx&IiKpyysVsIVo;4q~+KSTVd=_gf|0D$81rr;Z+S3wmCZu+tnxFmEGT(e$^0Rt zQ4II-9_F=6bt2GWp+qpBnH|9cq+NpS;&T^ zpZb80q4aH_XpUw->h#U;E?FQceHXLcK5A>qxo{1Mx$ zAr!9J`*(e{C?Y+xkv9!zaZ0OuN@A;PloSid!S3D!;3l~BDBM5Bm8ksrZL+wBq4a5D zv+hwJYPRM#!uK)>^rR12CCbUeu3wE>%j=t z1L5rftqnbE=-a!u%Z1g{dj*nGBt z>2(MKm7X{$-ZZ`->ad;0TQt|8y9t3y`y~T~^8Ck;9f!c!#Tw{jhwhX?e%bwWvyGYg zXcQSPg9XG#PRi78nenQOC#>YQm8MCjIjjiXYzV_<`vfwKtKQhYK-u_aO&viD(-nW4~ouR6@_Z>zhteJnA+8PHA& zc^^VzHg`^!hUdW3cSv?h-_4kUlD|aU&0FyFb*wc5(1_Z-=s*iT0nHp*dxg5{JV{r+ zoAvM_RO$hq;pxqHZnwVTnc9nMR~)`NY-M3v(Uz<&gJW-T@cW?&7W=S4tS&xeob=?CN~*}Ri*st`;Yb%w3~;Kq_?N0Adq(tmC1 zBi?(=!Z5V($M7}VE}~L9vBHw8j-qr@jfr$f$Gj4wPkeZ2| zU1W&&<#|vkF?b-TM0+{nrfJZ-cI|ZE#tRki;$l%{2&L$?dikIYWr^x zomWV#!KEN@%TvBHw4fjwcYTw6i^u&Q+VRPH#x1xNvA<{8aGxax=CNB`lMH0+z4ise?%MLTP=(;I3q^bf8aH zGz+pjRy3(6(NU-Oyz=E@Q!*?%YVbZNm6I$Uf7(0kZ&vOs{5A%@luC;m?RSn* z3+Np0OK-WAXQUILT=2|#N(uK0@ulc6*P=LT%7Nq`=%M6Ieo#dP*~>8tMs0~lmE%Tw_oM|kyGgFdvtdf{=#W&;UApR zHvhrNW%qA=2LFXq-T$uMF#MnMWt^iV1HWxVxM#(fp9?U!4@FGf2B zJi78S7uDqckUHL_Cr!ac?^Q&fGeET5O!U|A*H)cGY zya4bQaPy@8IHwLX)7UkbV8i+yY3a_F)XB4FCqrBPTy}I@mIfMZWj2Ddb*=~^gXSSI z5(W=FFIyjsm)qRjKiO=w=8peqjYDj0%Q<`_{$h8d-ey)KGbGS@*JtQQ!$=>P+Y>(% zsm(1Asm-P$MTFE~I~O2I*V;N0i5-!85D3`B4wKP<9|>DEq!`W&&q55_k_CUJy%nw- z&>B&ou6EI#GFvEZsj+Z{*LLc0R}7jTy=DcGA!bDTtm~e|^W~YTYJww39+1kVB&mP17QN<>cir0X-D1S*jXPh4YE9ges{OqM&fXq+VX%JCyDQ< z?fYxFmo~S=sWyB1y2TE!o=g!|PSF9=-(i286SUxROs$(x^Pl5MgWf8uGno=yn`M;v zod#y-TclZgj2+T*T`V7-!eX>b-`V-+jW=-Q_9sj4T_2EkZdv$LL^p51&Po_4q6P9H zpQd0rQ$#Kzk|Dz*!-A}r$|17t7}D!G9mfWBy<&B>yx}pil%`0U@u!)_4jw@3v~`K? z7i@ugFD(}&=b8U)?eLm$$^cG^-W#rC3e4!?IaP44jyG${H(`TQuaq-L_RYw2uw|qA zlyQo$ht~C|2+FTxn4ni{K2f|Z*ZQYr*6<&Qv9vpl!u*fhmnk3fZ-N+hxUr?_qmI&5 z3t~~suL-mD`h}u%WJP8aXIOz>YM#`>`*lHE*GrE_$Kw%4PVMQcYx6KiLb34Hs(Xbn%s0@_M`5jYBJOBZyDa_Jr|}ZE6`5HGbh@#XnG*$Z!!9%satL8Fi#AQU<=tR_F7 zWs@oxS%h5op+NN0K5ZSH5EC z_FPUHamyQr5?62XLUQZ-3r!JbhYHsU(GS*t{oMV}Wa0npMrV53lE!BKHwc#;;gDw))R;}FL)ul8uGU+Ha*8d*H`OO|)C&*LZ~ zgu{?(?)L==n2Vj{S#)k+KNF!p&jy3aW z0s^z$9>ZS00}S}{%kJj}@x0?{E1NRlTwZe!xQRNl@;k~UJNuZ{nzWo75}`2uub@O3PnNb~2`xM>>1!Q(wwHlxS- z&xSBPd-HItUSm>=S+N2Ff#tS)3K%U*A@|soYX|LkfZBiqhL%fX!kb@TT{p{_@41;4 zh+bK3?ch$dtwzBx7q)DTCYxJPcDPl!&a4uZrAG9-Pv3|-_}iPSfjYLmdHxR z^Y3WF6*`}>Uh0S>M#XE{c1@!&o*K2_U#@q6kmDZaMNa;Q;QiGkc*dS!bnpN^Zy#1N zlB)-(;FiLJPaJEif?=wiQxneh0h^L*s>Z?~18=IFV|!zPf%jnVP+F7mkE&?1DE8D( zd`&Ws*SF=!^BOM+enT7<2vs{PLf_>t5@@2SAh!}ZcD7jKq88S}37YO{)Y@@+9Tu3^ zyDIgyXFz*uxRYX~5I4GwngN%WC&i`^4#dE|+6;4EVt?&mf`)oKW7V103_54}zs z*yci5VVPJ#Ie^o?m!b6Sh5d`l8ek(Y4h|dR4Nv!b+k4qQ(R0=Axd}vabY*S?bmM1_ zd1&>o=HJyM z@(OKD$X>8Q$enyK={vxJigix{!k~A-Wu9%Lzw59C^y4z&(>XSEfZ3JoI_6TLwrn8a za$=Vqgb0)FD>_W|hxya#b?+s31x<_^SMFWTvY>VsjCzF9Q>|{!oOO@}QVOo0e6>|p zABo&eoItZ+YZXZXnTA3Ok7#<-nR}5zBqv*ldR^6L10^R=f53a%RmFUAqW?O}bIg;qj3pV-uy<($x@rRwA8~9knlMNwqvUaxh6*0Uf@=8Vd z{SXCAP_ojfgv2cuQ(zTk+PKaI<4edmgAp6(;)A4skf8uG;IrGXpSvIe)k1Fg3~UEC|RibL754;U4^{>)C;4 zP5Q^qb;%mMaoL&!fgAaT8C#ZXxgUs7iZn1@_Lw0K!5Rq9m54mlYPO)Z_x^@XRH8?S z(`LY@+ZLX?@{y!$LDPrO&C*Z}GRUa-{Q zg?OGJ$6(N)6@QPiq|hgEfalqCmzx0Nb1cps>!kl@$Z!-7HyxIImma?>>%SeZiIcx@ z+dKIOw_3zsxZML|?xly`;Bq(PVDA0K!@jXOw)vr648K#jYAhx6!R`bS}0 zrF)4?xarSd-sNldVZeP(aBqnT_di#&@9B#Di~BL}zj0-m|HggG{4Xvu*Wb8A2K;|N zjrH%1@(+BtH264K{Qt>;b1j+Xo;so38XU1I-I z#LE3kVf5l}il)D`E&EH`xxm-@3lF<2%7wKiubaj);(GpkHX{O&!GxK$UVlL&q|*??0yx!OejHx2d*v}s&+osq8I&?! zTPHo@D0X3;ka|zPvQS>y?5wVEc_i7HSK+__308wfKZrCh>REbEynS0-`%GKeQNPu6 zQ#tF{YQB)+G^D2PFl_u=Guanm^&`=;(Vu@j_yw(Cq1iKzx8jD$&Syi+x%Fhy>T%-> zFln^v0q~o2-v72difMB3_imj>NqU?}s?Gx6O@ZF-61~VVS=eY*6Kik{_2quqU;0*Sne|Iu zol~*2QsgZcN`JQn-RG66pz}t`4`gvZNUUr^y#Xn?-N}@Z$q3mH)BM46A{5ifklipCM}=AF zH^O)Rr;WR?giz{c6>s7G-rYPfoq3(nI0P)X_v=s*>&33N!1yqR`vt!f#T$s^E5J8H zvy9x{n|wk{rtip;&gl3XA%Vac)FG^Q7#L*Ei}xbLvX2%FJhctUDAS2lKO_;1(}rCf9Y;`fgirm!i8@XWau(=UDa=;E?#9Xo&+Q| z&<6}{%{h?>Pkdi!P&@r8DZ66(CUZ=cQ@q)B>33d}nwi7n#;l_j$NT7(ZZD&~0p)}# zN3rYE)+li_(iWVwMabIdY-T{v;l$)t^`rcgMUPg{v-qSV4a=*ezSnWpi0QL z)slC@!A$iqGrm-@`i*tG(W#-6hbIusxm*mT6}QW)RhM)~-V3NUc66)KEs@h01pk0K z&#HYE6LD?xtvVO3o{3kx@^G#BwMmy6(7fxa@Oik&It_T7@r4I@lhqf76Wb#EVBb!b zUv{>=C&rX={Zk_Tj0FI=S&bg_)SI|&iCChLx^hP3mSlvkOr$lrx@ZCq<{b8w zraP`MEKWsnM84a7VbX13GV1dtRJJ?f8O}yU7-)i)l!K6_lE$=CQ1Yf}G_dB$5o?Wy z)7Nz9i=dajsLvu|8riE5`tJZdtlYC*i+kxOR3;uP;}mlRpOaRg1YM&<s{kvK@|bB9Z-yM=H*E^35kBZ7(>gi2=P8s^TZ}7J*H@ zY%2vtlNJG?y@vU{Eu7UwndJ0u$fa(HL=h=Z{mCrEO)NyVdp@d zjS=1i0$-|@e`tN;7s^FZiar|0iIvhE8Y{w8lJ*nkCtT*P{BoA&e7Y)#h5r|O)!IZE zfA*R%jY8(m_$QX;g&Y}?mcp0lT!# zP_lLWc*M@@=E_zb8pE(a`Nlr%8`GPol(f}P;?>?+n7=hhmgC@E(%ochWzTN;^n^Ap z)6#?a>GaF&Ovw7i2q;Kl0-ooY=Q-Yy^F zMf&zT^POsO!=JLrG;=};ZkPAxO`3Xe;rc>yxFw5fJ3TitBjVjea)ZzY>`ZOJoRnXY z9>G!YE^BQo7O%z2i>Cwni>PI{P_pImnX_RBHUyXtVX%<%2Y!X_2xQj&`wz*jiJIshQ+3G;i{3QXzD-{|3 zbifr6_%0~liHmlZq6&3iTl00dML90A#<{Ha!kE5NizfnOcirWxopB&|q~P>Z^nh{! zZ75ELe!QuS>r}4W>%WewwZAn&eh#II7} z>AOeKetwNargD&GMM;JD0lTg(RPql4fdBq({C0Ms&sKo);hheP*(VpS3nAq0?tx}? zp)5UE(l6`h)B%+ncNc#rlgvYI7WiswoN|=>g6nhTJ79415UYDxlvRgL4-X7hTM>m8 z8Vi!$0^8|WbZiBrq8ejV0mp>H85sfSpOvv8z-a^#8(#BlYmS?>JAEM};))5_JrBud z8+myXO1>dczv>5>-{DIJI(=z6X45YXjhET-D7T0QZL6XyaKIl+7y*JqTe7aWygI`T zk9(qiC*7H~(fK${F^0r@w(Y&wHZ*RaDaQ-e2MYwzW`VdumD^apqX4SoCH`lj2xn{T zI>_vs+|DV+ZJ#2CbtBi2k`_2s&{wlBJi`)ph~i}DeCMOqiV+I(#|3}L!P{Ux2uEAb zJnO;Ep4LP(J2ZD6*ad;sbIyGGxcgxk2DrV{7NG9(QT0d$x=j%X)udwWiE20NvL``d zS+5v2I4TE)gNcJ41>@huE+ zlml7{!2~Y;0VHUhpkPfn-38)9G$VgwU1_vVmX9h;qx7!^0bg z^*4qRBUI#ubBP$E4Pn-C@q}K)rxxtwq((w5b_tX)fC1Vb>*L5sr9Ik^9>zCF&+iW4 zT;D?cKGBf)&B(3X<6$Iw1J{=anvXaAeRYK=HsYE0&*JWV5IUlnfNL*@$C&WYyUH}- z!A?}LW@kUtLy?vgd@T;9?7J^yZ~H+8R-FtdjKh(KZ)_y*fJV8%p$)6wh%JlGp%$%1!iH`(b{P z9M`RLU%~x%Y`Ql*sS&6kw7V;JH6s2XS|NYoZlKO+WJT3{&qha6*hrIf*I~u`&0quR zvyajD;5EXI$7lIx@ zf10ee?H7gk>Dw+S;1eA_@7GlyY-)kNlb4ibkgpPifD@c;K6xMMCLdkspZ9c8j>ugi zm**_K(W`^y*wHaDXvEABnVTA)j8dis%ILiPn_qe!eP zJoU|4Rb>+Rtx`oyfg_Eo%?biYB2|Xx%iRRuaRUk4!Bif<}b6@tc9*EuP^utF{ zQwt_i^oCydn!kfzv#NZDvN1vX1q^-rvX3HW<5vLbAb1yLVR_7`)dP!4WFg^>JiD2y zUuA;1qM6L=U+39z9IoAO)@|+8hST%}5_fD;IAwx3G9&%Y$TeFI#UagLh<;A!bqRh> zZ$K5jSXg6xwFMA^m>8)R_J9T%DahgE`<8~Ix$-04F=tX#EN{t19>=2Vkq2}G^+-p~ zfeM64i;5qnqddi}l774A>h=!P2YG!HP26;F-#v!(*JXDJr8xf!S*HG%k#}eA6O|Nf zjZb+=WFb^$x;`-6Nqu+6UiAO*>zw8P0xc`*38Eb%AYL>r z-R+-qZiseyyc;HC<(gYcUe9@(oU=G=GrRMv)b%UnYwqo6NzGr^T2mFGmct@)#f-MF z1J?T5?CJhOYZii4+FJV}yk%ngWd^B(@QSHGd)3_q@}U*xOkHU=$UKer0HCq#Ycd0m zea2o?Ayr{I(h0r%gO56k-VT+07W)JK>5F!jlW zOVDG`uzazi(a>$VuO28(XW}D1qbQkH6a$OEbZxx|?N!B+Q%dh^ck#LMT(K|RCE5C7 zL1{PRJa^~j)Y3Qz+@KOdO6e_cuziu=QU#AlJszKZBC(mNz6lPeO#=h+xEQ7`2>!hc z*u~BZh}Nr8@$>FbHT)S8wLdlH*YPubS9wtE$xP7t`^XZ6dJd$_d@U(o(FYH_OvT@3 zJWSKftKs4BAt)&A>eI*~OI!HxsAC8fz9k6KI%L$OG4$&F%l-3&?|zdYucnANrTh;C zjt_-sAkF%({G1=^8y5kRtSmx#R|9dYGE8$AXbfZ6O|tr;`hdaS(9(9yPx+u7*w9AI3!q2E6^*Oh(uHKWNZXA zqX<*?3^aCCr_0F!j^BB#B)9uISC`Mj$fIAM(rRR>KW$gV5CtEPc~A(2V5h@3YR)&o zsRV^Wt50S26Fcnh4RT>h^Qe9~ozhuHQwb00^!q_(%bM~}|F#`PztBZnXSxk$2l$vD!9 zXEH3A`*Qw9EV20X+lpukEb)~~iJeEa)ICQnUeEd92r&2yU(NS2<|NA?9kD|e)s%|3 z?-O!N?b+RiK(Wi?(Gd#v9otbM=a;e)|e>wBFJ1 zEhnLpALk#|t1a;sDC^a}koPqYnqi2uI{vV{-Sr8~_hLbu(v{)WTSZa@o(J~lXlAO^ z%$sxL-tOuLc^v}VCWE|8O+bJ7d$J!=SbFYT$D8u~0wCZUNxPdLlUF3{(`n4Idn_Xn zt-D4=Z&M?Urni8J*@Cd&nTZqCiao>8;HY;7!H9Q1RaG6~lrR-fn`UIclw-mBTH`;| zi?I;|S6eOFg|C@CsSh3#P`#_NOHQd5z+wbm`QMcss0oqwFZWuw-m1 z?aF!NnGVDkwTirH=+gbMz)$noVwdfzq3q1GPK`eY9r|I(fennv;vRkP-S?;0{eYI- z-P%k+LBBWqz1F9;9Ob&^FD+EjD43Jr20{P*H{i6A$blnfZ1(S}1^zXGnzW!bz8_hC zh|7e)x(DLrUpjIticT)=II=qe%6>M!_~{zR(YeedE-?3U|INH;Qjv;EgGt8Z*+~+X z!ga-mgv#VU{G&}*F~{X4aNRAp;RfEd==SXMkeR*rR-BoHZ5_zfy;4@vfUeP`{O5_ zmd5k`$U{Ucc2nqd0f9Kf1lMc?zlR)7Pft&mPn^E_L-&X7=6_h|yk@n_b-g<&2lU-8 zsC{xhQF|RPUgaEavv5n4uhU9=D|YJGVsT4^l$pbm4C)c8J(R5vaL0C$i9+S!D<6c$ zHY7?FA75>lnSZ)`$9uUcXJ$8vo$I-?*!w~F#;^CKr08*rX^u`-5-*=+8J&dL_XO~=e~ zevf8NWcPGXyGi0VvtaVuD9nS9h$2k3F@+iBo)8x9@Oxo0o&46kkx^S}>t2#fJ+Yt@ zaVW@PzNZzPTI-?tNY?-JrRk(JnfrbK7v~B;)q?;yqlM)J(t&ea1Z=+-e5KfN zoaAwF+xQanc-(g z+tnF6L7Ni~qV1zV3kgL!<_fjy?*V%^7G?NBLbxkB9nDKjB9Hwa7M7*L7TVG=R z2g2`9xoYu~zKLQYjBK>RJpN?Q?N5u*qK;ll7<4ewsCMdxY0-m&v}uym@+RvKUaePW z;Eu0b=MgE|y%Q&IwT9|Y|DjVM%^H>6UC38Zzuz<}PY{w6WGf^M+|gVaxtxch>;m~2 z*D?0g9cC5uD78UNZ`0@iDHEHnZWdlYZ}^xnT$El=DR|fS90gBbN%^eP#pQ}Tk=TR! zLVO1UMwu(1$Sq3AiG5$cD^$Kk?v=KmzKYCI-6>Ot

M%xzT;o*%KUEe7de>_r2P@ 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

*r1)2f~m)0 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 diff --git a/interface/resources/avatar/animations/sitting_idle_once_shakelegs.fbx b/interface/resources/avatar/animations/sitting_idle_once_shakelegs.fbx index a020e20044568844385c43f97703cbd6818435ef..2a6db1cf3ff3d27ab324959ec70f3e6207d222b1 100644 GIT binary patch literal 308816 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 -rJsSGB%BikCmhi~Z}Knm)|R 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

wA+e5UT|vtkNA8+`ToDtqa||YJv^nIb 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¨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 K=Non`x#1sVhJKd- From 4173cc46e273da0f65ce789f454521340016e540 Mon Sep 17 00:00:00 2001 From: Rebecca Stankus Date: Wed, 6 Nov 2019 14:11:17 -0800 Subject: [PATCH 151/547] Made web entities not grabbable by default --- scripts/system/create/edit.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/system/create/edit.js b/scripts/system/create/edit.js index c57f4bae50..a036cf384d 100644 --- a/scripts/system/create/edit.js +++ b/scripts/system/create/edit.js @@ -561,7 +561,8 @@ var toolBar = (function () { if (!properties.grab) { properties.grab = {}; if (Menu.isOptionChecked(MENU_CREATE_ENTITIES_GRABBABLE) && - !(properties.type === "Zone" || properties.type === "Light" || properties.type === "ParticleEffect")) { + !(properties.type === "Zone" || properties.type === "Light" + || properties.type === "ParticleEffect" || properties.type === "Web")) { properties.grab.grabbable = true; } else { properties.grab.grabbable = false; From 894b4127b4ea1434ca67e19e2664c5ecae9d77cf Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 6 Nov 2019 14:35:20 -0800 Subject: [PATCH 152/547] modifying screenshare API for viewer --- .../ScreenshareScriptingInterface.cpp | 54 ++++++++++--------- .../scripting/ScreenshareScriptingInterface.h | 3 +- screenshare/src/index.html | 2 +- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 85024049a6..c165ae4937 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -25,27 +25,29 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { stopScreenshare(); } -void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) { +void ScreenshareScriptingInterface::startScreenshare(const bool& isPresenter) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( this, "startScreenshare", - Q_ARG(const QString&, roomName) + Q_ARG(const bool&, isPresenter) ); return; } - if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { + if (isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { qDebug() << "Screenshare process already running. Aborting..."; return; } - _screenshareProcess.reset(new QProcess(this)); + if (isPresenter) { + _screenshareProcess.reset(new QProcess(this)); - QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); - if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { - qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; - return; + QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); + if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { + qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; + return; + } } QUuid currentDomainID = DependencyManager::get()->getDomainID(); @@ -59,23 +61,27 @@ void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) { QString apiKey = ""; QString sessionID = ""; - QStringList arguments; - arguments << "--token=" + token; - arguments << "--apiKey=" + apiKey; - arguments << "--sessionID=" + sessionID; + if (isPresenter) { + QStringList arguments; + arguments << "--token=" + token; + arguments << "--apiKey=" + apiKey; + arguments << "--sessionID=" + sessionID; + + connect(_screenshareProcess.get(), &QProcess::errorOccurred, + [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); + connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); + connect(_screenshareProcess.get(), &QProcess::stateChanged, + [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); + connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), + [=](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + emit screenshareStopped(); + }); - connect(_screenshareProcess.get(), &QProcess::errorOccurred, - [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); - connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(_screenshareProcess.get(), &QProcess::stateChanged, - [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); - connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), - [=](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); - }); - - _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); + _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); + } else { + + } }; void ScreenshareScriptingInterface::stopScreenshare() { diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 9cbb1bbdb3..f369f39f26 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -14,11 +14,12 @@ public: ScreenshareScriptingInterface(); ~ScreenshareScriptingInterface(); - Q_INVOKABLE void startScreenshare(const QString& roomName); + Q_INVOKABLE void startScreenshare(const bool& isPresenter); Q_INVOKABLE void stopScreenshare(); signals: void screenshareStopped(); + void startScreenshareViewer(); private: #if DEV_BUILD diff --git a/screenshare/src/index.html b/screenshare/src/index.html index 60adf5f3ce..40611dbe04 100644 --- a/screenshare/src/index.html +++ b/screenshare/src/index.html @@ -37,7 +37,7 @@ Are you sure you'd like to share Content Name?

- Others will be able to everything contained within this view. + Others will be able to see everything contained within this view.

From a41ae3daa921beb07aa9996396812ae3a2f8c248 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 6 Nov 2019 15:45:48 -0800 Subject: [PATCH 153/547] Move the local web entity logic to c++ - might not be working --- .../ScreenshareScriptingInterface.cpp | 67 ++++++++++++++++++- .../scripting/ScreenshareScriptingInterface.h | 3 +- 2 files changed, 66 insertions(+), 4 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index c165ae4937..f9a269728a 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -11,11 +11,13 @@ #include #include +#include #include #include #include +#include "EntityScriptingInterface.h" #include "ScreenshareScriptingInterface.h" ScreenshareScriptingInterface::ScreenshareScriptingInterface() { @@ -25,7 +27,11 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { stopScreenshare(); } -void ScreenshareScriptingInterface::startScreenshare(const bool& isPresenter) { +static const EntityTypes::EntityType LOCAL_SCREENSHARE_WEB_ENTITY_TYPE = EntityTypes::Web; +static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; +static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, 0.0f, 0.1f); +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://s3.amazonaws.com/hifi-content/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; +void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( @@ -79,9 +85,57 @@ void ScreenshareScriptingInterface::startScreenshare(const bool& isPresenter) { }); _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); - } else { - } + + if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + return; + } + + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + EntityItemProperties localScreenshareWebEntityProps; + localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); + localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); + localScreenshareWebEntityProps.setLocalPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); + localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); + localScreenshareWebEntityProps.setParentID(smartboardEntityID); + + EntityPropertyFlags desiredSmartboardProperties; + desiredSmartboardProperties += PROP_POSITION; + desiredSmartboardProperties += PROP_DIMENSIONS; + EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); + + localScreenshareWebEntityProps.setPosition(smartboardProps.getPosition()); + localScreenshareWebEntityProps.setDimensions(smartboardProps.getDimensions()); + + _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, "local"); + + QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, [&](const QUuid& entityID, const QVariant& message) { + if (entityID == _screenshareViewerLocalWebEntityUUID) { + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + QJsonDocument jsonMessage = QJsonDocument::fromVariant(message); + QJsonObject jsonObject = jsonMessage.object(); + + if (jsonObject["type"] == "eventbridge_ready") { + QJsonObject responseObject; + responseObject.insert("type", "receiveConnectionInfo"); + QJsonObject responseObjectData; + responseObjectData.insert("token", token); + responseObjectData.insert("projectAPIKey", apiKey); + responseObjectData.insert("sessionID", sessionID); + responseObject.insert("data", responseObjectData); + + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); + } + } + }); }; void ScreenshareScriptingInterface::stopScreenshare() { @@ -93,4 +147,11 @@ void ScreenshareScriptingInterface::stopScreenshare() { if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { _screenshareProcess->terminate(); } + + if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + auto esi = DependencyManager::get(); + if (esi) { + esi->deleteEntity(_screenshareViewerLocalWebEntityUUID); + } + } } diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index f369f39f26..671390932f 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -14,7 +14,7 @@ public: ScreenshareScriptingInterface(); ~ScreenshareScriptingInterface(); - Q_INVOKABLE void startScreenshare(const bool& isPresenter); + Q_INVOKABLE void startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter = false); Q_INVOKABLE void stopScreenshare(); signals: @@ -43,6 +43,7 @@ private: #endif std::unique_ptr _screenshareProcess{ nullptr }; + QUuid _screenshareViewerLocalWebEntityUUID; }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file From c8464786e7f3de0ac8143b7767d0b97a5b4c5f0d Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 6 Nov 2019 17:16:21 -0800 Subject: [PATCH 154/547] Steps closer... --- interface/resources/qml/Web3DSurface.qml | 2 ++ .../ScreenshareScriptingInterface.cpp | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/interface/resources/qml/Web3DSurface.qml b/interface/resources/qml/Web3DSurface.qml index 3340226761..d58bcd2eba 100644 --- a/interface/resources/qml/Web3DSurface.qml +++ b/interface/resources/qml/Web3DSurface.qml @@ -49,4 +49,6 @@ Item { Component.onCompleted: { load(root.url, root.scriptUrl); } + + signal sendToScript(var message); } diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index f9a269728a..33a473142c 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -30,12 +30,14 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { static const EntityTypes::EntityType LOCAL_SCREENSHARE_WEB_ENTITY_TYPE = EntityTypes::Web; static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, 0.0f, 0.1f); -static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://s3.amazonaws.com/hifi-content/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html?1"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. QMetaObject::invokeMethod( this, "startScreenshare", + Q_ARG(const QUuid&, screenshareZoneID), + Q_ARG(const QUuid&, smartboardEntityID), Q_ARG(const bool&, isPresenter) ); return; @@ -111,10 +113,13 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon localScreenshareWebEntityProps.setPosition(smartboardProps.getPosition()); localScreenshareWebEntityProps.setDimensions(smartboardProps.getDimensions()); - _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, "local"); + QString hostType = "local"; + _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, [&](const QUuid& entityID, const QVariant& message) { if (entityID == _screenshareViewerLocalWebEntityUUID) { + qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; + auto esi = DependencyManager::get(); if (!esi) { return; @@ -123,15 +128,26 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QJsonDocument jsonMessage = QJsonDocument::fromVariant(message); QJsonObject jsonObject = jsonMessage.object(); - if (jsonObject["type"] == "eventbridge_ready") { + qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message << "`jsonMessage`:" << jsonMessage; + + if (jsonObject["app"] != "screenshare") { + return; + } + + qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; + + if (jsonObject["method"] == "eventBridgeReady") { QJsonObject responseObject; - responseObject.insert("type", "receiveConnectionInfo"); + responseObject.insert("app", "screenshare"); + responseObject.insert("method", "receiveConnectionInfo"); QJsonObject responseObjectData; responseObjectData.insert("token", token); responseObjectData.insert("projectAPIKey", apiKey); responseObjectData.insert("sessionID", sessionID); responseObject.insert("data", responseObjectData); + qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" << responseObject.toVariantMap(); + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); } } @@ -154,4 +170,5 @@ void ScreenshareScriptingInterface::stopScreenshare() { esi->deleteEntity(_screenshareViewerLocalWebEntityUUID); } } + _screenshareViewerLocalWebEntityUUID = "{00000000-0000-0000-0000-000000000000}"; } From 73202b9caffc7c511c65f3e09782427ee9d1d588 Mon Sep 17 00:00:00 2001 From: dooglifeSF <41022919+dooglifeSF@users.noreply.github.com> Date: Thu, 7 Nov 2019 09:52:26 -0800 Subject: [PATCH 155/547] Different settle transition depending on momentum --- .../avatar/animations/settle_to_idle.fbx | Bin 0 -> 535072 bytes .../animations/settle_to_idle_small.fbx | Bin 535072 -> 398128 bytes .../resources/avatar/avatar-animation.json | 122 +++++++++++++++++- libraries/animation/src/Rig.cpp | 36 +++++- libraries/animation/src/Rig.h | 1 + 5 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 interface/resources/avatar/animations/settle_to_idle.fbx diff --git a/interface/resources/avatar/animations/settle_to_idle.fbx b/interface/resources/avatar/animations/settle_to_idle.fbx new file mode 100644 index 0000000000000000000000000000000000000000..7b801d2c54a99ae8a90e4d753c97633a209370b5 GIT binary patch literal 535072 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 Rad6y)v)NA!pY?pU{|9soKYaiI literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/settle_to_idle_small.fbx b/interface/resources/avatar/animations/settle_to_idle_small.fbx index 9161a95d9552a7caa76902498d86f4d2f6b920c9..fe10293b81eeb5a6ecbc0bdb00c863d91f74dc29 100644 GIT binary patch literal 398128 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 Qjp5PH(?0Asy+oS-2kd{TnE(I) literal 535072 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 z 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 fO)B>P%s+(3HQ$Vv4qf?U{Ml1EkByjJA; MOVE_ENTER_SPEED_THRESHOLD) { @@ -1437,17 +1438,35 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos //stategraph vars based on input const float INPUT_DEADZONE_THRESHOLD = 0.05f; const float SLOW_SPEED_THRESHOLD = 1.5f; + const float HAS_MOMENTUM_THRESHOLD = 2.2f; + const float RESET_MOMENTUM_THRESHOLD = 0.05f; if (fabsf(_previousControllerParameters.inputX) <= INPUT_DEADZONE_THRESHOLD && fabsf(_previousControllerParameters.inputZ) <= INPUT_DEADZONE_THRESHOLD) { // no WASD input if (fabsf(forwardSpeed) <= SLOW_SPEED_THRESHOLD && fabsf(lateralSpeed) <= SLOW_SPEED_THRESHOLD) { + + //reset this when stopped + if (fabsf(forwardSpeed) <= RESET_MOMENTUM_THRESHOLD && + fabsf(lateralSpeed) <= RESET_MOMENTUM_THRESHOLD) { + _isMovingWithMomentum = false; + } + + _animVars.set("isInputForward", false); _animVars.set("isInputBackward", false); _animVars.set("isInputRight", false); _animVars.set("isInputLeft", false); - _animVars.set("isNotInput", true); - _animVars.set("isNotInputSlow", true); + _animVars.set("isNotInput", true); + + if (_isMovingWithMomentum) { + _animVars.set("isNotInputSlow", true); + _animVars.set("isNotInputNoMomentum", false); + } else { + _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", true); + } + } else { _animVars.set("isInputForward", false); @@ -1456,8 +1475,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputLeft", false); _animVars.set("isNotInput", true); _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", false); } } else if (fabsf(_previousControllerParameters.inputZ) >= fabsf(_previousControllerParameters.inputX)) { + if (fabsf(forwardSpeed) > HAS_MOMENTUM_THRESHOLD) { + _isMovingWithMomentum = true; + } + if (_previousControllerParameters.inputZ > 0.0f) { // forward _animVars.set("isInputForward", true); @@ -1466,6 +1490,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputLeft", false); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", false); } else { // backward _animVars.set("isInputForward", false); @@ -1474,8 +1499,13 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputLeft", false); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", false); } } else { + if (fabsf(lateralSpeed) > HAS_MOMENTUM_THRESHOLD) { + _isMovingWithMomentum = true; + } + if (_previousControllerParameters.inputX > 0.0f) { // right _animVars.set("isInputForward", false); @@ -1484,6 +1514,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputLeft", false); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", false); } else { // left _animVars.set("isInputForward", false); @@ -1492,6 +1523,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputLeft", true); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); + _animVars.set("isNotInputNoMomentum", false); } } diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index b2b9ecd5b4..60a2602316 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -330,6 +330,7 @@ protected: glm::vec3 _lastForward; glm::vec3 _lastPosition; glm::vec3 _lastVelocity; + bool _isMovingWithMomentum{ false }; QUrl _animGraphURL; std::shared_ptr _animNode; From 86b62f921d40c45790f0646a63df16b708010b2c Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Thu, 7 Nov 2019 14:01:50 -0800 Subject: [PATCH 156/547] Now that avatars can potentially have their own custom pipeline, shadow pass needs to support it --- libraries/render-utils/src/RenderShadowTask.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/RenderShadowTask.cpp b/libraries/render-utils/src/RenderShadowTask.cpp index 0d0b776074..22decb47a7 100755 --- a/libraries/render-utils/src/RenderShadowTask.cpp +++ b/libraries/render-utils/src/RenderShadowTask.cpp @@ -257,7 +257,9 @@ void RenderShadowMap::run(const render::RenderContextPointer& renderContext, con ShapeKey::Builder(), ShapeKey::Builder().withFade(), ShapeKey::Builder().withDeformed(), ShapeKey::Builder().withDeformed().withFade(), ShapeKey::Builder().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withFade(), - ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade() + ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade(), + ShapeKey::Builder().withDeformed().withOwnPipeline(), ShapeKey::Builder().withDeformed().withOwnPipeline().withFade(), + ShapeKey::Builder().withDeformed().withDualQuatSkinned().withOwnPipeline(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withOwnPipeline().withFade(), }; std::vector> sortedShapeKeys(keys.size()); From fea65133b4031cbeec1312c8f2ce7bce3fa5b323 Mon Sep 17 00:00:00 2001 From: Nex-Pro Date: Fri, 8 Nov 2019 12:51:00 +0000 Subject: [PATCH 157/547] Update WindowScriptingInterface.h replace "model" with "modal" --- interface/src/scripting/WindowScriptingInterface.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/WindowScriptingInterface.h b/interface/src/scripting/WindowScriptingInterface.h index 341b012c2d..f3e9dea45f 100644 --- a/interface/src/scripting/WindowScriptingInterface.h +++ b/interface/src/scripting/WindowScriptingInterface.h @@ -206,7 +206,7 @@ public slots: void browseAsync(const QString& title = "", const QString& directory = "", const QString& nameFilter = ""); /**jsdoc - * Prompts the user to specify the path and name of a file to save to. Displays a model dialog that navigates the directory + * Prompts the user to specify the path and name of a file to save to. Displays a modal dialog that navigates the directory * tree and allows the user to type in a file name. * @function Window.save * @param {string} [title=""] - The title to display at the top of the dialog. @@ -222,7 +222,7 @@ public slots: QScriptValue save(const QString& title = "", const QString& directory = "", const QString& nameFilter = ""); /**jsdoc - * Prompts the user to specify the path and name of a file to save to. Displays a non-model dialog that navigates the + * Prompts the user to specify the path and name of a file to save to. Displays a non-modal dialog that navigates the * directory tree and allows the user to type in a file name. A {@link Window.saveFileChanged|saveFileChanged} signal is * emitted when a file is specified; no signal is emitted if the user cancels the dialog. * @function Window.saveAsync From 1013497bcb58f848deaa3591b6e475a78afdd8a9 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 8 Nov 2019 16:38:07 +0100 Subject: [PATCH 158/547] Fixes the hand controllers in the latest Oculus Quest version --- android/apps/questInterface/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/android/apps/questInterface/src/main/AndroidManifest.xml b/android/apps/questInterface/src/main/AndroidManifest.xml index a5de47bdce..27cc18072b 100644 --- a/android/apps/questInterface/src/main/AndroidManifest.xml +++ b/android/apps/questInterface/src/main/AndroidManifest.xml @@ -15,6 +15,7 @@ + Date: Fri, 8 Nov 2019 10:04:34 -0800 Subject: [PATCH 159/547] Fix unused variables/implicit type conversions --- .../src/RenderableModelEntityItem.cpp | 30 ++----------------- libraries/physics/src/ShapeFactory.cpp | 4 +-- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index c87d24c425..4de092c7fd 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -357,7 +357,6 @@ bool RenderableModelEntityItem::isReadyToComputeShape() const { void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { const uint32_t TRIANGLE_STRIDE = 3; - const uint32_t QUAD_STRIDE = 4; ShapeType type = getShapeType(); @@ -439,8 +438,8 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { // multiply each point by scale before handing the point-set off to the physics engine. // also determine the extents of the collision model. glm::vec3 registrationOffset = dimensions * (ENTITY_ITEM_DEFAULT_REGISTRATION_POINT - getRegistrationPoint()); - for (int32_t i = 0; i < pointCollection.size(); i++) { - for (int32_t j = 0; j < pointCollection[i].size(); j++) { + for (size_t i = 0; i < pointCollection.size(); i++) { + for (size_t j = 0; j < pointCollection[i].size(); j++) { // back compensate for registration so we can apply that offset to the shapeInfo later pointCollection[i][j] = scaleToFit * (pointCollection[i][j] + model->getOffset()) - registrationOffset; } @@ -454,32 +453,9 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { model->updateGeometry(); // compute meshPart local transforms - QVector localTransforms; const HFMModel& hfmModel = model->getHFMModel(); - uint32_t numHFMShapes = (uint32_t)hfmModel.shapes.size(); - localTransforms.reserve(numHFMShapes); glm::vec3 dimensions = getScaledDimensions(); glm::mat4 invRegistraionOffset = glm::translate(dimensions * (getRegistrationPoint() - ENTITY_ITEM_DEFAULT_REGISTRATION_POINT)); - for (uint32_t s = 0; s < numHFMShapes; s++) { - const HFMShape& shape = hfmModel.shapes[s]; - if (shape.joint != hfm::UNDEFINED_KEY) { - auto jointMatrix = model->getRig().getJointTransform(shape.joint); - // we backtranslate by the registration offset so we can apply that offset to the shapeInfo later - if (shape.skinDeformer != hfm::UNDEFINED_KEY) { - const auto& skinDeformer = hfmModel.skinDeformers[shape.skinDeformer]; - glm::mat4 inverseBindMatrix; - if (!skinDeformer.clusters.empty()) { - const auto& cluster = skinDeformer.clusters.back(); - inverseBindMatrix = cluster.inverseBindMatrix; - } - localTransforms.push_back(invRegistraionOffset * jointMatrix * inverseBindMatrix); - } else { - localTransforms.push_back(invRegistraionOffset * jointMatrix); - } - } else { - localTransforms.push_back(invRegistraionOffset); - } - } ShapeInfo::TriangleIndices& triangleIndices = shapeInfo.getTriangleIndices(); triangleIndices.clear(); @@ -664,7 +640,7 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { } } for (auto points : pointCollection) { - for (int32_t i = 0; i < points.size(); ++i) { + for (size_t i = 0; i < points.size(); ++i) { points[i] = (points[i] * scaleToFit); } } diff --git a/libraries/physics/src/ShapeFactory.cpp b/libraries/physics/src/ShapeFactory.cpp index 569ddb52ce..43c6fc27dc 100644 --- a/libraries/physics/src/ShapeFactory.cpp +++ b/libraries/physics/src/ShapeFactory.cpp @@ -109,7 +109,7 @@ btConvexHullShape* createConvexHull(const ShapeInfo::PointList& points) { glm::vec3 center = points[0]; glm::vec3 maxCorner = center; glm::vec3 minCorner = center; - for (int i = 1; i < points.size(); i++) { + for (size_t i = 1; i < points.size(); i++) { center += points[i]; maxCorner = glm::max(maxCorner, points[i]); minCorner = glm::min(minCorner, points[i]); @@ -149,7 +149,7 @@ btConvexHullShape* createConvexHull(const ShapeInfo::PointList& points) { // add the points, correcting for margin glm::vec3 relativeScale = (diagonal - glm::vec3(2.0f * margin)) / diagonal; glm::vec3 correctedPoint; - for (int i = 0; i < points.size(); ++i) { + for (size_t i = 0; i < points.size(); ++i) { correctedPoint = (points[i] - center) * relativeScale + center; hull->addPoint(btVector3(correctedPoint[0], correctedPoint[1], correctedPoint[2]), false); } From 8175b9486f69f82950e9a328c3830f1708975428 Mon Sep 17 00:00:00 2001 From: Sam Gateau Date: Fri, 8 Nov 2019 11:18:02 -0800 Subject: [PATCH 160/547] Fix crash when highlighting custom pipeline shapes --- libraries/render-utils/src/HighlightEffect.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp index 701036e66e..5a8b09b018 100644 --- a/libraries/render-utils/src/HighlightEffect.cpp +++ b/libraries/render-utils/src/HighlightEffect.cpp @@ -192,7 +192,9 @@ void DrawHighlightMask::run(const render::RenderContextPointer& renderContext, c ShapeKey::Builder(), ShapeKey::Builder().withFade(), ShapeKey::Builder().withDeformed(), ShapeKey::Builder().withDeformed().withFade(), ShapeKey::Builder().withDeformed().withDualQuatSkinned(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withFade(), - ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade() + ShapeKey::Builder().withOwnPipeline(), ShapeKey::Builder().withOwnPipeline().withFade(), + ShapeKey::Builder().withDeformed().withOwnPipeline(), ShapeKey::Builder().withDeformed().withOwnPipeline().withFade(), + ShapeKey::Builder().withDeformed().withDualQuatSkinned().withOwnPipeline(), ShapeKey::Builder().withDeformed().withDualQuatSkinned().withOwnPipeline().withFade(), }; std::vector> sortedShapeKeys(keys.size()); From 02045a9fdf9e031f7c5d8bc80d98ab6227d7199e Mon Sep 17 00:00:00 2001 From: dooglifeSF <41022919+dooglifeSF@users.noreply.github.com> Date: Fri, 8 Nov 2019 11:57:06 -0800 Subject: [PATCH 161/547] add random versions of full sized settle --- .../avatar/animations/settle_to_idle02.fbx | Bin 0 -> 233392 bytes .../avatar/animations/settle_to_idle03.fbx | Bin 0 -> 254384 bytes .../avatar/animations/settle_to_idle04.fbx | Bin 0 -> 282656 bytes .../resources/avatar/avatar-animation.json | 121 +++++++++++++++++- 4 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 interface/resources/avatar/animations/settle_to_idle02.fbx create mode 100644 interface/resources/avatar/animations/settle_to_idle03.fbx create mode 100644 interface/resources/avatar/animations/settle_to_idle04.fbx diff --git a/interface/resources/avatar/animations/settle_to_idle02.fbx b/interface/resources/avatar/animations/settle_to_idle02.fbx new file mode 100644 index 0000000000000000000000000000000000000000..3ebb81260ead368d9d0c99eb523e786b35416953 GIT binary patch literal 233392 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%0Dks) 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 C_^_S; literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/settle_to_idle03.fbx b/interface/resources/avatar/animations/settle_to_idle03.fbx new file mode 100644 index 0000000000000000000000000000000000000000..e8de60d95672c5a7100dabfbfff809b79a3f5fc8 GIT binary patch literal 254384 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 literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/settle_to_idle04.fbx b/interface/resources/avatar/animations/settle_to_idle04.fbx new file mode 100644 index 0000000000000000000000000000000000000000..275cb1e97fb9c46e0e890528e1f1d0b77311a2d9 GIT binary patch literal 282656 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 V*UtX_uhYwayLj`D3)bJ? Date: Fri, 8 Nov 2019 13:46:38 -0800 Subject: [PATCH 162/547] Simplify boolean statements, revise several settle anims --- .../avatar/animations/settle_to_idle02.fbx | Bin 233392 -> 233376 bytes .../avatar/animations/settle_to_idle03.fbx | Bin 254384 -> 275808 bytes .../avatar/animations/settle_to_idle04.fbx | Bin 282656 -> 282352 bytes .../animations/settle_to_idle_small.fbx | Bin 398128 -> 431040 bytes .../resources/avatar/avatar-animation.json | 2 +- libraries/animation/src/Rig.cpp | 18 ++++++++++-------- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/interface/resources/avatar/animations/settle_to_idle02.fbx b/interface/resources/avatar/animations/settle_to_idle02.fbx index 3ebb81260ead368d9d0c99eb523e786b35416953..be7429091d1ffac226788393a97e583549ad7e68 100644 GIT binary patch literal 233376 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
@@ -17,7 +17,7 @@ - + @@ -41,10 +41,10 @@

-
+
Yes, share this content
-
+
No, don't share this content
button_selection @@ -52,4 +52,4 @@ - \ No newline at end of file + diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 289a4c0ae3..5028ed80fd 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -26,8 +26,8 @@ function createWindow(){ const zoomFactor = 1.0; window = new BrowserWindow({ backgroundColor: "#000000", - width: 1280 * zoomFactor, - height: 720 * zoomFactor, + width: 940 * zoomFactor, + height: 660 * zoomFactor, center: true, frame: true, useContentSize: true, @@ -53,4 +53,4 @@ app.on('ready', function() { createWindow(); console.log("sending info"); window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)) -}); \ No newline at end of file +}); diff --git a/screenshare/src/styles.css b/screenshare/src/styles.css index 14e0c9d424..c40fdbe024 100644 --- a/screenshare/src/styles.css +++ b/screenshare/src/styles.css @@ -6,14 +6,8 @@ body { /* -webkit-align-items: center; */ /* -webkit-flex-direction: column; */ font-family: "Graphik"; - margin: 0px; - + margin: 0px 22px 10px 22px; } -html::-webkit-scrollbar { - overflow: scroll; - overflow-x: hidden; - width: 0px; -} #confirmation_screen { /* background-color: orange; */ @@ -25,7 +19,7 @@ html::-webkit-scrollbar { } #confirmation_text { - margin-top: 25px; + margin-top: 65px; font-size: 25px; line-height: 25px; } @@ -44,9 +38,39 @@ html::-webkit-scrollbar { flex-direction: column; } +.button_confirmation { + margin: 4px; + cursor: pointer; + width: 250px; + height: 75px; + line-height: 75px; + text-align: center; + vertical-align: middle; + color: white +} + +#no { + color: rgba(1, 152, 203,0.7); +} + +#no:hover { + color: rgba(1, 152, 203,1); +} + +#yes { + outline: solid white 2px; +} + +#yes:hover { + background: #0198CB; +} + +yes:hover + #yes_background { + display: block; +} #share_pick { - /* background-color: blue; */ + margin-top: 60px; } .text_title { @@ -59,19 +83,13 @@ html::-webkit-scrollbar { } #title { - margin-left: 21px; margin-top: 21px; } -#selects { - margin-left: 21px; - margin-top: 70px; -} - h1 { line-height: 48px; font-size: 48px; - margin: 0px 0px 0px 0px; + margin: 0px; } h3 { @@ -91,11 +109,15 @@ h3 { border-radius: 3px; } +#selects { + margin-right: 19px; + padding-left: 3px; +} + .screen_label { max-width: 220px; font-size: 25px; line-height: 25px; - margin-left: 15px; color: white; white-space: nowrap; overflow: hidden; @@ -104,40 +126,39 @@ h3 { .icon { display: inline-block; - background: #C4C4C4; + background: #000000; width: 20px; height: 20px; - border-radius: 50%; -} - -.circle:hover{ - background-color: yellow; - cursor: pointer; -} - -.button_confirmation { - margin: 4px; - cursor: pointer; - width: 250px; - height: 75px; - line-height: 75px; - text-align: center; - vertical-align: middle; -} - -.button_confirmation:hover { - outline: solid white 2px; - width: 250px; + margin-right: 15px; } .box { - /* background-color: orange; */ height: 165px; width: 265px; display: inline-block; margin-left: 35px; - margin-bottom: 40px; - margin-top: 20px; + margin-top: 60px; + cursor: pointer; +} + +.box:nth-child(1) { + margin-top: 0 !important; +} + +.box:nth-child(2) { + margin-top: 0 !important; +} + +.box:nth-child(3) { + margin-top: 0 !important; +} + +.box:nth-child(3n) { + margin-right: 0 !important; +} + +.box:nth-child(3n+1) { + margin-left: 0 !important; } .heading { @@ -147,11 +168,11 @@ h3 { } .image { - background-color: blue; width: 265px; height: 165px; max-height: 165px; max-width: 265px; + margin: 0px; } .image:hover { @@ -159,7 +180,6 @@ h3 { } .image_no_hover { - background-color: blue; width: 265px; height: 165px; max-height: 165px; @@ -169,37 +189,36 @@ h3 { img { width: 265px; height: 165px; + margin: 0px; } .scrollbar { float: right; - height: 470px; - margin-right: 20px; + height: 500px; width: 100%; overflow-y: scroll; + margin-top: 40px; } #style-1::-webkit-scrollbar { - width: 15px; - background-color: red; + width: 9px; + overflow: scroll; + overflow-x: hidden; } #style-1::-webkit-scrollbar-thumb { background-color: #0198CB; - + width: 9px; } #style-1::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); background-color: #848484; - margin-right: 22px; + width: 9px; } - - - /* button { display: inline-block; @@ -227,4 +246,4 @@ button:active, button.active { background: -webkit-linear-gradient(#E3E3E3 40%, #F9F9F9 70%); background: linear-gradient(#E3E3E3 40%, #F9F9F9 70%); -} */ \ No newline at end of file +} */ From 9a65d78cdfac853ac767c634ed7ed48e82db018f Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 28 Oct 2019 15:33:31 -0700 Subject: [PATCH 172/547] Fix model baking to work with new hfm::Shape material definition (1 material per mesh part) --- libraries/baking/src/OBJBaker.cpp | 34 +++++----- libraries/baking/src/OBJBaker.h | 2 +- .../model-baker/src/model-baker/Baker.cpp | 6 +- .../src/model-baker/BuildDracoMeshTask.cpp | 67 +++++++++++++------ .../src/model-baker/BuildDracoMeshTask.h | 2 +- 5 files changed, 70 insertions(+), 41 deletions(-) diff --git a/libraries/baking/src/OBJBaker.cpp b/libraries/baking/src/OBJBaker.cpp index 4adaa01845..d726dee897 100644 --- a/libraries/baking/src/OBJBaker.cpp +++ b/libraries/baking/src/OBJBaker.cpp @@ -37,10 +37,10 @@ const QByteArray MESH = "Mesh"; void OBJBaker::bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) { // Write OBJ Data as FBX tree nodes - createFBXNodeTree(_rootNode, hfmModel, dracoMeshes[0]); + createFBXNodeTree(_rootNode, hfmModel, dracoMeshes[0], dracoMaterialLists[0]); } -void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh) { +void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh, const std::vector& dracoMaterialList) { // Make all generated nodes children of rootNode rootNode.children = { FBXNode(), FBXNode(), FBXNode() }; FBXNode& globalSettingsNode = rootNode.children[0]; @@ -100,24 +100,22 @@ void OBJBaker::createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& h } // Generating Objects node's child - Material node - auto& meshParts = hfmModel->meshes[0].parts; - for (auto& meshPart : meshParts) { + + // Each material ID should only appear once thanks to deduplication in BuildDracoMeshTask, but we want to make sure they are created in the right order + std::unordered_map materialIDToIndex; + for (uint32_t materialIndex = 0; materialIndex < hfmModel->materials.size(); ++materialIndex) { + const auto& material = hfmModel->materials[materialIndex]; + materialIDToIndex[material.materialID] = materialIndex; + } + + // Create nodes for each material in the material list + for (const auto& dracoMaterial : dracoMaterialList) { + const QString materialID = QString(dracoMaterial); + const uint32_t materialIndex = materialIDToIndex[materialID]; + const auto& material = hfmModel->materials[materialIndex]; FBXNode materialNode; materialNode.name = MATERIAL_NODE_NAME; - if (hfmModel->materials.size() == 1) { - // case when no material information is provided, OBJSerializer considers it as a single default material - for (auto& material : hfmModel->materials) { - setMaterialNodeProperties(materialNode, material.name, material, hfmModel); - } - } else { - for (auto& material : hfmModel->materials) { - if (material.name == meshPart.materialID) { - setMaterialNodeProperties(materialNode, meshPart.materialID, material, hfmModel); - break; - } - } - } - + setMaterialNodeProperties(materialNode, material.materialID, material, hfmModel); objectNode.children.append(materialNode); } diff --git a/libraries/baking/src/OBJBaker.h b/libraries/baking/src/OBJBaker.h index 044c51d0cc..778b4da341 100644 --- a/libraries/baking/src/OBJBaker.h +++ b/libraries/baking/src/OBJBaker.h @@ -27,7 +27,7 @@ protected: virtual void bakeProcessedSource(const hfm::Model::Pointer& hfmModel, const std::vector& dracoMeshes, const std::vector>& dracoMaterialLists) override; private: - void createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh); + void createFBXNodeTree(FBXNode& rootNode, const hfm::Model::Pointer& hfmModel, const hifi::ByteArray& dracoMesh, const std::vector& dracoMaterialList); void setMaterialNodeProperties(FBXNode& materialNode, const QString& materialName, const hfm::Material& material, const hfm::Model::Pointer& hfmModel); NodeID nextNodeID() { return _nodeID++; } diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp index 662b4670ee..d200df211d 100644 --- a/libraries/model-baker/src/model-baker/Baker.cpp +++ b/libraries/model-baker/src/model-baker/Baker.cpp @@ -30,7 +30,7 @@ namespace baker { class GetModelPartsTask { public: using Input = hfm::Model::Pointer; - using Output = VaryingSet8, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, Extents>; + using Output = VaryingSet9, hifi::URL, baker::MeshIndicesToModelNames, baker::BlendshapesPerMesh, std::vector, std::vector, std::vector, Extents, std::vector>; using JobModel = Job::ModelIO; void run(const BakeContextPointer& context, const Input& input, Output& output) { @@ -47,6 +47,7 @@ namespace baker { output.edit5() = hfmModelIn->shapes; output.edit6() = hfmModelIn->skinDeformers; output.edit7() = hfmModelIn->meshExtents; + output.edit8() = hfmModelIn->materials; } }; @@ -170,6 +171,7 @@ namespace baker { const auto shapesIn = modelPartsIn.getN(5); const auto skinDeformersIn = modelPartsIn.getN(6); const auto modelExtentsIn = modelPartsIn.getN(7); + const auto materialsIn = modelPartsIn.getN(8); // Calculate normals and tangents for meshes and blendshapes if they do not exist // Note: Normals are never calculated here for OBJ models. OBJ files optionally define normals on a per-face basis, so for consistency normals are calculated beforehand in OBJSerializer. @@ -214,7 +216,7 @@ namespace baker { // TODO: Tangent support (Needs changes to FBXSerializer_Mesh as well) // NOTE: Due to an unresolved linker error, BuildDracoMeshTask is not functional on Android // TODO: Figure out why BuildDracoMeshTask.cpp won't link with draco on Android - const auto buildDracoMeshInputs = BuildDracoMeshTask::Input(meshesIn, normalsPerMesh, tangentsPerMesh).asVarying(); + const auto buildDracoMeshInputs = BuildDracoMeshTask::Input(shapesOut, meshesIn, materialsIn, normalsPerMesh, tangentsPerMesh).asVarying(); const auto buildDracoMeshOutputs = model.addJob("BuildDracoMesh", buildDracoMeshInputs); const auto dracoMeshes = buildDracoMeshOutputs.getN(0); const auto dracoErrors = buildDracoMeshOutputs.getN(1); diff --git a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp index 12347c30b1..5c9d1dac25 100644 --- a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp +++ b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp @@ -39,19 +39,47 @@ #include "ModelMath.h" #ifndef Q_OS_ANDROID -std::vector createMaterialList(const hfm::Mesh& mesh) { - std::vector materialList; - for (const auto& meshPart : mesh.parts) { - auto materialID = QVariant(meshPart.materialID).toByteArray(); - const auto materialIt = std::find(materialList.cbegin(), materialList.cend(), materialID); - if (materialIt == materialList.cend()) { - materialList.push_back(materialID); + +void reindexMaterials(const std::vector& originalMaterialIndices, std::vector& materials, std::vector& materialIndices) { + materialIndices.resize(originalMaterialIndices.size()); + for (size_t i = 0; i < originalMaterialIndices.size(); ++i) { + uint32_t material = originalMaterialIndices[i]; + auto foundMaterial = std::find(materials.cbegin(), materials.cend(), material); + if (foundMaterial == materials.cend()) { + materials.push_back(material); + materialIndices[i] = (uint16_t)(materials.size() - 1); + } else { + materialIndices[i] = (uint16_t)(foundMaterial - materials.cbegin()); } } - return materialList; } -std::tuple, bool> createDracoMesh(const hfm::Mesh& mesh, const std::vector& normals, const std::vector& tangents, const std::vector& materialList) { +void createMaterialLists(const std::vector& shapes, const std::vector& meshes, const std::vector& hfmMaterials, std::vector>& materialIndexLists, std::vector>& partMaterialIndicesPerMesh) { + std::vector> materialsPerMesh; + for (const auto& mesh : meshes) { + materialsPerMesh.emplace_back(mesh.parts.size(), hfm::UNDEFINED_KEY); + } + for (const auto& shape : shapes) { + materialsPerMesh[shape.mesh][shape.meshPart] = shape.material; + } + + materialIndexLists.resize(materialsPerMesh.size()); + partMaterialIndicesPerMesh.resize(materialsPerMesh.size()); + for (size_t i = 0; i < materialsPerMesh.size(); ++i) { + const std::vector& materials = materialsPerMesh[i]; + std::vector uniqueMaterials; + + reindexMaterials(materials, uniqueMaterials, partMaterialIndicesPerMesh[i]); + + materialIndexLists[i].reserve(uniqueMaterials.size()); + for (const uint32_t material : uniqueMaterials) { + const auto& hfmMaterial = hfmMaterials[material]; + materialIndexLists[i].push_back(QVariant(hfmMaterial.materialID).toByteArray()); + } + } +} + +std::tuple, bool> createDracoMesh(const hfm::Mesh& mesh, const std::vector& normals, const std::vector& tangents, const std::vector& partMaterialIndices) { Q_ASSERT(normals.size() == 0 || (int)normals.size() == mesh.vertices.size()); Q_ASSERT(mesh.colors.size() == 0 || mesh.colors.size() == mesh.vertices.size()); Q_ASSERT(mesh.texCoords.size() == 0 || mesh.texCoords.size() == mesh.vertices.size()); @@ -122,11 +150,9 @@ std::tuple, bool> createDracoMesh(const hfm::Mesh& auto partIndex = 0; draco::FaceIndex face; - uint16_t materialID; for (auto& part : mesh.parts) { - auto materialIt = std::find(materialList.cbegin(), materialList.cend(), QVariant(part.materialID).toByteArray()); - materialID = (uint16_t)(materialIt - materialList.cbegin()); + uint16_t materialID = partMaterialIndices[partIndex]; auto addFace = [&](const QVector& indices, int index, draco::FaceIndex face) { int32_t idx0 = indices[index]; @@ -214,30 +240,33 @@ void BuildDracoMeshTask::run(const baker::BakeContextPointer& context, const Inp #ifdef Q_OS_ANDROID qCWarning(model_baker) << "BuildDracoMesh is disabled on Android. Output meshes will be empty."; #else - const auto& meshes = input.get0(); - const auto& normalsPerMesh = input.get1(); - const auto& tangentsPerMesh = input.get2(); + const auto& shapes = input.get0(); + const auto& meshes = input.get1(); + const auto& materials = input.get2(); + const auto& normalsPerMesh = input.get3(); + const auto& tangentsPerMesh = input.get4(); auto& dracoBytesPerMesh = output.edit0(); auto& dracoErrorsPerMesh = output.edit1(); + auto& materialLists = output.edit2(); + std::vector> partMaterialIndicesPerMesh; + createMaterialLists(shapes, meshes, materials, materialLists, partMaterialIndicesPerMesh); dracoBytesPerMesh.reserve(meshes.size()); // vector is an exception to the std::vector conventions as it is a bit field // So a bool reference to an element doesn't work dracoErrorsPerMesh.resize(meshes.size()); - materialLists.reserve(meshes.size()); for (size_t i = 0; i < meshes.size(); i++) { const auto& mesh = meshes[i]; const auto& normals = baker::safeGet(normalsPerMesh, i); const auto& tangents = baker::safeGet(tangentsPerMesh, i); dracoBytesPerMesh.emplace_back(); auto& dracoBytes = dracoBytesPerMesh.back(); - materialLists.push_back(createMaterialList(mesh)); - const auto& materialList = materialLists.back(); + const auto& partMaterialIndices = partMaterialIndicesPerMesh[i]; bool dracoError; std::unique_ptr dracoMesh; - std::tie(dracoMesh, dracoError) = createDracoMesh(mesh, normals, tangents, materialList); + std::tie(dracoMesh, dracoError) = createDracoMesh(mesh, normals, tangents, partMaterialIndices); dracoErrorsPerMesh[i] = dracoError; if (dracoMesh) { diff --git a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h index ac9ad648ab..a83f2ae163 100644 --- a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h +++ b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.h @@ -33,7 +33,7 @@ public: class BuildDracoMeshTask { public: using Config = BuildDracoMeshConfig; - using Input = baker::VaryingSet3, baker::NormalsPerMesh, baker::TangentsPerMesh>; + using Input = baker::VaryingSet5, std::vector, std::vector, baker::NormalsPerMesh, baker::TangentsPerMesh>; using Output = baker::VaryingSet3, std::vector, std::vector>>; using JobModel = baker::Job::ModelIO; From 21699526137993589f36fca5527fc0e5f8f42733 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 11 Nov 2019 14:20:13 -0800 Subject: [PATCH 173/547] Remove unused mesh.part.materialID --- libraries/fbx/src/FBXSerializer.cpp | 6 ------ libraries/fbx/src/OBJSerializer.cpp | 7 ------- libraries/hfm/src/hfm/HFM.h | 2 -- 3 files changed, 15 deletions(-) diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f09182c0e6..de6117eff3 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1485,12 +1485,6 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const shape.mesh = meshIndex; shape.meshPart = i; shape.joint = transformIndex; - - auto matName = mesh.parts[i].materialID; - auto materialIt = materialNameToID.find(matName.toStdString()); - if (materialIt != materialNameToID.end()) { - shape.material = materialIt->second; - } } // For FBX_DRACO_MESH_VERSION < 2, or unbaked models, get materials from the partMaterialTextures diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 31f92555f1..99299dcdec 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -174,11 +174,6 @@ glm::vec2 OBJTokenizer::getVec2() { return v; } - -void setMeshPartDefaults(HFMMeshPart& meshPart, QString materialID) { - meshPart.materialID = materialID; -} - // OBJFace // NOTE (trent, 7/20/17): The vertexColors vector being passed-in isn't necessary here, but I'm just // pairing it with the vertices vector for consistency. @@ -501,8 +496,6 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa bool anyVertexColor { false }; int vertexCount { 0 }; - setMeshPartDefaults(meshPart, QString("dontknow") + QString::number(mesh.parts.size())); - while (true) { int tokenType = tokenizer.nextToken(); if (tokenType == OBJTokenizer::COMMENT_TOKEN) { diff --git a/libraries/hfm/src/hfm/HFM.h b/libraries/hfm/src/hfm/HFM.h index f092c91e99..c7b6789094 100644 --- a/libraries/hfm/src/hfm/HFM.h +++ b/libraries/hfm/src/hfm/HFM.h @@ -160,8 +160,6 @@ public: QVector quadIndices; // original indices from the FBX mesh QVector quadTrianglesIndices; // original indices from the FBX mesh of the quad converted as triangles QVector triangleIndices; // original indices from the FBX mesh - - QString materialID; // DEPRECATED }; class Material { From 7cce153b6dc85fc1ba6147b29119c01e8e963f40 Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 11 Nov 2019 20:13:23 -0800 Subject: [PATCH 174/547] working flow. Needs clean up and final ui tweaks --- .../ScreenshareScriptingInterface.cpp | 136 ++++++++++-------- screenshare/src/app.js | 21 +-- screenshare/src/main.js | 22 +-- 3 files changed, 98 insertions(+), 81 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 62a1215d41..e8a7adfc6f 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -31,8 +32,7 @@ #include #include -ScreenshareScriptingInterface::ScreenshareScriptingInterface() { -}; +ScreenshareScriptingInterface::ScreenshareScriptingInterface(){}; ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { stopScreenshare(); @@ -40,18 +40,20 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { static const EntityTypes::EntityType LOCAL_SCREENSHARE_WEB_ENTITY_TYPE = EntityTypes::Web; static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; -static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862f, 0.0311f); -static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html?1"; +static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862f, 0.0711f); +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = + "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); -void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { +QString token; +QString apiKey; +QString sessionID; +void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, + const QUuid& smartboardEntityID, + const bool& isPresenter) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. - QMetaObject::invokeMethod( - this, "startScreenshare", - Q_ARG(const QUuid&, screenshareZoneID), - Q_ARG(const QUuid&, smartboardEntityID), - Q_ARG(const bool&, isPresenter) - ); + QMetaObject::invokeMethod(this, "startScreenshare", Q_ARG(const QUuid&, screenshareZoneID), + Q_ARG(const QUuid&, smartboardEntityID), Q_ARG(const bool&, isPresenter)); return; } @@ -76,7 +78,7 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon // The server will respond with the relevant OpenTok Token, Session ID, and API Key. // Upon error-free response, do the logic below, passing in that info as necessary. QNetworkAccessManager* manager = new QNetworkAccessManager(); - QObject::connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) { + QObject::connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply* reply) { if (reply->error()) { qDebug() << "\n\n MN HERE: REPLY" << reply->errorString(); return; @@ -85,27 +87,31 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QString answer = reply->readAll(); qDebug() << "\n\n MN HERE: REPLY" << answer; - - QString token = ""; - QString apiKey = ""; - QString sessionID = ""; + QByteArray answerByteArray = answer.toUtf8(); + QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); + + token = answerJSONObject["token"].toString(); + apiKey = answerJSONObject["apiKey"].toString(); + sessionID = answerJSONObject["sessionId"].toString(); // hifi-test has Id camel-case. Change for metaverse. + qDebug() << "token:" << token << " apiKey:" << apiKey << " sessionID: " << sessionID; if (isPresenter) { QStringList arguments; - arguments << "--token=" + token; - arguments << "--apiKey=" + apiKey; + arguments << "--token=" + token; + arguments << "--apiKey=" + apiKey; arguments << "--sessionID=" + sessionID; - + connect(_screenshareProcess.get(), &QProcess::errorOccurred, - [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); + [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(_screenshareProcess.get(), &QProcess::stateChanged, - [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); + connect(_screenshareProcess.get(), &QProcess::stateChanged, [=](QProcess::ProcessState newState) { + qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; + }); connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), - [=](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); - }); + [=](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + emit screenshareStopped(); + }); _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); } @@ -135,50 +141,56 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QString hostType = "local"; _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); - QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, [&](const QUuid& entityID, const QVariant& message) { - if (entityID == _screenshareViewerLocalWebEntityUUID) { - qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; - - auto esi = DependencyManager::get(); - if (!esi) { - return; - } + QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, + [&](const QUuid& entityID, const QVariant& message) { + if (entityID == _screenshareViewerLocalWebEntityUUID) { + qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID + << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; - QJsonDocument jsonMessage = QJsonDocument::fromVariant(message); - QJsonObject jsonObject = jsonMessage.object(); + auto esi = DependencyManager::get(); + if (!esi) { + return; + } - qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message << "`jsonMessage`:" << jsonMessage; + qDebug() << "MN HERE! message:" << message; + QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); + QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); - if (jsonObject["app"] != "screenshare") { - return; - } + qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message + << "`jsonObject`:" << jsonObject; + qDebug() << jsonObject["app"]; + if (jsonObject["app"] != "screenshare") { + return; + } - qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; + qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; - if (jsonObject["method"] == "eventBridgeReady") { - QJsonObject responseObject; - responseObject.insert("app", "screenshare"); - responseObject.insert("method", "receiveConnectionInfo"); - QJsonObject responseObjectData; - responseObjectData.insert("token", token); - responseObjectData.insert("projectAPIKey", apiKey); - responseObjectData.insert("sessionID", sessionID); - responseObject.insert("data", responseObjectData); + if (jsonObject["method"] == "eventBridgeReady") { + QJsonObject responseObject; + responseObject.insert("app", "screenshare"); + responseObject.insert("method", "receiveConnectionInfo"); + QJsonObject responseObjectData; + responseObjectData.insert("token", token); + responseObjectData.insert("projectAPIKey", apiKey); + responseObjectData.insert("sessionID", sessionID); + responseObject.insert("data", responseObjectData); - qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" << responseObject.toVariantMap(); + qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" + << responseObject.toVariantMap(); - // Attempt 1, we receive the eventBridge message, but this won't send a message - // to that js - auto esi = DependencyManager::get(); - esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); + // Attempt 1, we receive the eventBridge message, but this won't send a message + // to that js + auto esi = DependencyManager::get(); + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); - // atempt 2, same outcome - auto entityTreeRenderer = DependencyManager::get(); - auto webEntityRenderable = entityTreeRenderer->renderableForEntityId(_screenshareViewerLocalWebEntityUUID); - webEntityRenderable->emitScriptEvent(responseObject.toVariantMap()); - } - } - }); + // atempt 2, same outcome + //auto entityTreeRenderer = DependencyManager::get(); + //auto webEntityRenderable = + // entityTreeRenderer->renderableForEntityId(_screenshareViewerLocalWebEntityUUID); + //webEntityRenderable->emitScriptEvent(responseObject.toVariantMap()); + } + } + }); }); QNetworkRequest request; diff --git a/screenshare/src/app.js b/screenshare/src/app.js index 0fbddd4a2d..484e6d5829 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -243,20 +243,21 @@ function togglePage(){ // main TODO: - // const {ipcRenderer} = ipcRenderer; - // let apiKey; - // let sessionId; - // let token; - // let session; - // ipcRenderer.on('connectionInfo', function(event, message){ - // console.log("event", event); - // console.log("MESSAGE FROM MAIN", message); - // const connectionInfo = JSON.parse(message); + const ipcRenderer = electron.ipcRenderer; + let apiKey; + let sessionId; + let token; + let session; + + ipcRenderer.on('connectionInfo', function(event, message){ + console.log("event:" + event); + console.log("MESSAGE FROM MAIN:" + message); + // const connectionInfo = JSON.parse(message); // apiKey = connectionInfo.apiKey; // sessionId = connectionInfo.sessionId; // token = connectionInfo.token; // initializeTokboxSession(); - // }) + }) function startup(){ console.log("\n\n IN STARTUP \n\n") diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 289a4c0ae3..e8fabc7bc6 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -6,7 +6,8 @@ const {app, BrowserWindow, ipcMain} = require('electron'); const gotTheLock = app.requestSingleInstanceLock() const argv = require('yargs').argv; // ./screenshare.exe --userName=miladN ... - +console.log("argV:", argv) +console.log("argV Username", argv.userName); const connectionInfo = { userName: argv.userName || "testName", displayName: argv.displayName || "displayName", @@ -23,6 +24,7 @@ if (!gotTheLock) { var window; function createWindow(){ + console.log("Creating window") const zoomFactor = 1.0; window = new BrowserWindow({ backgroundColor: "#000000", @@ -33,24 +35,26 @@ function createWindow(){ useContentSize: true, zoomFactor: zoomFactor, resizable: false, - alwaysOnTop: false, // TRY webPreferences: { nodeIntegration: true } }); window.loadURL('file://' + __dirname + '/index.html'); window.setMenu(null); + + window.webContents.on("did-finish-load", function(){ + console.log("connectionInfo:", connectionInfo) + console.log("in did finish loading"); + window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)); + }); - window.once('ready-to-show', () => { - window.show(); - window.webContents.openDevTools() - }) } // This method will be called when Electron has finished // initialization and is ready to create browser windows. +console.log("setting up on ready"); app.on('ready', function() { + console.log("app ready"); createWindow(); - console.log("sending info"); - window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)) -}); \ No newline at end of file +}); + From f39121c53be633f6c14baccce23a92527def380e Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 12 Nov 2019 09:52:58 -0800 Subject: [PATCH 175/547] Fix build error/warning --- libraries/fbx/src/OBJSerializer.cpp | 1 - tools/vhacd-util/src/VHACDUtil.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 99299dcdec..f9ba8e8c84 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -488,7 +488,6 @@ bool OBJSerializer::parseOBJGroup(OBJTokenizer& tokenizer, const hifi::VariantHa FaceGroup faces; HFMMesh& mesh = hfmModel.meshes[0]; mesh.parts.push_back(HFMMeshPart()); - HFMMeshPart& meshPart = mesh.parts.back(); bool sawG = false; bool result = true; int originalFaceCountForDebugging = 0; diff --git a/tools/vhacd-util/src/VHACDUtil.cpp b/tools/vhacd-util/src/VHACDUtil.cpp index f0eb94a1cf..da20339123 100644 --- a/tools/vhacd-util/src/VHACDUtil.cpp +++ b/tools/vhacd-util/src/VHACDUtil.cpp @@ -149,7 +149,6 @@ void vhacd::VHACDUtil::fattenMesh(const HFMMesh& mesh, const glm::mat4& modelOff result.vertices << p3; // add the new point to the result mesh HFMMeshPart newMeshPart; - setMeshPartDefaults(newMeshPart, "unknown"); newMeshPart.triangleIndices << index0 << index1 << index2; newMeshPart.triangleIndices << index0 << index3 << index1; newMeshPart.triangleIndices << index1 << index3 << index2; From cf08a4162a399f13e42de830607ced6d8470bc8c Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 11 Nov 2019 16:50:59 -0800 Subject: [PATCH 176/547] add workload job to help debug entity proxies --- .../src/raypick/PickScriptingInterface.h | 4 + .../scripting/SelectionScriptingInterface.cpp | 4 +- .../scripting/SelectionScriptingInterface.h | 4 +- interface/src/workload/GameWorkload.cpp | 2 + .../src/workload/GameWorkloadRenderer.cpp | 1 + .../src/workload/SelectedWorkloadRenderer.cpp | 88 +++++++++++++ .../src/workload/SelectedWorkloadRenderer.h | 32 +++++ libraries/entities/src/EntityTreeElement.cpp | 4 +- libraries/shared/src/PickFilter.h | 5 + libraries/workload/src/workload/Space.cpp | 12 ++ libraries/workload/src/workload/Space.h | 1 + .../debugging/debugWorkloadWithMouseHover.js | 124 ++++++++++++++++++ 12 files changed, 275 insertions(+), 6 deletions(-) create mode 100644 interface/src/workload/SelectedWorkloadRenderer.cpp create mode 100644 interface/src/workload/SelectedWorkloadRenderer.h create mode 100644 scripts/developer/debugging/debugWorkloadWithMouseHover.js diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index e26b91b9a2..5099156b37 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -87,6 +87,8 @@ class PickScriptingInterface : public QObject, public Dependency { Q_PROPERTY(unsigned int PICK_ALL_INTERSECTIONS READ PICK_ALL_INTERSECTIONS CONSTANT) + Q_PROPERTY(unsigned int PICK_BYPASS_IGNORE READ PICK_BYPASS_IGNORE CONSTANT) + Q_PROPERTY(unsigned int INTERSECTED_NONE READ INTERSECTED_NONE CONSTANT) Q_PROPERTY(unsigned int INTERSECTED_ENTITY READ INTERSECTED_ENTITY CONSTANT) Q_PROPERTY(unsigned int INTERSECTED_LOCAL_ENTITY READ INTERSECTED_LOCAL_ENTITY CONSTANT) @@ -282,6 +284,8 @@ public: unsigned int getPerFrameTimeBudget() const; void setPerFrameTimeBudget(unsigned int numUsecs); + static constexpr unsigned int PICK_BYPASS_IGNORE() { return PickFilter::getBitMask(PickFilter::FlagBit::PICK_BYPASS_IGNORE); } + public slots: /**jsdoc diff --git a/interface/src/scripting/SelectionScriptingInterface.cpp b/interface/src/scripting/SelectionScriptingInterface.cpp index d2147ac5cc..32f837668d 100644 --- a/interface/src/scripting/SelectionScriptingInterface.cpp +++ b/interface/src/scripting/SelectionScriptingInterface.cpp @@ -17,7 +17,7 @@ GameplayObjects::GameplayObjects() { } bool GameplayObjects::addToGameplayObjects(const QUuid& avatarID) { - containsData = true; + _containsData = true; if (std::find(_avatarIDs.begin(), _avatarIDs.end(), avatarID) == _avatarIDs.end()) { _avatarIDs.push_back(avatarID); } @@ -29,7 +29,7 @@ bool GameplayObjects::removeFromGameplayObjects(const QUuid& avatarID) { } bool GameplayObjects::addToGameplayObjects(const EntityItemID& entityID) { - containsData = true; + _containsData = true; if (std::find(_entityIDs.begin(), _entityIDs.end(), entityID) == _entityIDs.end()) { _entityIDs.push_back(entityID); } diff --git a/interface/src/scripting/SelectionScriptingInterface.h b/interface/src/scripting/SelectionScriptingInterface.h index 4386ee5ee6..f477a25b42 100644 --- a/interface/src/scripting/SelectionScriptingInterface.h +++ b/interface/src/scripting/SelectionScriptingInterface.h @@ -26,7 +26,7 @@ class GameplayObjects { public: GameplayObjects(); - bool getContainsData() const { return containsData; } + bool getContainsData() const { return _containsData; } std::vector getAvatarIDs() const { return _avatarIDs; } bool addToGameplayObjects(const QUuid& avatarID); @@ -37,7 +37,7 @@ public: bool removeFromGameplayObjects(const EntityItemID& entityID); private: - bool containsData { false }; + bool _containsData { false }; std::vector _avatarIDs; std::vector _entityIDs; }; diff --git a/interface/src/workload/GameWorkload.cpp b/interface/src/workload/GameWorkload.cpp index afbd166c89..d9cda7f16a 100644 --- a/interface/src/workload/GameWorkload.cpp +++ b/interface/src/workload/GameWorkload.cpp @@ -9,6 +9,7 @@ // #include "GameWorkload.h" #include "GameWorkloadRenderer.h" +#include "SelectedWorkloadRenderer.h" #include #include #include @@ -35,6 +36,7 @@ public: model.addJob("PhysicsBoundary", regionTrackerOut); model.addJob("SpaceToRender"); + model.addJob("SelectedWorkloadRender"); out = regionTrackerOut; } diff --git a/interface/src/workload/GameWorkloadRenderer.cpp b/interface/src/workload/GameWorkloadRenderer.cpp index 2bb73999f1..f65bf88754 100644 --- a/interface/src/workload/GameWorkloadRenderer.cpp +++ b/interface/src/workload/GameWorkloadRenderer.cpp @@ -16,6 +16,7 @@ #include #include +#include "SelectedWorkloadRenderer.h" void GameSpaceToRender::configure(const Config& config) { _freezeViews = config.freezeViews; diff --git a/interface/src/workload/SelectedWorkloadRenderer.cpp b/interface/src/workload/SelectedWorkloadRenderer.cpp new file mode 100644 index 0000000000..29cdc46f35 --- /dev/null +++ b/interface/src/workload/SelectedWorkloadRenderer.cpp @@ -0,0 +1,88 @@ +// +// SelectedWorkloadRenderer.cpp +// +// Created by Andrew Meadows 2019.11.08 +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "SelectedWorkloadRenderer.h" + +#include +#include + +#include + +#include "Application.h" +#include "GameWorkloadRenderer.h" +#include "scripting/SelectionScriptingInterface.h" + +void SelectedWorkloadRenderer::run(const workload::WorkloadContextPointer& runContext, Outputs& outputs) { + auto gameWorkloadContext = std::dynamic_pointer_cast(runContext); + if (!gameWorkloadContext) { + return; + } + auto space = gameWorkloadContext->_space; + if (!space) { + return; + } + + render::Transaction transaction; + auto scene = gameWorkloadContext->_scene; + + auto selection = DependencyManager::get(); + // Note: the "DebugWorkloadSelection" name is a secret hard-coded C++ debug feature. + // If you create such a named list using JS and the "Selection" API then it will be picked up here + // and the workload proxies for corresponding entities will be rendered. + GameplayObjects selectedObjects = selection->getList("DebugWorkloadSelection"); + + if (!selectedObjects.getContainsData()) { + // nothing to render + // clear item if it exists and bail + if (render::Item::isValidID(_spaceRenderItemID)) { + transaction.updateItem(_spaceRenderItemID, [](GameWorkloadRenderItem& item) { + item.setVisible(false); + }); + scene->enqueueTransaction(transaction); + } + return; + } + + std::vector entityIDs = selectedObjects.getEntityIDs(); + workload::indexed_container::Indices indices; + indices.reserve(entityIDs.size()); + + auto entityTreeRenderer = qApp->getEntities(); + auto entityTree = entityTreeRenderer->getTree(); + for (auto id : entityIDs) { + EntityItemPointer entity = entityTree->findEntityByID(id); + if (entity) { + indices.push_back(entity->getSpaceIndex()); + } + } + + workload::Proxy::Vector proxies; + proxies.reserve(indices.size()); + space->copySelectedProxyValues(proxies, indices); + + if (!render::Item::isValidID(_spaceRenderItemID)) { + _spaceRenderItemID = scene->allocateID(); + auto renderItem = std::make_shared(); + renderItem->editBound().setBox(glm::vec3(-16000.0f), 32000.0f); + transaction.resetItem(_spaceRenderItemID, std::make_shared(renderItem)); + } + + bool showProxies = true; + bool showViews = false; + bool visible = true; + workload::Views views(0); + transaction.updateItem(_spaceRenderItemID, [visible, showProxies, proxies, showViews, views](GameWorkloadRenderItem& item) { + item.setVisible(visible); + item.showProxies(showProxies); + item.setAllProxies(proxies); + item.showViews(showViews); + item.setAllViews(views); + }); + scene->enqueueTransaction(transaction); +} diff --git a/interface/src/workload/SelectedWorkloadRenderer.h b/interface/src/workload/SelectedWorkloadRenderer.h new file mode 100644 index 0000000000..9b3ac1005e --- /dev/null +++ b/interface/src/workload/SelectedWorkloadRenderer.h @@ -0,0 +1,32 @@ +// +// GameWorkloadRender.h +// +// Created by Sam Gateau on 2/20/2018. +// Copyright 2018 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#ifndef hifi_SelectedWorkloadRenderer_h +#define hifi_SelectedWorkloadRenderer_h + +#include "GameWorkload.h" + +#include "GameWorkloadRenderer.h" + +class SelectedWorkloadRenderer { +public: + using Config = GameSpaceToRenderConfig; + using Outputs = render::Transaction; + using JobModel = workload::Job::ModelO; + + SelectedWorkloadRenderer() {} + + void configure(const Config& config) {} + void run(const workload::WorkloadContextPointer& renderContext, Outputs& outputs); + +protected: + render::ItemID _spaceRenderItemID{ render::Item::INVALID_ITEM_ID }; +}; + +#endif diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 60eaafc0dd..992dcd9d05 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -197,7 +197,7 @@ EntityItemID EntityTreeElement::evalDetailedRayIntersection(const glm::vec3& ori // only called if we do intersect our bounding cube, but find if we actually intersect with entities... EntityItemID entityID; forEachEntity([&](EntityItemPointer entity) { - if (entity->getIgnorePickIntersection()) { + if (entity->getIgnorePickIntersection() && !searchFilter.bypassIgnore()) { return; } @@ -341,7 +341,7 @@ EntityItemID EntityTreeElement::evalDetailedParabolaIntersection(const glm::vec3 // only called if we do intersect our bounding cube, but find if we actually intersect with entities... EntityItemID entityID; forEachEntity([&](EntityItemPointer entity) { - if (entity->getIgnorePickIntersection()) { + if (entity->getIgnorePickIntersection() && !searchFilter.bypassIgnore()) { return; } diff --git a/libraries/shared/src/PickFilter.h b/libraries/shared/src/PickFilter.h index 5e5f5db3bc..d3d6673f50 100644 --- a/libraries/shared/src/PickFilter.h +++ b/libraries/shared/src/PickFilter.h @@ -10,6 +10,7 @@ #define hifi_PickFilter_h #include +#include // adebug class PickFilter { public: @@ -60,6 +61,8 @@ public: // NOT YET IMPLEMENTED PICK_ALL_INTERSECTIONS, // if not set, returns closest intersection, otherwise, returns list of all intersections + PICK_BYPASS_IGNORE, // for debug purposes + NUM_FLAGS, // Not a valid flag }; typedef std::bitset Flags; @@ -93,6 +96,8 @@ public: bool doesWantAllIntersections() const { return _flags[PICK_ALL_INTERSECTIONS]; } + bool bypassIgnore() const { return _flags[PICK_BYPASS_IGNORE]; } + // Helpers for RayPickManager Flags getEntityFlags() const { unsigned int toReturn = 0; diff --git a/libraries/workload/src/workload/Space.cpp b/libraries/workload/src/workload/Space.cpp index f045c8311f..5704ba8c4d 100644 --- a/libraries/workload/src/workload/Space.cpp +++ b/libraries/workload/src/workload/Space.cpp @@ -127,6 +127,18 @@ uint32_t Space::copyProxyValues(Proxy* proxies, uint32_t numDestProxies) const { return numCopied; } +uint32_t Space::copySelectedProxyValues(Proxy::Vector& proxies, const workload::indexed_container::Indices& indices) const { + std::unique_lock lock(_proxiesMutex); + uint32_t numCopied = 0; + for (auto index : indices) { + if (isAllocatedID(index) && (index < (Index)_proxies.size())) { + proxies.push_back(_proxies[index]); + ++numCopied; + } + } + return numCopied; +} + const Owner Space::getOwner(int32_t proxyID) const { std::unique_lock lock(_proxiesMutex); if (isAllocatedID(proxyID) && (proxyID < (Index)_proxies.size())) { diff --git a/libraries/workload/src/workload/Space.h b/libraries/workload/src/workload/Space.h index 7dcb2217f7..d189d48156 100644 --- a/libraries/workload/src/workload/Space.h +++ b/libraries/workload/src/workload/Space.h @@ -47,6 +47,7 @@ public: void categorizeAndGetChanges(std::vector& changes); uint32_t copyProxyValues(Proxy* proxies, uint32_t numDestProxies) const; + uint32_t copySelectedProxyValues(Proxy::Vector& proxies, const workload::indexed_container::Indices& indices) const; const Owner getOwner(int32_t proxyID) const; uint8_t getRegion(int32_t proxyID) const; diff --git a/scripts/developer/debugging/debugWorkloadWithMouseHover.js b/scripts/developer/debugging/debugWorkloadWithMouseHover.js new file mode 100644 index 0000000000..eaff607359 --- /dev/null +++ b/scripts/developer/debugging/debugWorkloadWithMouseHover.js @@ -0,0 +1,124 @@ +// +// debugWorkloadWithMouseHover.js - render workload proxy for entity under mouse hover +// +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +"use strict"; + +(function() { + + Script.scriptEnding.connect(function () { + }); + + // Create a Laser pointer used to pick and add entity to selection + var END_DIMENSIONS = { x: 0.05, y: 0.05, z: 0.05 }; + var COLOR1 = {red: 255, green: 0, blue: 255}; // magenta + var COLOR2 = {red: 255, green: 255, blue: 0}; // yellow + var end1 = { + type: "sphere", + dimensions: END_DIMENSIONS, + color: COLOR1, + ignorePickIntersection: true + } + var end2 = { + type: "sphere", + dimensions: END_DIMENSIONS, + color: COLOR2, + ignorePickIntersection: true + } + var laser = Pointers.createPointer(PickType.Ray, { + joint: "Mouse", + filter: Picks.PICK_ENTITIES | Picks.PICK_BYPASS_IGNORE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE, + renderStates: [{name: "one", end: end1}], + defaultRenderStates: [{name: "one", end: end2, distance: 2.0}], + enabled: true + }); + Pointers.setRenderState(laser, "one"); + var hoveredObject = undefined; + + var SelectionListName = "DebugWorkloadSelection"; // sekret undocumented selection list (hard coded in C++) + var selectionStyle = { + isOutlineSmooth: true, + outlineWidth: 5, + outlineUnoccludedColor: {red: 255, green: 128, blue: 128}, + outlineUnoccludedAlpha: 0.88, + outlineOccludedColor: {red: 255, green: 128, blue: 128}, + outlineOccludedAlpha:0.5, + fillUnoccludedColor: {red: 26, green: 0, blue: 0}, + fillUnoccludedAlpha: 0.0, + fillOccludedColor: {red: 26, green: 0, blue: 0}, + fillOccludedAlpha: 0.0 + } + Selection.enableListHighlight(SelectionListName, selectionStyle) + + var isSelectionEnabled = false + + function setSelectionEnabled(enabled) { + if (isSelectionEnabled != enabled) { + isSelectionEnabled = enabled; + //print("isSelectionEnabled set to " + isSelectionEnabled.toString()) + if (isSelectionEnabled) { + Pointers.enablePointer(laser) + } else { + Pointers.disablePointer(laser) + Selection.clearSelectedItemsList(SelectionListName) + } + } + } + setSelectionEnabled(true); + + function getIntersectionTypeString(type) { + if (type === Picks.INTERSECTED_ENTITY) { + return "entity"; + } else if (type === Picks.INTERSECTED_OVERLAY) { + return "overlay"; + } else if (type === Picks.INTERSECTED_AVATAR) { + return "avatar"; + } + } + + function update() { + var result = Pointers.getPrevPickResult(laser); + if (result.intersects) { + if (hoveredObject !== undefined && result.objectID !== hoveredObject.objectID) { + // Hovering on something different + if (isSelectionEnabled) { + Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID) + //print("remove helloDebugHighlight " + hoveredObject.objectID.toString()); + } + } + + if (isSelectionEnabled) { + if (hoveredObject === undefined || result.objectID !== hoveredObject.objectID) { + // Hovering over something new + Selection.addToSelectedItemsList(SelectionListName, getIntersectionTypeString(result.type), result.objectID); + hoveredObject = result; + //print("add helloDebugHighlight " + hoveredObject.objectID.toString() + " type = '" + getIntersectionTypeString(result.type) + "'"); + } + } + } else if (hoveredObject !== undefined) { + // Stopped hovering + if (isSelectionEnabled) { + Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID) + hoveredObject = undefined; + //print("clear helloDebugHighlight"); + } + } + } + Script.update.connect(update); + + function cleanup() { + Pointers.removePointer(laser); + Selection.disableListHighlight(SelectionListName) + Selection.removeListFromMap(SelectionListName) + + } + Script.scriptEnding.connect(cleanup); + +}()); + + From 995f5f92cdc855fde5ea64cdc39f31395618727e Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 12 Nov 2019 11:11:19 -0800 Subject: [PATCH 177/547] Do not use turningSpeed when setting seatedTurn vars, and iterate acceleration formula --- interface/src/avatar/MyAvatar.cpp | 58 +++++++++++++++++-- libraries/animation/src/Rig.cpp | 34 ++++++----- .../src/avatars-renderer/Avatar.h | 1 + 3 files changed, 72 insertions(+), 21 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 87e7c4be5c..8ed629d89e 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3513,21 +3513,69 @@ void MyAvatar::updateOrientation(float deltaTime) { } setWorldOrientation(glm::slerp(getWorldOrientation(), faceRotation, blend)); } else if (isRotatingWhileSeated) { + float direction = -getDriveKey(TRANSLATE_X); + float seatedTargetSpeed = direction * _yawSpeed * deltaTime; - float seatedTargetSpeed = -getDriveKey(TRANSLATE_X) * _yawSpeed; - - const float SEATED_ROTATION_RAMP_TIMESCALE = 0.5f; + const float SEATED_ROTATION_RAMP_TIMESCALE = 1.0; //used as divisor float blend = deltaTime / SEATED_ROTATION_RAMP_TIMESCALE; if (blend > 1.0f) { blend = 1.0f; } - _seatedBodyYawDelta = (1.0f - blend) * _seatedBodyYawDelta + blend * seatedTargetSpeed; + + /////// ease in + //_seatedBodyYawDelta = (1.0f - blend) * _seatedBodyYawDelta + blend * seatedTargetSpeed; + + /////// ease out WIP + + if (fabsf(_seatedBodyYawDelta) > 0.0f) { + //we are rotating + if (fabsf(_seatedBodyYawDelta) >= fabsf(seatedTargetSpeed)) { + //we've reached target speed + _seatedBodyYawDelta = seatedTargetSpeed; + } else { + _seatedInterpTime += blend; + _seatedBodyYawDelta = _seatedInterpTime * _seatedInterpTime * direction; + } + } else { + //init rotation + _seatedInterpTime = blend; + _seatedBodyYawDelta = blend * direction; + } + + //////// linear + //if (_seatedBodyYawDelta < seatedTargetSpeed) { + // _seatedBodyYawDelta += blend; + //} + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); + qDebug() << "_seatedBodyYawDelta: " << _seatedBodyYawDelta; - + //original //float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); + + //qDebug() << "_seatedBodyYawDelta: " << rotatingWhileSeatedYaw; + } else if (_characterController.getSeated() && _seatedBodyYawDelta > 0.0f) { + // attenuate body rotation speed + const float SEATED_ROTATION_DECAY_TIMESCALE = 0.05f; + float attenuation = 1.0f - deltaTime / SEATED_ROTATION_DECAY_TIMESCALE; + if (attenuation < 0.0f) { + attenuation = 0.0f; + } + _seatedBodyYawDelta *= attenuation; + + float MINIMUM_ROTATION_RATE = 2.0f; + if (fabsf(_seatedBodyYawDelta) < MINIMUM_ROTATION_RATE) { + _seatedBodyYawDelta = 0.0f; + } + + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); + + qDebug() << "attenuated _seatedBodyYawDelta: " << _seatedBodyYawDelta; + } else { + _seatedBodyYawDelta = 0.0f; + _seatedInterpTime = 0.0f; } } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 6a9bd6a15c..612b104540 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1093,6 +1093,12 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos const float TURN_ENTER_SPEED_THRESHOLD = 0.5f; // rad/sec const float TURN_EXIT_SPEED_THRESHOLD = 0.2f; // rad/sec + //stategraph vars based on input + const float INPUT_DEADZONE_THRESHOLD = 0.05f; + const float SLOW_SPEED_THRESHOLD = 1.5f; + const float HAS_MOMENTUM_THRESHOLD = 2.2f; + const float RESET_MOMENTUM_THRESHOLD = 0.05f; + if (ccState == CharacterControllerState::Hover) { if (_desiredState != RigRole::Hover) { _desiredStateAge = 0.0f; @@ -1412,21 +1418,21 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("inAirAlpha", alpha); } else if (_state == RigRole::Seated) { - if (turningSpeed > 0.05f) { - // seated turning right - _animVars.set("isSeatedTurningRight", true); - _animVars.set("isSeatedTurningLeft", false); - _animVars.set("isSeatedNotTurning", false); - } else if (turningSpeed < -0.05f) { - // seated turning left - _animVars.set("isSeatedTurningRight", false); - _animVars.set("isSeatedTurningLeft", true); - _animVars.set("isSeatedNotTurning", false); - } else { + if (fabsf(_previousControllerParameters.inputX) <= INPUT_DEADZONE_THRESHOLD) { // seated not turning _animVars.set("isSeatedTurningRight", false); _animVars.set("isSeatedTurningLeft", false); _animVars.set("isSeatedNotTurning", true); + } else if (turningSpeed > 0.1f) { + // seated turning right + _animVars.set("isSeatedTurningRight", true); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); + } else if (turningSpeed < -0.1f) { + // seated turning left + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", true); + _animVars.set("isSeatedNotTurning", false); } _animVars.set("isMovingForward", false); @@ -1470,11 +1476,7 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _lastEnableInverseKinematics = _enableInverseKinematics; - //stategraph vars based on input - const float INPUT_DEADZONE_THRESHOLD = 0.05f; - const float SLOW_SPEED_THRESHOLD = 1.5f; - const float HAS_MOMENTUM_THRESHOLD = 2.2f; - const float RESET_MOMENTUM_THRESHOLD = 0.05f; + if (fabsf(_previousControllerParameters.inputX) <= INPUT_DEADZONE_THRESHOLD && fabsf(_previousControllerParameters.inputZ) <= INPUT_DEADZONE_THRESHOLD) { diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 86c19695e1..505ffa71dd 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -663,6 +663,7 @@ protected: float _bodyYawDelta { 0.0f }; // degrees/sec float _seatedBodyYawDelta{ 0.0f }; //degrees/sec + float _seatedInterpTime{ 0.0f }; //used to transition rot while seated. // These position histories and derivatives are in the world-frame. // The derivatives are the MEASURED results of all external and internal forces From 0f605ffc43f355cd68693ec87064d64704513bbc Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 11:37:07 -0800 Subject: [PATCH 178/547] clean up code --- .../ScreenshareScriptingInterface.cpp | 29 ++++++------- screenshare/src/app.js | 42 ++++++------------- screenshare/src/main.js | 8 +--- 3 files changed, 25 insertions(+), 54 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index e8a7adfc6f..efc3e8ee4a 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -40,12 +40,14 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { static const EntityTypes::EntityType LOCAL_SCREENSHARE_WEB_ENTITY_TYPE = EntityTypes::Web; static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; +// This is going to be a good amount of work to make this work dynamically for any screensize. +// V1 will have only hardcoded values. static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862f, 0.0711f); +static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; -static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); QString token; -QString apiKey; +QString projectAPIKey; QString sessionID; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, @@ -91,15 +93,16 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); token = answerJSONObject["token"].toString(); - apiKey = answerJSONObject["apiKey"].toString(); - sessionID = answerJSONObject["sessionId"].toString(); // hifi-test has Id camel-case. Change for metaverse. - qDebug() << "token:" << token << " apiKey:" << apiKey << " sessionID: " << sessionID; + projectAPIKey = answerJSONObject["projectAPIKey"].toString(); + sessionID = answerJSONObject["sessionID"].toString(); // hifi-test has Id camel-case. Change for metaverse. + qDebug() << "token:" << token << " projectAPIKey:" << projectAPIKey << " sessionID: " << sessionID; if (isPresenter) { QStringList arguments; - arguments << "--token=" + token; - arguments << "--apiKey=" + apiKey; - arguments << "--sessionID=" + sessionID; + arguments << " "; + arguments << "--token=" + token << " "; + arguments << "--projectAPIKey=" + projectAPIKey << " "; + arguments << "--sessionID=" + sessionID << " "; connect(_screenshareProcess.get(), &QProcess::errorOccurred, [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); @@ -171,23 +174,15 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon responseObject.insert("method", "receiveConnectionInfo"); QJsonObject responseObjectData; responseObjectData.insert("token", token); - responseObjectData.insert("projectAPIKey", apiKey); + responseObjectData.insert("projectAPIKey", projectAPIKey); responseObjectData.insert("sessionID", sessionID); responseObject.insert("data", responseObjectData); qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" << responseObject.toVariantMap(); - // Attempt 1, we receive the eventBridge message, but this won't send a message - // to that js auto esi = DependencyManager::get(); esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); - - // atempt 2, same outcome - //auto entityTreeRenderer = DependencyManager::get(); - //auto webEntityRenderable = - // entityTreeRenderer->renderableForEntityId(_screenshareViewerLocalWebEntityUUID); - //webEntityRenderable->emitScriptEvent(responseObject.toVariantMap()); } } }); diff --git a/screenshare/src/app.js b/screenshare/src/app.js index 484e6d5829..b1c48efcc5 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -192,8 +192,9 @@ function togglePage(){ function initializeTokboxSession() { console.log("\n\n\n\n #$######\n TRYING TO START SESSION") - session = OT.initSession(apiKey, sessionId); - + console.log("projectAPIKey: " + projectAPIKey) + console.log("sessionId: " + sessionID) + session = OT.initSession(projectAPIKey, sessionID); session.on('sessionDisconnected', (event) => { console.log('You were disconnected from the session.', event.reason); }); @@ -244,43 +245,24 @@ function togglePage(){ // main TODO: const ipcRenderer = electron.ipcRenderer; - let apiKey; - let sessionId; + let projectAPIKey; + let sessionID; let token; let session; ipcRenderer.on('connectionInfo', function(event, message){ console.log("event:" + event); console.log("MESSAGE FROM MAIN:" + message); - // const connectionInfo = JSON.parse(message); - // apiKey = connectionInfo.apiKey; - // sessionId = connectionInfo.sessionId; - // token = connectionInfo.token; - // initializeTokboxSession(); + const connectionInfo = JSON.parse(message); + projectAPIKey = connectionInfo.projectAPIKey; + console.log() + sessionID = connectionInfo.sessionID; + token = connectionInfo.token; + + initializeTokboxSession(); }) - function startup(){ - console.log("\n\n IN STARTUP \n\n") - // Make an Ajax request to get the OpenTok API key, session ID, and token from the server - // TODO: - fetch(process.env.hifiScreenshareURL) - .then(function(res) { - return res.json(); - }) - .then(function fetchJson(json) { - apiKey = json.apiKey; - sessionId = json.sessionId; - token = json.token; - - initializeTokboxSession(); - }) - .catch(function catchErr(error) { - handleError(error); - alert('Failed to get opentok sessionId and token. Make sure you have updated the config.js file.'); - }); - } document.addEventListener("DOMContentLoaded", () => { - startup(); showSources(); }) diff --git a/screenshare/src/main.js b/screenshare/src/main.js index e8fabc7bc6..edbdb3c301 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -1,18 +1,12 @@ 'use strict'; -var userName, displayName, token, apiKey, sessionID; - const {app, BrowserWindow, ipcMain} = require('electron'); const gotTheLock = app.requestSingleInstanceLock() const argv = require('yargs').argv; // ./screenshare.exe --userName=miladN ... -console.log("argV:", argv) -console.log("argV Username", argv.userName); const connectionInfo = { - userName: argv.userName || "testName", - displayName: argv.displayName || "displayName", token: argv.token || "token", - apiKey: argv.apiKey || "apiKey", + projectAPIKey: argv.projectAPIKey || "projectAPIKey", sessionID: argv.sessionID || "sessionID" } From 9d86e49a0bdcb6462f685859d0a0af33ae4e1597 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 12 Nov 2019 11:59:39 -0800 Subject: [PATCH 179/547] Pretty good exponential acceleration, need to simplify --- interface/src/avatar/MyAvatar.cpp | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 8ed629d89e..011439193c 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3516,7 +3516,7 @@ void MyAvatar::updateOrientation(float deltaTime) { float direction = -getDriveKey(TRANSLATE_X); float seatedTargetSpeed = direction * _yawSpeed * deltaTime; - const float SEATED_ROTATION_RAMP_TIMESCALE = 1.0; //used as divisor + const float SEATED_ROTATION_RAMP_TIMESCALE = 0.25; //used as divisor float blend = deltaTime / SEATED_ROTATION_RAMP_TIMESCALE; if (blend > 1.0f) { blend = 1.0f; @@ -3525,7 +3525,7 @@ void MyAvatar::updateOrientation(float deltaTime) { /////// ease in //_seatedBodyYawDelta = (1.0f - blend) * _seatedBodyYawDelta + blend * seatedTargetSpeed; - /////// ease out WIP + /////// ease out if (fabsf(_seatedBodyYawDelta) > 0.0f) { //we are rotating @@ -3542,37 +3542,14 @@ void MyAvatar::updateOrientation(float deltaTime) { _seatedBodyYawDelta = blend * direction; } - //////// linear - //if (_seatedBodyYawDelta < seatedTargetSpeed) { - // _seatedBodyYawDelta += blend; - //} setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); - qDebug() << "_seatedBodyYawDelta: " << _seatedBodyYawDelta; //original //float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); - //qDebug() << "_seatedBodyYawDelta: " << rotatingWhileSeatedYaw; - } else if (_characterController.getSeated() && _seatedBodyYawDelta > 0.0f) { - // attenuate body rotation speed - const float SEATED_ROTATION_DECAY_TIMESCALE = 0.05f; - float attenuation = 1.0f - deltaTime / SEATED_ROTATION_DECAY_TIMESCALE; - if (attenuation < 0.0f) { - attenuation = 0.0f; - } - _seatedBodyYawDelta *= attenuation; - - float MINIMUM_ROTATION_RATE = 2.0f; - if (fabsf(_seatedBodyYawDelta) < MINIMUM_ROTATION_RATE) { - _seatedBodyYawDelta = 0.0f; - } - - setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); - - qDebug() << "attenuated _seatedBodyYawDelta: " << _seatedBodyYawDelta; } else { _seatedBodyYawDelta = 0.0f; _seatedInterpTime = 0.0f; From 5b9b30bf3571d9473d138743cea928b21aefcdf5 Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 12:59:52 -0800 Subject: [PATCH 180/547] updated platform specific dimensions --- screenshare/src/main.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 22a912a81c..6b01e47210 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -10,20 +10,31 @@ const connectionInfo = { sessionID: argv.sessionID || "sessionID" } +const osType = require('os').type(); +let width; +let height; +if (osType == "Darwin" || osType == "Linux") { + width = 960; + height = 660; +} else if (osType == "Windows_NT") { + width = 973; + height = 735; +} + if (!gotTheLock) { -// log.warn("Another instance of the screenshare is already running - this instance will quit."); + console.log("Another instance of the screenshare is already running - this instance will quit."); app.exit(0); return; } -var window; +let window; +const zoomFactor = 1.0; function createWindow(){ console.log("Creating window") - const zoomFactor = 1.0; window = new BrowserWindow({ backgroundColor: "#000000", - width: 940 * zoomFactor, - height: 660 * zoomFactor, + width: width, + height: height, center: true, frame: true, useContentSize: true, From 49f972714c97127c7fae12e9f64f5e9f242f0d7e Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 13:12:10 -0800 Subject: [PATCH 181/547] more cleanup --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index efc3e8ee4a..6e883c109b 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -94,7 +94,7 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon token = answerJSONObject["token"].toString(); projectAPIKey = answerJSONObject["projectAPIKey"].toString(); - sessionID = answerJSONObject["sessionID"].toString(); // hifi-test has Id camel-case. Change for metaverse. + sessionID = answerJSONObject["sessionID"].toString(); qDebug() << "token:" << token << " projectAPIKey:" << projectAPIKey << " sessionID: " << sessionID; if (isPresenter) { @@ -155,7 +155,6 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon return; } - qDebug() << "MN HERE! message:" << message; QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); From 45eda4046642beb22d461b2474cef533814ac3cc Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 13 Nov 2019 10:48:08 +1300 Subject: [PATCH 182/547] Enable Alt action for cloning on Mac --- .../system/create/entitySelectionTool/entitySelectionTool.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/entitySelectionTool/entitySelectionTool.js b/scripts/system/create/entitySelectionTool/entitySelectionTool.js index 98f1deb4ad..9bab739060 100644 --- a/scripts/system/create/entitySelectionTool/entitySelectionTool.js +++ b/scripts/system/create/entitySelectionTool/entitySelectionTool.js @@ -1118,8 +1118,9 @@ SelectionDisplay = (function() { return false; } - // No action if the Alt key is pressed. - if (event.isAlt) { + // No action if the Alt key is pressed unless on Mac. + var isMac = Controller.getValue(Controller.Hardware.Application.PlatformMac); + if (event.isAlt && !isMac) { return; } From f9f28fc286fde81cbf6d09ebfdd52af2b3bb87d4 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 12 Nov 2019 14:15:19 -0800 Subject: [PATCH 183/547] Handle HMD in input vars and remove/fix json transitions in/out of HMD strafe states. --- .../resources/avatar/avatar-animation.json | 36 ++----------------- libraries/animation/src/Rig.cpp | 16 +++++++-- 2 files changed, 15 insertions(+), 37 deletions(-) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index 9c417be90b..59b00684d3 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -5994,14 +5994,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -6062,14 +6054,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -6214,7 +6198,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -6228,14 +6212,6 @@ "state": "strafeLeftHmd", "var": "isMovingLeftHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" @@ -6278,7 +6254,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -6292,14 +6268,6 @@ "state": "strafeRightHmd", "var": "isMovingRightHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index fd8bdb1a0b..01ff217aeb 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1510,19 +1510,29 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos if (_previousControllerParameters.inputX > 0.0f) { // right + if (!_headEnabled) { + _animVars.set("isInputRight", true); + } else { + _animVars.set("isInputRight", false); + } + + _animVars.set("isInputLeft", false); _animVars.set("isInputForward", false); _animVars.set("isInputBackward", false); - _animVars.set("isInputRight", true); - _animVars.set("isInputLeft", false); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); _animVars.set("isNotInputNoMomentum", false); } else { // left + if (!_headEnabled) { + _animVars.set("isInputLeft", true); + } else { + _animVars.set("isInputLeft", false); + } + _animVars.set("isInputForward", false); _animVars.set("isInputBackward", false); _animVars.set("isInputRight", false); - _animVars.set("isInputLeft", true); _animVars.set("isNotInput", false); _animVars.set("isNotInputSlow", false); _animVars.set("isNotInputNoMomentum", false); From a61857b6d8a1e74c06561114325d916c81e30b07 Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Tue, 12 Nov 2019 14:17:23 -0800 Subject: [PATCH 184/547] JSDoc revisions for PR16025 --- .../src/raypick/PickScriptingInterface.cpp | 22 ++++++++++++------- .../src/raypick/PickScriptingInterface.h | 19 ++++++++-------- .../src/raypick/PointerScriptingInterface.cpp | 19 +++++++++++----- .../src/raypick/PointerScriptingInterface.h | 11 +++++----- 4 files changed, 43 insertions(+), 28 deletions(-) diff --git a/interface/src/raypick/PickScriptingInterface.cpp b/interface/src/raypick/PickScriptingInterface.cpp index 3a7b67a8e9..035ffde374 100644 --- a/interface/src/raypick/PickScriptingInterface.cpp +++ b/interface/src/raypick/PickScriptingInterface.cpp @@ -99,9 +99,11 @@ PickFilter getPickFilter(unsigned int filter) { * @property {Vec3} [dirOffset] - Synonym for direction. * @property {Quat} [orientation] - Alternative property for specifying direction. The value is applied to the * default direction value. - * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A ray pick's type is {@link PickType.Ray}. - * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale (usually an avatar or an entity). - * Its value is the original scale of the parent at the moment the pick was created, and is used to scale the pointer which owns this pick, if any. + * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or + * {@link Picks.getPickScriptParameters}. A ray pick's type is {@link PickType.Ray}. + * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale + * (usually an avatar or an entity). Its value is the original scale of the parent at the moment the pick was created, and + * is used to scale the pointer which owns this pick, if any. */ std::shared_ptr PickScriptingInterface::buildRayPick(const QVariantMap& propMap) { #if defined (Q_OS_ANDROID) @@ -170,7 +172,8 @@ std::shared_ptr PickScriptingInterface::buildRayPick(const QVariantMa * means no maximum. * @property {Vec3} [tipOffset=0,0.095,0] - The position of the stylus tip relative to the hand position at default avatar * scale. - * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A stylus pick's type is {@link PickType.Stylus}. + * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or + * {@link Picks.getPickScriptParameters}. A stylus pick's type is {@link PickType.Stylus}. */ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVariantMap& propMap) { bilateral::Side side = bilateral::Side::Invalid; @@ -204,7 +207,8 @@ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVarian return std::make_shared(side, filter, maxDistance, enabled, tipOffset); } -// NOTE: Laser pointer still uses scaleWithAvatar. Until scaleWithAvatar is also deprecated for pointers, scaleWithAvatar should not be removed from the pick API. +// NOTE: Laser pointer still uses scaleWithAvatar. Until scaleWithAvatar is also deprecated for pointers, scaleWithAvatar +// should not be removed from the pick API. /**jsdoc * The properties of a parabola pick. * @@ -245,9 +249,11 @@ std::shared_ptr PickScriptingInterface::buildStylusPick(const QVarian * with the avatar or other parent. * @property {boolean} [scaleWithAvatar=true] - Synonym for scalewithParent. *

Deprecated: This property is deprecated and will be removed.

- * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or {@link Picks.getPickScriptParameters}. A parabola pick's type is {@link PickType.Parabola}. - * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale (usually an avatar or an entity). - * Its value is the original scale of the parent at the moment the pick was created, and is used to rescale the pick, and/or the pointer which owns this pick, if any. + * @property {PickType} pickType - The type of pick when getting these properties from {@link Picks.getPickProperties} or + * {@link Picks.getPickScriptParameters}. A parabola pick's type is {@link PickType.Parabola}. + * @property {Vec3} baseScale - Returned from {@link Picks.getPickProperties} when the pick has a parent with varying scale + * (usually an avatar or an entity). Its value is the original scale of the parent at the moment the pick was created, and + * is used to rescale the pick, and/or the pointer which owns this pick, if any. */ std::shared_ptr PickScriptingInterface::buildParabolaPick(const QVariantMap& propMap) { bool enabled = false; diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index e26b91b9a2..b1943e5a39 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -147,19 +147,20 @@ public: * Gets the current properties of the pick. * @function Picks.getPickProperties * @param {number} id - The ID of the pick. - * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} Properties of the pick, per the pick type. + * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} + * Properties of the pick, per the pick type. */ Q_INVOKABLE QVariantMap getPickProperties(unsigned int uid) const; /**jsdoc - * Gets the parameters that were passed in to {@link Picks.createPick} to create the pick, - * if the pick was created through a script. - * Note that these properties do not reflect the current state of the pick. - * See {@link Picks.getPickProperties}. - * @function Picks.getPickScriptParameters - * @param {number} id - The ID of the pick. - * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} User-provided properties, per the pick type. - */ + * Gets the parameters that were passed in to {@link Picks.createPick} to create the pick, if the pick was created through + * a script. Note that these properties do not reflect the current state of the pick. + * See {@link Picks.getPickProperties}. + * @function Picks.getPickScriptParameters + * @param {number} id - The ID of the pick. + * @returns {Picks.RayPickProperties|Picks.ParabolaPickProperties|Picks.StylusPickProperties|Picks.CollisionPickProperties} + * User-provided properties, per the pick type. + */ Q_INVOKABLE QVariantMap getPickScriptParameters(unsigned int uid) const; /**jsdoc diff --git a/interface/src/raypick/PointerScriptingInterface.cpp b/interface/src/raypick/PointerScriptingInterface.cpp index 3520aacbd0..e8069d12c7 100644 --- a/interface/src/raypick/PointerScriptingInterface.cpp +++ b/interface/src/raypick/PointerScriptingInterface.cpp @@ -89,10 +89,13 @@ QVariantMap PointerScriptingInterface::getPointerScriptParameters(unsigned int u * @property {Pointers.StylusPointerModel} [model] - Override some or all of the default stylus model properties. * @property {boolean} [hover=false] - true if the pointer generates {@link Entities} hover events, * false if it doesn't. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A stylus pointer's type is {@link PickType.Stylus}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of the stylus pointer returned from {@link Pointers.getPointerProperties} + * or {@link Pointers.getPointerScriptParameters}. A stylus pointer's type is {@link PickType.Stylus}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.StylusPickProperties} for additional properties from the underlying stylus pick. */ + /**jsdoc * The properties of a stylus pointer model. * @typedef {object} Pointers.StylusPointerModel @@ -208,8 +211,10 @@ std::shared_ptr PointerScriptingInterface::buildStylus(const QVariant& * false if it doesn't. * @property {Pointers.Trigger[]} [triggers=[]] - A list of ways that a {@link Controller} action or function should trigger * events on the entity or overlay currently intersected. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A laser pointer's type is {@link PickType.Ray}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of pointer returned from {@link Pointers.getPointerProperties} or + * {@link Pointers.getPointerScriptParameters}. A laser pointer's type is {@link PickType.Ray}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.RayPickProperties} for additional properties from the underlying ray pick. */ std::shared_ptr PointerScriptingInterface::buildLaserPointer(const QVariant& properties) { @@ -401,8 +406,10 @@ std::shared_ptr PointerScriptingInterface::buildLaserPointer(const QVar * false if it doesn't. * @property {Pointers.Trigger[]} [triggers=[]] - A list of ways that a {@link Controller} action or function should trigger * events on the entity or overlay currently intersected. - * @property {PickType} pointerType - The type of pointer when getting these properties from {@link Pointers.getPointerProperties} or {@link Pointers.getPointerScriptParameters}. A parabola pointer's type is {@link PickType.Parabola}. - * @property {number} [pickID] - Returned from {@link Pointers.getPointerProperties}. The ID of the pick created alongside this pointer. + * @property {PickType} pointerType - The type of pointer returned from {@link Pointers.getPointerProperties} or + * {@link Pointers.getPointerScriptParameters}. A parabola pointer's type is {@link PickType.Parabola}. + * @property {number} [pickID] - The ID of the pick created alongside this pointer, returned from + * {@link Pointers.getPointerProperties}. * @see {@link Picks.ParabolaPickProperties} for additional properties from the underlying parabola pick. */ std::shared_ptr PointerScriptingInterface::buildParabolaPointer(const QVariant& properties) { diff --git a/interface/src/raypick/PointerScriptingInterface.h b/interface/src/raypick/PointerScriptingInterface.h index 2d2f3f6dae..c4f0d832e3 100644 --- a/interface/src/raypick/PointerScriptingInterface.h +++ b/interface/src/raypick/PointerScriptingInterface.h @@ -161,13 +161,14 @@ public: Q_INVOKABLE void removePointer(unsigned int uid) const { DependencyManager::get()->removePointer(uid); } /**jsdoc - * Gets the parameters that were passed in to {@link Pointers.createPointer} to create the pointer, - * if the pointer was created through a script. - * Note that these properties do not reflect the current state of the pointer. - * See {@link Pointers.getPointerProperties}. + * Gets the parameters that were passed in to {@link Pointers.createPointer} to create the pointer when the pointer was + * created through a script. + *

Note: These properties do not reflect the current state of the pointer. To get the current state + * of the pointer, see {@link Pointers.getPointerProperties}. * @function Pointers.getPointerScriptParameters * @param {number} id - The ID of the pointer. - * @returns {Pointers.RayPointerProperties|Picks.ParabolaPointerProperties|Picks.StylusPointerProperties} User-provided properties, per the pointer type. + * @returns {Pointers.RayPointerProperties|Picks.ParabolaPointerProperties|Picks.StylusPointerProperties} + * User-provided properties, per the pointer type. */ Q_INVOKABLE QVariantMap getPointerScriptParameters(unsigned int uid) const; From 11cb6ac6e09592340022cc34521325577a30d85b Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Tue, 12 Nov 2019 14:18:12 -0800 Subject: [PATCH 185/547] JSDoc updates for PR15974 --- interface/src/avatar/MyAvatar.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 5a59e6129a..ca9c839fda 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1899,7 +1899,7 @@ public: Q_INVOKABLE QVariantList getCollidingFlowJoints(); /**jsdoc - * Starts a sitting action for the avatar + * Starts a sitting action for the avatar. * @function MyAvatar.beginSit * @param {Vec3} position - The point in space where the avatar will sit. * @param {Quat} rotation - Initial absolute orientation of the avatar once is seated. @@ -1907,7 +1907,7 @@ public: Q_INVOKABLE void beginSit(const glm::vec3& position, const glm::quat& rotation); /**jsdoc - * Ends a sitting action for the avatar + * Ends a sitting action for the avatar. * @function MyAvatar.endSit * @param {Vec3} position - The position of the avatar when standing up. * @param {Quat} rotation - The absolute rotation of the avatar once the sitting action ends. From ce174696c071088b2574555bd1703d06d472195b Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Tue, 12 Nov 2019 14:38:51 -0800 Subject: [PATCH 186/547] JSDoc revisions for PR 16144 --- interface/src/avatar/MyAvatar.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index ca9c839fda..8eec837d7b 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1746,7 +1746,7 @@ public: void prepareAvatarEntityDataForReload(); /**jsdoc - * Turn the avatar's head until it faces the target point within the 90/-90 degree range. + * Turns the avatar's head until it faces the target point within a 90/-90 degree range. * Once this method is called, API calls will have full control of the head for a limited time. * If this method is not called for two seconds, the engine will regain control of the head. * @function MyAvatar.setHeadLookAt @@ -1755,36 +1755,36 @@ public: Q_INVOKABLE void setHeadLookAt(const glm::vec3& lookAtTarget); /**jsdoc - * Returns the current head look at target point in world coordinates. + * Returns the current target point of the head's look direction in world coordinates. * @function MyAvatar.getHeadLookAt - * @returns {Vec3} The head's look at target in world coordinates. + * @returns {Vec3} The head's "look at" target in world coordinates. */ Q_INVOKABLE glm::vec3 getHeadLookAt() { return _lookAtCameraTarget; } /**jsdoc - * When this function is called the engine regains control of the head immediately. + * Returns control of the avatar's head to the engine, and releases control from API calls. * @function MyAvatar.releaseHeadLookAtControl */ Q_INVOKABLE void releaseHeadLookAtControl(); /**jsdoc - * Force the avatar's eyes to look to the specified location. - * Once this method is called, API calls will have full control of the eyes for a limited time. - * If this method is not called for two seconds, the engine will regain control of the eyes. + * Forces the avatar's eyes to look at a specified location. Once this method is called, API calls + * will have full control of the eyes for a limited time. If this method is not called for two seconds, + * the engine will regain control of the eyes. * @function MyAvatar.setEyesLookAt * @param {Vec3} lookAtTarget - The target point in world coordinates. */ Q_INVOKABLE void setEyesLookAt(const glm::vec3& lookAtTarget); /**jsdoc - * Returns the current eyes look at target point in world coordinates. + * Returns the current target point of the eyes look direction in world coordinates. * @function MyAvatar.getEyesLookAt - * @returns {Vec3} The eyes's look at target in world coordinates. + * @returns {Vec3} The eyes' "look at" target in world coordinates. */ Q_INVOKABLE glm::vec3 getEyesLookAt() { return _eyesLookAtTarget.get(); } /**jsdoc - * When this function is called the engine regains control of the eyes immediately. + * Returns control of the avatar's eyes to the engine, and releases control from API calls. * @function MyAvatar.releaseEyesLookAtControl */ Q_INVOKABLE void releaseEyesLookAtControl(); From 4962e2666414ed3f9b12223cb87a9e98dda6ddbc Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 14:40:23 -0800 Subject: [PATCH 187/547] update ss css --- screenshare/src/index.html | 6 +++--- screenshare/src/main.js | 2 +- screenshare/src/styles.css | 12 ++++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/screenshare/src/index.html b/screenshare/src/index.html index 41cd7a4502..5d3441ea76 100644 --- a/screenshare/src/index.html +++ b/screenshare/src/index.html @@ -41,13 +41,13 @@

-
- Yes, share this content +
+ YES, SHARE THIS CONTENT
No, don't share this content
-
button_selection +
diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 6b01e47210..576e37b3a8 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -18,7 +18,7 @@ if (osType == "Darwin" || osType == "Linux") { height = 660; } else if (osType == "Windows_NT") { width = 973; - height = 735; + height = 740; } if (!gotTheLock) { diff --git a/screenshare/src/styles.css b/screenshare/src/styles.css index c40fdbe024..ad2f316e5c 100644 --- a/screenshare/src/styles.css +++ b/screenshare/src/styles.css @@ -1,5 +1,5 @@ body { - background: black; + background-color: black; box-sizing: border-box; /* display: -webkit-flex; */ /* -webkit-justify-content: center; */ @@ -41,14 +41,18 @@ body { .button_confirmation { margin: 4px; cursor: pointer; - width: 250px; - height: 75px; - line-height: 75px; + width: 300px; + height: 32px; + line-height: 32px; text-align: center; vertical-align: middle; color: white } +.grey_background { + background-color: #191919; +} + #no { color: rgba(1, 152, 203,0.7); } From dda69bf91a52f96352d85844484571e38c01d881 Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Tue, 12 Nov 2019 14:47:09 -0800 Subject: [PATCH 188/547] JSDoc revisions for PR16245 --- interface/src/avatar/MyAvatar.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 8eec837d7b..274c45dc5e 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -1790,12 +1790,11 @@ public: Q_INVOKABLE void releaseEyesLookAtControl(); /**jsdoc - * Aims the pointing directional blending towards the provided target point. - * The "point" reaction should be triggered before using this method. - * MyAvatar.beginReaction("point") - * Returns true if the target point lays in front of the avatar. + * Aims the pointing directional blending towards the provided target point. The "point" reaction should be triggered + * before using this method with the code MyAvatar.beginReaction("point"). * @function MyAvatar.setPointAt * @param {Vec3} pointAtTarget - The target point in world coordinates. + * @returns {boolean} true if the target point lays in front of the avatar; false otherwise. */ Q_INVOKABLE bool setPointAt(const glm::vec3& pointAtTarget); From 239ca45754027953ad116b41fdea81a84f98457a Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 15:10:47 -0800 Subject: [PATCH 189/547] cleaned up logs and old code --- screenshare/src/app.js | 63 +++++++++++--------------------------- screenshare/src/main.js | 12 +++----- screenshare/src/styles.css | 34 +------------------- 3 files changed, 24 insertions(+), 85 deletions(-) diff --git a/screenshare/src/app.js b/screenshare/src/app.js index 5d0253b7f2..a8ba50770e 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -15,7 +15,6 @@ }" */ -var isBrowser = false; const imageWidth = 265; const imageHeight = 165; @@ -36,14 +35,11 @@ for (let index = 0; index < images; index++) { testSources.push(test); } -// if (!isBrowser) { - const electron = require('electron'); -// } +const electron = require('electron'); let currentScreensharePickID = ""; function screensharePicked(id){ currentScreensharePickID = id; - console.log(currentScreensharePickID); document.getElementById("share_pick").innerHTML = ""; addSource(sourceMap[id], "share_pick"); togglePage(); @@ -77,13 +73,12 @@ function togglePage(){ // UI function addSource(source, type) { let sourceBody = document.createElement('div') - let thumbnail = isBrowser ? source.thumbnail : source.thumbnail.toDataURL(); + let thumbnail = source.thumbnail.toDataURL(); sourceBody.classList.add("box") if (type === "share_pick") { sourceBody.style.marginLeft = "0px"; } - let circle = `
` let image = ""; if (source.appIcon) { image = ``; @@ -97,7 +92,6 @@ function togglePage(){

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 literal 233392 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%0Dks) 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 C_^_S; diff --git a/interface/resources/avatar/animations/settle_to_idle03.fbx b/interface/resources/avatar/animations/settle_to_idle03.fbx index e8de60d95672c5a7100dabfbfff809b79a3f5fc8..e7b48309bb368759f1255c828f57b5fe9db65e73 100644 GIT binary patch literal 275808 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 diff --git a/interface/resources/avatar/animations/settle_to_idle04.fbx b/interface/resources/avatar/animations/settle_to_idle04.fbx index 275cb1e97fb9c46e0e890528e1f1d0b77311a2d9..cc31a240cb13d445935375dde193cea8a8487f66 100644 GIT binary patch delta 51322 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∾7>KU!=I$WU=l@gm{Z#P*|6rN# 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 Wdi%-jD^ZP!qFH$^Qq{?gI4y diff --git a/interface/resources/avatar/animations/settle_to_idle_small.fbx b/interface/resources/avatar/animations/settle_to_idle_small.fbx index fe10293b81eeb5a6ecbc0bdb00c863d91f74dc29..21e2ee8478f24a146e1b5beca8109b612400127a 100644 GIT binary patch literal 431040 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 l{%ekVaya(jHTmLjDr9G literal 398128 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 Qjp5PH(?0Asy+oS-2kd{TnE(I) diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json index a495f7ef8f..9c417be90b 100644 --- a/interface/resources/avatar/avatar-animation.json +++ b/interface/resources/avatar/avatar-animation.json @@ -5452,7 +5452,7 @@ "children": [ ], "data": { - "endFrame": 34, + "endFrame": 40, "loopFlag": false, "startFrame": 1, "timeScale": 1, diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 0a9efadb81..fd8bdb1a0b 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1457,15 +1457,17 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isInputBackward", false); _animVars.set("isInputRight", false); _animVars.set("isInputLeft", false); - _animVars.set("isNotInput", true); - if (_isMovingWithMomentum) { - _animVars.set("isNotInputSlow", true); - _animVars.set("isNotInputNoMomentum", false); - } else { - _animVars.set("isNotInputSlow", false); - _animVars.set("isNotInputNoMomentum", true); - } + // directly reflects input + _animVars.set("isNotInput", true); + + // no input + speed drops to SLOW_SPEED_THRESHOLD + // (don't transition run->idle - slow to walk first) + _animVars.set("isNotInputSlow", _isMovingWithMomentum); + + // no input + speed didn't get above HAS_MOMENTUM_THRESHOLD since last idle + // (brief inputs and movement adjustments) + _animVars.set("isNotInputNoMomentum", !_isMovingWithMomentum); } else { From b7da5d0d7283abf43d44b3f92108333f0b6a452b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Fri, 8 Nov 2019 13:56:44 -0800 Subject: [PATCH 163/547] Update Model::calculateTriangleSets to use hfm::Shapes --- libraries/render-utils/src/Model.cpp | 112 +++++++++++++-------------- 1 file changed, 52 insertions(+), 60 deletions(-) diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 116c3dbb19..b932e4df60 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -824,77 +824,69 @@ scriptable::ScriptableModelBase Model::getScriptableModel() { void Model::calculateTriangleSets(const HFMModel& hfmModel) { PROFILE_RANGE(render, __FUNCTION__); - uint32_t numberOfMeshes = (uint32_t)hfmModel.meshes.size(); + uint32_t meshInstanceCount = 0; + uint32_t lastMeshForInstanceCount = hfm::UNDEFINED_KEY; + for (const auto& shape : hfmModel.shapes) { + if (shape.mesh != lastMeshForInstanceCount) { + ++meshInstanceCount; + } + lastMeshForInstanceCount = shape.mesh; + } _triangleSetsValid = true; _modelSpaceMeshTriangleSets.clear(); - _modelSpaceMeshTriangleSets.resize(numberOfMeshes); + _modelSpaceMeshTriangleSets.reserve(meshInstanceCount); - for (uint32_t i = 0; i < numberOfMeshes; i++) { - const HFMMesh& mesh = hfmModel.meshes.at(i); + uint32_t lastMeshForTriangleBuilding = hfm::UNDEFINED_KEY; + glm::mat4 lastTransformForTriangleBuilding { 0 }; + std::vector transformedPoints; + for (const auto& shape : hfmModel.shapes) { + const uint32_t meshIndex = shape.mesh; + const hfm::Mesh& mesh = hfmModel.meshes.at(meshIndex); + const auto& triangleListMesh = mesh.triangleListMesh; + const glm::vec2 part = triangleListMesh.parts[shape.meshPart]; + glm::mat4 worldFromMeshTransform; + if (shape.joint != hfm::UNDEFINED_KEY) { + // globalTransform includes hfmModel.offset, + // which includes the scaling, rotation, and translation specified by the FST, + // and the scaling from the unit conversion in FBX. + // This can't change at runtime, so we can safely store these in our TriangleSet. + worldFromMeshTransform = hfmModel.joints[shape.joint].globalTransform; + } - const uint32_t numberOfParts = (uint32_t)mesh.parts.size(); - auto& meshTriangleSets = _modelSpaceMeshTriangleSets[i]; - meshTriangleSets.resize(numberOfParts); + if (meshIndex != lastMeshForTriangleBuilding || worldFromMeshTransform != lastTransformForTriangleBuilding) { + lastMeshForTriangleBuilding = meshIndex; + lastTransformForTriangleBuilding = worldFromMeshTransform; + _modelSpaceMeshTriangleSets.emplace_back(); + _modelSpaceMeshTriangleSets.back().reserve(mesh.parts.size()); - for (uint32_t j = 0; j < numberOfParts; j++) { - const HFMMeshPart& part = mesh.parts.at(j); - - auto& partTriangleSet = meshTriangleSets[j]; - - const int INDICES_PER_TRIANGLE = 3; - const int INDICES_PER_QUAD = 4; - const int TRIANGLES_PER_QUAD = 2; - - // tell our triangleSet how many triangles to expect. - int numberOfQuads = part.quadIndices.size() / INDICES_PER_QUAD; - int numberOfTris = part.triangleIndices.size() / INDICES_PER_TRIANGLE; - int totalTriangles = (numberOfQuads * TRIANGLES_PER_QUAD) + numberOfTris; - partTriangleSet.reserve(totalTriangles); - - auto meshTransform = hfmModel.offset * mesh.modelTransform; - - if (part.quadIndices.size() > 0) { - int vIndex = 0; - for (int q = 0; q < numberOfQuads; q++) { - int i0 = part.quadIndices[vIndex++]; - int i1 = part.quadIndices[vIndex++]; - int i2 = part.quadIndices[vIndex++]; - int i3 = part.quadIndices[vIndex++]; - - // track the model space version... these points will be transformed by the FST's offset, - // which includes the scaling, rotation, and translation specified by the FST/FBX, - // this can't change at runtime, so we can safely store these in our TriangleSet - glm::vec3 v0 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i0], 1.0f)); - glm::vec3 v1 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i1], 1.0f)); - glm::vec3 v2 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i2], 1.0f)); - glm::vec3 v3 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i3], 1.0f)); - - Triangle tri1 = { v0, v1, v3 }; - Triangle tri2 = { v1, v2, v3 }; - partTriangleSet.insert(tri1); - partTriangleSet.insert(tri2); + transformedPoints = triangleListMesh.vertices; + if (worldFromMeshTransform != glm::mat4()) { + for (auto& point : transformedPoints) { + point = glm::vec3(worldFromMeshTransform * glm::vec4(point, 1.0f)); } } + } + auto& meshTriangleSets = _modelSpaceMeshTriangleSets.back(); + meshTriangleSets.emplace_back(); + auto& partTriangleSet = meshTriangleSets.back(); - if (part.triangleIndices.size() > 0) { - int vIndex = 0; - for (int t = 0; t < numberOfTris; t++) { - int i0 = part.triangleIndices[vIndex++]; - int i1 = part.triangleIndices[vIndex++]; - int i2 = part.triangleIndices[vIndex++]; + const static size_t INDICES_PER_TRIANGLE = 3; + const size_t triangleCount = (size_t)(part.y) / INDICES_PER_TRIANGLE; + partTriangleSet.reserve(triangleCount); + const size_t indexStart = (uint32_t)part.x; + const size_t indexEnd = indexStart + (triangleCount * INDICES_PER_TRIANGLE); + for (size_t i = indexStart; i < indexEnd; i += INDICES_PER_TRIANGLE) { + const int i0 = triangleListMesh.indices[i]; + const int i1 = triangleListMesh.indices[i + 1]; + const int i2 = triangleListMesh.indices[i + 2]; - // track the model space version... these points will be transformed by the FST's offset, - // which includes the scaling, rotation, and translation specified by the FST/FBX, - // this can't change at runtime, so we can safely store these in our TriangleSet - glm::vec3 v0 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i0], 1.0f)); - glm::vec3 v1 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i1], 1.0f)); - glm::vec3 v2 = glm::vec3(meshTransform * glm::vec4(mesh.vertices[i2], 1.0f)); + const glm::vec3 v0 = transformedPoints[i0]; + const glm::vec3 v1 = transformedPoints[i1]; + const glm::vec3 v2 = transformedPoints[i2]; - Triangle tri = { v0, v1, v2 }; - partTriangleSet.insert(tri); - } - } + const Triangle tri = { v0, v1, v2 }; + partTriangleSet.insert(tri); } } } From 52acfc9333cb527dc97d940d65da976d1af1ab76 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Fri, 8 Nov 2019 14:22:04 -0800 Subject: [PATCH 164/547] Speculative fix for infinite loop in SafeLanding This PR containts two fixes. 1) Tightening up the locks in the SafeLanding class to prevent race conditions. By inspection there are cases where variables are read and modified outside of locks. 2) A check to help prevent an infinite loop in the _sequenceNumber std::distance calculation. This is the main issue, in some cases backtrace is reporting the main thread as deadlocked. The stacktrace points to an issue with the std::distance() calculation. If the EntityQueryInitialResultsComplete is delayed signficantly, there could be a rare case where the _sequenceNumber map grows large enough for the wraparound less then operator will no longer function correctly. This will cause the std::distance calculation to never complete. I've added a guard to prevent this from happening and some logs to help diagnose this issue in the future. --- interface/src/octree/SafeLanding.cpp | 77 ++++++++++++++++------------ interface/src/octree/SafeLanding.h | 4 +- 2 files changed, 46 insertions(+), 35 deletions(-) diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index fbc35f2732..bcf345bae8 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -39,6 +39,7 @@ bool SafeLanding::SequenceLessThan::operator()(const OCTREE_PACKET_SEQUENCE& a, void SafeLanding::startTracking(QSharedPointer entityTreeRenderer) { if (!entityTreeRenderer.isNull()) { + qCDebug(interfaceapp) << "SafeLanding has started tracking"; auto entityTree = entityTreeRenderer->getTree(); if (entityTree && !_trackingEntities) { Locker lock(_lock); @@ -104,47 +105,55 @@ void SafeLanding::updateTracking() { return; } - { - Locker lock(_lock); - bool enableInterstitial = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); - auto entityMapIter = _trackedEntities.begin(); - while (entityMapIter != _trackedEntities.end()) { - auto entity = entityMapIter->second; - bool isVisuallyReady = true; - if (enableInterstitial) { - auto entityRenderable = _entityTreeRenderer->renderableForEntityId(entityMapIter->first); - if (!entityRenderable) { - _entityTreeRenderer->addingEntity(entityMapIter->first); - } - isVisuallyReady = entity->isVisuallyReady() || (!entityRenderable && !entity->isParentPathComplete()); - } - if (isEntityPhysicsReady(entity) && isVisuallyReady) { - entityMapIter = _trackedEntities.erase(entityMapIter); - } else { - entityMapIter++; - } - } + Locker lock(_lock); + + bool enableInterstitial = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); + auto entityMapIter = _trackedEntities.begin(); + while (entityMapIter != _trackedEntities.end()) { + auto entity = entityMapIter->second; + bool isVisuallyReady = true; if (enableInterstitial) { - _trackedEntityStabilityCount++; + auto entityRenderable = _entityTreeRenderer->renderableForEntityId(entityMapIter->first); + if (!entityRenderable) { + _entityTreeRenderer->addingEntity(entityMapIter->first); + } + isVisuallyReady = entity->isVisuallyReady() || (!entityRenderable && !entity->isParentPathComplete()); } + if (isEntityPhysicsReady(entity) && isVisuallyReady) { + entityMapIter = _trackedEntities.erase(entityMapIter); + } else { + entityMapIter++; + } + } + if (enableInterstitial) { + _trackedEntityStabilityCount++; } if (_trackedEntities.empty()) { // no more tracked entities --> check sequenceNumbers if (_sequenceStart != SafeLanding::INVALID_SEQUENCE) { bool shouldStop = false; - { - Locker lock(_lock); - auto sequenceSize = _sequenceEnd - _sequenceStart; // this works even in rollover case - auto startIter = _sequenceNumbers.find(_sequenceStart); - auto endIter = _sequenceNumbers.find(_sequenceEnd - 1); + auto sequenceSize = _sequenceEnd - _sequenceStart; // this works even in rollover case + auto startIter = _sequenceNumbers.find(_sequenceStart); + auto endIter = _sequenceNumbers.find(_sequenceEnd - 1); - bool missingSequenceNumbers = qApp->isMissingSequenceNumbers(); - shouldStop = (sequenceSize == 0 || + bool missingSequenceNumbers = qApp->isMissingSequenceNumbers(); + + // If the EntityQueryInitialResultsComplete packet is really late due to packet loss, the + // _sequenceNumbers map will be filled with unnecessary sequence numbers. This can cause + // the main thread to enter an infinite loop in the std::distance() calculation. + // Try to guard against this. This might cause physics to be enabled too soon, but + // that is preferable to locking up. + bool tooManySequenceNumbers = _sequenceNumbers.size() >= (std::numeric_limits::max() / 2); + + qCDebug(interfaceapp) << "SafeLanding has no more tracked entities and" << _sequenceNumbers.size() << "sequence numbers"; + + shouldStop = (sequenceSize == 0 || (startIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end() && + !tooManySequenceNumbers && ((distance(startIter, endIter) == sequenceSize - 1) || !missingSequenceNumbers))); - } + if (shouldStop) { stopTracking(); } @@ -153,6 +162,8 @@ void SafeLanding::updateTracking() { } void SafeLanding::stopTracking() { + qCDebug(interfaceapp) << "SafeLanding has stopped tracking"; + Locker lock(_lock); if (_trackingEntities) { _trackingEntities = false; @@ -169,6 +180,7 @@ void SafeLanding::stopTracking() { } void SafeLanding::reset() { + Locker lock(_lock); _trackingEntities = false; _trackedEntities.clear(); _maxTrackedEntityCount = 0; @@ -177,6 +189,7 @@ void SafeLanding::reset() { } bool SafeLanding::trackingIsComplete() const { + Locker lock(_lock); return !_trackingEntities && (_sequenceStart != SafeLanding::INVALID_SEQUENCE); } @@ -241,10 +254,8 @@ void SafeLanding::debugDumpSequenceIDs() const { ++itr; while (itr != _sequenceNumbers.end()) { OCTREE_PACKET_SEQUENCE s = *itr; - if (s != p + 1) { - qCDebug(interfaceapp) << "Gap from" << (int32_t)p << "to" << (int32_t)s << "(exclusive)"; - p = s; - } + qCDebug(interfaceapp) << " " << (int32_t)s; + p = s; ++itr; } if (p != SafeLanding::INVALID_SEQUENCE) { diff --git a/interface/src/octree/SafeLanding.h b/interface/src/octree/SafeLanding.h index 00473f6fc8..d3131752bf 100644 --- a/interface/src/octree/SafeLanding.h +++ b/interface/src/octree/SafeLanding.h @@ -51,8 +51,8 @@ private: bool isEntityPhysicsReady(const EntityItemPointer& entity); void debugDumpSequenceIDs() const; - std::mutex _lock; - using Locker = std::lock_guard; + mutable std::recursive_mutex _lock; + using Locker = std::lock_guard; bool _trackingEntities { false }; QSharedPointer _entityTreeRenderer; using EntityMap = std::map; From 63eb905712597903f242ce28a1605b91ba260d1c Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sat, 9 Nov 2019 09:32:00 -0800 Subject: [PATCH 165/547] Redefine audio zone attenuation coefficient of 1.0 to mean "silent at any distance" instead of extreme rate of falloff with distance. --- assignment-client/src/audio/AudioMixerSlave.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/audio/AudioMixerSlave.cpp b/assignment-client/src/audio/AudioMixerSlave.cpp index e5e9f89984..204095ab94 100644 --- a/assignment-client/src/audio/AudioMixerSlave.cpp +++ b/assignment-client/src/audio/AudioMixerSlave.cpp @@ -782,7 +782,7 @@ float computeGain(float masterAvatarGain, gain *= std::max(1.0f - d / (distanceLimit - ATTN_DISTANCE_REF), 0.0f); gain = std::min(gain, ATTN_GAIN_MAX); - } else { + } else if (attenuationPerDoublingInDistance < 1.0f) { // translate a positive zone setting to gain per log2(distance) const float MIN_ATTENUATION_COEFFICIENT = 0.001f; // -60dB per log2(distance) float g = glm::clamp(1.0f - attenuationPerDoublingInDistance, MIN_ATTENUATION_COEFFICIENT, 1.0f); @@ -792,6 +792,10 @@ float computeGain(float masterAvatarGain, float d = (1.0f / ATTN_DISTANCE_REF) * std::max(distance, HRTF_NEARFIELD_MIN); gain *= fastExp2f(fastLog2f(g) * fastLog2f(d)); gain = std::min(gain, ATTN_GAIN_MAX); + + } else { + // translate a zone setting of 1.0 be silent at any distance + gain = 0.0f; } return gain; From ddd11305de1e3a74babfdea0245ff89b9bded726 Mon Sep 17 00:00:00 2001 From: Ken Cooke Date: Sat, 9 Nov 2019 09:57:16 -0800 Subject: [PATCH 166/547] Improved HRTF algorithm to expose parametric occlusion/lowpass effect --- libraries/audio/src/AudioHRTF.cpp | 213 +++++++++++------------------- libraries/audio/src/AudioHRTF.h | 17 ++- 2 files changed, 90 insertions(+), 140 deletions(-) diff --git a/libraries/audio/src/AudioHRTF.cpp b/libraries/audio/src/AudioHRTF.cpp index e5e32781b0..be7fecb450 100644 --- a/libraries/audio/src/AudioHRTF.cpp +++ b/libraries/audio/src/AudioHRTF.cpp @@ -25,13 +25,6 @@ #define ALIGN32 #endif -#ifndef MAX -#define MAX(a,b) (((a) > (b)) ? (a) : (b)) -#endif -#ifndef MIN -#define MIN(a,b) (((a) < (b)) ? (a) : (b)) -#endif - // // Equal-gain crossfade // @@ -114,106 +107,49 @@ static const float nearFieldTable[NNEARFIELD][3] = { // { b0, b1, a1 } }; // -// Model the frequency-dependent attenuation of sound propogation in air. +// Parametric lowpass filter to model sound propogation or occlusion. // -// Fit using linear regression to a log-log model of lowpass cutoff frequency vs distance, -// loosely based on data from Handbook of Acoustics. Only the onset of significant -// attenuation is modelled, not the filter slope. +// lpf = 0.0 -> -3dB @ 50kHz +// lpf = 0.5 -> -3dB @ 1kHz +// lpf = 1.0 -> -3dB @ 20Hz // -// 1m -> -3dB @ 55kHz -// 10m -> -3dB @ 12kHz -// 100m -> -3dB @ 2.5kHz -// 1km -> -3dB @ 0.6kHz -// 10km -> -3dB @ 0.1kHz -// -static const int NLOWPASS = 64; -static const float lowpassTable[NLOWPASS][5] = { // { b0, b1, b2, a1, a2 } - // distance = 1 - { 0.999772371f, 1.399489756f, 0.454495527f, 1.399458985f, 0.454298669f }, - { 0.999631480f, 1.357609808f, 0.425210203f, 1.357549905f, 0.424901586f }, - { 0.999405154f, 1.311503050f, 0.394349994f, 1.311386830f, 0.393871368f }, - { 0.999042876f, 1.260674595f, 0.361869089f, 1.260450057f, 0.361136504f }, - // distance = 2 - { 0.998465222f, 1.204646525f, 0.327757118f, 1.204214978f, 0.326653886f }, - { 0.997548106f, 1.143019308f, 0.292064663f, 1.142195387f, 0.290436690f }, - { 0.996099269f, 1.075569152f, 0.254941286f, 1.074009405f, 0.252600301f }, - { 0.993824292f, 1.002389610f, 0.216688640f, 0.999469185f, 0.213433357f }, - // distance = 4 - { 0.990280170f, 0.924075266f, 0.177827150f, 0.918684864f, 0.173497723f }, - { 0.984818279f, 0.841917936f, 0.139164195f, 0.832151968f, 0.133748443f }, - { 0.976528670f, 0.758036513f, 0.101832398f, 0.740761682f, 0.095635899f }, - { 0.964216485f, 0.675305244f, 0.067243474f, 0.645654855f, 0.061110348f }, - // distance = 8 - { 0.946463038f, 0.596943020f, 0.036899688f, 0.547879974f, 0.032425772f }, - { 0.921823868f, 0.525770189f, 0.012060451f, 0.447952111f, 0.011702396f }, - { 0.890470015f, 0.463334299f, -0.001227816f, 0.347276405f, 0.005300092f }, - { 0.851335343f, 0.407521164f, -0.009353968f, 0.241900234f, 0.007602305f }, - // distance = 16 - { 0.804237360f, 0.358139558f, -0.014293332f, 0.130934213f, 0.017149373f }, - { 0.750073259f, 0.314581568f, -0.016625381f, 0.014505388f, 0.033524057f }, - { 0.690412072f, 0.275936128f, -0.017054561f, -0.106682490f, 0.055976129f }, - { 0.627245545f, 0.241342015f, -0.016246850f, -0.231302564f, 0.083643275f }, - // distance = 32 - { 0.562700627f, 0.210158533f, -0.014740899f, -0.357562697f, 0.115680957f }, - { 0.498787849f, 0.181982455f, -0.012925406f, -0.483461730f, 0.151306628f }, - { 0.437224055f, 0.156585449f, -0.011055180f, -0.607042210f, 0.189796534f }, - { 0.379336998f, 0.133834032f, -0.009281617f, -0.726580065f, 0.230469477f }, - // distance = 64 - { 0.326040627f, 0.113624970f, -0.007683443f, -0.840693542f, 0.272675696f }, - { 0.277861727f, 0.095845793f, -0.006291936f, -0.948380091f, 0.315795676f }, - { 0.234997480f, 0.080357656f, -0.005109519f, -1.049001190f, 0.359246807f }, - { 0.197386484f, 0.066993521f, -0.004122547f, -1.142236313f, 0.402493771f }, - // distance = 128 - { 0.164780457f, 0.055564709f, -0.003309645f, -1.228023442f, 0.445058962f }, - { 0.136808677f, 0.045870650f, -0.002646850f, -1.306498037f, 0.486530514f }, - { 0.113031290f, 0.037708627f, -0.002110591f, -1.377937457f, 0.526566783f }, - { 0.092980475f, 0.030881892f, -0.001679255f, -1.442713983f, 0.564897095f }, - // distance = 256 - { 0.076190239f, 0.025205585f, -0.001333863f, -1.501257246f, 0.601319206f }, - { 0.062216509f, 0.020510496f, -0.001058229f, -1.554025452f, 0.635694228f }, - { 0.050649464f, 0.016644994f, -0.000838826f, -1.601484205f, 0.667939837f }, - { 0.041120009f, 0.013475547f, -0.000664513f, -1.644091518f, 0.698022561f }, - // distance = 512 - { 0.033302044f, 0.010886252f, -0.000526217f, -1.682287704f, 0.725949783f }, - { 0.026911868f, 0.008777712f, -0.000416605f, -1.716488979f, 0.751761953f }, - { 0.021705773f, 0.007065551f, -0.000329788f, -1.747083800f, 0.775525335f }, - { 0.017476603f, 0.005678758f, -0.000261057f, -1.774431204f, 0.797325509f }, - // distance = 1024 - { 0.014049828f, 0.004558012f, -0.000206658f, -1.798860530f, 0.817261711f }, - { 0.011279504f, 0.003654067f, -0.000163610f, -1.820672082f, 0.835442043f }, - { 0.009044384f, 0.002926264f, -0.000129544f, -1.840138412f, 0.851979516f }, - { 0.007244289f, 0.002341194f, -0.000102586f, -1.857505967f, 0.866988864f }, - // distance = 2048 - { 0.005796846f, 0.001871515f, -0.000081250f, -1.872996926f, 0.880584038f }, - { 0.004634607f, 0.001494933f, -0.000064362f, -1.886811124f, 0.892876302f }, - { 0.003702543f, 0.001193324f, -0.000050993f, -1.899127955f, 0.903972829f }, - { 0.002955900f, 0.000951996f, -0.000040407f, -1.910108223f, 0.913975712f }, - // distance = 4096 - { 0.002358382f, 0.000759068f, -0.000032024f, -1.919895894f, 0.922981321f }, - { 0.001880626f, 0.000604950f, -0.000025383f, -1.928619738f, 0.931079931f }, - { 0.001498926f, 0.000481920f, -0.000020123f, -1.936394836f, 0.938355560f }, - { 0.001194182f, 0.000383767f, -0.000015954f, -1.943323983f, 0.944885977f }, - // distance = 8192 - { 0.000951028f, 0.000305502f, -0.000012651f, -1.949498943f, 0.950742822f }, - { 0.000757125f, 0.000243126f, -0.000010033f, -1.955001608f, 0.955991826f }, - { 0.000602572f, 0.000193434f, -0.000007957f, -1.959905036f, 0.960693085f }, - { 0.000479438f, 0.000153861f, -0.000006312f, -1.964274383f, 0.964901371f }, - // distance = 16384 - { 0.000381374f, 0.000122359f, -0.000005007f, -1.968167752f, 0.968666478f }, - { 0.000303302f, 0.000097288f, -0.000003972f, -1.971636944f, 0.972033562f }, - { 0.000241166f, 0.000077342f, -0.000003151f, -1.974728138f, 0.975043493f }, - { 0.000191726f, 0.000061475f, -0.000002500f, -1.977482493f, 0.977733194f }, - // distance = 32768 - { 0.000152399f, 0.000048857f, -0.000001984f, -1.979936697f, 0.980135969f }, - { 0.000121122f, 0.000038825f, -0.000001574f, -1.982123446f, 0.982281818f }, - { 0.000096252f, 0.000030849f, -0.000001249f, -1.984071877f, 0.984197728f }, - { 0.000076480f, 0.000024509f, -0.000000991f, -1.985807957f, 0.985907955f }, +static const int NLOWPASS = 32; +static const float lowpassTable[NLOWPASS+1][5] = { // { b0, b1, b2, a1, a2 } + { 0.9996582613f, 1.3644521648f, 0.4299107175f, 1.3643981990f, 0.4296229446f }, + { 0.9990601568f, 1.2627213717f, 0.3631477252f, 1.2625024258f, 0.3624268280f }, + { 0.9974547575f, 1.1378303854f, 0.2891398515f, 1.1369629374f, 0.2874620569f }, + { 0.9932384344f, 0.9872078424f, 0.2089943789f, 0.9839050501f, 0.2055356056f }, + { 0.9825457933f, 0.8153687744f, 0.1271135720f, 0.8036320348f, 0.1213961050f }, + { 0.9572356804f, 0.6404312275f, 0.0534129844f, 0.6033230637f, 0.0477568288f }, + { 0.9052878744f, 0.4902779401f, 0.0035032262f, 0.3924772681f, 0.0065917726f }, + { 0.8204774205f, 0.3736089028f, -0.0129974730f, 0.1678426876f, 0.0132461627f }, + { 0.7032096959f, 0.2836328681f, -0.0170877258f, -0.0810811878f, 0.0508360260f }, + { 0.5685067272f, 0.2128349296f, -0.0148937235f, -0.3461942779f, 0.1126422113f }, + { 0.4355093111f, 0.1558974062f, -0.0110025095f, -0.6105302595f, 0.1909344673f }, + { 0.3186188589f, 0.1108581568f, -0.0074653192f, -0.8569688248f, 0.2789805212f }, + { 0.2244962739f, 0.0766060095f, -0.0048289293f, -1.0745081373f, 0.3707814914f }, + { 0.1535044640f, 0.0516447640f, -0.0030384640f, -1.2590370066f, 0.4611477706f }, + { 0.1025113288f, 0.0341204303f, -0.0018818088f, -1.4113207964f, 0.5460707468f }, + { 0.0672016063f, 0.0221823522f, -0.0011552756f, -1.5347007285f, 0.6229294113f }, + { 0.0434202931f, 0.0142393067f, -0.0007060306f, -1.6334567973f, 0.6904103664f }, + { 0.0277383489f, 0.0090500025f, -0.0004305987f, -1.7118804671f, 0.7482382198f }, + { 0.0175636227f, 0.0057072537f, -0.0002624537f, -1.7738404438f, 0.7968488665f }, + { 0.0110441068f, 0.0035773504f, -0.0001599927f, -1.8226329785f, 0.8370944430f }, + { 0.0069069312f, 0.0022316608f, -0.0000975848f, -1.8609764152f, 0.8700174224f }, + { 0.0043012064f, 0.0013870046f, -0.0000595614f, -1.8910688315f, 0.8966974811f }, + { 0.0026696068f, 0.0008595333f, -0.0000363798f, -1.9146662133f, 0.9181589737f }, + { 0.0016526098f, 0.0005314445f, -0.0000222355f, -1.9331608518f, 0.9353226705f }, + { 0.0010209520f, 0.0003280036f, -0.0000135987f, -1.9476515008f, 0.9489868578f }, + { 0.0006297162f, 0.0002021591f, -0.0000083208f, -1.9590027292f, 0.9598262837f }, + { 0.0003879180f, 0.0001244611f, -0.0000050936f, -1.9678935939f, 0.9684008793f }, + { 0.0002387308f, 0.0000765601f, -0.0000031192f, -1.9748568416f, 0.9751690132f }, + { 0.0001468057f, 0.0000470631f, -0.0000019106f, -1.9803101382f, 0.9805020963f }, + { 0.0000902227f, 0.0000289155f, -0.0000011706f, -1.9845807858f, 0.9846987534f }, + { 0.0000554223f, 0.0000177584f, -0.0000007174f, -1.9879252038f, 0.9879976671f }, + { 0.0000340324f, 0.0000109027f, -0.0000004397f, -1.9905442465f, 0.9905887419f }, + { 0.0000208917f, 0.0000066920f, -0.0000002695f, -1.9925952275f, 0.9926225417f }, }; -static const float HALFPI = 1.570796327f; -static const float PI = 3.141592654f; -static const float TWOPI = 6.283185307f; - // // on x86 architecture, assume that SSE2 is present // @@ -811,44 +747,38 @@ static void splitf(float x, int& expn, float& frac) { expn = (bits.i >> IEEE754_MANT_BITS) - IEEE754_EXPN_BIAS; } -static void distanceBiquad(float distance, float& b0, float& b1, float& b2, float& a1, float& a2) { +static void lowpassBiquad(float lpf, float& b0, float& b1, float& b2, float& a1, float& a2) { // - // Computed from a lookup table quantized to distance = 2^(N/4) - // and reconstructed by piecewise linear interpolation. + // Computed from a lookup table and piecewise linear interpolation. // Approximation error < 0.25dB // + float x = lpf * NLOWPASS; - float x = distance; - x = MIN(x, 1<<30); - x *= x; - x *= x; // x = distance^4 - - // split x into e and frac, such that x = 2^(e+0) + frac * (2^(e+1) - 2^(e+0)) - int e; - float frac; - splitf(x, e, frac); + // split x into index and fraction + int i = (int)x; + float frac = x - (float)i; // clamp to table limits - if (e < 0) { - e = 0; + if (i < 0) { + i = 0; frac = 0.0f; } - if (e > NLOWPASS-2) { - e = NLOWPASS-2; + if (i > NLOWPASS-1) { + i = NLOWPASS-1; frac = 1.0f; } assert(frac >= 0.0f); assert(frac <= 1.0f); - assert(e+0 >= 0); - assert(e+1 < NLOWPASS); + assert(i+0 >= 0); + assert(i+1 <= NLOWPASS); // piecewise linear interpolation - b0 = lowpassTable[e+0][0] + frac * (lowpassTable[e+1][0] - lowpassTable[e+0][0]); - b1 = lowpassTable[e+0][1] + frac * (lowpassTable[e+1][1] - lowpassTable[e+0][1]); - b2 = lowpassTable[e+0][2] + frac * (lowpassTable[e+1][2] - lowpassTable[e+0][2]); - a1 = lowpassTable[e+0][3] + frac * (lowpassTable[e+1][3] - lowpassTable[e+0][3]); - a2 = lowpassTable[e+0][4] + frac * (lowpassTable[e+1][4] - lowpassTable[e+0][4]); + b0 = lowpassTable[i+0][0] + frac * (lowpassTable[i+1][0] - lowpassTable[i+0][0]); + b1 = lowpassTable[i+0][1] + frac * (lowpassTable[i+1][1] - lowpassTable[i+0][1]); + b2 = lowpassTable[i+0][2] + frac * (lowpassTable[i+1][2] - lowpassTable[i+0][2]); + a1 = lowpassTable[i+0][3] + frac * (lowpassTable[i+1][3] - lowpassTable[i+0][3]); + a2 = lowpassTable[i+0][4] + frac * (lowpassTable[i+1][4] - lowpassTable[i+0][4]); } // @@ -903,13 +833,13 @@ static void nearFieldGainCorrection(float azimuth, float distance, float& gainL, float d = (HRTF_NEARFIELD_MAX - distance) * (1.0f / (HRTF_NEARFIELD_MAX - HRTF_HEAD_RADIUS)); // angle of incidence at each ear - float angleL = azimuth + HALFPI; - float angleR = azimuth - HALFPI; + float angleL = azimuth + PI_OVER_TWO; + float angleR = azimuth - PI_OVER_TWO; if (angleL > +PI) { - angleL -= TWOPI; + angleL -= TWO_PI; } if (angleR < -PI) { - angleR += TWOPI; + angleR += TWO_PI; } assert(angleL >= -PI); assert(angleL <= +PI); @@ -968,7 +898,7 @@ static void nearFieldFilter(float gain, float& b0, float& b1, float& a1) { static void azimuthToIndex(float azimuth, int& index0, int& index1, float& frac) { // convert from radians to table units - azimuth *= (HRTF_AZIMUTHS / TWOPI); + azimuth *= (HRTF_AZIMUTHS / TWO_PI); if (azimuth < 0.0f) { azimuth += HRTF_AZIMUTHS; @@ -993,15 +923,15 @@ static void azimuthToIndex(float azimuth, int& index0, int& index1, float& frac) // compute new filters for a given azimuth, distance and gain static void setFilters(float firCoef[4][HRTF_TAPS], float bqCoef[5][8], int delay[4], - int index, float azimuth, float distance, float gain, int channel) { + int index, float azimuth, float distance, float gain, float lpf, int channel) { if (azimuth > PI) { - azimuth -= TWOPI; + azimuth -= TWO_PI; } assert(azimuth >= -PI); assert(azimuth <= +PI); - distance = MAX(distance, HRTF_NEARFIELD_MIN); + distance = std::max(distance, HRTF_NEARFIELD_MIN); // compute the azimuth correction at each ear float azimuthL = azimuth; @@ -1109,7 +1039,7 @@ static void setFilters(float firCoef[4][HRTF_TAPS], float bqCoef[5][8], int dela } else { - distanceBiquad(distance, b0, b1, b2, a1, a2); + lowpassBiquad(lpf, b0, b1, b2, a1, a2); bqCoef[0][channel+4] = b0; bqCoef[1][channel+4] = b1; @@ -1125,7 +1055,8 @@ static void setFilters(float firCoef[4][HRTF_TAPS], float bqCoef[5][8], int dela } } -void AudioHRTF::render(int16_t* input, float* output, int index, float azimuth, float distance, float gain, int numFrames) { +void AudioHRTF::render(int16_t* input, float* output, int index, float azimuth, float distance, float gain, int numFrames, + float lpfDistance) { assert(index >= 0); assert(index < HRTF_TABLES); @@ -1141,23 +1072,29 @@ void AudioHRTF::render(int16_t* input, float* output, int index, float azimuth, // apply global and local gain adjustment gain *= _gainAdjust; + // apply distance filter + float lpf = 0.5f * fastLog2f(std::max(distance, 1.0f)) / fastLog2f(std::max(lpfDistance, 2.0f)); + lpf = std::min(std::max(lpf, 0.0f), 1.0f); + // disable interpolation from reset state if (_resetState) { _azimuthState = azimuth; _distanceState = distance; _gainState = gain; + _lpfState = lpf; } // to avoid polluting the cache, old filters are recomputed instead of stored - setFilters(firCoef, bqCoef, delay, index, _azimuthState, _distanceState, _gainState, L0); + setFilters(firCoef, bqCoef, delay, index, _azimuthState, _distanceState, _gainState, _lpfState, L0); // compute new filters - setFilters(firCoef, bqCoef, delay, index, azimuth, distance, gain, L1); + setFilters(firCoef, bqCoef, delay, index, azimuth, distance, gain, lpf, L1); // new parameters become old _azimuthState = azimuth; _distanceState = distance; _gainState = gain; + _lpfState = lpf; // convert mono input to float for (int i = 0; i < HRTF_BLOCK; i++) { diff --git a/libraries/audio/src/AudioHRTF.h b/libraries/audio/src/AudioHRTF.h index 436d6318a5..6bbd9bc08a 100644 --- a/libraries/audio/src/AudioHRTF.h +++ b/libraries/audio/src/AudioHRTF.h @@ -14,6 +14,9 @@ #include #include +#include + +#include "AudioHelpers.h" static const int HRTF_AZIMUTHS = 72; // 360 / 5-degree steps static const int HRTF_TAPS = 64; // minimum-phase FIR coefficients @@ -34,6 +37,9 @@ static const float HRTF_HEAD_RADIUS = 0.0875f; // average human head in meters static const float ATTN_DISTANCE_REF = 2.0f; // distance where attn is 0dB static const float ATTN_GAIN_MAX = 16.0f; // max gain allowed by distance attn (+24dB) +// Distance filter +static const float LPF_DISTANCE_REF = 256.0f; // approximation of sound propogation in air + class AudioHRTF { public: @@ -47,8 +53,10 @@ public: // distance: source distance in meters // gain: gain factor for distance attenuation // numFrames: must be HRTF_BLOCK in this version + // lpfDistance: distance filter adjustment (distance to 1kHz lowpass in meters) // - void render(int16_t* input, float* output, int index, float azimuth, float distance, float gain, int numFrames); + void render(int16_t* input, float* output, int index, float azimuth, float distance, float gain, int numFrames, + float lpfDistance = LPF_DISTANCE_REF); // // Non-spatialized direct mix (accumulates into existing output) @@ -59,11 +67,14 @@ public: // // Fast path when input is known to be silent and state as been flushed // - void setParameterHistory(float azimuth, float distance, float gain) { + void setParameterHistory(float azimuth, float distance, float gain, float lpfDistance = LPF_DISTANCE_REF) { // new parameters become old _azimuthState = azimuth; _distanceState = distance; _gainState = gain; + + _lpfState = 0.5f * fastLog2f(std::max(distance, 1.0f)) / fastLog2f(std::max(lpfDistance, 2.0f)); + _lpfState = std::min(std::max(_lpfState, 0.0f), 1.0f); } // @@ -88,6 +99,7 @@ public: _azimuthState = 0.0f; _distanceState = 0.0f; _gainState = 0.0f; + _lpfState = 0.0f; // _gainAdjust is retained @@ -123,6 +135,7 @@ private: float _azimuthState = 0.0f; float _distanceState = 0.0f; float _gainState = 0.0f; + float _lpfState = 0.0f; // global and local gain adjustment float _gainAdjust = HRTF_GAIN; From c7b8d97639effe39d2323093a59062b5901b143a Mon Sep 17 00:00:00 2001 From: milad Date: Mon, 11 Nov 2019 09:56:46 -0800 Subject: [PATCH 167/547] updated api to try and communicate over EB, but still not working --- .../ScreenshareScriptingInterface.cpp | 211 ++++++++++-------- .../scripting/ScreenshareScriptingInterface.h | 17 +- 2 files changed, 137 insertions(+), 91 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 33a473142c..62a1215d41 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -2,7 +2,7 @@ // ScreenshareScriptingInterface.cpp // interface/src/scripting/ // -// Created by Milad Nazeri on 2019-10-23. +// Created by Milad Nazeri and Zach Fox on 2019-10-23. // Copyright 2019 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. @@ -14,12 +14,23 @@ #include #include #include +#include +#include +#include +#include +#include #include +#include +#include #include "EntityScriptingInterface.h" #include "ScreenshareScriptingInterface.h" +#include +#include +#include + ScreenshareScriptingInterface::ScreenshareScriptingInterface() { }; @@ -29,8 +40,9 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { static const EntityTypes::EntityType LOCAL_SCREENSHARE_WEB_ENTITY_TYPE = EntityTypes::Web; static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; -static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, 0.0f, 0.1f); +static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862f, 0.0311f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html?1"; +static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { if (QThread::currentThread() != thread()) { // We must start a new QProcess from the main thread. @@ -59,99 +71,120 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } QUuid currentDomainID = DependencyManager::get()->getDomainID(); - - // Make HTTP GET request to: // `https://metaverse.highfidelity.com/api/v1/domain/:domain_id/screenshare`, // passing the Domain ID that the user is connected to, as well as the `roomName`. // The server will respond with the relevant OpenTok Token, Session ID, and API Key. // Upon error-free response, do the logic below, passing in that info as necessary. - QString token = ""; - QString apiKey = ""; - QString sessionID = ""; - - if (isPresenter) { - QStringList arguments; - arguments << "--token=" + token; - arguments << "--apiKey=" + apiKey; - arguments << "--sessionID=" + sessionID; - - connect(_screenshareProcess.get(), &QProcess::errorOccurred, - [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); - connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(_screenshareProcess.get(), &QProcess::stateChanged, - [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); - connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), - [=](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); - }); - - _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); - } - - if (!_screenshareViewerLocalWebEntityUUID.isNull()) { - return; - } - - auto esi = DependencyManager::get(); - if (!esi) { - return; - } - - EntityItemProperties localScreenshareWebEntityProps; - localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); - localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); - localScreenshareWebEntityProps.setLocalPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); - localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); - localScreenshareWebEntityProps.setParentID(smartboardEntityID); - - EntityPropertyFlags desiredSmartboardProperties; - desiredSmartboardProperties += PROP_POSITION; - desiredSmartboardProperties += PROP_DIMENSIONS; - EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); - - localScreenshareWebEntityProps.setPosition(smartboardProps.getPosition()); - localScreenshareWebEntityProps.setDimensions(smartboardProps.getDimensions()); - - QString hostType = "local"; - _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); - - QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, [&](const QUuid& entityID, const QVariant& message) { - if (entityID == _screenshareViewerLocalWebEntityUUID) { - qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; - - auto esi = DependencyManager::get(); - if (!esi) { - return; - } - - QJsonDocument jsonMessage = QJsonDocument::fromVariant(message); - QJsonObject jsonObject = jsonMessage.object(); - - qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message << "`jsonMessage`:" << jsonMessage; - - if (jsonObject["app"] != "screenshare") { - return; - } - - qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; - - if (jsonObject["method"] == "eventBridgeReady") { - QJsonObject responseObject; - responseObject.insert("app", "screenshare"); - responseObject.insert("method", "receiveConnectionInfo"); - QJsonObject responseObjectData; - responseObjectData.insert("token", token); - responseObjectData.insert("projectAPIKey", apiKey); - responseObjectData.insert("sessionID", sessionID); - responseObject.insert("data", responseObjectData); - - qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" << responseObject.toVariantMap(); - - esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); - } + QNetworkAccessManager* manager = new QNetworkAccessManager(); + QObject::connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) { + if (reply->error()) { + qDebug() << "\n\n MN HERE: REPLY" << reply->errorString(); + return; } + + QString answer = reply->readAll(); + qDebug() << "\n\n MN HERE: REPLY" << answer; + + + QString token = ""; + QString apiKey = ""; + QString sessionID = ""; + + if (isPresenter) { + QStringList arguments; + arguments << "--token=" + token; + arguments << "--apiKey=" + apiKey; + arguments << "--sessionID=" + sessionID; + + connect(_screenshareProcess.get(), &QProcess::errorOccurred, + [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); + connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); + connect(_screenshareProcess.get(), &QProcess::stateChanged, + [=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; }); + connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), + [=](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + emit screenshareStopped(); + }); + + _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); + } + + if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + return; + } + + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + EntityItemProperties localScreenshareWebEntityProps; + localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); + localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); + localScreenshareWebEntityProps.setLocalPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); + localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); + localScreenshareWebEntityProps.setParentID(smartboardEntityID); + localScreenshareWebEntityProps.setDimensions(LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS); + + // EntityPropertyFlags desiredSmartboardProperties; + // desiredSmartboardProperties += PROP_POSITION; + // desiredSmartboardProperties += PROP_DIMENSIONS; + // EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); + + QString hostType = "local"; + _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); + + QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, [&](const QUuid& entityID, const QVariant& message) { + if (entityID == _screenshareViewerLocalWebEntityUUID) { + qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; + + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + QJsonDocument jsonMessage = QJsonDocument::fromVariant(message); + QJsonObject jsonObject = jsonMessage.object(); + + qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message << "`jsonMessage`:" << jsonMessage; + + if (jsonObject["app"] != "screenshare") { + return; + } + + qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; + + if (jsonObject["method"] == "eventBridgeReady") { + QJsonObject responseObject; + responseObject.insert("app", "screenshare"); + responseObject.insert("method", "receiveConnectionInfo"); + QJsonObject responseObjectData; + responseObjectData.insert("token", token); + responseObjectData.insert("projectAPIKey", apiKey); + responseObjectData.insert("sessionID", sessionID); + responseObject.insert("data", responseObjectData); + + qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" << responseObject.toVariantMap(); + + // Attempt 1, we receive the eventBridge message, but this won't send a message + // to that js + auto esi = DependencyManager::get(); + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); + + // atempt 2, same outcome + auto entityTreeRenderer = DependencyManager::get(); + auto webEntityRenderable = entityTreeRenderer->renderableForEntityId(_screenshareViewerLocalWebEntityUUID); + webEntityRenderable->emitScriptEvent(responseObject.toVariantMap()); + } + } + }); }); + + QNetworkRequest request; + QString tokboxURL = QProcessEnvironment::systemEnvironment().value("hifiScreenshareUrl"); + request.setUrl(QUrl(tokboxURL)); + manager->get(request); }; void ScreenshareScriptingInterface::stopScreenshare() { diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 671390932f..af682d4e42 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -1,10 +1,23 @@ +// +// ScreenshareScriptingInterface.h +// interface/src/scripting/ +// +// Created by Milad Nazeri and Zach Fox on 2019-10-23. +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + #ifndef hifi_ScreenshareScriptingInterface_h #define hifi_ScreenshareScriptingInterface_h -#include +// #include #include #include - +// #include +// #include +// #include #include #include From 549e181be06eeee49de445be41be2084bb4d4b1e Mon Sep 17 00:00:00 2001 From: amer cerkic Date: Mon, 11 Nov 2019 11:00:33 -0800 Subject: [PATCH 168/547] adding safeguard in case device list is empty --- libraries/audio-client/src/AudioClient.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index 612493db2e..b1bb7d9eba 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -111,11 +111,17 @@ QList getAvailableDevices(QAudio::Mode mode, const QString& } if (defaultDesktopDevice.getDevice().isNull()) { - qCDebug(audioclient) << __FUNCTION__ << "Default device not found in list:" << defDeviceName - << "Setting Default to: " << devices.first().deviceName(); - defaultDesktopDevice = HifiAudioDeviceInfo(devices.first(), true, mode, HifiAudioDeviceInfo::desktop); + if (devices.size() > 0) { + qCDebug(audioclient) << __FUNCTION__ << "Default device not found in list:" << defDeviceName + << "Setting Default to: " << devices.first().deviceName(); + defaultDesktopDevice = HifiAudioDeviceInfo(devices.first(), true, mode, HifiAudioDeviceInfo::desktop); + } else { + //current audio list is empty for some reason. + qCDebug(audioclient) << __FUNCTION__ << "Default device not found in list no alternative selection available"; + } + } else { + newDevices.push_front(defaultDesktopDevice); } - newDevices.push_front(defaultDesktopDevice); if (!hmdName.isNull()) { HifiAudioDeviceInfo hmdDevice; From 3a764169ba1e0deff55e786d1bbdacd12f56c88d Mon Sep 17 00:00:00 2001 From: amer cerkic Date: Mon, 11 Nov 2019 11:13:44 -0800 Subject: [PATCH 169/547] adding new device to list if default not found --- libraries/audio-client/src/AudioClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index b1bb7d9eba..b26c00e82b 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -114,7 +114,7 @@ QList getAvailableDevices(QAudio::Mode mode, const QString& if (devices.size() > 0) { qCDebug(audioclient) << __FUNCTION__ << "Default device not found in list:" << defDeviceName << "Setting Default to: " << devices.first().deviceName(); - defaultDesktopDevice = HifiAudioDeviceInfo(devices.first(), true, mode, HifiAudioDeviceInfo::desktop); + newDevices.push_front(HifiAudioDeviceInfo(devices.first(), true, mode, HifiAudioDeviceInfo::desktop)); } else { //current audio list is empty for some reason. qCDebug(audioclient) << __FUNCTION__ << "Default device not found in list no alternative selection available"; From c36c4a17b1748ea7d195a5876125784110957c11 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Mon, 11 Nov 2019 11:31:34 -0800 Subject: [PATCH 170/547] first pass hookup of seated rotation with acceleration and animation response --- interface/src/avatar/MyAvatar.cpp | 17 +++++++-- libraries/animation/src/Rig.cpp | 35 +++++++++++++++++++ .../src/avatars-renderer/Avatar.h | 1 + 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 2522d0e4c6..87e7c4be5c 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3513,8 +3513,21 @@ void MyAvatar::updateOrientation(float deltaTime) { } setWorldOrientation(glm::slerp(getWorldOrientation(), faceRotation, blend)); } else if (isRotatingWhileSeated) { - float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; - setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); + + float seatedTargetSpeed = -getDriveKey(TRANSLATE_X) * _yawSpeed; + + const float SEATED_ROTATION_RAMP_TIMESCALE = 0.5f; + float blend = deltaTime / SEATED_ROTATION_RAMP_TIMESCALE; + if (blend > 1.0f) { + blend = 1.0f; + } + _seatedBodyYawDelta = (1.0f - blend) * _seatedBodyYawDelta + blend * seatedTargetSpeed; + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); + + + + //float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; + //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); } } diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 0a9efadb81..0d8eeb2535 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1245,6 +1245,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotInAir", true); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); } else if (_state == RigRole::Turn) { if (turningSpeed > 0.0f) { @@ -1275,6 +1278,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotInAir", true); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); } else if (_state == RigRole::Idle) { // default anim vars to notMoving and notTurning @@ -1298,6 +1304,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotInAir", true); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); } else if (_state == RigRole::Hover) { // flying. @@ -1321,6 +1330,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotInAir", true); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); } else if (_state == RigRole::Takeoff) { // jumping in-air @@ -1352,6 +1364,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotInAir", false); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); } else if (_state == RigRole::InAir) { // jumping in-air @@ -1372,6 +1387,9 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isNotTakeoff", true); _animVars.set("isSeated", false); _animVars.set("isNotSeated", true); + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); bool inAirRun = forwardSpeed > 0.1f; if (inAirRun) { @@ -1394,6 +1412,23 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("inAirAlpha", alpha); } else if (_state == RigRole::Seated) { + if (turningSpeed > 0.05f) { + // seated turning right + _animVars.set("isSeatedTurningRight", true); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", false); + } else if (turningSpeed < -0.05f) { + // seated turning left + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", true); + _animVars.set("isSeatedNotTurning", false); + } else { + // seated not turning + _animVars.set("isSeatedTurningRight", false); + _animVars.set("isSeatedTurningLeft", false); + _animVars.set("isSeatedNotTurning", true); + } + _animVars.set("isMovingForward", false); _animVars.set("isMovingBackward", false); _animVars.set("isMovingRight", false); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 031b2f1309..86c19695e1 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -662,6 +662,7 @@ protected: std::vector> _attachmentsToDelete; float _bodyYawDelta { 0.0f }; // degrees/sec + float _seatedBodyYawDelta{ 0.0f }; //degrees/sec // These position histories and derivatives are in the world-frame. // The derivatives are the MEASURED results of all external and internal forces From f806c930aa76a7708c38b2174a7ab3e35032c8cc Mon Sep 17 00:00:00 2001 From: Rebecca Stankus Date: Mon, 11 Nov 2019 17:31:19 -0800 Subject: [PATCH 171/547] Electron app css UI changes --- screenshare/src/app.js | 2 + screenshare/src/index.html | 10 +-- screenshare/src/main.js | 6 +- screenshare/src/styles.css | 127 +++++++++++++++++++++---------------- 4 files changed, 83 insertions(+), 62 deletions(-) diff --git a/screenshare/src/app.js b/screenshare/src/app.js index 0fbddd4a2d..58edb4cb89 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -64,10 +64,12 @@ function togglePage(){ if (currentPage === "mainPage") { currentPage = "confirmationPage"; document.getElementById("select_screen").style.display = "none"; + document.getElementById("subtitle").innerHTML = "Confirm that you'd like to share this content."; document.getElementById("confirmation_screen").style.display = "block"; } else { currentPage = "mainPage"; document.getElementById("select_screen").style.display = "block"; + document.getElementById("subtitle").innerHTML = "Please select the content you'd like to share."; document.getElementById("confirmation_screen").style.display = "none"; } } diff --git a/screenshare/src/index.html b/screenshare/src/index.html index 40611dbe04..41cd7a4502 100644 --- a/screenshare/src/index.html +++ b/screenshare/src/index.html @@ -5,7 +5,7 @@

u&uoH6JcutzdGXvI~Yuc-kp2e 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 {WIN2FAv_X0>HLtm0ibqPZaq2^$MRLTrMOklG+5 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

` - // console.log(sourceBody.innerHTML); if (type === "selects") { document.getElementById("selects").appendChild(sourceBody); } else { @@ -110,34 +104,23 @@ function togglePage(){ let sourceMap = {}; function showSources() { document.getElementById("selects").innerHTML=""; - if (isBrowser) { - for (let source of testSources) { - sourceMap[source.id] = source; - addSource(source, "selects"); + electron.desktopCapturer.getSources({ + types:['window', 'screen'], + thumbnailSize: { + width: imageWidth, + height: imageHeight + }, + fetchWindowIcons: true + }, (error, sources) => { + if (error) { + console.log("Error getting sources", error); } - } else { - electron.desktopCapturer.getSources({ - types:['window', 'screen'], - thumbnailSize: { - width: imageWidth, - height: imageHeight - }, - fetchWindowIcons: true - }, (error, sources) => { - if (error) { - console.log("Error getting sources", error); - } - - for (let source of sources) { - // console.log(JSON.stringify(sources,null,4)); - sourceMap[source.id] = source; - //*if (source.id.indexOf("screen") > -1) { - // console.log("Adding:", source.id) - addSource(source, "selects"); - //} - } - }); - } + + for (let source of sources) { + sourceMap[source.id] = source; + addSource(source, "selects"); + } + }); } @@ -174,7 +157,6 @@ function togglePage(){ showSources(); document.getElementById('screenshare').style.visibility = "block"; desktopSharing = true; - console.log("Desktop sharing started.. desktop_id:" + desktop_id); navigator.webkitGetUserMedia({ audio: false, video: { @@ -193,9 +175,6 @@ function togglePage(){ // Tokbox function initializeTokboxSession() { - console.log("\n\n\n\n #$######\n TRYING TO START SESSION") - console.log("projectAPIKey: " + projectAPIKey) - console.log("sessionId: " + sessionID) session = OT.initSession(projectAPIKey, sessionID); session.on('sessionDisconnected', (event) => { console.log('You were disconnected from the session.', event.reason); @@ -213,8 +192,6 @@ function togglePage(){ var publisher; function startTokboxPublisher(stream){ publisher = document.createElement("div"); - console.log("publisher pushed") - var publisherOptions = { videoSource: stream.getVideoTracks()[0], audioSource: null, @@ -240,7 +217,6 @@ function togglePage(){ function stopTokBoxPublisher(){ - console.log("TOK BOX STOPPED!") publisher.destroy(); } @@ -253,11 +229,8 @@ function togglePage(){ let session; ipcRenderer.on('connectionInfo', function(event, message){ - console.log("event:" + event); - console.log("MESSAGE FROM MAIN:" + message); const connectionInfo = JSON.parse(message); projectAPIKey = connectionInfo.projectAPIKey; - console.log() sessionID = connectionInfo.sessionID; token = connectionInfo.token; diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 576e37b3a8..6f1588b12a 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -3,6 +3,7 @@ const {app, BrowserWindow, ipcMain} = require('electron'); const gotTheLock = app.requestSingleInstanceLock() const argv = require('yargs').argv; + // ./screenshare.exe --userName=miladN ... const connectionInfo = { token: argv.token || "token", @@ -10,6 +11,8 @@ const connectionInfo = { sessionID: argv.sessionID || "sessionID" } + +// Mac and Pc need slightly different width and height sizes. const osType = require('os').type(); let width; let height; @@ -21,6 +24,7 @@ if (osType == "Darwin" || osType == "Linux") { height = 740; } + if (!gotTheLock) { console.log("Another instance of the screenshare is already running - this instance will quit."); app.exit(0); @@ -30,7 +34,6 @@ if (!gotTheLock) { let window; const zoomFactor = 1.0; function createWindow(){ - console.log("Creating window") window = new BrowserWindow({ backgroundColor: "#000000", width: width, @@ -47,9 +50,7 @@ function createWindow(){ window.loadURL('file://' + __dirname + '/index.html'); window.setMenu(null); - window.webContents.on("did-finish-load", function(){ - console.log("connectionInfo:", connectionInfo) - console.log("in did finish loading"); + window.webContents.on("did-finish-load", () => { window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)); }); @@ -57,10 +58,7 @@ function createWindow(){ // This method will be called when Electron has finished // initialization and is ready to create browser windows. -console.log("setting up on ready"); app.on('ready', function() { - console.log("app ready"); createWindow(); - console.log("sending info"); window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)) }); diff --git a/screenshare/src/styles.css b/screenshare/src/styles.css index ad2f316e5c..c1a29d0a32 100644 --- a/screenshare/src/styles.css +++ b/screenshare/src/styles.css @@ -10,7 +10,6 @@ body { } #confirmation_screen { - /* background-color: orange; */ width: 100%; display: flex; text-align: center; @@ -219,35 +218,4 @@ img { -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3); background-color: #848484; width: 9px; -} - - - -/* -button { - display: inline-block; - background: -webkit-linear-gradient(#F9F9F9 40%, #E3E3E3 70%); - background: linear-gradient(#F9F9F9 40%, #E3E3E3 70%); - border: 1px solid #999; - -webkit-border-radius: 3px; - border-radius: 3px; - padding: 5px 8px; - outline: none; - white-space: nowrap; - -webkit-user-select: none; - user-select: none; - cursor: pointer; - text-shadow: 1px 1px #fff; - font-weight: 700; - font-size: 10pt; -} - -button:hover, -button.active { - border-color: black; -} -button:active, -button.active { - background: -webkit-linear-gradient(#E3E3E3 40%, #F9F9F9 70%); - background: linear-gradient(#E3E3E3 40%, #F9F9F9 70%); -} */ +} \ No newline at end of file From 365b132c30ae394ef8066753ea6ba6a56337d4ef Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 12 Nov 2019 15:33:41 -0800 Subject: [PATCH 190/547] Bugfix for t-pose avatar when moving The android specific optimized IK animation graph was out of date, it was referencing animations that have been deleted, hence the t-pose. This PR updates and renames the android/optimized ik animation graph to the latest. --- .../avatar/avatar-animation-optimized-ik.json | 6665 +++++++++++++++++ .../avatar-animation_withSplineIKNode.json | 2229 ------ interface/src/avatar/MyAvatar.cpp | 2 +- 3 files changed, 6666 insertions(+), 2230 deletions(-) create mode 100644 interface/resources/avatar/avatar-animation-optimized-ik.json delete mode 100644 interface/resources/avatar/avatar-animation_withSplineIKNode.json diff --git a/interface/resources/avatar/avatar-animation-optimized-ik.json b/interface/resources/avatar/avatar-animation-optimized-ik.json new file mode 100644 index 0000000000..c69863b190 --- /dev/null +++ b/interface/resources/avatar/avatar-animation-optimized-ik.json @@ -0,0 +1,6665 @@ +{ + "root": { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + }, + "id": "defaultPose", + "type": "defaultPose" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 0, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx" + }, + "id": "rightHandGraspOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 0, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx" + }, + "id": "rightHandGraspClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightHandGrasp", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_open_right.fbx" + }, + "id": "rightIndexPointOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_closed_right.fbx" + }, + "id": "rightIndexPointClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightIndexPoint", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx" + }, + "id": "rightThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx" + }, + "id": "rightThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightThumbRaise", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx" + }, + "id": "rightIndexPointAndThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx" + }, + "id": "rightIndexPointAndThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandGraspAlpha" + }, + "id": "rightIndexPointAndThumbRaise", + "type": "blendLinear" + } + ], + "data": { + "currentState": "rightHandGrasp", + "states": [ + { + "id": "rightHandGrasp", + "interpDuration": 3, + "interpTarget": 3, + "transitions": [ + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightIndexPoint", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightIndexPointAndThumbRaise", + "var": "isRightIndexPointAndThumbRaise" + } + ] + }, + { + "id": "rightIndexPointAndThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "rightHandGrasp", + "var": "isRightHandGrasp" + }, + { + "state": "rightIndexPoint", + "var": "isRightIndexPoint" + }, + { + "state": "rightThumbRaise", + "var": "isRightThumbRaise" + } + ] + } + ] + }, + "id": "rightHandStateMachine", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 0, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx" + }, + "id": "leftHandGraspOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 10, + "loopFlag": true, + "startFrame": 10, + "timeScale": 1, + "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx" + }, + "id": "leftHandGraspClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "leftHandGraspAlpha" + }, + "id": "leftHandGrasp", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_open_left.fbx" + }, + "id": "leftIndexPointOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_point_closed_left.fbx" + }, + "id": "leftIndexPointClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "leftHandGraspAlpha" + }, + "id": "leftIndexPoint", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx" + }, + "id": "leftThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx" + }, + "id": "leftThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "leftHandGraspAlpha" + }, + "id": "leftThumbRaise", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx" + }, + "id": "leftIndexPointAndThumbRaiseOpen", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": true, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx" + }, + "id": "leftIndexPointAndThumbRaiseClosed", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "leftHandGraspAlpha" + }, + "id": "leftIndexPointAndThumbRaise", + "type": "blendLinear" + } + ], + "data": { + "currentState": "leftHandGrasp", + "states": [ + { + "id": "leftHandGrasp", + "interpDuration": 3, + "interpTarget": 3, + "transitions": [ + { + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" + }, + { + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" + }, + { + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" + } + ] + }, + { + "id": "leftIndexPoint", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" + }, + { + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" + }, + { + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" + } + ] + }, + { + "id": "leftThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" + }, + { + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" + }, + { + "state": "leftIndexPointAndThumbRaise", + "var": "isLeftIndexPointAndThumbRaise" + } + ] + }, + { + "id": "leftIndexPointAndThumbRaise", + "interpDuration": 3, + "interpTarget": 15, + "transitions": [ + { + "state": "leftHandGrasp", + "var": "isLeftHandGrasp" + }, + { + "state": "leftIndexPoint", + "var": "isLeftIndexPoint" + }, + { + "state": "leftThumbRaise", + "var": "isLeftThumbRaise" + } + ] + } + ] + }, + "id": "leftHandStateMachine", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 271, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_talk02.fbx" + }, + "id": "seatedTalk02", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 252, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_talk03.fbx" + }, + "id": "seatedTalk03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 442, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_talk04.fbx" + }, + "id": "seatedTalk04", + "type": "clip" + } + ], + "data": { + "currentState": "seatedTalk02", + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedTalk02", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedTalk03", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedTalk04", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "seatedTalkSwitch" + }, + "id": "seatedTalk", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle.fbx" + }, + "id": "seatedIdle01", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle02.fbx" + }, + "id": "seatedIdle02", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle03.fbx" + }, + "id": "seatedIdle03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle04.fbx" + }, + "id": "seatedIdle04", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 332, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle05.fbx" + }, + "id": "seatedIdle05", + "type": "clip" + } + ], + "data": { + "currentState": "seatedIdle01", + "endFrame": 30, + "randomSwitchTimeMax": 40, + "randomSwitchTimeMin": 10, + "startFrame": 10, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedIdle01", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedIdle02", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedIdle03", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedIdle04", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedIdle05", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": true, + "transitions": [ + ] + } + ], + "timeScale": 1, + "triggerRandomSwitch": "seatedIdleSwitch", + "triggerTimeMax": 10 + }, + "id": "masterSeatedIdle", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 744, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_shifting.fbx" + }, + "id": "seatedFidgetShifting", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 420, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_lookfidget.fbx" + }, + "id": "seatedFidgetLookFidget", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 282, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_shiftweight.fbx" + }, + "id": "seatedFidgetShiftWeight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 428, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_fidget.fbx" + }, + "id": "seatedFidgeting", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 324, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_lookaround.fbx" + }, + "id": "seatedFidgetLookAround", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 120, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_lookleftright.fbx" + }, + "id": "seatedFidgetLookLeftRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 178, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_leanforward.fbx" + }, + "id": "seatedFidgetLeanForward", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 140, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_once_shakelegs.fbx" + }, + "id": "seatedFidgetShakeLegs", + "type": "clip" + } + ], + "data": { + "currentState": "seatedFidgetShifting", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetShifting", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetLookFidget", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetShiftWeight", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgeting", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetLookAround", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetLookLeftRight", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetLeanForward", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidgetShakeLegs", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "seatedFidget", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "masterSeatedIdle", + "randomSwitchTimeMax": 20, + "randomSwitchTimeMin": 10, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "masterSeatedIdle", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedFidget", + "var": "timeToSeatedFidget" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedFidget", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetShiftingOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetLookFidgetOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetShiftWeightOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetingOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetLookAroundOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetLookLeftRightOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetLeanForwardOnDone" + }, + { + "randomSwitchState": "masterSeatedIdle", + "var": "seatedFidgetShakeLegsOnDone" + } + ] + } + ], + "transitionVar": "timeToSeatedFidget", + "triggerRandomSwitch": "", + "triggerTimeMax": 45, + "triggerTimeMin": 10 + }, + "id": "seatedIdle", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "alpha": 1, + "alphaVar": "talkOverlayAlpha", + "boneSet": "upperBody" + }, + "id": "seatedTalkOverlay", + "type": "overlay" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 44, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_headnod.fbx" + }, + "id": "seatedReactionPositiveHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 78, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_headnodyes.fbx" + }, + "id": "seatedReactionPositiveHeadNodYes", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 65, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_longheadnod.fbx" + }, + "id": "seatedReactionPositiveLongHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 78, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_cheer.fbx" + }, + "id": "seatedReactionPositiveCheer", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 64, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_agree_acknowledge.fbx" + }, + "id": "seatedReactionPositiveAcknowledge", + "type": "clip" + } + ], + "data": { + "currentState": "seatedReactionPositiveHeadNod", + "endFrame": 30, + "loopFlag": false, + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "startFrame": 0, + "states": [ + { + "id": "seatedReactionPositiveHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveHeadNodYes", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveLongHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveCheer", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "id": "seatedReactionPositiveAcknowledge", + "interpDuration": 1, + "interpTarget": 1, + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ], + "timeScale": 1, + "triggerRandomSwitch": "", + "url": "qrc:///avatar/animations/sitting_idle.fbx" + }, + "id": "seatedReactionPositive", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 64, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_headshake.fbx" + }, + "id": "seatedReactionNegativeDisagreeHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 99, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_drophead.fbx" + }, + "id": "seatedReactionNegativeDisagreeDropHead", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 124, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_disbelief.fbx" + }, + "id": "seatedReactionNegativeDisagreeDisbelief", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 70, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_disagree_dismiss.fbx" + }, + "id": "seatedReactionNegativeDisagreeDismiss", + "type": "clip" + } + ], + "data": { + "currentState": "seatedReactionNegativeDisagreeHeadshake", + "endFrame": 30, + "loopFlag": false, + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "startFrame": 0, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeHeadshake", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDropHead", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDisbelief", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegativeDisagreeDismiss", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ], + "timeScale": 1, + "triggerRandomSwitch": "", + "url": "qrc:///avatar/animations/sitting_idle.fbx" + }, + "id": "seatedReactionNegative", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 32, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" + }, + "id": "seatedReactionRaiseHandIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 345, + "loopFlag": true, + "startFrame": 32, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" + }, + "id": "seatedReactionRaiseHandLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 400, + "loopFlag": false, + "startFrame": 345, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand_all.fbx" + }, + "id": "seatedReactionRaiseHandOutro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 378, + "loopFlag": true, + "startFrame": 18, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 435, + "loopFlag": false, + "startFrame": 378, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand02_all.fbx" + }, + "id": "seatedReactionRaiseHand02Outro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 233, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 15, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 296, + "loopFlag": false, + "mirrorFlag": false, + "startFrame": 233, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_raisehand03_all.fbx" + }, + "id": "seatedReactionRaiseHand03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "seatedReactionRaiseHandIntro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHandIntro", + "interpDuration": 8, + "interpTarget": 9, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHandLoop", + "var": "seatedReactionRaiseHandIntroOnDone" + } + ] + }, + { + "id": "seatedReactionRaiseHandLoop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHandOutro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHandOutro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHandLoop", + "var": "reactionRaiseHandEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand02Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Loop", + "var": "seatedReactionRaiseHand02IntroOnDone" + } + ] + }, + { + "id": "seatedReactionRaiseHand02Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand02Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand02Loop", + "var": "reactionRaiseHandEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand03Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Loop", + "var": "seatedReactionRaiseHand03IntroOnDone" + } + ] + }, + { + "id": "seatedReactionRaiseHand03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand03Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionRaiseHand03Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "seatedReactionRaiseHand", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 12, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 76, + "loopFlag": true, + "startFrame": 12, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 99, + "loopFlag": false, + "startFrame": 76, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap_all.fbx" + }, + "id": "seatedReactionApplaudOutro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 12, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 112, + "loopFlag": true, + "startFrame": 12, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 132, + "loopFlag": false, + "startFrame": 112, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap02_all.fbx" + }, + "id": "seatedReactionApplaud02Outro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 17, + "loopFlag": false, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" + }, + "id": "seatedReactionApplaud03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 111, + "loopFlag": true, + "startFrame": 17, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" + }, + "id": "seatedReactionApplaud03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 136, + "loopFlag": false, + "startFrame": 111, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_clap03_all.fbx" + }, + "id": "seatedReactionApplaud03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "seatedReactionApplaudIntro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaudIntro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaudLoop", + "var": "seatedReactionApplaudIntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaudLoop", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaudOutro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaudOutro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaudLoop", + "var": "reactionApplaudEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Loop", + "var": "seatedReactionApplaud02IntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Loop", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud02Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud02Loop", + "var": "reactionApplaudEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Intro", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Loop", + "var": "seatedReactionApplaud03IntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Loop", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud03Outro", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionApplaud03Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "seatedReactionApplaud", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" + }, + "id": "seatedReactionPointIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": true, + "startFrame": 21, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" + }, + "id": "seatedReactionPointLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 134, + "loopFlag": false, + "mirrorFlag": false, + "startFrame": 100, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_all.fbx" + }, + "id": "seatedReactionPointOutro", + "type": "clip" + } + ], + "data": { + "currentState": "seatedReactionPointIntro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPointIntro", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionPointLoop", + "var": "seatedReactionPointIntroOnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPointLoop", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionPointOutro", + "var": "reactionPointDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPointOutro", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "seatedReactionPointLoop", + "var": "reactionPointEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "seatedReactionPoint", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "alpha": 0, + "alphaVar": "seatedPointBlendAlpha", + "blendType": "addAbsolute" + }, + "id": "seatedReactionPointBase", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, + "loopFlag": true, + "startFrame": 11, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 30, + "loopFlag": true, + "startFrame": 30, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, + "loopFlag": true, + "startFrame": 50, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointUp", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, + "loopFlag": true, + "startFrame": 70, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointDown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 90, + "loopFlag": true, + "startFrame": 90, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointUpLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, + "loopFlag": true, + "startFrame": 110, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointUpRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, + "loopFlag": true, + "startFrame": 130, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointDownLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, + "loopFlag": true, + "startFrame": 150, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointDownRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 3, + "loopFlag": true, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_emote_point_aimoffsets.fbx" + }, + "id": "seatedPointCenter", + "type": "clip" + } + ], + "data": { + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "pointAroundAlpha", + "centerId": "seatedPointCenter", + "downId": "seatedPointDown", + "downLeftId": "seatedPointDownLeft", + "downRightId": "seatedPointDownRight", + "leftId": "seatedPointLeft", + "rightId": "seatedPointRight", + "upId": "seatedPointUp", + "upLeftId": "seatedPointUpLeft", + "upRightId": "seatedPointUpRight" + }, + "id": "seatedPointAround", + "type": "blendDirectional" + } + ], + "data": { + "alpha": 0, + "alphaVar": "pointBlendAlpha", + "blendType": "addAbsolute" + }, + "id": "seatedReactionPoint", + "type": "blendLinear" + } + ], + "data": { + "currentState": "seatedTalkOverlay", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seatedTalkOverlay", + "interpDuration": 25, + "interpTarget": 25, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPositive", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveHeadNodOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveHeadNodYesOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveLongHeadNodOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveCheerOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionPositiveAcknowledgeOnDone" + }, + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionNegative", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeHeadshakeOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDropHeadOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDisbeliefOnDone" + }, + { + "state": "seatedTalkOverlay", + "var": "seatedReactionNegativeDisagreeDismissOnDone" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionRaiseHand", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionRaiseHandDisabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionApplaud", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionApplaudDisabled" + }, + { + "state": "seatedReactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "seatedReactionPoint", + "interpDuration": 12, + "interpTarget": 12, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "seatedReactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "seatedReactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "seatedReactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "seatedReactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "seatedTalkOverlay", + "var": "reactionPointDisabled" + } + ] + } + ] + }, + "id": "seatedSM", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, + "loopFlag": true, + "startFrame": 11, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 30, + "loopFlag": true, + "startFrame": 30, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, + "loopFlag": true, + "startFrame": 50, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookUp", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, + "loopFlag": true, + "startFrame": 70, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookDown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 97, + "loopFlag": true, + "startFrame": 97, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookUpLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, + "loopFlag": true, + "startFrame": 110, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookUpRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, + "loopFlag": true, + "startFrame": 130, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookDownLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, + "loopFlag": true, + "startFrame": 150, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookDownRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 3, + "loopFlag": true, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/sitting_idle_aimoffsets.fbx" + }, + "id": "seatedLookCenter", + "type": "clip" + } + ], + "data": { + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "lookAroundAlpha", + "centerId": "seatedLookCenter", + "downId": "seatedLookDown", + "downLeftId": "seatedLookDownLeft", + "downRightId": "seatedLookDownRight", + "leftId": "seatedLookLeft", + "rightId": "seatedLookRight", + "upId": "seatedLookUp", + "upLeftId": "seatedLookUpLeft", + "upRightId": "seatedLookUpRight" + }, + "id": "seatedLookAroundBlend", + "type": "blendDirectional" + } + ], + "data": { + "alpha": 0, + "alphaVar": "seatedLookBlendAlpha", + "blendType": "addAbsolute" + }, + "id": "seated", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk.fbx" + }, + "id": "talk", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 325, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk02.fbx" + }, + "id": "talk02", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk03.fbx" + }, + "id": "talk03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk04.fbx" + }, + "id": "talk04", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 215, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_armsdown.fbx" + }, + "id": "talk_armsdown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 500, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_lefthand.fbx" + }, + "id": "talk_lefthand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 502, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/talk_righthand.fbx" + }, + "id": "talk_righthand", + "type": "clip" + } + ], + "data": { + "currentState": "talk", + "randomSwitchTimeMax": 12, + "randomSwitchTimeMin": 7, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "talk", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk02", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk03", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk04", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_armsdown", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_lefthand", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "talk_righthand", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "idleTalkSwitch" + }, + "id": "idleTalk", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" + }, + "id": "masterIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 400, + "loopFlag": true, + "startFrame": 1, + "timeScale": 0.75, + "url": "qrc:///avatar/animations/idle02.fbx" + }, + "id": "masterIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 800, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle03.fbx" + }, + "id": "masterIdle3", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 902, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle04.fbx" + }, + "id": "masterIdle4", + "type": "clip" + } + ], + "data": { + "currentState": "masterIdle1", + "randomSwitchTimeMax": 30, + "randomSwitchTimeMin": 10, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "masterIdle1", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle2", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle3", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "masterIdle4", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.25, + "resume": true, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "masterIdleSwitch" + }, + "id": "masterIdle", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 91, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_slownod.fbx" + }, + "id": "idle_once_slownod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 154, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_headtilt.fbx" + }, + "id": "idle_once_headtilt", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 491, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_shiftheelpivot.fbx" + }, + "id": "idle_once_shiftheelpivot", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 1620, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.7, + "url": "qrc:///avatar/animations/idleWS_all.fbx" + }, + "id": "idleWS_all", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 324, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_lookaround.fbx" + }, + "id": "idle_once_lookaround", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 169, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_neckstretch.fbx" + }, + "id": "idle_once_neckstretch", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 375, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.7, + "url": "qrc:///avatar/animations/idle_once_lookleftright.fbx" + }, + "id": "idle_once_lookleftright", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 429, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_once_fidget.fbx" + }, + "id": "idle_once_fidget", + "type": "clip" + } + ], + "data": { + "currentState": "idle_once_slownod", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "idle_once_slownod", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_headtilt", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_shiftheelpivot", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleWS_all", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_lookaround", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_neckstretch", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_lookleftright", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle_once_fidget", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 0.2, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "movement", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 80, + "loopFlag": false, + "startFrame": 1, + "startFrameVar": "", + "timeScale": 0.65, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "transitionToAltIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 80, + "loopFlag": false, + "startFrame": 1, + "timeScale": 0.65, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "transitionToAltIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 388, + "loopFlag": true, + "startFrame": 80, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "altIdle1", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 388, + "loopFlag": true, + "startFrame": 80, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "altIdle2", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 472, + "loopFlag": false, + "startFrame": 388, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_LFF_all.fbx" + }, + "id": "alt1ToMasterIdle", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 453, + "loopFlag": false, + "startFrame": 388, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_RFF_all.fbx" + }, + "id": "alt2ToMasterIdle", + "type": "clip" + } + ], + "data": { + "currentState": "transitionToAltIdle1", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "transitionToAltIdle1", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.5, + "resume": false, + "transitions": [ + { + "randomSwitchState": "altIdle1", + "var": "transitionToAltIdle1OnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "transitionToAltIdle2", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": 0.5, + "resume": false, + "transitions": [ + { + "randomSwitchState": "altIdle2", + "var": "transitionToAltIdle2OnDone" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "altIdle1", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "alt1ToMasterIdle", + "var": "finishAltIdle2" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "altIdle2", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "alt2ToMasterIdle", + "var": "finishAltIdle2" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alt1ToMasterIdle", + "interpDuration": 24, + "interpTarget": 24, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alt2ToMasterIdle", + "interpDuration": 24, + "interpTarget": 24, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + ] + } + ], + "transitionVar": "finishAltIdle2", + "triggerTimeMax": 60, + "triggerTimeMin": 10 + }, + "id": "alternateIdle", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "movement", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "movement", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.6, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "alternateIdle", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 0.4, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "fidget", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "masterIdle", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "masterIdle", + "interpDuration": 30, + "interpTarget": 30, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "fidget", + "var": "timeToFidget" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "fidget", + "interpDuration": 20, + "interpTarget": 20, + "interpType": "evaluateBoth", + "priority": -1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "masterIdle", + "var": "idle_once_slownodOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_headtiltOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_shiftheelpivotOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idleWS_allOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_lookaroundOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_neckstretchOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_lookleftrightOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "idle_once_fidgetOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "alt1ToMasterIdleOnDone" + }, + { + "randomSwitchState": "masterIdle", + "var": "alt2ToMasterIdleOnDone" + } + ] + } + ], + "transitionVar": "timeToFidget", + "triggerTimeMax": 50, + "triggerTimeMin": 10 + }, + "id": "idleStand", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "alpha": 1, + "alphaVar": "talkOverlayAlpha", + "boneSet": "upperBody" + }, + "id": "idleTalkOverlay", + "type": "overlay" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 64, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_acknowledge.fbx" + }, + "id": "positiveAcknowledge", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 55, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_headnod.fbx" + }, + "id": "positiveHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 94, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_headnodyes.fbx" + }, + "id": "positiveHeadNodYes", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 68, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_longheadnod.fbx" + }, + "id": "positiveLongHeadNod", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 84, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_agree_thoughtfulheadnod.fbx" + }, + "id": "positiveThoughtfulHeadNod", + "type": "clip" + } + ], + "data": { + "currentState": "positiveAcknowledge", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "positiveAcknowledge", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveHeadNodYes", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveLongHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "positiveThoughtfulHeadNod", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 0.33, + "resume": false, + "transitions": [ + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "reactionPositive", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 72, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_annoyedheadshake.fbx" + }, + "id": "negativeAnnoyedHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 84, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_thoughtfulheadshake.fbx" + }, + "id": "negativeThoughtfulHeadshake", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_disagree_drophead.fbx" + }, + "id": "negativeDropHead", + "type": "clip" + } + ], + "data": { + "currentState": "negativeAnnoyedHeadshake", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "negativeAnnoyedHeadshake", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "negativeThoughtfulHeadshake", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "negativeDropHead", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionNegative", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 378, + "loopFlag": true, + "startFrame": 18, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 435, + "loopFlag": false, + "startFrame": 378, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand01_all.fbx" + }, + "id": "raiseHand01Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand01Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand01Intro", + "interpDuration": 10, + "interpTarget": 10, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Loop", + "var": "raiseHand01IntroOnDone" + } + ] + }, + { + "id": "raiseHand01Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand01Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand01Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand01", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 237, + "loopFlag": true, + "startFrame": 19, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 300, + "loopFlag": false, + "startFrame": 237, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand03_all.fbx" + }, + "id": "raiseHand03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand03Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand03Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Loop", + "var": "raiseHand03IntroOnDone" + } + ] + }, + { + "id": "raiseHand03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand03Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand03Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand03", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 32, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 345, + "loopFlag": true, + "startFrame": 32, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 400, + "loopFlag": false, + "startFrame": 345, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_raisehand04_all.fbx" + }, + "id": "raiseHand04Outro", + "type": "clip" + } + ], + "data": { + "currentState": "raiseHand04Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand04Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Loop", + "var": "raiseHand04IntroOnDone" + } + ] + }, + { + "id": "raiseHand04Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Outro", + "var": "reactionRaiseHandDisabled" + } + ] + }, + { + "id": "raiseHand04Outro", + "interpDuration": 6, + "interpTarget": 6, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "raiseHand04Loop", + "var": "reactionRaiseHandEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "raiseHand04", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "raiseHand01", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "raiseHand01", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "raiseHand03", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "raiseHand04", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionRaiseHand", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 17, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 111, + "loopFlag": true, + "startFrame": 17, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 160, + "loopFlag": false, + "startFrame": 111, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap01_all.fbx" + }, + "id": "applaudClap01Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap01Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap01Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Loop", + "var": "applaudClap01IntroOnDone" + } + ] + }, + { + "id": "applaudClap01Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap01Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap01Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap01", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 78, + "loopFlag": true, + "startFrame": 14, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 115, + "loopFlag": false, + "startFrame": 78, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap02_all.fbx" + }, + "id": "applaudClap02Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap02Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap02Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Loop", + "var": "applaudClap02IntroOnDone" + } + ] + }, + { + "id": "applaudClap02Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap02Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap02Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap02", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Intro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": true, + "startFrame": 14, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Loop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 149, + "loopFlag": false, + "startFrame": 100, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_clap03_all.fbx" + }, + "id": "applaudClap03Outro", + "type": "clip" + } + ], + "data": { + "currentState": "applaudClap03Intro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap03Intro", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Loop", + "var": "applaudClap03IntroOnDone" + } + ] + }, + { + "id": "applaudClap03Loop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Outro", + "var": "reactionApplaudDisabled" + } + ] + }, + { + "id": "applaudClap03Outro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "applaudClap03Loop", + "var": "reactionApplaudEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "applaudClap03", + "type": "randomSwitchStateMachine" + } + ], + "data": { + "currentState": "applaudClap01", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "applaudClap01", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "applaudClap02", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "applaudClap03", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ] + }, + "id": "reactionApplaud", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointIntro", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 100, + "loopFlag": true, + "startFrame": 21, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointLoop", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 134, + "loopFlag": false, + "startFrame": 100, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_all.fbx" + }, + "id": "reactionPointOutro", + "type": "clip" + } + ], + "data": { + "currentState": "reactionPointIntro", + "randomSwitchTimeMax": 10, + "randomSwitchTimeMin": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "reactionPointIntro", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + { + "randomSwitchState": "reactionPointLoop", + "var": "reactionPointIntroOnDone" + } + ] + }, + { + "id": "reactionPointLoop", + "interpDuration": 1, + "interpTarget": 1, + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "reactionPointOutro", + "var": "reactionPointDisabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionPointOutro", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "priority": 0, + "resume": false, + "transitions": [ + { + "randomSwitchState": "reactionPointLoop", + "var": "reactionPointEnabled" + } + ] + } + ], + "triggerRandomSwitch": "" + }, + "id": "reactionPoint", + "type": "randomSwitchStateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, + "loopFlag": true, + "startFrame": 11, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 30, + "loopFlag": true, + "startFrame": 30, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, + "loopFlag": true, + "startFrame": 50, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointUp", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, + "loopFlag": true, + "startFrame": 70, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointDown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 90, + "loopFlag": true, + "startFrame": 90, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointUpLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, + "loopFlag": true, + "startFrame": 110, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointUpRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, + "loopFlag": true, + "startFrame": 130, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointDownLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, + "loopFlag": true, + "startFrame": 150, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointDownRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 3, + "loopFlag": true, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/emote_point01_aimoffsets.fbx" + }, + "id": "idlePointCenter", + "type": "clip" + } + ], + "data": { + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "pointAroundAlpha", + "centerId": "idlePointCenter", + "downId": "idlePointDown", + "downLeftId": "idlePointDownLeft", + "downRightId": "idlePointDownRight", + "leftId": "idlePointLeft", + "rightId": "idlePointRight", + "upId": "idlePointUp", + "upLeftId": "idlePointUpLeft", + "upRightId": "idlePointUpRight" + }, + "id": "idlePointAround", + "type": "blendDirectional" + } + ], + "data": { + "alpha": 0, + "alphaVar": "pointBlendAlpha", + "blendType": "addAbsolute" + }, + "id": "reactionPoint", + "type": "blendLinear" + } + ], + "data": { + "currentState": "idleTalkOverlay", + "states": [ + { + "easingType": "easeInOutQuad", + "id": "idleTalkOverlay", + "interpDuration": 25, + "interpTarget": 25, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionPositive", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "idleTalkOverlay", + "var": "positiveAcknowledgeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveHeadNodOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveHeadNodYesOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveLongHeadNodOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "positiveThoughtfulHeadNodOnDone" + }, + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionNegative", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "idleTalkOverlay", + "var": "negativeAnnoyedHeadshakeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "negativeThoughtfulHeadshakeOnDone" + }, + { + "state": "idleTalkOverlay", + "var": "negativeDropHeadOnDone" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionRaiseHand", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "idleTalkOverlay", + "var": "reactionRaiseHandDisabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionApplaud", + "interpDuration": 18, + "interpTarget": 18, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "idleTalkOverlay", + "var": "reactionApplaudDisabled" + }, + { + "state": "reactionPoint", + "var": "reactionPointEnabled" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "reactionPoint", + "interpDuration": 10, + "interpTarget": 10, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "reactionNegative", + "var": "reactionNegativeTrigger" + }, + { + "state": "reactionPositive", + "var": "reactionPositiveTrigger" + }, + { + "state": "reactionRaiseHand", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "reactionApplaud", + "var": "reactionApplaudEnabled" + }, + { + "state": "idleTalkOverlay", + "var": "reactionPointDisabled" + } + ] + } + ] + }, + "id": "idle", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 40, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_short_fwd.fbx" + }, + "id": "walkFwdShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_fwd.fbx" + }, + "id": "walkFwdNormal_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 26, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_fwd_fast.fbx" + }, + "id": "walkFwdFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 18, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_fwd.fbx" + }, + "id": "walkFwdJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_fwd.fbx" + }, + "id": "walkFwdRun_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveForwardAlpha", + "characteristicSpeeds": [ + 0.5, + 1.8, + 2.5, + 3.55, + 5.675 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveForwardSpeed" + }, + "id": "WALKFWD", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 13, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_to_walk.fbx" + }, + "id": "idleToWalkFwd", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 59, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle_small.fbx" + }, + "id": "idleSettle", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 37, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_bwd.fbx" + }, + "id": "walkBwdShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 28, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_bwd_fast.fbx" + }, + "id": "walkBwdFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_bwd.fbx" + }, + "id": "jogBwd_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 14, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_bwd.fbx" + }, + "id": "runBwd_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveBackwardAlpha", + "characteristicSpeeds": [ + 0.6, + 1.6, + 2.8, + 4.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveBackwardSpeed" + }, + "id": "WALKBWD", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 33, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/turn_left.fbx" + }, + "id": "turnLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 31, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/turn_right.fbx" + }, + "id": "turnRight", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 35, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_left.fbx" + }, + "id": "strafeLeftWalk_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_left_fast.fbx" + }, + "id": "strafeLeftWalkFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_left.fbx" + }, + "id": "strafeLeftJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_left.fbx" + }, + "id": "strafeLeftRun_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 1, + 2.55, + 3.35, + 5.25 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "STRAFELEFT", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 35, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_right.fbx" + }, + "id": "strafeRightWalk_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 21, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/walk_right_fast.fbx" + }, + "id": "strafeRightFast_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jog_right.fbx" + }, + "id": "strafeRightJog_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 19, + "loopFlag": true, + "mirrorFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/run_fast_right.fbx" + }, + "id": "strafeRightRun_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 1, + 2.55, + 3.4, + 5.25 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "STRAFERIGHT", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "stepLeftShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "stepLeft_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left_fast.fbx" + }, + "id": "strafeLeftAnim_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0, + 0.5, + 2.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "strafeLeftHmd", + "type": "blendLinearMove" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 30, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_short_left.fbx" + }, + "id": "stepRightShort_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 20, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left.fbx" + }, + "id": "stepRight_c", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": true, + "mirrorFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/side_step_left_fast.fbx" + }, + "id": "strafeRightAnim_c", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "moveLateralAlpha", + "characteristicSpeeds": [ + 0, + 0.5, + 2.5 + ], + "desiredSpeed": 1.4, + "desiredSpeedVar": "moveLateralSpeed" + }, + "id": "strafeRightHmd", + "type": "blendLinearMove" + }, + { + "children": [ + ], + "data": { + "endFrame": 79, + "loopFlag": true, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/fly.fbx" + }, + "id": "fly", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_launch_all.fbx" + }, + "id": "takeoffStand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 15, + "loopFlag": false, + "startFrame": 4, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "TAKEOFFRUN", + "type": "clip" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 1, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandPreApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 2, + "loopFlag": false, + "startFrame": 2, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 3, + "loopFlag": false, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_apex_all.fbx" + }, + "id": "inAirStandPostApex", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "inAirAlpha" + }, + "id": "inAirStand", + "type": "blendLinear" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "endFrame": 16, + "loopFlag": false, + "startFrame": 16, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunPreApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 22, + "loopFlag": false, + "startFrame": 22, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunApex", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 33, + "loopFlag": false, + "startFrame": 33, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "inAirRunPostApex", + "type": "clip" + } + ], + "data": { + "alpha": 0, + "alphaVar": "inAirAlpha" + }, + "id": "INAIRRUN", + "type": "blendLinear" + }, + { + "children": [ + ], + "data": { + "endFrame": 6, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" + }, + "id": "landStandImpact", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 68, + "loopFlag": false, + "startFrame": 6, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_standing_land_settle_all.fbx" + }, + "id": "landStand", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 40, + "loopFlag": false, + "startFrame": 29, + "timeScale": 1, + "url": "qrc:///avatar/animations/jump_running_launch_land_all.fbx" + }, + "id": "LANDRUN", + "type": "clip" + } + ], + "data": { + "currentState": "idle", + "outputJoints": [ + "LeftFoot", + "RightFoot" + ], + "states": [ + { + "easingType": "easeInOutQuad", + "id": "seated", + "interpDuration": 6, + "interpTarget": 6, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "idle", + "var": "isNotSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idle", + "interpDuration": 15, + "interpTarget": 20, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "idleToWalkFwd", + "interpDuration": 8, + "interpTarget": 12, + "transitions": [ + { + "state": "WALKFWD", + "var": "idleToWalkFwdOnDone" + }, + { + "state": "idle", + "var": "isNotInput" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleSettle", + "interpDuration": 13, + "interpTarget": 14, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idle", + "var": "idleSettleOnDone" + }, + { + "state": "idle", + "var": "reactionPositiveTrigger" + }, + { + "state": "idle", + "var": "reactionNegativeTrigger" + }, + { + "state": "idle", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "idle", + "var": "reactionApplaudEnabled" + }, + { + "state": "idle", + "var": "reactionPointEnabled" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "WALKFWD", + "interpDuration": 15, + "interpTarget": 35, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInputSlow" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "WALKBWD", + "interpDuration": 15, + "interpTarget": 35, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInputSlow" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "STRAFERIGHT", + "interpDuration": 15, + "interpTarget": 25, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInputSlow" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFELEFT", + "var": "isMovingLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "STRAFELEFT", + "interpDuration": 15, + "interpTarget": 25, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInputSlow" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isMovingRight" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "turnRight", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "idle", + "var": "isNotTurning" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "turnLeft", + "interpDuration": 15, + "interpTarget": 15, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "idle", + "var": "isNotTurning" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "strafeRightHmd", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInput" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "strafeLeftHmd", + "interpDuration": 8, + "interpTarget": 8, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotInput" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "fly", + "interpDuration": 24, + "interpTarget": 24, + "interpType": "evaluateBoth", + "transitions": [ + { + "state": "idleSettle", + "var": "isNotFlying" + } + ] + }, + { + "id": "takeoffStand", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "inAirStand", + "var": "isNotTakeoff" + } + ] + }, + { + "id": "TAKEOFFRUN", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "INAIRRUN", + "var": "isNotTakeoff" + } + ] + }, + { + "id": "inAirStand", + "interpDuration": 3, + "interpTarget": 3, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "landStandImpact", + "var": "isNotInAir" + } + ] + }, + { + "id": "INAIRRUN", + "interpDuration": 3, + "interpTarget": 3, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "WALKFWD", + "var": "isNotInAir" + } + ] + }, + { + "id": "landStandImpact", + "interpDuration": 1, + "interpTarget": 1, + "transitions": [ + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "landStand", + "var": "landStandImpactOnDone" + } + ] + }, + { + "id": "landStand", + "interpDuration": 1, + "interpTarget": 1, + "transitions": [ + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "idle", + "var": "landStandOnDone" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "id": "LANDRUN", + "interpDuration": 2, + "interpTarget": 2, + "transitions": [ + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "WALKFWD", + "var": "landRunOnDone" + } + ] + } + ] + }, + "id": "mainStateMachine", + "type": "stateMachine" + }, + { + "children": [ + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 11, + "loopFlag": true, + "startFrame": 11, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 30, + "loopFlag": true, + "startFrame": 30, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 50, + "loopFlag": true, + "startFrame": 50, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUp", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 70, + "loopFlag": true, + "startFrame": 70, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDown", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 97, + "loopFlag": true, + "startFrame": 97, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUpLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 110, + "loopFlag": true, + "startFrame": 110, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookUpRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 130, + "loopFlag": true, + "startFrame": 130, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDownLeft", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 150, + "loopFlag": true, + "startFrame": 150, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookDownRight", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "baseFrame": 1, + "baseURL": "qrc:///avatar/animations/idle_aimoffsets.fbx", + "blendType": "addAbsolute", + "endFrame": 3, + "loopFlag": true, + "startFrame": 3, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle_aimoffsets.fbx" + }, + "id": "lookCenter", + "type": "clip" + } + ], + "data": { + "alpha": [ + 0, + 0, + 0 + ], + "alphaVar": "lookAroundAlpha", + "centerId": "lookCenter", + "downId": "lookDown", + "downLeftId": "lookDownLeft", + "downRightId": "lookDownRight", + "leftId": "lookLeft", + "rightId": "lookRight", + "upId": "lookUp", + "upLeftId": "lookUpLeft", + "upRightId": "lookUpRight" + }, + "id": "lookAroundBlend", + "type": "blendDirectional" + } + ], + "data": { + "alpha": 0, + "alphaVar": "lookBlendAlpha", + "blendType": "addAbsolute" + }, + "id": "lookAround", + "type": "blendLinear" + } + ], + "data": { + "alpha": 0, + "alphaVar": "leftHandOverlayAlpha", + "boneSet": "leftHand" + }, + "id": "leftHandOverlay", + "type": "overlay" + } + ], + "data": { + "alpha": 0, + "alphaVar": "rightHandOverlayAlpha", + "boneSet": "rightHand" + }, + "id": "rightHandOverlay", + "type": "overlay" + } + ], + "data": { + "alpha": 0, + "alphaVar": "defaultPoseOverlayAlpha", + "boneSet": "fullBody", + "boneSetVar": "defaultPoseOverlayBoneSet" + }, + "id": "defaultPoseOverlay", + "type": "overlay" + } + ], + "data": { + "alpha": 1, + "alphaVar": "splineIKAlpha", + "baseJointName": "Hips", + "basePositionVar": "hipsPosition", + "baseRotationVar": "hipsRotation", + "enabled": false, + "enabledVar": "splineIKEnabled", + "interpDuration": 15, + "midJointName": "Spine2", + "midPositionVar": "spine2Position", + "midRotationVar": "spine2Rotation", + "midTargetFlexCoefficients": [ + 1, + 1, + 1 + ], + "tipJointName": "Head", + "tipPositionVar": "headPosition", + "tipRotationVar": "headRotation", + "tipTargetFlexCoefficients": [ + 1, + 1, + 1, + 1, + 1 + ] + }, + "id": "userSplineIK", + "type": "splineIK" + } + ], + "data": { + "alpha": 1, + "alphaVar": "leftHandIKAlpha", + "baseJointName": "LeftArm", + "enabled": false, + "enabledVar": "leftHandIKEnabled", + "endEffectorPositionVarVar": "leftHandIKPositionVar", + "endEffectorRotationVarVar": "leftHandIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + 0, + 0, + 1 + ], + "midJointName": "LeftForeArm", + "tipJointName": "LeftHand" + }, + "id": "leftHandIK", + "type": "twoBoneIK" + } + ], + "data": { + "baseJointName": "LeftArm", + "enabled": false, + "enabledVar": "leftHandPoleVectorEnabled", + "midJointName": "LeftForeArm", + "poleVectorVar": "leftHandPoleVector", + "referenceVector": [ + 1, + 0, + 0 + ], + "tipJointName": "LeftHand" + }, + "id": "leftHandPoleVector", + "type": "poleVectorConstraint" + } + ], + "data": { + "alpha": 1, + "alphaVar": "rightHandIKAlpha", + "baseJointName": "RightArm", + "enabled": false, + "enabledVar": "rightHandIKEnabled", + "endEffectorPositionVarVar": "rightHandIKPositionVar", + "endEffectorRotationVarVar": "rightHandIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + 0, + 0, + -1 + ], + "midJointName": "RightForeArm", + "tipJointName": "RightHand" + }, + "id": "rightHandIK", + "type": "twoBoneIK" + } + ], + "data": { + "baseJointName": "RightArm", + "enabled": false, + "enabledVar": "rightHandPoleVectorEnabled", + "midJointName": "RightForeArm", + "poleVectorVar": "rightHandPoleVector", + "referenceVector": [ + -1, + 0, + 0 + ], + "tipJointName": "RightHand" + }, + "id": "rightHandPoleVector", + "type": "poleVectorConstraint" + } + ], + "data": { + "alpha": 1, + "alphaVar": "leftFootIKAlpha", + "baseJointName": "LeftUpLeg", + "enabled": false, + "enabledVar": "leftFootIKEnabled", + "endEffectorPositionVarVar": "leftFootIKPositionVar", + "endEffectorRotationVarVar": "leftFootIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + -1, + 0, + 0 + ], + "midJointName": "LeftLeg", + "tipJointName": "LeftFoot" + }, + "id": "leftFootIK", + "type": "twoBoneIK" + } + ], + "data": { + "baseJointName": "LeftUpLeg", + "enabled": false, + "enabledVar": "leftFootPoleVectorEnabled", + "midJointName": "LeftLeg", + "poleVectorVar": "leftFootPoleVector", + "referenceVector": [ + 0, + 0, + 1 + ], + "tipJointName": "LeftFoot" + }, + "id": "leftFootPoleVector", + "type": "poleVectorConstraint" + } + ], + "data": { + "alpha": 1, + "alphaVar": "rightFootIKAlpha", + "baseJointName": "RightUpLeg", + "enabled": false, + "enabledVar": "rightFootIKEnabled", + "endEffectorPositionVarVar": "rightFootIKPositionVar", + "endEffectorRotationVarVar": "rightFootIKRotationVar", + "interpDuration": 15, + "midHingeAxis": [ + -1, + 0, + 0 + ], + "midJointName": "RightLeg", + "tipJointName": "RightFoot" + }, + "id": "rightFootIK", + "type": "twoBoneIK" + } + ], + "data": { + "baseJointName": "RightUpLeg", + "enabled": false, + "enabledVar": "rightFootPoleVectorEnabled", + "midJointName": "RightLeg", + "poleVectorVar": "rightFootPoleVector", + "referenceVector": [ + 0, + 0, + 1 + ], + "tipJointName": "RightFoot" + }, + "id": "userAnimNone", + "type": "poleVectorConstraint" + }, + { + "children": [ + ], + "data": { + "endFrame": 90, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" + }, + "id": "userAnimA", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 90, + "loopFlag": true, + "startFrame": 0, + "timeScale": 1, + "url": "qrc:///avatar/animations/idle.fbx" + }, + "id": "userAnimB", + "type": "clip" + } + ], + "data": { + "currentState": "userAnimNone", + "states": [ + { + "id": "userAnimNone", + "interpDuration": 6, + "interpTarget": 6, + "transitions": [ + { + "state": "userAnimA", + "var": "userAnimA" + }, + { + "state": "userAnimB", + "var": "userAnimB" + } + ] + }, + { + "id": "userAnimA", + "interpDuration": 6, + "interpTarget": 6, + "transitions": [ + { + "state": "userAnimNone", + "var": "userAnimNone" + }, + { + "state": "userAnimB", + "var": "userAnimB" + } + ] + }, + { + "id": "userAnimB", + "interpDuration": 6, + "interpTarget": 6, + "transitions": [ + { + "state": "userAnimNone", + "var": "userAnimNone" + }, + { + "state": "userAnimA", + "var": "userAnimA" + } + ] + } + ] + }, + "id": "userAnimStateMachine", + "type": "stateMachine" + }, + "version": "1.1" +} diff --git a/interface/resources/avatar/avatar-animation_withSplineIKNode.json b/interface/resources/avatar/avatar-animation_withSplineIKNode.json deleted file mode 100644 index b1f198c52c..0000000000 --- a/interface/resources/avatar/avatar-animation_withSplineIKNode.json +++ /dev/null @@ -1,2229 +0,0 @@ -{ - "version": "1.1", - "root": { - "id": "userAnimStateMachine", - "type": "stateMachine", - "data": { - "currentState": "userAnimNone", - "states": [ - { - "id": "userAnimNone", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { - "var": "userAnimA", - "state": "userAnimA" - }, - { - "var": "userAnimB", - "state": "userAnimB" - } - ] - }, - { - "id": "userAnimA", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { - "var": "userAnimNone", - "state": "userAnimNone" - }, - { - "var": "userAnimB", - "state": "userAnimB" - } - ] - }, - { - "id": "userAnimB", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { - "var": "userAnimNone", - "state": "userAnimNone" - }, - { - "var": "userAnimA", - "state": "userAnimA" - } - ] - } - ] - }, - "children": [ - { - "id": "userAnimNone", - "type": "poleVectorConstraint", - "data": { - "enabled": false, - "referenceVector": [ 0, 0, 1 ], - "baseJointName": "RightUpLeg", - "midJointName": "RightLeg", - "tipJointName": "RightFoot", - "enabledVar": "rightFootPoleVectorEnabled", - "poleVectorVar": "rightFootPoleVector" - }, - "children": [ - { - "id": "rightFootIK", - "type": "twoBoneIK", - "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "RightUpLeg", - "midJointName": "RightLeg", - "tipJointName": "RightFoot", - "midHingeAxis": [ -1, 0, 0 ], - "alphaVar": "rightFootIKAlpha", - "enabledVar": "rightFootIKEnabled", - "endEffectorRotationVarVar": "rightFootIKRotationVar", - "endEffectorPositionVarVar": "rightFootIKPositionVar" - }, - "children": [ - { - "id": "leftFootPoleVector", - "type": "poleVectorConstraint", - "data": { - "enabled": false, - "referenceVector": [ 0, 0, 1 ], - "baseJointName": "LeftUpLeg", - "midJointName": "LeftLeg", - "tipJointName": "LeftFoot", - "enabledVar": "leftFootPoleVectorEnabled", - "poleVectorVar": "leftFootPoleVector" - }, - "children": [ - { - "id": "leftFootIK", - "type": "twoBoneIK", - "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "LeftUpLeg", - "midJointName": "LeftLeg", - "tipJointName": "LeftFoot", - "midHingeAxis": [ -1, 0, 0 ], - "alphaVar": "leftFootIKAlpha", - "enabledVar": "leftFootIKEnabled", - "endEffectorRotationVarVar": "leftFootIKRotationVar", - "endEffectorPositionVarVar": "leftFootIKPositionVar" - }, - "children": [ - { - "id": "rightHandPoleVector", - "type": "poleVectorConstraint", - "data": { - "enabled": false, - "referenceVector": [ -1, 0, 0 ], - "baseJointName": "RightArm", - "midJointName": "RightForeArm", - "tipJointName": "RightHand", - "enabledVar": "rightHandPoleVectorEnabled", - "poleVectorVar": "rightHandPoleVector" - }, - "children": [ - { - "id": "rightHandIK", - "type": "twoBoneIK", - "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "RightArm", - "midJointName": "RightForeArm", - "tipJointName": "RightHand", - "midHingeAxis": [ 0, 0, -1 ], - "alphaVar": "rightHandIKAlpha", - "enabledVar": "rightHandIKEnabled", - "endEffectorRotationVarVar": "rightHandIKRotationVar", - "endEffectorPositionVarVar": "rightHandIKPositionVar" - }, - "children": [ - { - "id": "leftHandPoleVector", - "type": "poleVectorConstraint", - "data": { - "enabled": false, - "referenceVector": [ 1, 0, 0 ], - "baseJointName": "LeftArm", - "midJointName": "LeftForeArm", - "tipJointName": "LeftHand", - "enabledVar": "leftHandPoleVectorEnabled", - "poleVectorVar": "leftHandPoleVector" - }, - "children": [ - { - "id": "leftHandIK", - "type": "twoBoneIK", - "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "LeftArm", - "midJointName": "LeftForeArm", - "tipJointName": "LeftHand", - "midHingeAxis": [ 0, 0, 1 ], - "alphaVar": "leftHandIKAlpha", - "enabledVar": "leftHandIKEnabled", - "endEffectorRotationVarVar": "leftHandIKRotationVar", - "endEffectorPositionVarVar": "leftHandIKPositionVar" - }, - "children": [ - { - "id": "userSplineIK", - "type": "splineIK", - "data": { - "alpha": 1.0, - "enabled": false, - "interpDuration": 15, - "baseJointName": "Hips", - "midJointName": "Spine2", - "tipJointName": "Head", - "basePositionVar": "hipsPosition", - "baseRotationVar": "hipsRotation", - "midPositionVar": "spine2Position", - "midRotationVar": "spine2Rotation", - "tipPositionVar": "headPosition", - "tipRotationVar": "headRotation", - "alphaVar": "splineIKAlpha", - "enabledVar": "splineIKEnabled", - "tipTargetFlexCoefficients": [ 1.0, 1.0, 1.0, 1.0, 1.0 ], - "midTargetFlexCoefficients": [ 1.0, 1.0, 1.0 ] - }, - "children": [ - { - "id": "defaultPoseOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "alphaVar": "defaultPoseOverlayAlpha", - "boneSet": "fullBody", - "boneSetVar": "defaultPoseOverlayBoneSet" - }, - "children": [ - { - "id": "defaultPose", - "type": "defaultPose", - "data": { - }, - "children": [] - }, - { - "id": "rightHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "rightHand", - "alphaVar": "rightHandOverlayAlpha" - }, - "children": [ - { - "id": "rightHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "rightHandGrasp", - "states": [ - { - "id": "rightHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { - "var": "isRightIndexPoint", - "state": "rightIndexPoint" - }, - { - "var": "isRightThumbRaise", - "state": "rightThumbRaise" - }, - { - "var": "isRightIndexPointAndThumbRaise", - "state": "rightIndexPointAndThumbRaise" - } - ] - }, - { - "id": "rightIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isRightHandGrasp", - "state": "rightHandGrasp" - }, - { - "var": "isRightThumbRaise", - "state": "rightThumbRaise" - }, - { - "var": "isRightIndexPointAndThumbRaise", - "state": "rightIndexPointAndThumbRaise" - } - ] - }, - { - "id": "rightThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isRightHandGrasp", - "state": "rightHandGrasp" - }, - { - "var": "isRightIndexPoint", - "state": "rightIndexPoint" - }, - { - "var": "isRightIndexPointAndThumbRaise", - "state": "rightIndexPointAndThumbRaise" - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isRightHandGrasp", - "state": "rightHandGrasp" - }, - { - "var": "isRightIndexPoint", - "state": "rightIndexPoint" - }, - { - "var": "isRightThumbRaise", - "state": "rightThumbRaise" - } - ] - } - ] - }, - "children": [ - { - "id": "rightHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_right.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "rightIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "rightHandGraspAlpha" - }, - "children": [ - { - "id": "rightIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "rightIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_right.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "leftHandOverlay", - "type": "overlay", - "data": { - "alpha": 0.0, - "boneSet": "leftHand", - "alphaVar": "leftHandOverlayAlpha" - }, - "children": [ - { - "id": "leftHandStateMachine", - "type": "stateMachine", - "data": { - "currentState": "leftHandGrasp", - "states": [ - { - "id": "leftHandGrasp", - "interpTarget": 3, - "interpDuration": 3, - "transitions": [ - { - "var": "isLeftIndexPoint", - "state": "leftIndexPoint" - }, - { - "var": "isLeftThumbRaise", - "state": "leftThumbRaise" - }, - { - "var": "isLeftIndexPointAndThumbRaise", - "state": "leftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftIndexPoint", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isLeftHandGrasp", - "state": "leftHandGrasp" - }, - { - "var": "isLeftThumbRaise", - "state": "leftThumbRaise" - }, - { - "var": "isLeftIndexPointAndThumbRaise", - "state": "leftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isLeftHandGrasp", - "state": "leftHandGrasp" - }, - { - "var": "isLeftIndexPoint", - "state": "leftIndexPoint" - }, - { - "var": "isLeftIndexPointAndThumbRaise", - "state": "leftIndexPointAndThumbRaise" - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "interpTarget": 15, - "interpDuration": 3, - "transitions": [ - { - "var": "isLeftHandGrasp", - "state": "leftHandGrasp" - }, - { - "var": "isLeftIndexPoint", - "state": "leftIndexPoint" - }, - { - "var": "isLeftThumbRaise", - "state": "leftThumbRaise" - } - ] - } - ] - }, - "children": [ - { - "id": "leftHandGrasp", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftHandGraspOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_open_left.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftHandGraspClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/hydra_pose_closed_left.fbx", - "startFrame": 10.0, - "endFrame": 10.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPoint", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "leftIndexPointAndThumbRaise", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "leftHandGraspAlpha" - }, - "children": [ - { - "id": "leftIndexPointAndThumbRaiseOpen", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_open_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "leftIndexPointAndThumbRaiseClosed", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/touch_thumb_point_closed_left.fbx", - "startFrame": 15.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } - ] - }, - { - "id": "mainStateMachine", - "type": "stateMachine", - "data": { - "outputJoints": [ "LeftFoot", "RightFoot" ], - "currentState": "idle", - "states": [ - { - "id": "idle", - "interpTarget": 20, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "idleToWalkFwd", - "interpTarget": 12, - "interpDuration": 8, - "transitions": [ - { - "var": "idleToWalkFwdOnDone", - "state": "WALKFWD" - }, - { - "var": "isNotMoving", - "state": "idle" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "idleSettle", - "interpTarget": 15, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "idleSettleOnDone", - "state": "idle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - } - ] - }, - { - "id": "WALKFWD", - "interpTarget": 35, - "interpDuration": 10, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "WALKBWD", - "interpTarget": 35, - "interpDuration": 10, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "STRAFERIGHT", - "interpTarget": 25, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "STRAFELEFT", - "interpTarget": 25, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "turnRight", - "interpTarget": 6, - "interpDuration": 8, - "transitions": [ - { - "var": "isNotTurning", - "state": "idle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "turnLeft", - "interpTarget": 6, - "interpDuration": 8, - "transitions": [ - { - "var": "isNotTurning", - "state": "idle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "strafeRightHmd", - "interpTarget": 5, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - } - ] - }, - { - "id": "strafeLeftHmd", - "interpTarget": 5, - "interpDuration": 8, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotMoving", - "state": "idleSettle" - }, - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - } - ] - }, - { - "id": "fly", - "interpTarget": 6, - "interpDuration": 6, - "transitions": [ - { - "var": "isNotFlying", - "state": "idleSettle" - } - ] - }, - { - "id": "takeoffStand", - "interpTarget": 2, - "interpDuration": 2, - "transitions": [ - { - "var": "isNotTakeoff", - "state": "inAirStand" - } - ] - }, - { - "id": "TAKEOFFRUN", - "interpTarget": 2, - "interpDuration": 2, - "transitions": [ - { - "var": "isNotTakeoff", - "state": "INAIRRUN" - } - ] - }, - { - "id": "inAirStand", - "interpTarget": 3, - "interpDuration": 3, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotInAir", - "state": "landStandImpact" - } - ] - }, - { - "id": "INAIRRUN", - "interpTarget": 3, - "interpDuration": 3, - "interpType": "snapshotPrev", - "transitions": [ - { - "var": "isNotInAir", - "state": "WALKFWD" - } - ] - }, - { - "id": "landStandImpact", - "interpTarget": 1, - "interpDuration": 1, - "transitions": [ - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "landStandImpactOnDone", - "state": "landStand" - } - ] - }, - { - "id": "landStand", - "interpTarget": 1, - "interpDuration": 1, - "transitions": [ - { - "var": "isMovingForward", - "state": "WALKFWD" - }, - { - "var": "isMovingBackward", - "state": "WALKBWD" - }, - { - "var": "isMovingRight", - "state": "STRAFERIGHT" - }, - { - "var": "isMovingLeft", - "state": "STRAFELEFT" - }, - { - "var": "isTurningRight", - "state": "turnRight" - }, - { - "var": "isTurningLeft", - "state": "turnLeft" - }, - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "isInAirStand", - "state": "inAirStand" - }, - { - "var": "isInAirRun", - "state": "INAIRRUN" - }, - { - "var": "landStandOnDone", - "state": "idle" - }, - { - "var": "isMovingRightHmd", - "state": "strafeRightHmd" - }, - { - "var": "isMovingLeftHmd", - "state": "strafeLeftHmd" - } - ] - }, - { - "id": "LANDRUN", - "interpTarget": 2, - "interpDuration": 2, - "transitions": [ - { - "var": "isFlying", - "state": "fly" - }, - { - "var": "isTakeoffStand", - "state": "takeoffStand" - }, - { - "var": "isTakeoffRun", - "state": "TAKEOFFRUN" - }, - { - "var": "landRunOnDone", - "state": "WALKFWD" - } - ] - } - ] - }, - "children": [ - { - "id": "idle", - "type": "stateMachine", - "data": { - "currentState": "idleStand", - "states": [ - { - "id": "idleStand", - "interpTarget": 6, - "interpDuration": 10, - "transitions": [ - { - "var": "isTalking", - "state": "idleTalk" - } - ] - }, - { - "id": "idleTalk", - "interpTarget": 6, - "interpDuration": 10, - "transitions": [ - { - "var": "notIsTalking", - "state": "idleStand" - } - ] - } - ] - }, - "children": [ - { - "id": "idleStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 300.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "idleTalk", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/talk.fbx", - "startFrame": 0.0, - "endFrame": 800.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "WALKFWD", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0.5, 1.8, 2.3, 3.2, 4.5 ], - "alphaVar": "moveForwardAlpha", - "desiredSpeedVar": "moveForwardSpeed" - }, - "children": [ - { - "id": "walkFwdShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_fwd.fbx", - "startFrame": 0.0, - "endFrame": 39.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdNormal_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd.fbx", - "startFrame": 0.0, - "endFrame": 30.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_fwd_fast.fbx", - "startFrame": 0.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_fwd.fbx", - "startFrame": 0.0, - "endFrame": 25.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkFwdRun_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/run_fwd.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "idleToWalkFwd", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle_to_walk.fbx", - "startFrame": 1.0, - "endFrame": 13.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "idleSettle", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/settle_to_idle.fbx", - "startFrame": 1.0, - "endFrame": 59.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "WALKBWD", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0.6, 1.6, 2.3, 3.1 ], - "alphaVar": "moveBackwardAlpha", - "desiredSpeedVar": "moveBackwardSpeed" - }, - "children": [ - { - "id": "walkBwdShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_short_bwd.fbx", - "startFrame": 0.0, - "endFrame": 38.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "walkBwdFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_bwd_fast.fbx", - "startFrame": 0.0, - "endFrame": 27.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "jogBwd_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_bwd.fbx", - "startFrame": 0.0, - "endFrame": 24.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "runBwd_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/run_bwd.fbx", - "startFrame": 0.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "turnLeft", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 32.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "turnRight", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/turn_left.fbx", - "startFrame": 0.0, - "endFrame": 32.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "STRAFELEFT", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0.1, 0.5, 1.0, 2.6, 3.0 ], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeLeftShortStep_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftStep_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftWalk_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftWalkFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_left.fbx", - "startFrame": 0.0, - "endFrame": 24.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "STRAFERIGHT", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0.1, 0.5, 1.0, 2.6, 3.0 ], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "strafeRightShortStep_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightStep_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightWalk_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left.fbx", - "startFrame": 0.0, - "endFrame": 35.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightFast_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/walk_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 21.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightJog_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jog_left.fbx", - "startFrame": 0.0, - "endFrame": 24.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeLeftHmd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0, 0.5, 2.5 ], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "stepLeftShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "stepLeft_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "strafeLeftAnim_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - }, - { - "id": "strafeRightHmd", - "type": "blendLinearMove", - "data": { - "alpha": 0.0, - "desiredSpeed": 1.4, - "characteristicSpeeds": [ 0, 0.5, 2.5 ], - "alphaVar": "moveLateralAlpha", - "desiredSpeedVar": "moveLateralSpeed" - }, - "children": [ - { - "id": "stepRightShort_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_short_left.fbx", - "startFrame": 0.0, - "endFrame": 29.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "stepRight_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left.fbx", - "startFrame": 0.0, - "endFrame": 20.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - }, - { - "id": "strafeRightAnim_c", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/side_step_left_fast.fbx", - "startFrame": 0.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": true, - "mirrorFlag": true - }, - "children": [] - } - ] - }, - { - "id": "fly", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/fly.fbx", - "startFrame": 1.0, - "endFrame": 80.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "takeoffStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_launch.fbx", - "startFrame": 2.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "TAKEOFFRUN", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_running_launch_land.fbx", - "startFrame": 4.0, - "endFrame": 15.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStand", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirStandPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 0.0, - "endFrame": 0.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 1.0, - "endFrame": 1.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirStandPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_apex.fbx", - "startFrame": 2.0, - "endFrame": 2.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "INAIRRUN", - "type": "blendLinear", - "data": { - "alpha": 0.0, - "alphaVar": "inAirAlpha" - }, - "children": [ - { - "id": "inAirRunPreApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_running_launch_land.fbx", - "startFrame": 16.0, - "endFrame": 16.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_running_launch_land.fbx", - "startFrame": 22.0, - "endFrame": 22.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "inAirRunPostApex", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_running_launch_land.fbx", - "startFrame": 33.0, - "endFrame": 33.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - }, - { - "id": "landStandImpact", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx", - "startFrame": 1.0, - "endFrame": 6.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "landStand", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_standing_land_settle.fbx", - "startFrame": 6.0, - "endFrame": 68.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - }, - { - "id": "LANDRUN", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/jump_running_launch_land.fbx", - "startFrame": 29.0, - "endFrame": 40.0, - "timeScale": 1.0, - "loopFlag": false - }, - "children": [] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "id": "userAnimA", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - }, - { - "id": "userAnimB", - "type": "clip", - "data": { - "url": "qrc:///avatar/animations/idle.fbx", - "startFrame": 0.0, - "endFrame": 90.0, - "timeScale": 1.0, - "loopFlag": true - }, - "children": [] - } - ] - } -} diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 2522d0e4c6..87589ab432 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3098,7 +3098,7 @@ void MyAvatar::initAnimGraph() { graphUrl = PathUtils::resourcesUrl("avatar/avatar-animation.json"); #if defined(Q_OS_ANDROID) || defined(HIFI_USE_OPTIMIZED_IK) - graphUrl = PathUtils::resourcesUrl("avatar/avatar-animation_withSplineIKNode.json"); + graphUrl = PathUtils::resourcesUrl("avatar/avatar-animation-optimized-ik.json"); #endif } From ea8e285793f6c39b42251c0691a6afcee95acf2c Mon Sep 17 00:00:00 2001 From: milad Date: Tue, 12 Nov 2019 16:02:52 -0800 Subject: [PATCH 191/547] Zach's ss cpp cleanup changes --- .../ScreenshareScriptingInterface.cpp | 106 +++++++++--------- .../scripting/ScreenshareScriptingInterface.h | 6 + screenshare/src/app.js | 4 + screenshare/src/main.js | 8 +- 4 files changed, 67 insertions(+), 57 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 6e883c109b..cf4e1b71b9 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -32,7 +32,14 @@ #include #include -ScreenshareScriptingInterface::ScreenshareScriptingInterface(){}; +ScreenshareScriptingInterface::ScreenshareScriptingInterface() { + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, &ScreenshareScriptingInterface::onWebEventReceived); +}; ScreenshareScriptingInterface::~ScreenshareScriptingInterface() { stopScreenshare(); @@ -46,9 +53,6 @@ static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862 static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; -QString token; -QString projectAPIKey; -QString sessionID; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { @@ -60,7 +64,6 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } if (isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { - qDebug() << "Screenshare process already running. Aborting..."; return; } @@ -77,7 +80,7 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QUuid currentDomainID = DependencyManager::get()->getDomainID(); // `https://metaverse.highfidelity.com/api/v1/domain/:domain_id/screenshare`, // passing the Domain ID that the user is connected to, as well as the `roomName`. - // The server will respond with the relevant OpenTok Token, Session ID, and API Key. + // The server will respond with the relevant OpenTok , Session ID, and API Key. // Upon error-free response, do the logic below, passing in that info as necessary. QNetworkAccessManager* manager = new QNetworkAccessManager(); QObject::connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply* reply) { @@ -92,17 +95,17 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QByteArray answerByteArray = answer.toUtf8(); QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); - token = answerJSONObject["token"].toString(); - projectAPIKey = answerJSONObject["projectAPIKey"].toString(); - sessionID = answerJSONObject["sessionID"].toString(); - qDebug() << "token:" << token << " projectAPIKey:" << projectAPIKey << " sessionID: " << sessionID; + _token = answerJSONObject["token"].toString(); + _projectAPIKey = answerJSONObject["projectAPIKey"].toString(); + _sessionID = answerJSONObject["sessionID"].toString(); + qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; if (isPresenter) { QStringList arguments; arguments << " "; - arguments << "--token=" + token << " "; - arguments << "--projectAPIKey=" + projectAPIKey << " "; - arguments << "--sessionID=" + sessionID << " "; + arguments << "--token=" + _token << " "; + arguments << "--projectAPIKey=" + _projectAPIKey << " "; + arguments << "--sessionID=" + _sessionID << " "; connect(_screenshareProcess.get(), &QProcess::errorOccurred, [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); @@ -144,49 +147,6 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QString hostType = "local"; _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); - QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, - [&](const QUuid& entityID, const QVariant& message) { - if (entityID == _screenshareViewerLocalWebEntityUUID) { - qDebug() << "ZRF HERE! Inside `webEventReceived(). `entityID`:" << entityID - << "`_screenshareViewerLocalWebEntityUUID`:" << _screenshareViewerLocalWebEntityUUID; - - auto esi = DependencyManager::get(); - if (!esi) { - return; - } - - QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); - QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); - - qDebug() << "ZRF HERE! Inside `webEventReceived(). `message`:" << message - << "`jsonObject`:" << jsonObject; - qDebug() << jsonObject["app"]; - if (jsonObject["app"] != "screenshare") { - return; - } - - qDebug() << "ZRF HERE! Inside `webEventReceived(). we're still here!"; - - if (jsonObject["method"] == "eventBridgeReady") { - QJsonObject responseObject; - responseObject.insert("app", "screenshare"); - responseObject.insert("method", "receiveConnectionInfo"); - QJsonObject responseObjectData; - responseObjectData.insert("token", token); - responseObjectData.insert("projectAPIKey", projectAPIKey); - responseObjectData.insert("sessionID", sessionID); - responseObject.insert("data", responseObjectData); - - qDebug() << "ZRF HERE! Inside `webEventReceived(). `responseObject.toVariantMap()`:" - << responseObject.toVariantMap(); - - auto esi = DependencyManager::get(); - esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); - } - } - }); - }); - QNetworkRequest request; QString tokboxURL = QProcessEnvironment::systemEnvironment().value("hifiScreenshareUrl"); request.setUrl(QUrl(tokboxURL)); @@ -210,4 +170,38 @@ void ScreenshareScriptingInterface::stopScreenshare() { } } _screenshareViewerLocalWebEntityUUID = "{00000000-0000-0000-0000-000000000000}"; + _token = ""; + _projectAPIKey = ""; + _sessionID = ""; +} + +void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { + if (entityID == _screenshareViewerLocalWebEntityUUID) { + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); + QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); + + if (jsonObject["app"] != "screenshare") { + return; + } + + if (jsonObject["method"] == "eventBridgeReady") { + QJsonObject responseObject; + responseObject.insert("app", "screenshare"); + responseObject.insert("method", "receiveConnectionInfo"); + QJsonObject responseObjectData; + responseObjectData.insert("token", _token); + responseObjectData.insert("projectAPIKey", _projectAPIKey); + responseObjectData.insert("sessionID", _sessionID); + responseObject.insert("data", responseObjectData); + + auto esi = DependencyManager::get(); + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); + } + } + } } diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index af682d4e42..56af8c1bb7 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -34,6 +34,9 @@ signals: void screenshareStopped(); void startScreenshareViewer(); +private slots: + void onWebEventReceived(const QUuid& entityID, const QVariant& message); + private: #if DEV_BUILD #ifdef Q_OS_WIN @@ -57,6 +60,9 @@ private: std::unique_ptr _screenshareProcess{ nullptr }; QUuid _screenshareViewerLocalWebEntityUUID; + QString _token{ "" }; + QString _projectAPIKey{ "" }; + QString _sessionID{ "" }; }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file diff --git a/screenshare/src/app.js b/screenshare/src/app.js index a8ba50770e..a79e89bbbb 100644 --- a/screenshare/src/app.js +++ b/screenshare/src/app.js @@ -116,6 +116,10 @@ function togglePage(){ console.log("Error getting sources", error); } + // MN TODO: + // Add all sources to array, sort array by type, then call `addSource()` + // for all of those sources. + for (let source of sources) { sourceMap[source.id] = source; addSource(source, "selects"); diff --git a/screenshare/src/main.js b/screenshare/src/main.js index 6f1588b12a..a9c52ad8e8 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/main.js @@ -45,7 +45,13 @@ function createWindow(){ resizable: false, webPreferences: { nodeIntegration: true - } + }, + skipTaskbar: false, + title: "Screen share" + // TODO: Update this code once we have CMAKE copying a png from + // `/interface/icon/interface.png` into the same directory + // as the screenshare executable during a post-build step + //icon: "hifi-screenshare-icon.png" }); window.loadURL('file://' + __dirname + '/index.html'); window.setMenu(null); From 1c399f5e9b9a1b3e0b7145780a659d96485980f5 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 12 Nov 2019 16:58:09 -0800 Subject: [PATCH 192/547] add doc about PICK_BYPASS_IGNORE Pick FilterFlag --- interface/src/raypick/PickScriptingInterface.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 5099156b37..11d77d9b49 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -52,6 +52,9 @@ * Read-only. *

Warning: Not yet implemented.

* + * @property {FilterFlags} PICK_BYPASS_IGNORE - Allows pick to intersect entities even when their ignorePickIntersection property is 'true'. + * For debug purposes. Read-only. + * * @property {IntersectionType} INTERSECTED_NONE - Intersected nothing. Read-only. * @property {IntersectionType} INTERSECTED_ENTITY - Intersected an entity. Read-only. * @property {IntersectionType} INTERSECTED_LOCAL_ENTITY - Intersected a local entity. Read-only. From b0c578aa7f4459e6bc8207ec6f844e06ef0dcba6 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Tue, 12 Nov 2019 17:06:35 -0800 Subject: [PATCH 193/547] Improved HTTP request to proper endpoint - won't work until PR16459 is merged --- .../ScreenshareScriptingInterface.cpp | 225 ++++++++++-------- .../scripting/ScreenshareScriptingInterface.h | 5 + 2 files changed, 131 insertions(+), 99 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index cf4e1b71b9..7032db87b0 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -21,9 +21,11 @@ #include #include +#include #include #include #include +#include #include "EntityScriptingInterface.h" #include "ScreenshareScriptingInterface.h" @@ -63,11 +65,15 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon return; } - if (isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { + _screenshareZoneID = screenshareZoneID; + _smartboardEntityID = smartboardEntityID; + _isPresenter = isPresenter; + + if (_isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { return; } - if (isPresenter) { + if (_isPresenter) { _screenshareProcess.reset(new QProcess(this)); QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); @@ -77,81 +83,31 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } } - QUuid currentDomainID = DependencyManager::get()->getDomainID(); - // `https://metaverse.highfidelity.com/api/v1/domain/:domain_id/screenshare`, - // passing the Domain ID that the user is connected to, as well as the `roomName`. - // The server will respond with the relevant OpenTok , Session ID, and API Key. - // Upon error-free response, do the logic below, passing in that info as necessary. - QNetworkAccessManager* manager = new QNetworkAccessManager(); - QObject::connect(manager, &QNetworkAccessManager::finished, this, [=](QNetworkReply* reply) { - if (reply->error()) { - qDebug() << "\n\n MN HERE: REPLY" << reply->errorString(); - return; - } + auto accountManager = DependencyManager::get(); + if (!accountManager) { + return; + } + auto addressManager = DependencyManager::get(); + if (!addressManager) { + return; + } - QString answer = reply->readAll(); - qDebug() << "\n\n MN HERE: REPLY" << answer; + QString currentDomainID = uuidStringWithoutCurlyBraces(addressManager->getDomainID()); + QString requestURLPath = "api/v1/domains"; + requestURLPath = requestURLPath.append(currentDomainID); + requestURLPath = requestURLPath.append("/screenshare"); - QByteArray answerByteArray = answer.toUtf8(); - QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); - - _token = answerJSONObject["token"].toString(); - _projectAPIKey = answerJSONObject["projectAPIKey"].toString(); - _sessionID = answerJSONObject["sessionID"].toString(); - qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; - - if (isPresenter) { - QStringList arguments; - arguments << " "; - arguments << "--token=" + _token << " "; - arguments << "--projectAPIKey=" + _projectAPIKey << " "; - arguments << "--sessionID=" + _sessionID << " "; - - connect(_screenshareProcess.get(), &QProcess::errorOccurred, - [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); - connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(_screenshareProcess.get(), &QProcess::stateChanged, [=](QProcess::ProcessState newState) { - qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; - }); - connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), - [=](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); - }); - - _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); - } - - if (!_screenshareViewerLocalWebEntityUUID.isNull()) { - return; - } - - auto esi = DependencyManager::get(); - if (!esi) { - return; - } - - EntityItemProperties localScreenshareWebEntityProps; - localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); - localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); - localScreenshareWebEntityProps.setLocalPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); - localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); - localScreenshareWebEntityProps.setParentID(smartboardEntityID); - localScreenshareWebEntityProps.setDimensions(LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS); - - // EntityPropertyFlags desiredSmartboardProperties; - // desiredSmartboardProperties += PROP_POSITION; - // desiredSmartboardProperties += PROP_DIMENSIONS; - // EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); - - QString hostType = "local"; - _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); - - QNetworkRequest request; - QString tokboxURL = QProcessEnvironment::systemEnvironment().value("hifiScreenshareUrl"); - request.setUrl(QUrl(tokboxURL)); - manager->get(request); -}; + JSONCallbackParameters callbackParams; + callbackParams.callbackReceiver = this; + callbackParams.jsonCallbackMethod = "handleSuccessfulScreenshareInfoGet"; + callbackParams.errorCallbackMethod = "handleFailedScreenshareInfoGet"; + accountManager->sendRequest( + requestURLPath, + AccountManagerAuth::Required, + QNetworkAccessManager::PutOperation, + callbackParams + ); +} void ScreenshareScriptingInterface::stopScreenshare() { if (QThread::currentThread() != thread()) { @@ -173,35 +129,106 @@ void ScreenshareScriptingInterface::stopScreenshare() { _token = ""; _projectAPIKey = ""; _sessionID = ""; + _isPresenter = false; +} + +void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkReply* reply) { + QString answer = reply->readAll(); + qDebug() << "\n\n MN HERE: REPLY" << answer; + + QByteArray answerByteArray = answer.toUtf8(); + QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); + + QString status = answerJSONObject["status"].toString(); + if (status == "fail") { + qDebug() << "\n\n MN HERE: SCREENSHARE REPLY FAIL"; + return; + } + + _token = answerJSONObject["token"].toString(); + _projectAPIKey = answerJSONObject["projectAPIKey"].toString(); + _sessionID = answerJSONObject["sessionID"].toString(); + qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; + + if (_isPresenter) { + QStringList arguments; + arguments << " "; + arguments << "--token=" + _token << " "; + arguments << "--projectAPIKey=" + _projectAPIKey << " "; + arguments << "--sessionID=" + _sessionID << " "; + + connect(_screenshareProcess.get(), &QProcess::errorOccurred, + [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); + connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); + connect(_screenshareProcess.get(), &QProcess::stateChanged, [=](QProcess::ProcessState newState) { + qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; + }); + connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), + [=](int exitCode, QProcess::ExitStatus exitStatus) { + qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; + emit screenshareStopped(); + }); + + _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); + } + + if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + return; + } + + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + EntityItemProperties localScreenshareWebEntityProps; + localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); + localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); + localScreenshareWebEntityProps.setLocalPosition(LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION); + localScreenshareWebEntityProps.setSourceUrl(LOCAL_SCREENSHARE_WEB_ENTITY_URL); + localScreenshareWebEntityProps.setParentID(_smartboardEntityID); + localScreenshareWebEntityProps.setDimensions(LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS); + + // The lines below will be used when writing the feature to ensure that the smartboard can be of any arbitrary size. + //EntityPropertyFlags desiredSmartboardProperties; + //desiredSmartboardProperties += PROP_POSITION; + //desiredSmartboardProperties += PROP_DIMENSIONS; + //EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); + + QString hostType = "local"; + _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); +} + +void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { + qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->errorString(); } void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { if (entityID == _screenshareViewerLocalWebEntityUUID) { + auto esi = DependencyManager::get(); + if (!esi) { + return; + } + + QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); + QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); + + if (jsonObject["app"] != "screenshare") { + return; + } + + if (jsonObject["method"] == "eventBridgeReady") { + QJsonObject responseObject; + responseObject.insert("app", "screenshare"); + responseObject.insert("method", "receiveConnectionInfo"); + QJsonObject responseObjectData; + responseObjectData.insert("token", _token); + responseObjectData.insert("projectAPIKey", _projectAPIKey); + responseObjectData.insert("sessionID", _sessionID); + responseObject.insert("data", responseObjectData); + auto esi = DependencyManager::get(); - if (!esi) { - return; - } - - QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); - QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); - - if (jsonObject["app"] != "screenshare") { - return; - } - - if (jsonObject["method"] == "eventBridgeReady") { - QJsonObject responseObject; - responseObject.insert("app", "screenshare"); - responseObject.insert("method", "receiveConnectionInfo"); - QJsonObject responseObjectData; - responseObjectData.insert("token", _token); - responseObjectData.insert("projectAPIKey", _projectAPIKey); - responseObjectData.insert("sessionID", _sessionID); - responseObject.insert("data", responseObjectData); - - auto esi = DependencyManager::get(); - esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); - } + esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); } } } diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index 56af8c1bb7..b0b5ba31b1 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -36,6 +36,8 @@ signals: private slots: void onWebEventReceived(const QUuid& entityID, const QVariant& message); + void handleSuccessfulScreenshareInfoGet(QNetworkReply* reply); + void handleFailedScreenshareInfoGet(QNetworkReply* reply); private: #if DEV_BUILD @@ -63,6 +65,9 @@ private: QString _token{ "" }; QString _projectAPIKey{ "" }; QString _sessionID{ "" }; + QUuid _screenshareZoneID; + QUuid _smartboardEntityID; + bool _isPresenter{ false }; }; #endif // hifi_ScreenshareScriptingInterface_h \ No newline at end of file From 3939c7e6fd9a6270d773ac73ba58c9fd5339e3ba Mon Sep 17 00:00:00 2001 From: amerhifi Date: Tue, 12 Nov 2019 17:07:43 -0800 Subject: [PATCH 194/547] adding qaudio reset on switch. --- libraries/audio-client/src/AudioClient.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp index b26c00e82b..0ccad20145 100644 --- a/libraries/audio-client/src/AudioClient.cpp +++ b/libraries/audio-client/src/AudioClient.cpp @@ -1835,6 +1835,8 @@ bool AudioClient::switchInputToAudioDevice(const HifiAudioDeviceInfo inputDevice _audioInput->deleteLater(); _audioInput = NULL; _numInputCallbackBytes = 0; + + _inputDeviceInfo.setDevice(QAudioDeviceInfo()); } if (_dummyAudioInput) { @@ -2081,6 +2083,8 @@ bool AudioClient::switchOutputToAudioDevice(const HifiAudioDeviceInfo outputDevi delete[] _localOutputMixBuffer; _localOutputMixBuffer = NULL; + + _outputDeviceInfo.setDevice(QAudioDeviceInfo()); } // cleanup any resamplers From 417856fec4746cde228f8f0763292c68c3cc34f4 Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Tue, 12 Nov 2019 20:45:20 -0800 Subject: [PATCH 195/547] JSDoc updates for PR16399 --- libraries/avatars/src/AvatarData.h | 35 ++++++++++++++++-------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index e8aee1f3d2..e38164015f 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -532,19 +532,22 @@ class AvatarData : public QObject, public SpatiallyNestable { * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. - * @property {boolean} hasScriptedBlendshapes=false - Set this to true before using the {@link MyAvatar.setBlendshape} method, - * after you no longer want scripted control over the blendshapes set to back to false.
NOTE: this property will - * automatically become true if the Controller system has valid facial blendshape actions. - * @property {boolean} hasProceduralBlinkFaceMovement=true - By default avatars will blink automatically by animating facial - * blendshapes. Set this property to false to disable this automatic blinking. This can be useful if you - * wish to fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. - * @property {boolean} hasProceduralEyeFaceMovement=true - By default the avatar eye facial blendshapes will be adjusted - * automatically as the eyes move. This will prevent the iris is never obscured by the upper or lower lids. Set this - * property to false to disable this automatic movement. This can be useful if you wish to fully control - * the eye blendshapes via the {@link MyAvatar.setBlendshape} method. - * @property {boolean} hasAudioEnabledFaceMovement=true - By default the avatar mouth blendshapes will animate based on - * the microphone audio. Set this property to false to disable that animaiton. This can be useful if you - * wish to fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasScriptedBlendshapes=false - true if blendshapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, and set back + * to false after you no longer want scripted control over the blendshapes. + *

NOTE: This property will automatically be set to true if the Controller system has valid facial blendshape + * actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blendshapes, false if automatic blinking is disabled. Set this property to false if you wish to + * fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blendshapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to false + * if you wish to fully control the eye blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blendshapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blendshapes via the + * {@link MyAvatar.setBlendshape} method. */ Q_PROPERTY(glm::vec3 position READ getWorldPosition WRITE setPositionViaScript) Q_PROPERTY(float scale READ getDomainLimitedScale WRITE setTargetScale) @@ -1130,9 +1133,9 @@ public: /**jsdoc - * Sets the value of a blendshape to animate your avatar's face. To enable other users to see the resulting animation of - * your avatar's face, set {@link Avatar.hasScriptedBlendshapes} to true while using this API and back to false when your - * animation is complete. + * Sets the value of a blendshape to animate your avatar's face. In order for other users to see the resulting animations + * on your avatar's face, set {@link Avatar.hasScriptedBlendshapes} to true. When you are done using this API, set + * {@link Avatar.hasScriptedBlendshapes} back to false when the animation is complete. * @function Avatar.setBlendshape * @param {string} name - The name of the blendshape, per the * {@link https://docs.highfidelity.com/create/avatars/avatar-standards.html#blendshapes Avatar Standards}. From b92badbe769073d7b58fa372dc7b7b1b0ffe5c9e Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 13 Nov 2019 08:23:27 -0800 Subject: [PATCH 196/547] Updated avatar-animation-optimized-ik.json from latest avatar-animation.json --- .../avatar/avatar-animation-optimized-ik.json | 279 +++++++++++++++--- 1 file changed, 239 insertions(+), 40 deletions(-) diff --git a/interface/resources/avatar/avatar-animation-optimized-ik.json b/interface/resources/avatar/avatar-animation-optimized-ik.json index c69863b190..2aad89228a 100644 --- a/interface/resources/avatar/avatar-animation-optimized-ik.json +++ b/interface/resources/avatar/avatar-animation-optimized-ik.json @@ -4717,16 +4717,117 @@ }, { "children": [ + { + "children": [ + ], + "data": { + "endFrame": 59, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle.fbx" + }, + "id": "idleSettle01", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "blendType": "", + "endFrame": 40, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle02.fbx" + }, + "id": "idleSettle02", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 60, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle03.fbx" + }, + "id": "idleSettle03", + "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 82, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle04.fbx" + }, + "id": "idleSettle04", + "type": "clip" + } ], "data": { + "currentState": "idleSettle01", "endFrame": 59, "loopFlag": false, + "randomSwitchTimeMin": 1, "startFrame": 1, + "states": [ + { + "easingType": "easeInOutQuad", + "id": "idleSettle01", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleSettle02", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleSettle03", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleSettle04", + "interpDuration": 1, + "interpTarget": 1, + "interpType": "evaluateBoth", + "priority": 1, + "resume": false, + "transitions": [ + ] + } + ], "timeScale": 1, - "url": "qrc:///avatar/animations/settle_to_idle_small.fbx" + "url": "qrc:///avatar/animations/settle_to_idle.fbx" }, "id": "idleSettle", - "type": "clip" + "type": "randomSwitchStateMachine" }, { "children": [ @@ -5259,6 +5360,19 @@ }, "id": "LANDRUN", "type": "clip" + }, + { + "children": [ + ], + "data": { + "endFrame": 40, + "loopFlag": false, + "startFrame": 1, + "timeScale": 1, + "url": "qrc:///avatar/animations/settle_to_idle_small.fbx" + }, + "id": "idleSettleSmall", + "type": "clip" } ], "data": { @@ -5284,7 +5398,7 @@ { "easingType": "easeInOutQuad", "id": "idle", - "interpDuration": 15, + "interpDuration": 20, "interpTarget": 20, "interpType": "evaluateBoth", "transitions": [ @@ -5416,13 +5530,114 @@ { "easingType": "easeInOutQuad", "id": "idleSettle", - "interpDuration": 13, - "interpTarget": 14, + "interpDuration": 15, + "interpTarget": 15, "interpType": "snapshotPrev", "transitions": [ { "state": "idle", - "var": "idleSettleOnDone" + "var": "idleSettle01OnDone" + }, + { + "state": "idle", + "var": "idleSettle02OnDone" + }, + { + "state": "idle", + "var": "idleSettle03OnDone" + }, + { + "state": "idle", + "var": "idleSettle04OnDone" + }, + { + "state": "idle", + "var": "reactionPositiveTrigger" + }, + { + "state": "idle", + "var": "reactionNegativeTrigger" + }, + { + "state": "idle", + "var": "reactionRaiseHandEnabled" + }, + { + "state": "idle", + "var": "reactionApplaudEnabled" + }, + { + "state": "idle", + "var": "reactionPointEnabled" + }, + { + "state": "WALKFWD", + "var": "isInputForward" + }, + { + "state": "WALKBWD", + "var": "isInputBackward" + }, + { + "state": "STRAFERIGHT", + "var": "isInputRight" + }, + { + "state": "STRAFELEFT", + "var": "isInputLeft" + }, + { + "state": "strafeRightHmd", + "var": "isMovingRightHmd" + }, + { + "state": "strafeLeftHmd", + "var": "isMovingLeftHmd" + }, + { + "state": "turnRight", + "var": "isTurningRight" + }, + { + "state": "turnLeft", + "var": "isTurningLeft" + }, + { + "state": "fly", + "var": "isFlying" + }, + { + "state": "takeoffStand", + "var": "isTakeoffStand" + }, + { + "state": "TAKEOFFRUN", + "var": "isTakeoffRun" + }, + { + "state": "inAirStand", + "var": "isInAirStand" + }, + { + "state": "INAIRRUN", + "var": "isInAirRun" + }, + { + "state": "seated", + "var": "isSeated" + } + ] + }, + { + "easingType": "easeInOutQuad", + "id": "idleSettleSmall", + "interpDuration": 10, + "interpTarget": 10, + "interpType": "snapshotPrev", + "transitions": [ + { + "state": "idle", + "var": "idleSettleSmallOnDone" }, { "state": "idle", @@ -5508,6 +5723,10 @@ "interpTarget": 35, "interpType": "snapshotPrev", "transitions": [ + { + "state": "idleSettleSmall", + "var": "isNotInputNoMomentum" + }, { "state": "idleSettle", "var": "isNotInputSlow" @@ -5572,6 +5791,10 @@ "interpTarget": 35, "interpType": "snapshotPrev", "transitions": [ + { + "state": "idleSettleSmall", + "var": "isNotInputNoMomentum" + }, { "state": "idleSettle", "var": "isNotInputSlow" @@ -5636,6 +5859,10 @@ "interpTarget": 25, "interpType": "snapshotPrev", "transitions": [ + { + "state": "idleSettleSmall", + "var": "isNotInputNoMomentum" + }, { "state": "idleSettle", "var": "isNotInputSlow" @@ -5680,14 +5907,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -5700,6 +5919,10 @@ "interpTarget": 25, "interpType": "snapshotPrev", "transitions": [ + { + "state": "idleSettleSmall", + "var": "isNotInputNoMomentum" + }, { "state": "idleSettle", "var": "isNotInputSlow" @@ -5744,14 +5967,6 @@ "state": "INAIRRUN", "var": "isInAirRun" }, - { - "state": "strafeRightHmd", - "var": "isMovingRightHmd" - }, - { - "state": "strafeLeftHmd", - "var": "isMovingLeftHmd" - }, { "state": "seated", "var": "isSeated" @@ -5896,7 +6111,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -5910,14 +6125,6 @@ "state": "strafeLeftHmd", "var": "isMovingLeftHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" @@ -5960,7 +6167,7 @@ "transitions": [ { "state": "idleSettle", - "var": "isNotInput" + "var": "isNotMoving" }, { "state": "WALKFWD", @@ -5974,14 +6181,6 @@ "state": "strafeRightHmd", "var": "isMovingRightHmd" }, - { - "state": "STRAFERIGHT", - "var": "isInputRight" - }, - { - "state": "STRAFELEFT", - "var": "isInputLeft" - }, { "state": "turnRight", "var": "isTurningRight" From 8aea0dd951599a0891fe6eeb67ea89b446bb0608 Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 10:11:16 -0800 Subject: [PATCH 197/547] Merge in Howard's 'screenshare presence' open PR --- assignment-client/src/avatars/AvatarMixer.cpp | 6 ++ .../src/avatars/AvatarMixerClientData.cpp | 12 +++- domain-server/src/DomainServer.cpp | 60 +++++++++++++++++++ domain-server/src/DomainServer.h | 6 ++ libraries/networking/src/udt/PacketHeaders.h | 4 +- 5 files changed, 86 insertions(+), 2 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index c7ab810c9a..807f54953e 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -1081,6 +1081,12 @@ void AvatarMixer::setupEntityQuery() { priorityZoneQuery["avatarPriority"] = true; priorityZoneQuery["type"] = "Zone"; + QJsonObject queryFlags; + queryFlags["includeAncestors"] = true; + queryFlags["includeDescendants"] = true; + priorityZoneQuery["flags"] = queryFlags; + priorityZoneQuery["name"] = true; // Handy for debugging. + _entityViewer.getOctreeQuery().setJSONParameters(priorityZoneQuery); _slaveSharedData.entityTree = entityTree; } diff --git a/assignment-client/src/avatars/AvatarMixerClientData.cpp b/assignment-client/src/avatars/AvatarMixerClientData.cpp index 1195f0d801..ea5246c59a 100644 --- a/assignment-client/src/avatars/AvatarMixerClientData.cpp +++ b/assignment-client/src/avatars/AvatarMixerClientData.cpp @@ -99,6 +99,7 @@ namespace { glm::vec3 position; bool isInPriorityZone { false }; float zoneVolume { std::numeric_limits::max() }; + EntityItemID id {}; static bool operation(const OctreeElementPointer& element, void* extraData) { auto findPriorityZone = static_cast(extraData); @@ -113,6 +114,7 @@ namespace { if (volume < findPriorityZone->zoneVolume) { // Smaller volume wins findPriorityZone->isInPriorityZone = zoneItem->getAvatarPriority() == COMPONENT_MODE_ENABLED; findPriorityZone->zoneVolume = volume; + findPriorityZone->id = zoneItem->getEntityItemID(); } } } @@ -152,7 +154,15 @@ int AvatarMixerClientData::parseData(ReceivedMessage& message, const SlaveShared EntityTree& entityTree = *slaveSharedData.entityTree; FindPriorityZone findPriorityZone { newPosition } ; entityTree.recurseTreeWithOperation(&FindPriorityZone::operation, &findPriorityZone); - _avatar->setHasPriority(findPriorityZone.isInPriorityZone); + bool currentlyHasPriority = findPriorityZone.isInPriorityZone; + if (currentlyHasPriority != _avatar->getHasPriority()) { + _avatar->setHasPriority(currentlyHasPriority); + auto nodeList = DependencyManager::get(); + auto packet = NLPacket::create(PacketType::AvatarZonePresence, 2 * NUM_BYTES_RFC4122_UUID, true); + packet->write(_avatar->getSessionUUID().toRfc4122()); + packet->write(findPriorityZone.id.toRfc4122()); + nodeList->sendPacket(std::move(packet), nodeList->getDomainSockAddr()); + } _avatar->setNeedsHeroCheck(false); } diff --git a/domain-server/src/DomainServer.cpp b/domain-server/src/DomainServer.cpp index ceb4679137..9eec7df86e 100644 --- a/domain-server/src/DomainServer.cpp +++ b/domain-server/src/DomainServer.cpp @@ -766,6 +766,7 @@ void DomainServer::setupNodeListAndAssignments() { packetReceiver.registerListener(PacketType::DomainServerPathQuery, this, "processPathQueryPacket"); packetReceiver.registerListener(PacketType::NodeJsonStats, this, "processNodeJSONStatsPacket"); packetReceiver.registerListener(PacketType::DomainDisconnectRequest, this, "processNodeDisconnectRequestPacket"); + packetReceiver.registerListener(PacketType::AvatarZonePresence, this, "processAvatarZonePresencePacket"); // NodeList won't be available to the settings manager when it is created, so call registerListener here packetReceiver.registerListener(PacketType::DomainSettingsRequest, &_settingsManager, "processSettingsRequestPacket"); @@ -3613,3 +3614,62 @@ void DomainServer::handleOctreeFileReplacementRequest(QSharedPointerreadAll(), QString(), QString(), username); } } + +void DomainServer::processAvatarZonePresencePacket(QSharedPointer message) { + QUuid avatar = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID)); + QUuid zone = QUuid::fromRfc4122(message->readWithoutCopy(NUM_BYTES_RFC4122_UUID)); + + if (avatar.isNull()) { + qCWarning(domain_server) << "Ignoring null avatar presence"; + return; + } + auto limitedNodeList = DependencyManager::get(); + auto matchingNode = limitedNodeList->nodeWithUUID(avatar); + if (!matchingNode) { + qCWarning(domain_server) << "Ignoring avatar presence for unknown avatar" << avatar; + return; + } + QString verifiedUsername = matchingNode->getPermissions().getVerifiedUserName(); + static const int SCREENSHARE_EXPIRATION_SECONDS = 24 * 60 * 60; + screensharePresence(zone.isNull() ? "" : zone.toString(), verifiedUsername, SCREENSHARE_EXPIRATION_SECONDS); +} + +void DomainServer::screensharePresence(QString roomname, QString username, int expirationSeconds) { + if (!DependencyManager::get()->hasValidAccessToken()) { + static std::once_flag presenceAuthorityWarning; + std::call_once(presenceAuthorityWarning, [] { + qCDebug(domain_server) << "No authority to send screensharePresence."; + }); + return; + } + JSONCallbackParameters callbackParams; + callbackParams.callbackReceiver = this; + callbackParams.jsonCallbackMethod = "handleSuccessfulScreensharePresence"; + callbackParams.errorCallbackMethod = "handleFailedScreensharePresence"; + const QString PATH = "api/v1/domains/%1/screenshare"; + QString domain_id = uuidStringWithoutCurlyBraces(getID()); + QJsonObject json, screenshare; + screenshare["username"] = username; + screenshare["roomname"] = roomname; + if (expirationSeconds > 0) { + screenshare["expiration"] = expirationSeconds; + } + json["screenshare"] = screenshare; + DependencyManager::get()->sendRequest( + PATH.arg(domain_id), + AccountManagerAuth::Required, + QNetworkAccessManager::PostOperation, + callbackParams, QJsonDocument(json).toJson() + ); +} + +void DomainServer::handleSuccessfulScreensharePresence(QNetworkReply* requestReply) { + QJsonObject jsonObject = QJsonDocument::fromJson(requestReply->readAll()).object(); + if (jsonObject["status"].toString() != "success") { + qCWarning(domain_server) << "screensharePresence api call failed:" << QJsonDocument(jsonObject).toJson(QJsonDocument::Compact); + } +} + +void DomainServer::handleFailedScreensharePresence(QNetworkReply* requestReply) { + qCWarning(domain_server) << "screensharePresence api call failed:" << requestReply->error(); +} diff --git a/domain-server/src/DomainServer.h b/domain-server/src/DomainServer.h index c725688b67..034ccb5a18 100644 --- a/domain-server/src/DomainServer.h +++ b/domain-server/src/DomainServer.h @@ -78,6 +78,8 @@ public: bool isAssetServerEnabled(); + void screensharePresence(QString roomname, QString username, int expiration_seconds = 0); + public slots: /// Called by NodeList to inform us a node has been added void nodeAdded(SharedNodePointer node); @@ -96,6 +98,7 @@ private slots: void processNodeDisconnectRequestPacket(QSharedPointer message); void processICEServerHeartbeatDenialPacket(QSharedPointer message); void processICEServerHeartbeatACK(QSharedPointer message); + void processAvatarZonePresencePacket(QSharedPointer packet); void handleDomainContentReplacementFromURLRequest(QSharedPointer message); void handleOctreeFileReplacementRequest(QSharedPointer message); @@ -129,6 +132,9 @@ private slots: void handleSuccessfulICEServerAddressUpdate(QNetworkReply* requestReply); void handleFailedICEServerAddressUpdate(QNetworkReply* requestReply); + void handleSuccessfulScreensharePresence(QNetworkReply* requestReply); + void handleFailedScreensharePresence(QNetworkReply* requestReply); + void updateReplicatedNodes(); void updateDownstreamNodes(); void updateUpstreamNodes(); diff --git a/libraries/networking/src/udt/PacketHeaders.h b/libraries/networking/src/udt/PacketHeaders.h index fbf575065e..75904d8122 100644 --- a/libraries/networking/src/udt/PacketHeaders.h +++ b/libraries/networking/src/udt/PacketHeaders.h @@ -135,6 +135,7 @@ public: AudioSoloRequest, BulkAvatarTraitsAck, StopInjector, + AvatarZonePresence, NUM_PACKET_TYPE }; @@ -185,7 +186,8 @@ public: << PacketTypeEnum::Value::OctreeFileReplacement << PacketTypeEnum::Value::ReplicatedMicrophoneAudioNoEcho << PacketTypeEnum::Value::ReplicatedMicrophoneAudioWithEcho << PacketTypeEnum::Value::ReplicatedInjectAudio << PacketTypeEnum::Value::ReplicatedSilentAudioFrame << PacketTypeEnum::Value::ReplicatedAvatarIdentity - << PacketTypeEnum::Value::ReplicatedKillAvatar << PacketTypeEnum::Value::ReplicatedBulkAvatarData; + << PacketTypeEnum::Value::ReplicatedKillAvatar << PacketTypeEnum::Value::ReplicatedBulkAvatarData + << PacketTypeEnum::Value::AvatarZonePresence; return NON_SOURCED_PACKETS; } From e81b21ac592f8818e0627e655b4f477ccfb19550 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 13 Nov 2019 10:40:00 -0800 Subject: [PATCH 198/547] bug fix from code review comment --- interface/src/octree/SafeLanding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index bcf345bae8..ab002e4868 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -151,7 +151,7 @@ void SafeLanding::updateTracking() { shouldStop = (sequenceSize == 0 || (startIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end() && - !tooManySequenceNumbers && + tooManySequenceNumbers && ((distance(startIter, endIter) == sequenceSize - 1) || !missingSequenceNumbers))); if (shouldStop) { From 1145bc890484664218dfbcd3bbf438678caf983c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 14 Nov 2019 08:43:51 +1300 Subject: [PATCH 199/547] Fix Graphics.exportModelToOBJ() JavaScript crash --- .../src/graphics-scripting/GraphicsScriptingInterface.cpp | 4 ++-- .../src/graphics-scripting/GraphicsScriptingInterface.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp index d76c1fcbd2..4d95709f15 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.cpp @@ -258,8 +258,8 @@ scriptable::ScriptableMeshPointer GraphicsScriptingInterface::newMesh(const QVar return scriptable::make_scriptowned(mesh, nullptr); } -QString GraphicsScriptingInterface::exportModelToOBJ(const scriptable::ScriptableModel& _in) { - const auto& in = _in.getConstMeshes(); +QString GraphicsScriptingInterface::exportModelToOBJ(const scriptable::ScriptableModelPointer& model) { + const auto& in = model->getConstMeshes(); if (in.size()) { QList meshes; foreach (auto meshProxy, in) { diff --git a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.h b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.h index 808d3f221f..c1f3be2b3d 100644 --- a/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.h +++ b/libraries/graphics-scripting/src/graphics-scripting/GraphicsScriptingInterface.h @@ -93,7 +93,7 @@ public slots: * @param {Graphics.Model} model * @returns {string} */ - QString exportModelToOBJ(const scriptable::ScriptableModel& in); + QString exportModelToOBJ(const scriptable::ScriptableModelPointer& model); private: scriptable::ModelProviderPointer getModelProvider(const QUuid& uuid); From 61f0896e3075d273e2aaa17ded9872f4a6c18ecd Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 12:35:01 -0800 Subject: [PATCH 200/547] Fix small bugs with the HTTP request to screenshare endpoint --- .../src/scripting/ScreenshareScriptingInterface.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 7032db87b0..3e52d375eb 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -93,18 +93,16 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } QString currentDomainID = uuidStringWithoutCurlyBraces(addressManager->getDomainID()); - QString requestURLPath = "api/v1/domains"; - requestURLPath = requestURLPath.append(currentDomainID); - requestURLPath = requestURLPath.append("/screenshare"); + QString requestURLPath = "api/v1/domains/%1/screenshare"; JSONCallbackParameters callbackParams; callbackParams.callbackReceiver = this; callbackParams.jsonCallbackMethod = "handleSuccessfulScreenshareInfoGet"; callbackParams.errorCallbackMethod = "handleFailedScreenshareInfoGet"; accountManager->sendRequest( - requestURLPath, + requestURLPath.arg(currentDomainID), AccountManagerAuth::Required, - QNetworkAccessManager::PutOperation, + QNetworkAccessManager::GetOperation, callbackParams ); } @@ -200,7 +198,7 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR } void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { - qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->errorString(); + qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->readAll(); } void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { From 516debdcb2592a659d7486e212ebfd93fe38cc8b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Wed, 13 Nov 2019 12:50:13 -0800 Subject: [PATCH 201/547] Fix code style / remove cruft --- libraries/animation/src/AnimSkeleton.cpp | 8 +- libraries/animation/src/AnimSkeleton.h | 2 +- libraries/baking/src/MaterialBaker.cpp | 2 +- .../src/RenderableModelEntityItem.cpp | 16 +--- libraries/fbx/src/FBXSerializer.cpp | 4 +- libraries/fbx/src/OBJSerializer.cpp | 10 +-- libraries/render-utils/src/Model.cpp | 15 ++-- .../render-utils/src/SoftAttachmentModel.cpp | 3 +- tests-manual/fbx/CMakeLists.txt | 11 --- tests-manual/fbx/src/main.cpp | 77 ------------------- 10 files changed, 23 insertions(+), 125 deletions(-) delete mode 100644 tests-manual/fbx/CMakeLists.txt delete mode 100644 tests-manual/fbx/src/main.cpp diff --git a/libraries/animation/src/AnimSkeleton.cpp b/libraries/animation/src/AnimSkeleton.cpp index b60fc42f89..e5f05ab45f 100644 --- a/libraries/animation/src/AnimSkeleton.cpp +++ b/libraries/animation/src/AnimSkeleton.cpp @@ -24,13 +24,13 @@ AnimSkeleton::AnimSkeleton(const HFMModel& hfmModel) { // we make a copy of the inverseBindMatrices in order to prevent mutating the model bind pose // when we are dealing with a joint offset in the model - for (int i = 0; i < (int)hfmModel.skinDeformers.size(); i++) { - const auto& defor = hfmModel.skinDeformers[i]; + for (uint32_t i = 0; i < (uint32_t)hfmModel.skinDeformers.size(); i++) { + const auto& deformer = hfmModel.skinDeformers[i]; std::vector dummyClustersList; - for (uint32_t j = 0; j < (uint32_t)defor.clusters.size(); j++) { + for (uint32_t j = 0; j < (uint32_t)deformer.clusters.size(); j++) { // cast into a non-const reference, so we can mutate the FBXCluster - HFMCluster& cluster = const_cast(defor.clusters.at(j)); + HFMCluster& cluster = const_cast(deformer.clusters.at(j)); HFMCluster localCluster; localCluster.jointIndex = cluster.jointIndex; diff --git a/libraries/animation/src/AnimSkeleton.h b/libraries/animation/src/AnimSkeleton.h index 1477efb223..a6470ac609 100644 --- a/libraries/animation/src/AnimSkeleton.h +++ b/libraries/animation/src/AnimSkeleton.h @@ -68,7 +68,7 @@ public: void dump(const AnimPoseVec& poses) const; std::vector lookUpJointIndices(const std::vector& jointNames) const; - const HFMCluster getClusterBindMatricesOriginalValues(const int skinDeformerIndex, const int clusterIndex) const { return _clusterBindMatrixOriginalValues[skinDeformerIndex][clusterIndex]; } + const HFMCluster getClusterBindMatricesOriginalValues(int skinDeformerIndex, int clusterIndex) const { return _clusterBindMatrixOriginalValues[skinDeformerIndex][clusterIndex]; } protected: void buildSkeletonFromJoints(const std::vector& joints, const QMap jointOffsets); diff --git a/libraries/baking/src/MaterialBaker.cpp b/libraries/baking/src/MaterialBaker.cpp index d177ddf358..fbb17f0d01 100644 --- a/libraries/baking/src/MaterialBaker.cpp +++ b/libraries/baking/src/MaterialBaker.cpp @@ -260,7 +260,7 @@ void MaterialBaker::addTexture(const QString& materialName, image::TextureUsage: void MaterialBaker::setMaterials(const std::vector& materials, const QString& baseURL) { _materialResource = NetworkMaterialResourcePointer(new NetworkMaterialResource(), [](NetworkMaterialResource* ptr) { ptr->deleteLater(); }); - for (auto& material : materials) { + for (const auto& material : materials) { _materialResource->parsedMaterials.names.push_back(material.name.toStdString()); _materialResource->parsedMaterials.networkMaterials[material.name.toStdString()] = std::make_shared(material, baseURL); diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index 4de092c7fd..1bde9a0fa6 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -403,19 +403,11 @@ void RenderableModelEntityItem::computeShapeInfo(ShapeInfo& shapeInfo) { numIndices -= numIndices % TRIANGLE_STRIDE; // WORKAROUND lack of sanity checking in FBXSerializer uint32_t indexStart = (uint32_t)part.x; uint32_t indexEnd = indexStart + numIndices; - for (uint32_t j = indexStart; j < indexEnd; j += TRIANGLE_STRIDE) { + for (uint32_t j = indexStart; j < indexEnd; ++j) { // NOTE: It seems odd to skip vertices when initializing a btConvexHullShape, but let's keep the behavior similar to the old behavior for now - glm::vec3 p0 = triangleListMesh.vertices[triangleListMesh.indices[j]]; - glm::vec3 p1 = triangleListMesh.vertices[triangleListMesh.indices[j + 1]]; - glm::vec3 p2 = triangleListMesh.vertices[triangleListMesh.indices[j + 2]]; - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p0) == pointsInPart.cend()) { - pointsInPart.push_back(p0); - } - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p1) == pointsInPart.cend()) { - pointsInPart.push_back(p1); - } - if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), p2) == pointsInPart.cend()) { - pointsInPart.push_back(p2); + glm::vec3 point = triangleListMesh.vertices[triangleListMesh.indices[j]]; + if (std::find(pointsInPart.cbegin(), pointsInPart.cend(), point) == pointsInPart.cend()) { + pointsInPart.push_back(point); } } diff --git a/libraries/fbx/src/FBXSerializer.cpp b/libraries/fbx/src/FBXSerializer.cpp index f09182c0e6..46971b01e5 100644 --- a/libraries/fbx/src/FBXSerializer.cpp +++ b/libraries/fbx/src/FBXSerializer.cpp @@ -1462,7 +1462,7 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const const auto& partMaterialTextures = extracted.partMaterialTextures; uint32_t meshIndex = (uint32_t)hfmModel.meshes.size(); - meshIDsToMeshIndices.insert(it.key(), meshIndex); + meshIDsToMeshIndices.insert(meshID, meshIndex); hfmModel.meshes.push_back(extracted.mesh); hfm::Mesh& mesh = hfmModel.meshes.back(); @@ -1635,8 +1635,8 @@ HFMModel* FBXSerializer::extractHFMModel(const hifi::VariantHash& mapping, const } // Store the model's dynamic transform, and put its ID in the shapes + uint32_t skinDeformerID = (uint32_t)hfmModel.skinDeformers.size(); hfmModel.skinDeformers.push_back(skinDeformer); - uint32_t skinDeformerID = (uint32_t)(hfmModel.skinDeformers.size() - 1); for (hfm::Shape& shape : partShapes) { shape.skinDeformer = skinDeformerID; } diff --git a/libraries/fbx/src/OBJSerializer.cpp b/libraries/fbx/src/OBJSerializer.cpp index 31f92555f1..a998c3442d 100644 --- a/libraries/fbx/src/OBJSerializer.cpp +++ b/libraries/fbx/src/OBJSerializer.cpp @@ -701,9 +701,9 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V QMap materialMeshIdMap; std::vector hfmMeshParts; - for (uint32_t i = 0, meshPartCount = 0; i < (uint32_t)mesh.parts.size(); i++, meshPartCount++) { - HFMMeshPart& meshPart = mesh.parts[i]; - FaceGroup faceGroup = faceGroups[meshPartCount]; + for (uint32_t meshPartIndex = 0; meshPartIndex < (uint32_t)mesh.parts.size(); ++meshPartIndex) { + HFMMeshPart& meshPart = mesh.parts[meshPartIndex]; + FaceGroup faceGroup = faceGroups[meshPartIndex]; bool specifiesUV = false; foreach(OBJFace face, faceGroup) { // Go through all of the OBJ faces and determine the number of different materials necessary (each different material will be a unique mesh). @@ -758,8 +758,8 @@ HFMModel::Pointer OBJSerializer::read(const hifi::ByteArray& data, const hifi::V mesh.parts.clear(); mesh.parts = hfmMeshParts; - for (uint32_t i = 0, meshPartCount = 0; i < unmodifiedMeshPartCount; i++, meshPartCount++) { - FaceGroup faceGroup = faceGroups[meshPartCount]; + for (uint32_t meshPartIndex = 0; meshPartIndex < unmodifiedMeshPartCount; meshPartIndex++) { + FaceGroup faceGroup = faceGroups[meshPartIndex]; // Now that each mesh has been created with its own unique material mappings, fill them with data (vertex data is duplicated, face data is not). foreach(OBJFace face, faceGroup) { diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index b932e4df60..0e5b032b07 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -189,7 +189,7 @@ bool Model::shouldInvalidatePayloadShapeKey(int meshIndex) { const auto& networkMeshes = getNetworkModel()->getMeshes(); // if our index is ever out of range for either meshes or networkMeshes, then skip it, and set our _meshGroupsKnown // to false to rebuild out mesh groups. - if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size() /* || meshIndex >= (int)_meshStates.size()*/) { + if (meshIndex < 0 || meshIndex >= (int)networkMeshes.size() || meshIndex >= (int)hfmModel.meshes.size()) { _needsFixupInScene = true; // trigger remove/add cycle invalidCalculatedMeshBoxes(); // if we have to reload, we need to assume our mesh boxes are all invalid return true; @@ -252,9 +252,6 @@ void Model::updateRenderItems() { } Transform renderTransform = modelTransform; - // if (meshState.clusterMatrices.size() <= 1) { - // renderTransform = modelTransform.worldTransform(shapeState._rootFromJointTransform); - // } data.updateTransform(renderTransform); data.updateTransformAndBound(modelTransform.worldTransform(shapeState._rootFromJointTransform)); @@ -299,12 +296,10 @@ void Model::reset() { } void Model::updateShapeStatesFromRig() { - { // Shapes state: - for (auto& shape : _shapeStates) { - uint32_t jointId = shape._jointIndex; - if (jointId < (uint32_t) _rig.getJointStateCount()) { - shape._rootFromJointTransform = _rig.getJointTransform(jointId); - } + for (auto& shape : _shapeStates) { + uint32_t jointId = shape._jointIndex; + if (jointId < (uint32_t) _rig.getJointStateCount()) { + shape._rootFromJointTransform = _rig.getJointTransform(jointId); } } } diff --git a/libraries/render-utils/src/SoftAttachmentModel.cpp b/libraries/render-utils/src/SoftAttachmentModel.cpp index 1b8d1e7b69..7a58498e50 100644 --- a/libraries/render-utils/src/SoftAttachmentModel.cpp +++ b/libraries/render-utils/src/SoftAttachmentModel.cpp @@ -61,8 +61,7 @@ void SoftAttachmentModel::updateClusterMatrices() { Transform clusterTransform; Transform::mult(clusterTransform, jointTransform, cbmov.inverseBindTransform); state.clusterDualQuaternions[clusterIndex] = Model::TransformDualQuaternion(clusterTransform); - } - else { + } else { auto jointMatrix = rig->getJointTransform(cbmov.jointIndex); glm_mat4u_mul(jointMatrix, cbmov.inverseBindMatrix, state.clusterMatrices[clusterIndex]); } diff --git a/tests-manual/fbx/CMakeLists.txt b/tests-manual/fbx/CMakeLists.txt deleted file mode 100644 index 7221f081fe..0000000000 --- a/tests-manual/fbx/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -set(TARGET_NAME fbx-test) -# This is not a testcase -- just set it up as a regular hifi project -setup_hifi_project(Quick Gui) -setup_memory_debugger() -set_target_properties(${TARGET_NAME} PROPERTIES FOLDER "Tests/manual-tests/") - -file(GLOB_RECURSE GLB_TEST_FILES "c:/Users/bdavi/git/glTF-Sample-Models/2.0/*.glb") -list(JOIN GLB_TEST_FILES "|" GLB_TEST_FILES) -target_compile_definitions(${TARGET_NAME} PRIVATE -DGLB_TEST_FILES="${GLB_TEST_FILES}") -link_hifi_libraries(shared graphics networking image gpu hfm fbx) -package_libraries_for_deployment() diff --git a/tests-manual/fbx/src/main.cpp b/tests-manual/fbx/src/main.cpp deleted file mode 100644 index 66c3a4f30e..0000000000 --- a/tests-manual/fbx/src/main.cpp +++ /dev/null @@ -1,77 +0,0 @@ -// -// Created by Bradley Austin Davis on 2018/01/11 -// Copyright 2014 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -// Currently only used by testing code -inline std::list splitString(const std::string& source, const char delimiter = ' ') { - std::list result; - size_t start = 0, next; - - while (std::string::npos != (next = source.find(delimiter, start))) { - std::string sub = source.substr(start, next - start); - if (!sub.empty()) { - result.push_back(sub); - } - start = next + 1; - } - if (source.size() > start) { - result.push_back(source.substr(start)); - } - return result; -} - -std::list getGlbTestFiles() { - return splitString(GLB_TEST_FILES, '|'); -} - -QtMessageHandler originalHandler; - -void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) { -#if defined(Q_OS_WIN) - OutputDebugStringA(message.toStdString().c_str()); - OutputDebugStringA("\n"); -#endif - originalHandler(type, context, message); -} - -QByteArray readFileBytes(const std::string& filename) { - QFile file(filename.c_str()); - file.open(QFile::ReadOnly); - QByteArray result = file.readAll(); - file.close(); - return result; -} - -void processFile(const std::string& filename) { - qDebug() << filename.c_str(); - GLTFSerializer().read(readFileBytes(filename), {}, QUrl::fromLocalFile(filename.c_str())); -} - -int main(int argc, char** argv) { - QCoreApplication app{ argc, argv }; - originalHandler = qInstallMessageHandler(messageHandler); - - DependencyManager::set(false); - - //processFile("c:/Users/bdavi/git/glTF-Sample-Models/2.0/Box/glTF-Binary/Box.glb"); - - for (const auto& testFile : getGlbTestFiles()) { - processFile(testFile); - } -} From 9ebe7067c5053bd12832484222b01fcd01ea75f9 Mon Sep 17 00:00:00 2001 From: milad Date: Wed, 13 Nov 2019 13:08:34 -0800 Subject: [PATCH 202/547] fixed the ordering of selects --- screenshare/package.json | 2 +- screenshare/src/app.js | 247 --------------- .../src/{index.html => screenshareApp.html} | 14 +- screenshare/src/screenshareApp.js | 297 ++++++++++++++++++ .../{main.js => screenshareMainProcess.js} | 12 +- 5 files changed, 321 insertions(+), 251 deletions(-) delete mode 100644 screenshare/src/app.js rename screenshare/src/{index.html => screenshareApp.html} (87%) create mode 100644 screenshare/src/screenshareApp.js rename screenshare/src/{main.js => screenshareMainProcess.js} (84%) diff --git a/screenshare/package.json b/screenshare/package.json index 8418f8cec6..372679082f 100644 --- a/screenshare/package.json +++ b/screenshare/package.json @@ -2,7 +2,7 @@ "name": "highfidelity_screenshare", "version": "1.0.0", "description": "High Fidelity Screenshare", - "main": "src/main.js", + "main": "src/screenshareMainProcess.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "packager": "node packager.js" diff --git a/screenshare/src/app.js b/screenshare/src/app.js deleted file mode 100644 index a79e89bbbb..0000000000 --- a/screenshare/src/app.js +++ /dev/null @@ -1,247 +0,0 @@ -// Helpers - function handleError(error) { - if (error) { - console.error(error); - } - } - -/* SOURCE EXAMPLE - [23584:1028/110448.237:INFO:CONSOLE(67)] "{ - "id": "screen:0:0", - "name": "Screen 1", - "thumbnail": {}, - "display_id": "2528732444", - "appIcon": null - }" -*/ - -const imageWidth = 265; -const imageHeight = 165; - -var images = 10; -var testImage = "resources/test.jpg"; -function MakeSource(name, thumbnail, id, newWidth, newHeight){ - this.name = name; - this.thumbnail = thumbnail; - this.id = id; - this.width = newWidth; - this.height = newHeight; -} - -let testSources = []; - -for (let index = 0; index < images; index++) { - let test = new MakeSource("REALLY LONG LONG title" + index, testImage, index, imageWidth, imageHeight); - testSources.push(test); -} - -const electron = require('electron'); - -let currentScreensharePickID = ""; -function screensharePicked(id){ - currentScreensharePickID = id; - document.getElementById("share_pick").innerHTML = ""; - addSource(sourceMap[id], "share_pick"); - togglePage(); -} - - - -function screenConfirmed(isConfirmed){ - if (isConfirmed === true){ - onAccessApproved(currentScreensharePickID); - } - togglePage(); -} - - -let currentPage = "mainPage"; -function togglePage(){ - if (currentPage === "mainPage") { - currentPage = "confirmationPage"; - document.getElementById("select_screen").style.display = "none"; - document.getElementById("subtitle").innerHTML = "Confirm that you'd like to share this content."; - document.getElementById("confirmation_screen").style.display = "block"; - } else { - currentPage = "mainPage"; - document.getElementById("select_screen").style.display = "block"; - document.getElementById("subtitle").innerHTML = "Please select the content you'd like to share."; - document.getElementById("confirmation_screen").style.display = "none"; - } -} - -// UI - function addSource(source, type) { - let sourceBody = document.createElement('div') - let thumbnail = source.thumbnail.toDataURL(); - sourceBody.classList.add("box") - if (type === "share_pick") { - sourceBody.style.marginLeft = "0px"; - } - - let image = ""; - if (source.appIcon) { - image = ``; - } - sourceBody.innerHTML = ` -
- ${image} - ${source.name} -
-
- -
- ` - if (type === "selects") { - document.getElementById("selects").appendChild(sourceBody); - } else { - document.getElementById("share_pick").appendChild(sourceBody); - document.getElementById("content_name").innerHTML = source.name; - } - } - - - let sourceMap = {}; - function showSources() { - document.getElementById("selects").innerHTML=""; - electron.desktopCapturer.getSources({ - types:['window', 'screen'], - thumbnailSize: { - width: imageWidth, - height: imageHeight - }, - fetchWindowIcons: true - }, (error, sources) => { - if (error) { - console.log("Error getting sources", error); - } - - // MN TODO: - // Add all sources to array, sort array by type, then call `addSource()` - // for all of those sources. - - for (let source of sources) { - sourceMap[source.id] = source; - addSource(source, "selects"); - } - }); - } - - - let localStream; - function stopSharing(){ - desktopSharing = false; - - if (localStream) { - localStream.getTracks()[0].stop(); - localStream = null; - } - - document.getElementById('screenshare').style.display = "none"; - stopTokBoxPublisher(); - } - - function gotStream(stream) { - localStream = stream; - startTokboxPublisher(localStream); - - stream.onended = () => { - if (desktopSharing) { - toggle(); - } - }; - } - - - function onAccessApproved(desktop_id) { - if (!desktop_id) { - console.log('Desktop Capture access rejected.'); - return; - } - showSources(); - document.getElementById('screenshare').style.visibility = "block"; - desktopSharing = true; - navigator.webkitGetUserMedia({ - audio: false, - video: { - mandatory: { - chromeMediaSource: 'desktop', - chromeMediaSourceId: desktop_id, - minWidth: 1280, - maxWidth: 1280, - minHeight: 720, - maxHeight: 720 - } - } - }, gotStream, handleError); - } - -// Tokbox - - function initializeTokboxSession() { - session = OT.initSession(projectAPIKey, sessionID); - session.on('sessionDisconnected', (event) => { - console.log('You were disconnected from the session.', event.reason); - }); - - // Connect to the session - session.connect(token, (error) => { - if (error) { - handleError(error); - } - }); - } - - - var publisher; - function startTokboxPublisher(stream){ - publisher = document.createElement("div"); - var publisherOptions = { - videoSource: stream.getVideoTracks()[0], - audioSource: null, - insertMode: 'append', - width: 1280, - height: 720 - }; - - publisher = OT.initPublisher(publisher, publisherOptions, function(error){ - if (error) { - console.log("ERROR: " + error); - } else { - session.publish(publisher, function(error) { - if (error) { - console.log("ERROR FROM Session.publish: " + error); - return; - } - console.log("MADE IT TO PUBLISH") - }) - } - }); - } - - - function stopTokBoxPublisher(){ - publisher.destroy(); - } - - -// main TODO: - const ipcRenderer = electron.ipcRenderer; - let projectAPIKey; - let sessionID; - let token; - let session; - - ipcRenderer.on('connectionInfo', function(event, message){ - const connectionInfo = JSON.parse(message); - projectAPIKey = connectionInfo.projectAPIKey; - sessionID = connectionInfo.sessionID; - token = connectionInfo.token; - - initializeTokboxSession(); - }) - - - document.addEventListener("DOMContentLoaded", () => { - showSources(); - }) diff --git a/screenshare/src/index.html b/screenshare/src/screenshareApp.html similarity index 87% rename from screenshare/src/index.html rename to screenshare/src/screenshareApp.html index 5d3441ea76..ed722f7fde 100644 --- a/screenshare/src/index.html +++ b/screenshare/src/screenshareApp.html @@ -1,3 +1,15 @@ + + @@ -49,7 +61,7 @@ - + diff --git a/screenshare/src/screenshareApp.js b/screenshare/src/screenshareApp.js new file mode 100644 index 0000000000..db38054e1b --- /dev/null +++ b/screenshare/src/screenshareApp.js @@ -0,0 +1,297 @@ +// +// screenshareApp.js +// +// Created by Milad Nazeri, Rebecca Stankus, and Zach Fox 2019/11/13 +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html + +// Helpers +function handleError(error) { + if (error) { + console.error(error); + } +} + + +// When an application is picked, make sure we clear out the previous pick, toggle the page, +// and add the correct source +let currentScreensharePickID = ""; +function screensharePicked(id){ + currentScreensharePickID = id; + document.getElementById("share_pick").innerHTML = ""; + togglePage(); + addSource(sourceMap[id], "share_pick"); +} + + +// Once we have confirmed that we want to share, prepare the tokbox publishing initiating +// and toggle back to the selects page +function screenConfirmed(isConfirmed){ + document.getElementById("selects").innerHTML=""; + if (isConfirmed === true){ + onAccessApproved(currentScreensharePickID); + } + togglePage(); +} + + +// Hide/show the select page or the confirmation page +let currentPage = "mainPage"; +function togglePage(){ + if (currentPage === "mainPage") { + currentPage = "confirmationPage"; + document.getElementById("select_screen").style.display = "none"; + document.getElementById("subtitle").innerHTML = "Confirm that you'd like to share this content."; + document.getElementById("confirmation_screen").style.display = "block"; + } else { + showSources(); + currentPage = "mainPage"; + document.getElementById("select_screen").style.display = "block"; + document.getElementById("subtitle").innerHTML = "Please select the content you'd like to share."; + document.getElementById("confirmation_screen").style.display = "none"; + } +} + + +// UI + +// Render the html properly and append that to the correct parent +function addSource(source, type) { + let renderedHTML = renderSourceHTML(source); + if (type === "selects") { + document.getElementById("selects").appendChild(renderedHTML); + } else { + document.getElementById("share_pick").appendChild(renderedHTML); + document.getElementById("content_name").innerHTML = source.name; + } +} + + +// Get the html created from the source. Alter slightly depending on whether this source +// is on the selects screen, or the confirmation screen. Mainly removing highlighting. +// If there is an app Icon, then add it. +function renderSourceHTML(source){ + let type = currentPage === "confirmationPage" ? "share_pick" : "selects"; + let sourceBody = document.createElement('div') + let thumbnail = source.thumbnail.toDataURL(); + sourceBody.classList.add("box") + if (type === "share_pick") { + sourceBody.style.marginLeft = "0px"; + } + + let image = ""; + if (source.appIcon) { + image = ``; + } + sourceBody.innerHTML = ` +
+ ${image} + ${source.name} +
+
+ +
+ ` + return sourceBody; +} + + +// Separate out the screenshares and applications +// Make sure the screens are labeled in order +// Concact the two arrays back together and return +function sortSources(){ + let screenSources = []; + let applicationSources = []; + // Difference with Mac selects: + // 1 screen = "Enitre Screen", more than one like PC "Screen 1, Screen 2..." + screenshareSourceArray.forEach((source) => { + if (source.name.match(/(entire )?screen( )?([0-9]?)/i)) { + screenSources.push(source); + } else { + applicationSources.push(source) + } + }) + screenSources.sort( (a, b) => { + let aNumber = a.name.replace(/[^\d]/, ""); + let bNumber = b.name.replace(/[^\d]/, ""); + return aNumber - bNumber; + }) + let finalSources = [...screenSources, ...applicationSources]; + return finalSources; +} + + +// Setup sorting the selection array, add individual sources, and update the sourceMap +function addSources(){ + screenshareSourceArray = sortSources(); + for (let i = 0; i < screenshareSourceArray.length; i++) { + addSource(screenshareSourceArray[i], "selects"); + sourceMap[screenshareSourceArray[i].id] = screenshareSourceArray[i]; + } +} + + +// 1. Get the screens and window that are available from electron +// 2. Remove the screenshare app itself +// 3. Create a source map to help grab the correct source when picked +// 4. push all the sources for sorting to the source array +// 5. Add thse sources +const electron = require('electron'); +const SCREENSHARE_TITLE = "Screen share"; +const IMAGE_WIDTH = 265; +const IMAGE_HEIGHT = 165; +let screenshareSourceArray = []; +let sourceMap = {}; +function showSources() { + screenshareSourceArray = []; + electron.desktopCapturer.getSources({ + types:['window', 'screen'], + thumbnailSize: { + width: IMAGE_WIDTH, + height: IMAGE_HEIGHT + }, + fetchWindowIcons: true + }, (error, sources) => { + if (error) { + console.log("Error getting sources", error); + } + for (let source of sources) { + if (source.name.indexOf(SCREENSHARE_TITLE) > -1){ + continue; + } + sourceMap[source.id] = source; + screenshareSourceArray.push(source); + } + addSources(); + }); +} + + +// Stop the localstream and end the tokrok publishing +let localStream; +function stopSharing(){ + desktopSharing = false; + + if (localStream) { + localStream.getTracks()[0].stop(); + localStream = null; + } + + document.getElementById('screenshare').style.display = "none"; + stopTokBoxPublisher(); +} + + +// Callback to start publishing after we have setup the chromium stream +function gotStream(stream) { + localStream = stream; + startTokboxPublisher(localStream); + + stream.onended = () => { + if (desktopSharing) { + toggle(); + } + }; +} + + +// After we grant access to electron, create a stream and using the callback +// start the tokbox publisher +function onAccessApproved(desktop_id) { + if (!desktop_id) { + console.log('Desktop Capture access rejected.'); + return; + } + document.getElementById('screenshare').style.visibility = "block"; + desktopSharing = true; + navigator.webkitGetUserMedia({ + audio: false, + video: { + mandatory: { + chromeMediaSource: 'desktop', + chromeMediaSourceId: desktop_id, + minWidth: 1280, + maxWidth: 1280, + minHeight: 720, + maxHeight: 720 + } + } + }, gotStream, handleError); +} + + +// Tokbox + +// Once we have the connection info, this will create the session which will allow +// us to publish a stream when we are ready +function initializeTokboxSession() { + session = OT.initSession(projectAPIKey, sessionID); + session.on('sessionDisconnected', (event) => { + console.log('You were disconnected from the session.', event.reason); + }); + + // Connect to the session + session.connect(token, (error) => { + if (error) { + handleError(error); + } + }); +} + + +// Init the tokbox publisher with our newly created stream +var publisher; +function startTokboxPublisher(stream){ + publisher = document.createElement("div"); + var publisherOptions = { + videoSource: stream.getVideoTracks()[0], + audioSource: null, + insertMode: 'append', + width: 1280, + height: 720 + }; + + publisher = OT.initPublisher(publisher, publisherOptions, function(error){ + if (error) { + console.log("ERROR: " + error); + } else { + session.publish(publisher, function(error) { + if (error) { + console.log("ERROR FROM Session.publish: " + error); + return; + } + }) + } + }); +} + + +// Kills the streaming being sent to tokbox +function stopTokBoxPublisher(){ + publisher.destroy(); +} + + +// When the app is ready, we get this info from the command line arguments. +const ipcRenderer = electron.ipcRenderer; +let projectAPIKey; +let sessionID; +let token; +let session; +ipcRenderer.on('connectionInfo', function(event, message){ + const connectionInfo = JSON.parse(message); + projectAPIKey = connectionInfo.projectAPIKey; + sessionID = connectionInfo.sessionID; + token = connectionInfo.token; + + initializeTokboxSession(); +}) + + +// Show the initial sources after the dom has loaded +// Sources come from electron.desktopCapturer +document.addEventListener("DOMContentLoaded", () => { + showSources(); +}) diff --git a/screenshare/src/main.js b/screenshare/src/screenshareMainProcess.js similarity index 84% rename from screenshare/src/main.js rename to screenshare/src/screenshareMainProcess.js index a9c52ad8e8..989b0d79ef 100644 --- a/screenshare/src/main.js +++ b/screenshare/src/screenshareMainProcess.js @@ -1,4 +1,12 @@ 'use strict'; +// +// screenshareMainProcess.js +// +// Created by Milad Nazeri, and Zach Fox 2019/11/13 +// Copyright 2019 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html const {app, BrowserWindow, ipcMain} = require('electron'); const gotTheLock = app.requestSingleInstanceLock() @@ -53,15 +61,15 @@ function createWindow(){ // as the screenshare executable during a post-build step //icon: "hifi-screenshare-icon.png" }); - window.loadURL('file://' + __dirname + '/index.html'); + window.loadURL('file://' + __dirname + '/screenshareApp.html'); window.setMenu(null); window.webContents.on("did-finish-load", () => { window.webContents.send('connectionInfo', JSON.stringify(connectionInfo)); }); - } + // This method will be called when Electron has finished // initialization and is ready to create browser windows. app.on('ready', function() { From 50a1ebaa4d26c71890415cf4361a01ef9236eb0c Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 14:24:01 -0800 Subject: [PATCH 203/547] Call stopScreenshare when screenshare app closed --- interface/src/scripting/ScreenshareScriptingInterface.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 3e52d375eb..aa4bd07241 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -165,6 +165,7 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR [=](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; emit screenshareStopped(); + stopScreenshare(); }); _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); From ed9db81bede345c9a32a33b959cbddafe6e992e0 Mon Sep 17 00:00:00 2001 From: ingerjm0 Date: Wed, 13 Nov 2019 14:58:32 -0800 Subject: [PATCH 204/547] Fix for displaying moved properties' documentation in docs --- assignment-client/src/avatars/ScriptableAvatar.h | 16 ++++++++++++++++ interface/src/avatar/MyAvatar.h | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/assignment-client/src/avatars/ScriptableAvatar.h b/assignment-client/src/avatars/ScriptableAvatar.h index f2f5a1e6f4..d9c7395741 100644 --- a/assignment-client/src/avatars/ScriptableAvatar.h +++ b/assignment-client/src/avatars/ScriptableAvatar.h @@ -76,6 +76,22 @@ * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. + * @property {boolean} hasScriptedBlendshapes=false - true if blendshapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, and set back + * to false after you no longer want scripted control over the blendshapes. + *

NOTE: This property will automatically be set to true if the Controller system has valid facial blendshape + * actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blendshapes, false if automatic blinking is disabled. Set this property to false if you wish to + * fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blendshapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to false + * if you wish to fully control the eye blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blendshapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blendshapes via the + * {@link MyAvatar.setBlendshape} method. * * @example Create a scriptable avatar. * (function () { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 274c45dc5e..66f9582738 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -148,6 +148,22 @@ class MyAvatar : public Avatar { * size in the virtual world. Read-only. * @property {boolean} hasPriority - true if the avatar is in a "hero" zone, false if it isn't. * Read-only. + * @property {boolean} hasScriptedBlendshapes=false - true if blendshapes are controlled by scripted actions, + * otherwise false. Set this to true before using the {@link MyAvatar.setBlendshape} method, and set back + * to false after you no longer want scripted control over the blendshapes. + *

NOTE: This property will automatically be set to true if the Controller system has valid facial blendshape + * actions.

+ * @property {boolean} hasProceduralBlinkFaceMovement=true - true if avatars blink automatically by animating + * facial blendshapes, false if automatic blinking is disabled. Set this property to false if you wish to + * fully control the blink facial blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasProceduralEyeFaceMovement=true - true if the facial blendshapes for an avatar's eyes + * adjust automatically as the eyes move, false if this automatic movement is disabled. Set this property + * to true to prevent the iris from being obscured by the upper or lower lids. Set this property to false + * if you wish to fully control the eye blendshapes via the {@link MyAvatar.setBlendshape} method. + * @property {boolean} hasAudioEnabledFaceMovement=true - true if the avatar's mouth blendshapes animate + * automatically based on detected microphone input, false if this automatic movement is disabled. Set + * this property to false if you wish to fully control the mouth facial blendshapes via the + * {@link MyAvatar.setBlendshape} method. * * @comment IMPORTANT: This group of properties is copied from Avatar.h; they should NOT be edited here. * @property {Vec3} skeletonOffset - Can be used to apply a translation offset between the avatar's position and the From 8255210c6ad4acec82b364cf4aa0c43c12164f9b Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 15:43:41 -0800 Subject: [PATCH 205/547] Add new screenshare error signals --- .../ScreenshareScriptingInterface.cpp | 21 +++++++++++++++++-- .../scripting/ScreenshareScriptingInterface.h | 3 ++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index aa4bd07241..5bd62383df 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -79,6 +79,8 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; + stopScreenshare(); + emit screenshareError(); return; } } @@ -115,6 +117,7 @@ void ScreenshareScriptingInterface::stopScreenshare() { if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { _screenshareProcess->terminate(); + emit screenshareProcessTerminated(); } if (!_screenshareViewerLocalWebEntityUUID.isNull()) { @@ -138,8 +141,10 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); QString status = answerJSONObject["status"].toString(); - if (status == "fail") { + if (status != "success") { qDebug() << "\n\n MN HERE: SCREENSHARE REPLY FAIL"; + stopScreenshare(); + emit screenshareError(); return; } @@ -148,6 +153,13 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR _sessionID = answerJSONObject["sessionID"].toString(); qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; + if (_token.isEmpty() || _projectAPIKey.isEmpty() || _sessionID.isEmpty()) { + qDebug() << "Not all Screen Share information was retrieved from the backend. Stopping..."; + stopScreenshare(); + emit screenshareError(); + return; + } + if (_isPresenter) { QStringList arguments; arguments << " "; @@ -164,7 +176,6 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); stopScreenshare(); }); @@ -172,11 +183,15 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR } if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + stopScreenshare(); + emit screenshareError(); return; } auto esi = DependencyManager::get(); if (!esi) { + stopScreenshare(); + emit screenshareError(); return; } @@ -200,6 +215,8 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->readAll(); + stopScreenshare(); + emit screenshareError(); } void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index b0b5ba31b1..b3d39f8f25 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -31,7 +31,8 @@ public: Q_INVOKABLE void stopScreenshare(); signals: - void screenshareStopped(); + void screenshareError(); + void screenshareProcessTerminated(); void startScreenshareViewer(); private slots: From 487515d956274b90b171517e7f99f1da81df317c Mon Sep 17 00:00:00 2001 From: Anthony Thibault Date: Wed, 13 Nov 2019 17:17:17 -0800 Subject: [PATCH 206/547] Revert "bug fix from code review comment" This reverts commit e81b21ac592f8818e0627e655b4f477ccfb19550. --- interface/src/octree/SafeLanding.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index ab002e4868..bcf345bae8 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -151,7 +151,7 @@ void SafeLanding::updateTracking() { shouldStop = (sequenceSize == 0 || (startIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end() && - tooManySequenceNumbers && + !tooManySequenceNumbers && ((distance(startIter, endIter) == sequenceSize - 1) || !missingSequenceNumbers))); if (shouldStop) { From 929e829801c4e644af2114867f82496aa6b4a9d4 Mon Sep 17 00:00:00 2001 From: Anthony Thibault Date: Wed, 13 Nov 2019 17:17:37 -0800 Subject: [PATCH 207/547] Revert "Speculative fix for infinite loop in SafeLanding" This reverts commit 52acfc9333cb527dc97d940d65da976d1af1ab76. --- interface/src/octree/SafeLanding.cpp | 75 ++++++++++++---------------- interface/src/octree/SafeLanding.h | 4 +- 2 files changed, 34 insertions(+), 45 deletions(-) diff --git a/interface/src/octree/SafeLanding.cpp b/interface/src/octree/SafeLanding.cpp index bcf345bae8..fbc35f2732 100644 --- a/interface/src/octree/SafeLanding.cpp +++ b/interface/src/octree/SafeLanding.cpp @@ -39,7 +39,6 @@ bool SafeLanding::SequenceLessThan::operator()(const OCTREE_PACKET_SEQUENCE& a, void SafeLanding::startTracking(QSharedPointer entityTreeRenderer) { if (!entityTreeRenderer.isNull()) { - qCDebug(interfaceapp) << "SafeLanding has started tracking"; auto entityTree = entityTreeRenderer->getTree(); if (entityTree && !_trackingEntities) { Locker lock(_lock); @@ -105,55 +104,47 @@ void SafeLanding::updateTracking() { return; } - Locker lock(_lock); - - bool enableInterstitial = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); - auto entityMapIter = _trackedEntities.begin(); - while (entityMapIter != _trackedEntities.end()) { - auto entity = entityMapIter->second; - bool isVisuallyReady = true; - if (enableInterstitial) { - auto entityRenderable = _entityTreeRenderer->renderableForEntityId(entityMapIter->first); - if (!entityRenderable) { - _entityTreeRenderer->addingEntity(entityMapIter->first); + { + Locker lock(_lock); + bool enableInterstitial = DependencyManager::get()->getDomainHandler().getInterstitialModeEnabled(); + auto entityMapIter = _trackedEntities.begin(); + while (entityMapIter != _trackedEntities.end()) { + auto entity = entityMapIter->second; + bool isVisuallyReady = true; + if (enableInterstitial) { + auto entityRenderable = _entityTreeRenderer->renderableForEntityId(entityMapIter->first); + if (!entityRenderable) { + _entityTreeRenderer->addingEntity(entityMapIter->first); + } + isVisuallyReady = entity->isVisuallyReady() || (!entityRenderable && !entity->isParentPathComplete()); + } + if (isEntityPhysicsReady(entity) && isVisuallyReady) { + entityMapIter = _trackedEntities.erase(entityMapIter); + } else { + entityMapIter++; } - isVisuallyReady = entity->isVisuallyReady() || (!entityRenderable && !entity->isParentPathComplete()); } - if (isEntityPhysicsReady(entity) && isVisuallyReady) { - entityMapIter = _trackedEntities.erase(entityMapIter); - } else { - entityMapIter++; + if (enableInterstitial) { + _trackedEntityStabilityCount++; } } - if (enableInterstitial) { - _trackedEntityStabilityCount++; - } if (_trackedEntities.empty()) { // no more tracked entities --> check sequenceNumbers if (_sequenceStart != SafeLanding::INVALID_SEQUENCE) { bool shouldStop = false; - auto sequenceSize = _sequenceEnd - _sequenceStart; // this works even in rollover case - auto startIter = _sequenceNumbers.find(_sequenceStart); - auto endIter = _sequenceNumbers.find(_sequenceEnd - 1); + { + Locker lock(_lock); + auto sequenceSize = _sequenceEnd - _sequenceStart; // this works even in rollover case + auto startIter = _sequenceNumbers.find(_sequenceStart); + auto endIter = _sequenceNumbers.find(_sequenceEnd - 1); - bool missingSequenceNumbers = qApp->isMissingSequenceNumbers(); - - // If the EntityQueryInitialResultsComplete packet is really late due to packet loss, the - // _sequenceNumbers map will be filled with unnecessary sequence numbers. This can cause - // the main thread to enter an infinite loop in the std::distance() calculation. - // Try to guard against this. This might cause physics to be enabled too soon, but - // that is preferable to locking up. - bool tooManySequenceNumbers = _sequenceNumbers.size() >= (std::numeric_limits::max() / 2); - - qCDebug(interfaceapp) << "SafeLanding has no more tracked entities and" << _sequenceNumbers.size() << "sequence numbers"; - - shouldStop = (sequenceSize == 0 || + bool missingSequenceNumbers = qApp->isMissingSequenceNumbers(); + shouldStop = (sequenceSize == 0 || (startIter != _sequenceNumbers.end() && endIter != _sequenceNumbers.end() && - !tooManySequenceNumbers && ((distance(startIter, endIter) == sequenceSize - 1) || !missingSequenceNumbers))); - + } if (shouldStop) { stopTracking(); } @@ -162,8 +153,6 @@ void SafeLanding::updateTracking() { } void SafeLanding::stopTracking() { - qCDebug(interfaceapp) << "SafeLanding has stopped tracking"; - Locker lock(_lock); if (_trackingEntities) { _trackingEntities = false; @@ -180,7 +169,6 @@ void SafeLanding::stopTracking() { } void SafeLanding::reset() { - Locker lock(_lock); _trackingEntities = false; _trackedEntities.clear(); _maxTrackedEntityCount = 0; @@ -189,7 +177,6 @@ void SafeLanding::reset() { } bool SafeLanding::trackingIsComplete() const { - Locker lock(_lock); return !_trackingEntities && (_sequenceStart != SafeLanding::INVALID_SEQUENCE); } @@ -254,8 +241,10 @@ void SafeLanding::debugDumpSequenceIDs() const { ++itr; while (itr != _sequenceNumbers.end()) { OCTREE_PACKET_SEQUENCE s = *itr; - qCDebug(interfaceapp) << " " << (int32_t)s; - p = s; + if (s != p + 1) { + qCDebug(interfaceapp) << "Gap from" << (int32_t)p << "to" << (int32_t)s << "(exclusive)"; + p = s; + } ++itr; } if (p != SafeLanding::INVALID_SEQUENCE) { diff --git a/interface/src/octree/SafeLanding.h b/interface/src/octree/SafeLanding.h index d3131752bf..00473f6fc8 100644 --- a/interface/src/octree/SafeLanding.h +++ b/interface/src/octree/SafeLanding.h @@ -51,8 +51,8 @@ private: bool isEntityPhysicsReady(const EntityItemPointer& entity); void debugDumpSequenceIDs() const; - mutable std::recursive_mutex _lock; - using Locker = std::lock_guard; + std::mutex _lock; + using Locker = std::lock_guard; bool _trackingEntities { false }; QSharedPointer _entityTreeRenderer; using EntityMap = std::map; From b4135e2655855e020c1f108d63176663ed11158a Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 17:35:57 -0800 Subject: [PATCH 208/547] We are so close... --- interface/src/Application.cpp | 2 +- .../scripting/ScreenshareScriptingInterface.cpp | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f7ba8beb26..f62196323d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -893,7 +893,6 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { #ifdef HAVE_DDE DependencyManager::set(); #endif - DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); @@ -973,6 +972,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); + DependencyManager::set(); PlatformHelper::setup(); QObject::connect(PlatformHelper::instance(), &PlatformHelper::systemWillWake, [] { diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 5bd62383df..8348e96f10 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -135,23 +135,21 @@ void ScreenshareScriptingInterface::stopScreenshare() { void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkReply* reply) { QString answer = reply->readAll(); - qDebug() << "\n\n MN HERE: REPLY" << answer; QByteArray answerByteArray = answer.toUtf8(); QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); QString status = answerJSONObject["status"].toString(); if (status != "success") { - qDebug() << "\n\n MN HERE: SCREENSHARE REPLY FAIL"; + qDebug() << "Error when retrieving screenshare info via HTTP. Error:" << reply->errorString(); stopScreenshare(); emit screenshareError(); return; } _token = answerJSONObject["token"].toString(); - _projectAPIKey = answerJSONObject["projectAPIKey"].toString(); + _projectAPIKey = answerJSONObject["projectApiKey"].toString(); _sessionID = answerJSONObject["sessionID"].toString(); - qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; if (_token.isEmpty() || _projectAPIKey.isEmpty() || _sessionID.isEmpty()) { qDebug() << "Not all Screen Share information was retrieved from the backend. Stopping..."; @@ -167,16 +165,10 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR arguments << "--projectAPIKey=" + _projectAPIKey << " "; arguments << "--sessionID=" + _sessionID << " "; - connect(_screenshareProcess.get(), &QProcess::errorOccurred, - [=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; }); - connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; }); - connect(_screenshareProcess.get(), &QProcess::stateChanged, [=](QProcess::ProcessState newState) { - qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; - }); connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { - qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; stopScreenshare(); + emit screenshareProcessTerminated(); }); _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); @@ -214,7 +206,7 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR } void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { - qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->readAll(); + qDebug() << "Failed to get screenshare info via HTTP. Error:" << reply->errorString(); stopScreenshare(); emit screenshareError(); } From c44c7dd85e9f689906dbe7275becce5b23f0cc55 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 14 Nov 2019 15:57:51 +1300 Subject: [PATCH 209/547] AudioStats JSDoc --- libraries/audio-client/src/AudioIOStats.h | 176 +++++++++++++++------- 1 file changed, 125 insertions(+), 51 deletions(-) diff --git a/libraries/audio-client/src/AudioIOStats.h b/libraries/audio-client/src/AudioIOStats.h index ffd7163586..d5a8cca27d 100644 --- a/libraries/audio-client/src/AudioIOStats.h +++ b/libraries/audio-client/src/AudioIOStats.h @@ -40,138 +40,181 @@ class AudioStreamStatsInterface : public QObject { Q_OBJECT /**jsdoc + * Statistics for an audio stream. + * + *

Provided in the {@link AudioStats} API.

+ * * @class AudioStats.AudioStreamStats * * @hifi-interface * @hifi-client-entity * @hifi-avatar * - * @property {number} lossRate Read-only. - * @property {number} lossCount Read-only. - * @property {number} lossRateWindow Read-only. - * @property {number} lossCountWindow Read-only. - * @property {number} framesDesired Read-only. - * @property {number} framesAvailable Read-only. - * @property {number} framesAvailableAvg Read-only. - * @property {number} unplayedMsMax Read-only. - * @property {number} starveCount Read-only. - * @property {number} lastStarveDurationCount Read-only. - * @property {number} dropCount Read-only. - * @property {number} overflowCount Read-only. - * @property {number} timegapMsMax Read-only. - * @property {number} timegapMsAvg Read-only. - * @property {number} timegapMsMaxWindow Read-only. - * @property {number} timegapMsAvgWindow Read-only. + * @property {number} dropCount - The number of silent or old audio frames dropped. + * Read-only. + * @property {number} framesAvailable - The number of audio frames containing data available. + * Read-only. + * @property {number} framesAvailableAvg - The time-weighted average of audio frames containing data available. + * Read-only. + * @property {number} framesDesired - The desired number of audio frames for the jitter buffer. + * Read-only. + * @property {number} lastStarveDurationCount - The most recent number of consecutive times that audio frames have not been + * available for processing. + * Read-only. + * @property {number} lossCount - The total number of audio packets lost. + * Read-only. + * @property {number} lossCountWindow - The number of audio packets lost since the previous statistic. + * Read-only. + * @property {number} lossRate - The total number of audio packets lost divided by the total number of audio packets + * expected. + * Read-only. + * @property {number} lossRateWindow - The number of audio packets lost divided by the total number of audio packets + * expected since the previous statistic. + * Read-only. + * @property {number} overflowCount - The number of times that the audio ring buffer has overflowed. + * Read-only. + * @property {number} starveCount - The total number of times that audio frames have not been available for processing. + * Read-only. + * @property {number} timegapMsAvg - The overall average time between data packets, in ms. + * Read-only. + * @property {number} timegapMsAvgWindow - The recent average time between data packets, in ms. + * Read-only. + * @property {number} timegapMsMax - The overall maximum time between data packets, in ms. + * Read-only. + * @property {number} timegapMsMaxWindow - The recent maximum time between data packets, in ms. + * Read-only. + * @property {number} unplayedMsMax - The duration of audio waiting to be played, in ms. + * Read-only. */ /**jsdoc + * Triggered when the total number of audio packets lost divided by the total number of audio packets expected changes. * @function AudioStats.AudioStreamStats.lossRateChanged - * @param {number} lossRate + * @param {number} lossRate - The total number of audio packets lost divided by the total number of audio packets expected. * @returns {Signal} */ AUDIO_PROPERTY(float, lossRate) /**jsdoc + * Triggered when the total number of audio packets lost changes. * @function AudioStats.AudioStreamStats.lossCountChanged - * @param {number} lossCount + * @param {number} lossCount - The total number of audio packets lost. * @returns {Signal} */ AUDIO_PROPERTY(float, lossCount) /**jsdoc + * Triggered when the number of audio packets lost divided by the total number of audio packets expected since the previous + * statistic changes. * @function AudioStats.AudioStreamStats.lossRateWindowChanged - * @param {number} lossRateWindow + * @param {number} lossRateWindow - The number of audio packets lost divided by the total number of audio packets expected + * since the previous statistic. * @returns {Signal} */ AUDIO_PROPERTY(float, lossRateWindow) /**jsdoc + * Triggered when the number of audio packets lost since the previous statistic changes. * @function AudioStats.AudioStreamStats.lossCountWindowChanged - * @param {number} lossCountWindow + * @param {number} lossCountWindow - The number of audio packets lost since the previous statistic. * @returns {Signal} */ AUDIO_PROPERTY(float, lossCountWindow) /**jsdoc + * Triggered when the desired number of audio frames for the jitter buffer changes. * @function AudioStats.AudioStreamStats.framesDesiredChanged - * @param {number} framesDesired + * @param {number} framesDesired - The desired number of audio frames for the jitter buffer. * @returns {Signal} */ AUDIO_PROPERTY(int, framesDesired) /**jsdoc + * Triggered when the number of audio frames containing data available changes. * @function AudioStats.AudioStreamStats.framesAvailableChanged - * @param {number} framesAvailable + * @param {number} framesAvailable - The number of audio frames containing data available. * @returns {Signal} */ AUDIO_PROPERTY(int, framesAvailable) /**jsdoc + * Triggered when the time-weighted average of audio frames containing data available changes. * @function AudioStats.AudioStreamStats.framesAvailableAvgChanged - * @param {number} framesAvailableAvg + * @param {number} framesAvailableAvg - The time-weighted average of audio frames containing data available. * @returns {Signal} */ AUDIO_PROPERTY(int, framesAvailableAvg) /**jsdoc + * Triggered when the duration of audio waiting to be played changes. * @function AudioStats.AudioStreamStats.unplayedMsMaxChanged - * @param {number} unplayedMsMax + * @param {number} unplayedMsMax - The duration of audio waiting to be played, in ms. * @returns {Signal} */ AUDIO_PROPERTY(float, unplayedMsMax) /**jsdoc + * Triggered when the total number of times that audio frames have not been available for processing changes. * @function AudioStats.AudioStreamStats.starveCountChanged - * @param {number} starveCount + * @param {number} starveCount - The total number of times that audio frames have not been available for processing. * @returns {Signal} */ AUDIO_PROPERTY(int, starveCount) /**jsdoc + * Triggered when the most recenbernumber of consecutive times that audio frames have not been available for processing + * changes. * @function AudioStats.AudioStreamStats.lastStarveDurationCountChanged - * @param {number} lastStarveDurationCount + * @param {number} lastStarveDurationCount - The most recent number of consecutive times that audio frames have not been + * available for processing. * @returns {Signal} */ AUDIO_PROPERTY(int, lastStarveDurationCount) /**jsdoc + * Triggered when the number of silent or old audio frames dropped changes. * @function AudioStats.AudioStreamStats.dropCountChanged - * @param {number} dropCount + * @param {number} dropCount - The number of silent or old audio frames dropped. * @returns {Signal} */ AUDIO_PROPERTY(int, dropCount) /**jsdoc + * Triggered when the number of times that the audio ring buffer has overflowed changes. * @function AudioStats.AudioStreamStats.overflowCountChanged - * @param {number} overflowCount + * @param {number} overflowCount - The number of times that the audio ring buffer has overflowed. * @returns {Signal} */ AUDIO_PROPERTY(int, overflowCount) /**jsdoc + * Triggered when the overall maximum time between data packets changes. * @function AudioStats.AudioStreamStats.timegapMsMaxChanged - * @param {number} timegapMsMax + * @param {number} timegapMsMax - The overall maximum time between data packets, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, timegapMsMax) /**jsdoc + * Triggered when the overall average time between data packets changes. * @function AudioStats.AudioStreamStats.timegapMsAvgChanged - * @param {number} timegapMsAvg + * @param {number} timegapMsAvg - The overall average time between data packets, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, timegapMsAvg) /**jsdoc + * Triggered when the recent maximum time between data packets changes. * @function AudioStats.AudioStreamStats.timegapMsMaxWindowChanged - * @param {number} timegapMsMaxWindow + * @param {number} timegapMsMaxWindow - The recent maximum time between data packets, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, timegapMsMaxWindow) /**jsdoc + * Triggered when the recent average time between data packets changes. * @function AudioStats.AudioStreamStats.timegapMsAvgWindowChanged - * @param {number} timegapMsAvgWindow + * @param {number} timegapMsAvgWindow - The recent average time between data packets, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, timegapMsAvgWindow) @@ -188,79 +231,106 @@ class AudioStatsInterface : public QObject { Q_OBJECT /**jsdoc - * Audio stats from the client. + * The AudioStats API provides statistics of the client and mixer audio. + * * @namespace AudioStats * * @hifi-interface * @hifi-client-entity * @hifi-avatar * - * @property {number} pingMs Read-only. - * @property {number} inputReadMsMax Read-only. - * @property {number} inputUnplayedMsMax Read-only. - * @property {number} outputUnplayedMsMax Read-only. - * @property {number} sentTimegapMsMax Read-only. - * @property {number} sentTimegapMsAvg Read-only. - * @property {number} sentTimegapMsMaxWindow Read-only. - * @property {number} sentTimegapMsAvgWindow Read-only. - * @property {AudioStats.AudioStreamStats} clientStream Read-only. - * @property {AudioStats.AudioStreamStats} mixerStream Read-only. + * @property {AudioStats.AudioStreamStats} clientStream - Statistics of the client's audio stream. + * Read-only. + * @property {number} inputReadMsMax - The maximum duration of a block of audio data recently read from the microphone, in + * ms. + * Read-only. + * @property {number} inputUnplayedMsMax - The maximum duration of microphone audio recently in the input buffer waiting to + * be played, in ms. + * Read-only. + * @property {AudioStats.AudioStreamStats} mixerStream - Statistics of the audio mixer's stream. + * Read-only. + * @property {number} outputUnplayedMsMax - The maximum duration of output audio recently in the output buffer waiting to + * be played, in ms. + * Read-only. + * @property {number} pingMs - The current ping time to the audio mixer, in ms. + * Read-only. + * @property {number} sentTimegapMsAvg - The overall average time between sending data packets to the audio mixer, in ms. + * Read-only. + * @property {number} sentTimegapMsAvgWindow - The recent average time between sending data packets to the audio mixer, in + * ms. + * Read-only. + * @property {number} sentTimegapMsMax - The overall maximum time between sending data packets to the audio mixer, in ms. + * Read-only. + * @property {number} sentTimegapMsMaxWindow - The recent maximum time between sending data packets to the audio mixer, in + * ms. + * Read-only. */ /**jsdoc + * Triggered when the ping time to the audio mixer changes. * @function AudioStats.pingMsChanged - * @param {number} pingMs + * @param {number} pingMs - The ping time to the audio mixer, in ms. * @returns {Signal} */ AUDIO_PROPERTY(float, pingMs); /**jsdoc + * Triggered when the maximum duration of a block of audio data recently read from the microphone changes. * @function AudioStats.inputReadMsMaxChanged - * @param {number} inputReadMsMax + * @param {number} inputReadMsMax - The maximum duration of a block of audio data recently read from the microphone, in ms. * @returns {Signal} */ AUDIO_PROPERTY(float, inputReadMsMax); /**jsdoc + * Triggered when the maximum duration of microphone audio recently in the input buffer waiting to be played changes. * @function AudioStats.inputUnplayedMsMaxChanged - * @param {number} inputUnplayedMsMax + * @param {number} inputUnplayedMsMax - The maximum duration of microphone audio recently in the input buffer waiting to be + * played, in ms. * @returns {Signal} */ AUDIO_PROPERTY(float, inputUnplayedMsMax); /**jsdoc + * Triggered when the maximum duration of output audio recently in the output buffer waiting to be played changes. * @function AudioStats.outputUnplayedMsMaxChanged - * @param {number} outputUnplayedMsMax + * @param {number} outputUnplayedMsMax - The maximum duration of output audio recently in the output buffer waiting to be + * played, in ms. * @returns {Signal} */ AUDIO_PROPERTY(float, outputUnplayedMsMax); /**jsdoc + * Triggered when the overall maximum time between sending data packets to the audio mixer changes. * @function AudioStats.sentTimegapMsMaxChanged - * @param {number} sentTimegapMsMax + * @param {number} sentTimegapMsMax - The overall maximum time between sending data packets to the audio mixer, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, sentTimegapMsMax); /**jsdoc + * Triggered when the overall average time between sending data packets to the audio mixer changes. * @function AudioStats.sentTimegapMsAvgChanged - * @param {number} sentTimegapMsAvg + * @param {number} sentTimegapMsAvg - The overall average time between sending data packets to the audio mixer, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, sentTimegapMsAvg); /**jsdoc + * Triggered when the recent maximum time between sending data packets to the audio mixer changes. * @function AudioStats.sentTimegapMsMaxWindowChanged - * @param {number} sentTimegapMsMaxWindow + * @param {number} sentTimegapMsMaxWindow - The recent maximum time between sending data packets to the audio mixer, in ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, sentTimegapMsMaxWindow); /**jsdoc + * Triggered when the recent average time between sending data packets to the audio mixer changes. * @function AudioStats.sentTimegapMsAvgWindowChanged - * @param {number} sentTimegapMsAvgWindow + * @param {number} sentTimegapMsAvgWindow - The recent average time between sending data packets to the audio mixer, in + * ms. * @returns {Signal} */ AUDIO_PROPERTY(quint64, sentTimegapMsAvgWindow); @@ -287,18 +357,22 @@ public: signals: /**jsdoc + * Triggered when the mixer's stream statistics have been updated. * @function AudioStats.mixerStreamChanged * @returns {Signal} */ void mixerStreamChanged(); /**jsdoc + * Triggered when the client's stream statisticss have been updated. * @function AudioStats.clientStreamChanged * @returns {Signal} */ void clientStreamChanged(); /**jsdoc + * Triggered when the injector streams' statistics have been updated. + *

Note: The injector streams' statistics are currently not provided.

* @function AudioStats.injectorStreamsChanged * @returns {Signal} */ From ef45a6092f93802022b761ad140d10ddd6bab13b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 14 Nov 2019 16:07:00 +1300 Subject: [PATCH 210/547] Polishing --- libraries/audio-client/src/AudioIOStats.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/audio-client/src/AudioIOStats.h b/libraries/audio-client/src/AudioIOStats.h index d5a8cca27d..26ea301eaa 100644 --- a/libraries/audio-client/src/AudioIOStats.h +++ b/libraries/audio-client/src/AudioIOStats.h @@ -65,10 +65,10 @@ class AudioStreamStatsInterface : public QObject { * Read-only. * @property {number} lossCountWindow - The number of audio packets lost since the previous statistic. * Read-only. - * @property {number} lossRate - The total number of audio packets lost divided by the total number of audio packets + * @property {number} lossRate - The ratio of the total number of audio packets lost to the total number of audio packets * expected. * Read-only. - * @property {number} lossRateWindow - The number of audio packets lost divided by the total number of audio packets + * @property {number} lossRateWindow - The ratio of the number of audio packets lost to the number of audio packets * expected since the previous statistic. * Read-only. * @property {number} overflowCount - The number of times that the audio ring buffer has overflowed. @@ -88,9 +88,10 @@ class AudioStreamStatsInterface : public QObject { */ /**jsdoc - * Triggered when the total number of audio packets lost divided by the total number of audio packets expected changes. + * Triggered when the ratio of the total number of audio packets lost to the total number of audio packets expected changes. * @function AudioStats.AudioStreamStats.lossRateChanged - * @param {number} lossRate - The total number of audio packets lost divided by the total number of audio packets expected. + * @param {number} lossRate - The ratio of the total number of audio packets lost to the total number of audio packets + * expected. * @returns {Signal} */ AUDIO_PROPERTY(float, lossRate) @@ -104,10 +105,10 @@ class AudioStreamStatsInterface : public QObject { AUDIO_PROPERTY(float, lossCount) /**jsdoc - * Triggered when the number of audio packets lost divided by the total number of audio packets expected since the previous + * Triggered when the ratio of the number of audio packets lost to the number of audio packets expected since the previous * statistic changes. * @function AudioStats.AudioStreamStats.lossRateWindowChanged - * @param {number} lossRateWindow - The number of audio packets lost divided by the total number of audio packets expected + * @param {number} lossRateWindow - The ratio of the number of audio packets lost to the number of audio packets expected * since the previous statistic. * @returns {Signal} */ From 90b58ebeba1992d67d752c6f131c44ae0326aab9 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 14 Nov 2019 09:13:31 -0800 Subject: [PATCH 211/547] icon for screenshare app --- screenshare/src/resources/interface.png | Bin 0 -> 658 bytes screenshare/src/screenshareMainProcess.js | 1 + 2 files changed, 1 insertion(+) create mode 100644 screenshare/src/resources/interface.png diff --git a/screenshare/src/resources/interface.png b/screenshare/src/resources/interface.png new file mode 100644 index 0000000000000000000000000000000000000000..f90cbe591c63bbd2490f15bd9f1a575cd8352833 GIT binary patch literal 658 zcmV;D0&V??P)1v7@0}UP)X^CYOa-HIl9Eb8l%kYCCR|iVLXgxVF$!7~L<>P|5h3kLsD(x) z5egFilu4x#g&0MUNSc(o8PoD-oY6_xGB&^kj}IcJYw*YBqnlvjLDHvw^BkRLIOr3C;06PgbI*b!_B2XVBS>3u z6vO~|KprNSn50)t(~6A_VdsYdpo-fP2nMbp<%K06l3ZvUg}7`pswzPGWv`(iilG;` zaPB;d-Kin8$hZdRY5il-qcxrq?5W8J0~~e+pJriqYB=4HxC=I=gC;-+#BvlNvF3H& zXnx=E;0YNvgVEIvR0!tAVeTh*dm%a%T+v=aY8(SM!YYY7SAYCU?bz3EB-t!T)P^mH z#bYkO>=3k=pEx7SIi%+V5?ft`r;4`C1+ZH!%jjyVe-{acHALCXFBXf+6t$tAY)_Gz z_hV@KdN|BKkPwqFHF3AUc6%HrLmDOIGB8=ntEAVA>peJ_!2+ywt*wJoGY6~c``eP^ zDf4OAQP>dd{*~FDF>tYB%gCeq^Zq)9%v@$<406p2ge1S@W#QG^qT5OV3JE9#EZ&8b z_^q>arOYP1Nzp1d`&=CBnJ7K5V8Dz?_1n6w`?Agt>m)6~5u_`S^Ahj72`WF()NL99 zd{O(eI)jowz!4OC5X6T!P?I3rpy4xOO@v^v7y%yAr5f?$1_}`zM&Sl*i&e?*AX*R& s!~B;Tm6LYmp+nt4eJn>6B!(ON3l?VGqQ`+FZ~y=R07*qoM6N<$g2DkMYybcN literal 0 HcmV?d00001 diff --git a/screenshare/src/screenshareMainProcess.js b/screenshare/src/screenshareMainProcess.js index 989b0d79ef..9a1ebf5424 100644 --- a/screenshare/src/screenshareMainProcess.js +++ b/screenshare/src/screenshareMainProcess.js @@ -54,6 +54,7 @@ function createWindow(){ webPreferences: { nodeIntegration: true }, + icon: __dirname + `/resources/interface.png`, skipTaskbar: false, title: "Screen share" // TODO: Update this code once we have CMAKE copying a png from From 11e1c4e6fecddd9f378bfec543b36c15de486d61 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Thu, 14 Nov 2019 09:23:16 -0800 Subject: [PATCH 212/547] linear acceleration experiment --- interface/src/avatar/MyAvatar.cpp | 61 +++++++++++++++++++------------ 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 011439193c..8194051d9e 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3514,42 +3514,56 @@ void MyAvatar::updateOrientation(float deltaTime) { setWorldOrientation(glm::slerp(getWorldOrientation(), faceRotation, blend)); } else if (isRotatingWhileSeated) { float direction = -getDriveKey(TRANSLATE_X); - float seatedTargetSpeed = direction * _yawSpeed * deltaTime; + //float seatedTargetSpeed = direction * _yawSpeed; //deg/sec + float seatedTargetSpeed = direction * _yawSpeed * deltaTime; //deg/renderframe - const float SEATED_ROTATION_RAMP_TIMESCALE = 0.25; //used as divisor - float blend = deltaTime / SEATED_ROTATION_RAMP_TIMESCALE; + //if (_seatedBodyYawDelta / seatedTargetSpeed < 0.0f) { + // //reverse direction, start acceleration timer again + // _seatedInterpTime = 0.0f; + //} + + const float SEATED_ROTATION_RAMP_TIMESCALE = 2.5; + float blend = deltaTime * SEATED_ROTATION_RAMP_TIMESCALE; if (blend > 1.0f) { blend = 1.0f; } - /////// ease in - //_seatedBodyYawDelta = (1.0f - blend) * _seatedBodyYawDelta + blend * seatedTargetSpeed; - - /////// ease out - + //init, accelerate or clamp rotation at target speed if (fabsf(_seatedBodyYawDelta) > 0.0f) { - //we are rotating if (fabsf(_seatedBodyYawDelta) >= fabsf(seatedTargetSpeed)) { - //we've reached target speed _seatedBodyYawDelta = seatedTargetSpeed; } else { - _seatedInterpTime += blend; - _seatedBodyYawDelta = _seatedInterpTime * _seatedInterpTime * direction; + //_seatedInterpTime += blend; + //_seatedBodyYawDelta = _seatedInterpTime * _seatedInterpTime * direction / blend; + _seatedBodyYawDelta += blend * direction; } } else { - //init rotation _seatedInterpTime = blend; _seatedBodyYawDelta = blend * direction; } - + float totalSeatedBodyYaw = _seatedBodyYawDelta * deltaTime; + //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalSeatedBodyYaw, 0.0f)))); setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); + } else if (_seatedBodyYawDelta != 0.0f) { + //qDebug() << "start _seatedBodyYawDelta: " << _seatedBodyYawDelta; + // decelerate + const float ROTATION_DECAY_TIMESCALE = 0.25f; + float attenuation = 1.0f - deltaTime / ROTATION_DECAY_TIMESCALE; + if (attenuation < 0.0f) { + attenuation = 0.0f; + } + _seatedBodyYawDelta *= attenuation; - //original - //float rotatingWhileSeatedYaw = -getDriveKey(TRANSLATE_X) * _yawSpeed * deltaTime; - //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, rotatingWhileSeatedYaw, 0.0f)))); + float MINIMUM_ROTATION_RATE = 2.0f; + if (fabsf(_seatedBodyYawDelta) < MINIMUM_ROTATION_RATE * deltaTime) { + _seatedBodyYawDelta = 0.0f; + } + //float totalSeatedBodyYaw = _seatedBodyYawDelta * deltaTime; + //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalSeatedBodyYaw, 0.0f)))); + setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); } else { _seatedBodyYawDelta = 0.0f; _seatedInterpTime = 0.0f; @@ -3611,20 +3625,20 @@ void MyAvatar::updateOrientation(float deltaTime) { const float DEFAULT_REORIENT_ANGLE = 65.0f; const float FIRST_PERSON_REORIENT_ANGLE = 95.0f; - const float TRIGGER_REORIENT_ANGLE = 45.0f; + const float TRIGGER_REORIENT_ANGLE = 135.0f; const float FIRST_PERSON_TRIGGER_REORIENT_ANGLE = 65.0f; glm::vec3 ajustedYawVector = cameraYawVector; - float limitAngle = 0.0f; - float triggerAngle = -glm::sin(glm::radians(TRIGGER_REORIENT_ANGLE)); + float triggerAngle = glm::sin(glm::radians(90.0f - TRIGGER_REORIENT_ANGLE)); + float limitAngle = triggerAngle; if (mode == CAMERA_MODE_FIRST_PERSON_LOOK_AT) { limitAngle = glm::sin(glm::radians(90.0f - FIRST_PERSON_TRIGGER_REORIENT_ANGLE)); triggerAngle = limitAngle; } float reorientAngle = mode == CAMERA_MODE_FIRST_PERSON_LOOK_AT ? FIRST_PERSON_REORIENT_ANGLE : DEFAULT_REORIENT_ANGLE; + if (frontBackDot < 0.0f) { + ajustedYawVector = (leftRightDot < 0.0f ? -avatarVectorRight : avatarVectorRight); + } if (frontBackDot < limitAngle) { - if (frontBackDot < 0.0f) { - ajustedYawVector = (leftRightDot < 0.0f ? -avatarVectorRight : avatarVectorRight); - } if (!isRotatingWhileSeated) { if (frontBackDot < triggerAngle) { _shouldTurnToFaceCamera = true; @@ -3632,6 +3646,7 @@ void MyAvatar::updateOrientation(float deltaTime) { } } else { setWorldOrientation(previousOrientation); + _seatedBodyYawDelta = 0.0f; } } else if (frontBackDot > glm::sin(glm::radians(reorientAngle))) { _shouldTurnToFaceCamera = false; From d664b9e118e42b6f8eb3cd3a5873a253a753d581 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 14 Nov 2019 09:28:05 -0800 Subject: [PATCH 213/547] removed icon log --- screenshare/src/screenshareMainProcess.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/screenshare/src/screenshareMainProcess.js b/screenshare/src/screenshareMainProcess.js index 9a1ebf5424..5e2c394f9d 100644 --- a/screenshare/src/screenshareMainProcess.js +++ b/screenshare/src/screenshareMainProcess.js @@ -57,10 +57,6 @@ function createWindow(){ icon: __dirname + `/resources/interface.png`, skipTaskbar: false, title: "Screen share" - // TODO: Update this code once we have CMAKE copying a png from - // `/interface/icon/interface.png` into the same directory - // as the screenshare executable during a post-build step - //icon: "hifi-screenshare-icon.png" }); window.loadURL('file://' + __dirname + '/screenshareApp.html'); window.setMenu(null); From 82c85b51dfd5833f6ef87237809744b53997d8e0 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 14 Nov 2019 09:54:41 -0800 Subject: [PATCH 214/547] cleanup --- screenshare/src/screenshareApp.js | 2 +- screenshare/src/screenshareMainProcess.js | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/screenshare/src/screenshareApp.js b/screenshare/src/screenshareApp.js index db38054e1b..9fae20e0aa 100644 --- a/screenshare/src/screenshareApp.js +++ b/screenshare/src/screenshareApp.js @@ -1,4 +1,4 @@ -// +'use strict'; // screenshareApp.js // // Created by Milad Nazeri, Rebecca Stankus, and Zach Fox 2019/11/13 diff --git a/screenshare/src/screenshareMainProcess.js b/screenshare/src/screenshareMainProcess.js index 5e2c394f9d..c674a70505 100644 --- a/screenshare/src/screenshareMainProcess.js +++ b/screenshare/src/screenshareMainProcess.js @@ -1,8 +1,7 @@ 'use strict'; -// // screenshareMainProcess.js // -// Created by Milad Nazeri, and Zach Fox 2019/11/13 +// Milad Nazeri and Zach Fox 2019/11/13 // Copyright 2019 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. From 9d92546a8b53728cbd210531aeb54897b44e0e73 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 15 Oct 2019 14:52:12 -0700 Subject: [PATCH 215/547] revert the revert of PR-16307 --- interface/src/InterfaceParentFinder.cpp | 4 - interface/src/avatar/AvatarManager.cpp | 20 +- interface/src/avatar/MyAvatar.cpp | 61 +-- interface/src/avatar/OtherAvatar.cpp | 8 +- interface/src/ui/AvatarCertifyBanner.cpp | 11 +- .../src/avatars-renderer/Avatar.cpp | 12 +- libraries/avatars/src/AvatarData.cpp | 5 +- libraries/avatars/src/AvatarData.h | 2 +- .../src/EntityTreeRenderer.cpp | 14 +- .../src/EntityTreeRenderer.h | 1 + .../src/RenderableEntityItem.cpp | 5 +- .../entities/src/DeleteEntityOperator.cpp | 9 + libraries/entities/src/DeleteEntityOperator.h | 1 + libraries/entities/src/EntityEditFilters.cpp | 2 +- libraries/entities/src/EntityEditFilters.h | 2 +- .../entities/src/EntityEditPacketSender.cpp | 8 +- libraries/entities/src/EntityItem.cpp | 44 ++- libraries/entities/src/EntityItem.h | 7 +- .../entities/src/EntityItemProperties.cpp | 2 +- .../entities/src/EntityScriptingInterface.cpp | 95 ++--- libraries/entities/src/EntitySimulation.cpp | 92 ++--- libraries/entities/src/EntitySimulation.h | 46 +-- libraries/entities/src/EntityTree.cpp | 354 ++++++++++-------- libraries/entities/src/EntityTree.h | 19 +- libraries/entities/src/EntityTreeElement.cpp | 2 +- .../entities/src/SimpleEntitySimulation.cpp | 17 +- .../entities/src/SimpleEntitySimulation.h | 10 +- libraries/physics/src/EntityMotionState.cpp | 24 +- libraries/physics/src/EntityMotionState.h | 2 +- .../physics/src/PhysicalEntitySimulation.cpp | 111 ++++-- .../physics/src/PhysicalEntitySimulation.h | 24 +- libraries/shared/src/PhysicsHelpers.cpp | 6 +- libraries/shared/src/SpatialParentFinder.h | 2 +- tests/octree/src/ModelTests.cpp | 7 +- 34 files changed, 572 insertions(+), 457 deletions(-) diff --git a/interface/src/InterfaceParentFinder.cpp b/interface/src/InterfaceParentFinder.cpp index 33328f54cc..0f1c8876a9 100644 --- a/interface/src/InterfaceParentFinder.cpp +++ b/interface/src/InterfaceParentFinder.cpp @@ -45,10 +45,6 @@ SpatiallyNestableWeakPointer InterfaceParentFinder::find(QUuid parentID, bool& s success = true; return parent; } - if (parentID == AVATAR_SELF_ID) { - success = true; - return avatarManager->getMyAvatar(); - } success = false; return parent; diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 553033f394..32e725388c 100755 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -543,26 +543,8 @@ void AvatarManager::removeDeadAvatarEntities(const SetOfEntities& deadEntities) for (auto entity : deadEntities) { QUuid entityOwnerID = entity->getOwningAvatarID(); AvatarSharedPointer avatar = getAvatarBySessionID(entityOwnerID); - const bool REQUIRES_REMOVAL_FROM_TREE = false; if (avatar) { - avatar->clearAvatarEntity(entity->getID(), REQUIRES_REMOVAL_FROM_TREE); - } - if (entityTree && entity->isMyAvatarEntity()) { - entityTree->withWriteLock([&] { - // We only need to delete the direct children (rather than the descendants) because - // when the child is deleted, it will take care of its own children. If the child - // is also an avatar-entity, we'll end up back here. If it's not, the entity-server - // will take care of it in the usual way. - entity->forEachChild([&](SpatiallyNestablePointer child) { - EntityItemPointer childEntity = std::dynamic_pointer_cast(child); - if (childEntity) { - entityTree->deleteEntity(childEntity->getID(), true, true); - if (avatar) { - avatar->clearAvatarEntity(childEntity->getID(), REQUIRES_REMOVAL_FROM_TREE); - } - } - }); - }); + avatar->clearAvatarEntity(entity->getID()); } } } diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 87589ab432..5c10e05806 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1518,7 +1518,8 @@ void MyAvatar::storeAvatarEntityDataPayload(const QUuid& entityID, const QByteAr } void MyAvatar::clearAvatarEntity(const QUuid& entityID, bool requiresRemovalFromTree) { - AvatarData::clearAvatarEntity(entityID, requiresRemovalFromTree); + // NOTE: the requiresRemovalFromTree argument is unused + AvatarData::clearAvatarEntity(entityID); _avatarEntitiesLock.withWriteLock([&] { _cachedAvatarEntityBlobsToDelete.push_back(entityID); }); @@ -1526,7 +1527,12 @@ void MyAvatar::clearAvatarEntity(const QUuid& entityID, bool requiresRemovalFrom void MyAvatar::sanitizeAvatarEntityProperties(EntityItemProperties& properties) const { properties.setEntityHostType(entity::HostType::AVATAR); - properties.setOwningAvatarID(getID()); + + // Note: we store AVATAR_SELF_ID in EntityItem::_owningAvatarID and we usually + // store the actual sessionUUID in EntityItemProperties::_owningAvatarID (for JS + // consumption, for example). However at this context we are preparing properties + // for outgoing packet, in which case we use AVATAR_SELF_ID. + properties.setOwningAvatarID(AVATAR_SELF_ID); // there's no entity-server to tell us we're the simulation owner, so always set the // simulationOwner to the owningAvatarID and a high priority. @@ -1583,13 +1589,16 @@ void MyAvatar::handleChangedAvatarEntityData() { // move the lists to minimize lock time std::vector cachedBlobsToDelete; std::vector cachedBlobsToUpdate; - std::vector entitiesToDelete; + QSet idsToDelete; std::vector entitiesToAdd; std::vector entitiesToUpdate; _avatarEntitiesLock.withWriteLock([&] { cachedBlobsToDelete = std::move(_cachedAvatarEntityBlobsToDelete); cachedBlobsToUpdate = std::move(_cachedAvatarEntityBlobsToAddOrUpdate); - entitiesToDelete = std::move(_entitiesToDelete); + foreach (auto id, _entitiesToDelete) { + idsToDelete.insert(id); + } + _entitiesToDelete.clear(); entitiesToAdd = std::move(_entitiesToAdd); entitiesToUpdate = std::move(_entitiesToUpdate); }); @@ -1607,7 +1616,7 @@ void MyAvatar::handleChangedAvatarEntityData() { }; // remove delete-add and delete-update overlap - for (const auto& id : entitiesToDelete) { + for (const auto& id : idsToDelete) { removeAllInstancesHelper(id, cachedBlobsToUpdate); removeAllInstancesHelper(id, entitiesToAdd); removeAllInstancesHelper(id, entitiesToUpdate); @@ -1621,11 +1630,9 @@ void MyAvatar::handleChangedAvatarEntityData() { } // DELETE real entities - for (const auto& id : entitiesToDelete) { - entityTree->withWriteLock([&] { - entityTree->deleteEntity(id); - }); - } + entityTree->withWriteLock([&] { + entityTree->deleteEntitiesByID(idsToDelete); + }); // ADD real entities EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender(); @@ -1738,7 +1745,7 @@ void MyAvatar::handleChangedAvatarEntityData() { // we have a client traits handler // flag removed entities as deleted so that changes are sent next frame _avatarEntitiesLock.withWriteLock([&] { - for (const auto& id : entitiesToDelete) { + for (const auto& id : idsToDelete) { if (_packedAvatarEntityData.find(id) != _packedAvatarEntityData.end()) { _clientTraitsHandler->markInstancedTraitDeleted(AvatarTraits::AvatarEntity, id); } @@ -2469,18 +2476,11 @@ bool isWearableEntity(const EntityItemPointer& entity) { void MyAvatar::removeWornAvatarEntity(const EntityItemID& entityID) { auto treeRenderer = DependencyManager::get(); EntityTreePointer entityTree = treeRenderer ? treeRenderer->getTree() : nullptr; - if (entityTree) { auto entity = entityTree->findEntityByID(entityID); if (entity && isWearableEntity(entity)) { - entityTree->withWriteLock([&entityID, &entityTree] { - // remove this entity first from the entity tree - entityTree->deleteEntity(entityID, true, true); - }); - - // remove the avatar entity from our internal list - // (but indicate it doesn't need to be pulled from the tree) - clearAvatarEntity(entityID, false); + treeRenderer->deleteEntity(entityID); + clearAvatarEntity(entityID); } } } @@ -2490,8 +2490,16 @@ void MyAvatar::clearWornAvatarEntities() { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - for (auto entityID : avatarEntityIDs) { - removeWornAvatarEntity(entityID); + auto treeRenderer = DependencyManager::get(); + EntityTreePointer entityTree = treeRenderer ? treeRenderer->getTree() : nullptr; + if (entityTree) { + for (auto entityID : avatarEntityIDs) { + auto entity = entityTree->findEntityByID(entityID); + if (entity && isWearableEntity(entity)) { + treeRenderer->deleteEntity(entityID); + clearAvatarEntity(entityID); + } + } } } @@ -3934,6 +3942,10 @@ float MyAvatar::getGravity() { void MyAvatar::setSessionUUID(const QUuid& sessionUUID) { QUuid oldSessionID = getSessionUUID(); Avatar::setSessionUUID(sessionUUID); + bool sendPackets = !DependencyManager::get()->getSessionUUID().isNull(); + if (!sendPackets) { + return; + } QUuid newSessionID = getSessionUUID(); if (newSessionID != oldSessionID) { auto treeRenderer = DependencyManager::get(); @@ -3943,7 +3955,6 @@ void MyAvatar::setSessionUUID(const QUuid& sessionUUID) { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - bool sendPackets = !DependencyManager::get()->getSessionUUID().isNull(); EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender(); entityTree->withWriteLock([&] { for (const auto& entityID : avatarEntityIDs) { @@ -3951,11 +3962,9 @@ void MyAvatar::setSessionUUID(const QUuid& sessionUUID) { if (!entity) { continue; } - // update OwningAvatarID so entity can be identified as "ours" later - entity->setOwningAvatarID(newSessionID); // NOTE: each attached AvatarEntity already have the correct updated parentID // via magic in SpatiallyNestable, hence we check against newSessionID - if (sendPackets && entity->getParentID() == newSessionID) { + if (entity->getParentID() == newSessionID) { // but when we have a real session and the AvatarEntity is parented to MyAvatar // we need to update the "packedAvatarEntityData" sent to the avatar-mixer // because it contains a stale parentID somewhere deep inside diff --git a/interface/src/avatar/OtherAvatar.cpp b/interface/src/avatar/OtherAvatar.cpp index 50f6369dbe..43d1ddeaad 100755 --- a/interface/src/avatar/OtherAvatar.cpp +++ b/interface/src/avatar/OtherAvatar.cpp @@ -561,11 +561,17 @@ void OtherAvatar::handleChangedAvatarEntityData() { _avatarEntitiesLock.withReadLock([&] { packedAvatarEntityData = _packedAvatarEntityData; }); + QSet idsToDelete; foreach (auto entityID, recentlyRemovedAvatarEntities) { if (!packedAvatarEntityData.contains(entityID)) { - entityTree->deleteEntity(entityID, true, true); + idsToDelete.insert(entityID); } } + if (!idsToDelete.empty()) { + bool force = true; + bool ignoreWarnings = true; + entityTree->deleteEntitiesByID(idsToDelete, force, ignoreWarnings); + } // TODO: move this outside of tree lock // remove stale data hashes diff --git a/interface/src/ui/AvatarCertifyBanner.cpp b/interface/src/ui/AvatarCertifyBanner.cpp index 5101188885..3fe2ed2027 100644 --- a/interface/src/ui/AvatarCertifyBanner.cpp +++ b/interface/src/ui/AvatarCertifyBanner.cpp @@ -62,16 +62,7 @@ void AvatarCertifyBanner::show(const QUuid& avatarID) { void AvatarCertifyBanner::clear() { if (_active) { - auto entityTreeRenderer = DependencyManager::get(); - EntityTreePointer entityTree = entityTreeRenderer->getTree(); - if (!entityTree) { - return; - } - - entityTree->withWriteLock([&] { - entityTree->deleteEntity(_bannerID); - }); - + DependencyManager::get()->deleteEntity(_bannerID); _active = false; } } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 9b8ce8cf34..6f0fef40d2 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -340,11 +340,13 @@ void Avatar::removeAvatarEntitiesFromTree() { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - entityTree->withWriteLock([&] { - for (const auto& entityID : avatarEntityIDs) { - entityTree->deleteEntity(entityID, true, true); - } - }); + QSet ids; + foreach (auto id, avatarEntityIDs) { + ids.insert(id); + } + bool force = true; + bool ignoreWarnings = true; + entityTree->deleteEntitiesByID(ids, force, ignoreWarnings); // locks tree } } diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index 93850197af..5fe7998ecb 100755 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -3033,15 +3033,12 @@ void AvatarData::updateAvatarEntity(const QUuid& entityID, const QByteArray& ent } void AvatarData::clearAvatarEntity(const QUuid& entityID, bool requiresRemovalFromTree) { - + // NOTE: requiresRemovalFromTree is unused bool removedEntity = false; - _avatarEntitiesLock.withWriteLock([this, &removedEntity, &entityID] { removedEntity = _packedAvatarEntityData.remove(entityID); }); - insertRemovedEntityID(entityID); - if (removedEntity && _clientTraitsHandler) { // we have a client traits handler, so we need to mark this removed instance trait as deleted // so that changes are sent next frame diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index e8aee1f3d2..21779a2b29 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -1179,7 +1179,7 @@ public: /**jsdoc * @function Avatar.clearAvatarEntity * @param {Uuid} entityID - The entity ID. - * @param {boolean} [requiresRemovalFromTree=true] - Requires removal from tree. + * @param {boolean} [requiresRemovalFromTree=true] - unused * @deprecated This function is deprecated and will be removed. */ Q_INVOKABLE virtual void clearAvatarEntity(const QUuid& entityID, bool requiresRemovalFromTree = true); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index ab3f4c5243..fa18783b98 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -226,7 +226,7 @@ void EntityTreeRenderer::stopDomainAndNonOwnedEntities() { EntityItemPointer entityItem = getTree()->findEntityByEntityItemID(entityID); if (entityItem && !entityItem->getScript().isEmpty()) { - if (!(entityItem->isLocalEntity() || (entityItem->isAvatarEntity() && entityItem->getOwningAvatarID() == getTree()->getMyAvatarSessionUUID()))) { + if (!(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { if (_currentEntitiesInside.contains(entityID)) { _entitiesScriptEngine->callEntityScriptMethod(entityID, "leaveEntity"); } @@ -240,7 +240,6 @@ void EntityTreeRenderer::stopDomainAndNonOwnedEntities() { void EntityTreeRenderer::clearDomainAndNonOwnedEntities() { stopDomainAndNonOwnedEntities(); - auto sessionUUID = getTree()->getMyAvatarSessionUUID(); std::unordered_map savedEntities; std::unordered_set savedRenderables; // remove all entities from the scene @@ -249,7 +248,7 @@ void EntityTreeRenderer::clearDomainAndNonOwnedEntities() { for (const auto& entry : _entitiesInScene) { const auto& renderer = entry.second; const EntityItemPointer& entityItem = renderer->getEntity(); - if (!(entityItem->isLocalEntity() || (entityItem->isAvatarEntity() && entityItem->getOwningAvatarID() == sessionUUID))) { + if (!(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { fadeOutRenderable(renderer); } else { savedEntities[entry.first] = entry.second; @@ -261,6 +260,7 @@ void EntityTreeRenderer::clearDomainAndNonOwnedEntities() { _renderablesToUpdate = savedRenderables; _entitiesInScene = savedEntities; + auto sessionUUID = getTree()->getMyAvatarSessionUUID(); if (_layeredZones.clearDomainAndNonOwnedZones(sessionUUID)) { applyLayeredZones(); } @@ -683,7 +683,7 @@ void EntityTreeRenderer::leaveDomainAndNonOwnedEntities() { QSet currentEntitiesInsideToSave; foreach (const EntityItemID& entityID, _currentEntitiesInside) { EntityItemPointer entityItem = getTree()->findEntityByEntityItemID(entityID); - if (!(entityItem->isLocalEntity() || (entityItem->isAvatarEntity() && entityItem->getOwningAvatarID() == getTree()->getMyAvatarSessionUUID()))) { + if (!(entityItem->isLocalEntity() || entityItem->isMyAvatarEntity())) { emit leaveEntity(entityID); if (_entitiesScriptEngine) { _entitiesScriptEngine->callEntityScriptMethod(entityID, "leaveEntity"); @@ -1221,7 +1221,7 @@ bool EntityTreeRenderer::LayeredZones::clearDomainAndNonOwnedZones(const QUuid& auto it = begin(); while (it != end()) { auto zone = it->zone.lock(); - if (!zone || !(zone->isLocalEntity() || (zone->isAvatarEntity() && zone->getOwningAvatarID() == sessionUUID))) { + if (!zone || !(zone->isLocalEntity() || zone->isMyAvatarEntity())) { zonesChanged = true; it = erase(it); } else { @@ -1362,6 +1362,10 @@ EntityItemPointer EntityTreeRenderer::getEntity(const EntityItemID& id) { return result; } +void EntityTreeRenderer::deleteEntity(const EntityItemID& id) const { + DependencyManager::get()->deleteEntity(id); +} + void EntityTreeRenderer::onEntityChanged(const EntityItemID& id) { _changedEntitiesGuard.withWriteLock([&] { _changedEntities.insert(id); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 6dbaedc123..6a5152b219 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -118,6 +118,7 @@ public: void setProxyWindow(const EntityItemID& id, QWindow* proxyWindow); void setCollisionSound(const EntityItemID& id, const SharedSoundPointer& sound); EntityItemPointer getEntity(const EntityItemID& id); + void deleteEntity(const EntityItemID& id) const; void onEntityChanged(const EntityItemID& id); // Access the workload Space diff --git a/libraries/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp index fb3d2f1bf5..0e5dab6524 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -43,6 +43,7 @@ const Transform& EntityRenderer::getModelTransform() const { void EntityRenderer::makeStatusGetters(const EntityItemPointer& entity, Item::Status::Getters& statusGetters) { auto nodeList = DependencyManager::get(); + // DANGER: nodeList->getSessionUUID() will return null id when not connected to domain. const QUuid& myNodeID = nodeList->getSessionUUID(); statusGetters.push_back([entity]() -> render::Item::Status::Value { @@ -103,9 +104,9 @@ void EntityRenderer::makeStatusGetters(const EntityItemPointer& entity, Item::St (unsigned char)render::Item::Status::Icon::HAS_ACTIONS); }); - statusGetters.push_back([entity, myNodeID] () -> render::Item::Status::Value { + statusGetters.push_back([entity] () -> render::Item::Status::Value { if (entity->isAvatarEntity()) { - if (entity->getOwningAvatarID() == myNodeID) { + if (entity->isMyAvatarEntity()) { return render::Item::Status::Value(1.0f, render::Item::Status::Value::GREEN, (unsigned char)render::Item::Status::Icon::ENTITY_HOST_TYPE); } else { diff --git a/libraries/entities/src/DeleteEntityOperator.cpp b/libraries/entities/src/DeleteEntityOperator.cpp index 1dca171ae3..a4ecb532e5 100644 --- a/libraries/entities/src/DeleteEntityOperator.cpp +++ b/libraries/entities/src/DeleteEntityOperator.cpp @@ -53,6 +53,15 @@ void DeleteEntityOperator::addEntityIDToDeleteList(const EntityItemID& searchEnt } } +void DeleteEntityOperator::addEntityToDeleteList(const EntityItemPointer& entity) { + assert(entity && entity->getElement()); + EntityToDeleteDetails details; + details.entity = entity; + details.containingElement = entity->getElement(); + details.cube = details.containingElement->getAACube(); + _entitiesToDelete << details; + _lookingCount++; +} // does this entity tree element contain the old entity bool DeleteEntityOperator::subTreeContainsSomeEntitiesToDelete(const OctreeElementPointer& element) { diff --git a/libraries/entities/src/DeleteEntityOperator.h b/libraries/entities/src/DeleteEntityOperator.h index 3b3ee2a868..1449e2caad 100644 --- a/libraries/entities/src/DeleteEntityOperator.h +++ b/libraries/entities/src/DeleteEntityOperator.h @@ -42,6 +42,7 @@ public: ~DeleteEntityOperator(); void addEntityIDToDeleteList(const EntityItemID& searchEntityID); + void addEntityToDeleteList(const EntityItemPointer& entity); virtual bool preRecursion(const OctreeElementPointer& element) override; virtual bool postRecursion(const OctreeElementPointer& element) override; diff --git a/libraries/entities/src/EntityEditFilters.cpp b/libraries/entities/src/EntityEditFilters.cpp index a222ca8216..16dace0fc8 100644 --- a/libraries/entities/src/EntityEditFilters.cpp +++ b/libraries/entities/src/EntityEditFilters.cpp @@ -43,7 +43,7 @@ QList EntityEditFilters::getZonesByPosition(glm::vec3& position) { } bool EntityEditFilters::filter(glm::vec3& position, EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, - bool& wasChanged, EntityTree::FilterType filterType, EntityItemID& itemID, EntityItemPointer& existingEntity) { + bool& wasChanged, EntityTree::FilterType filterType, EntityItemID& itemID, const EntityItemPointer& existingEntity) { // get the ids of all the zones (plus the global entity edit filter) that the position // lies within diff --git a/libraries/entities/src/EntityEditFilters.h b/libraries/entities/src/EntityEditFilters.h index cb99c97762..69fd920998 100644 --- a/libraries/entities/src/EntityEditFilters.h +++ b/libraries/entities/src/EntityEditFilters.h @@ -55,7 +55,7 @@ public: void removeFilter(EntityItemID entityID); bool filter(glm::vec3& position, EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged, - EntityTree::FilterType filterType, EntityItemID& entityID, EntityItemPointer& existingEntity); + EntityTree::FilterType filterType, EntityItemID& entityID, const EntityItemPointer& existingEntity); signals: void filterAdded(EntityItemID id, bool success); diff --git a/libraries/entities/src/EntityEditPacketSender.cpp b/libraries/entities/src/EntityEditPacketSender.cpp index dbb3ab076e..aaaf7d645a 100644 --- a/libraries/entities/src/EntityEditPacketSender.cpp +++ b/libraries/entities/src/EntityEditPacketSender.cpp @@ -73,8 +73,12 @@ void EntityEditPacketSender::queueEditEntityMessage(PacketType type, if (properties.getEntityHostType() == entity::HostType::AVATAR) { if (!_myAvatar) { qCWarning(entities) << "Suppressing entity edit message: cannot send avatar entity edit with no myAvatar"; - } else if (properties.getOwningAvatarID() == _myAvatar->getID()) { - // this is an avatar-based entity --> update our avatar-data rather than sending to the entity-server + } else if (properties.getOwningAvatarID() == _myAvatar->getID() || properties.getOwningAvatarID() == AVATAR_SELF_ID) { + // this is a local avatar-entity --> update our avatar-data rather than sending to the entity-server + // Note: we store AVATAR_SELF_ID in EntityItem::_owningAvatarID and we usually + // store the actual sessionUUID in EntityItemProperties::_owningAvatarID. + // However at this context we check for both cases just in case. Really we just want to know + // where to route the data: entity-server or avatar-mixer. queueEditAvatarEntityMessage(entityTree, entityItemID); } else { qCWarning(entities) << "Suppressing entity edit message: cannot send avatar entity edit for another avatar"; diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 598ac17510..15aacd934c 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -1347,7 +1347,7 @@ EntityItemProperties EntityItem::getProperties(const EntityPropertyFlags& desire COPY_ENTITY_PROPERTY_TO_PROPERTIES(created, getCreated); COPY_ENTITY_PROPERTY_TO_PROPERTIES(lastEditedBy, getLastEditedBy); COPY_ENTITY_PROPERTY_TO_PROPERTIES(entityHostType, getEntityHostType); - COPY_ENTITY_PROPERTY_TO_PROPERTIES(owningAvatarID, getOwningAvatarID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(owningAvatarID, getOwningAvatarIDForProperties); COPY_ENTITY_PROPERTY_TO_PROPERTIES(queryAACube, getQueryAACube); COPY_ENTITY_PROPERTY_TO_PROPERTIES(canCastShadow, getCanCastShadow); COPY_ENTITY_PROPERTY_TO_PROPERTIES(isVisibleInSecondaryCamera, isVisibleInSecondaryCamera); @@ -3203,6 +3203,7 @@ void EntityItem::somethingChangedNotification() { }); } +// static void EntityItem::retrieveMarketplacePublicKey() { QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance(); QNetworkRequest networkRequest; @@ -3234,6 +3235,26 @@ void EntityItem::retrieveMarketplacePublicKey() { }); } +void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, SetOfEntities& domainEntities, const QUuid& sessionID) const { + // Deleting an entity has consequences for its children, however there are rules dictating what can be deleted. + // This method helps enforce those rules for the children of entity (not for this entity). + for (SpatiallyNestablePointer child : getChildren()) { + if (child && child->getNestableType() == NestableType::Entity) { + EntityItemPointer childEntity = std::static_pointer_cast(child); + // NOTE: null sessionID means "collect ALL known entities", else we only collect: local-entities and authorized avatar-entities + if (sessionID.isNull() || childEntity->isLocalEntity() || (childEntity->isAvatarEntity() && + (childEntity->isMyAvatarEntity() || childEntity->getOwningAvatarID() == sessionID))) { + if (entitiesToDelete.find(childEntity) == entitiesToDelete.end()) { + entitiesToDelete.insert(childEntity); + childEntity->collectChildrenForDelete(entitiesToDelete, domainEntities, sessionID); + } + } else if (childEntity->isDomainEntity()) { + domainEntities.insert(childEntity); + } + } + } +} + void EntityItem::setSpaceIndex(int32_t index) { assert(_spaceIndex == -1); _spaceIndex = index; @@ -3398,6 +3419,7 @@ void EntityItem::prepareForSimulationOwnershipBid(EntityItemProperties& properti properties.setSimulationOwner(Physics::getSessionUUID(), priority); setPendingOwnershipPriority(priority); + // ANDREW TODO: figure out if it would be OK to NOT bother set these properties here properties.setEntityHostType(getEntityHostType()); properties.setOwningAvatarID(getOwningAvatarID()); setLastBroadcast(now); // for debug/physics status icons @@ -3409,9 +3431,27 @@ bool EntityItem::isWearable() const { } bool EntityItem::isMyAvatarEntity() const { - return _hostType == entity::HostType::AVATAR && Physics::getSessionUUID() == _owningAvatarID; + return _hostType == entity::HostType::AVATAR && AVATAR_SELF_ID == _owningAvatarID; }; +QUuid EntityItem::getOwningAvatarIDForProperties() const { + if (isMyAvatarEntity()) { + // NOTE: we always store AVATAR_SELF_ID for MyAvatar's avatar entities, + // however for EntityItemProperties to be consumed by outside contexts (e.g. JS) + // we use the actual "sessionUUID" which is conveniently cached in the Physics namespace + return Physics::getSessionUUID(); + } + return _owningAvatarID; +} + +void EntityItem::setOwningAvatarID(const QUuid& owningAvatarID) { + if (!owningAvatarID.isNull() && owningAvatarID == Physics::getSessionUUID()) { + _owningAvatarID = AVATAR_SELF_ID; + } else { + _owningAvatarID = owningAvatarID; + } +} + void EntityItem::addGrab(GrabPointer grab) { enableNoBootstrap(); SpatiallyNestable::addGrab(grab); diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 3274379ee9..fef198c006 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -18,6 +18,7 @@ #include #include +#include #include // for EncodeBitstreamParams class #include // for OctreeElement::AppendState @@ -49,6 +50,7 @@ typedef std::shared_ptr EntityTreePointer; typedef std::shared_ptr EntityDynamicPointer; typedef std::shared_ptr EntityTreeElementPointer; using EntityTreeElementExtraEncodeDataPointer = std::shared_ptr; +using SetOfEntities = QSet; #define DONT_ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() = 0; #define ALLOW_INSTANTIATION virtual void pureVirtualFunctionPlaceHolder() override { }; @@ -514,7 +516,8 @@ public: // if this entity is an avatar entity, which avatar is it associated with? QUuid getOwningAvatarID() const { return _owningAvatarID; } - virtual void setOwningAvatarID(const QUuid& owningAvatarID) { _owningAvatarID = owningAvatarID; } + QUuid getOwningAvatarIDForProperties() const; + void setOwningAvatarID(const QUuid& owningAvatarID); virtual bool wantsHandControllerPointerEvents() const { return false; } virtual bool wantsKeyboardFocus() const { return false; } @@ -540,6 +543,8 @@ public: static QString _marketplacePublicKey; static void retrieveMarketplacePublicKey(); + void collectChildrenForDelete(SetOfEntities& entitiesToDelete, SetOfEntities& domainEntities, const QUuid& sessionID) const; + float getBoundingRadius() const { return _boundingRadius; } void setSpaceIndex(int32_t index); int32_t getSpaceIndex() const { return _spaceIndex; } diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 2b8f2b4c14..ae2e83affe 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -3936,7 +3936,7 @@ bool EntityItemProperties::decodeCloneEntityMessage(const QByteArray& buffer, in processedBytes = 0; if (NUM_BYTES_RFC4122_UUID * 2 > packetLength) { - qCDebug(entities) << "EntityItemProperties::processEraseMessageDetails().... bailing because not enough bytes in buffer"; + qCDebug(entities) << "EntityItemProperties::decodeCloneEntityMessage().... bailing because not enough bytes in buffer"; return false; // bail to prevent buffer overflow } diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 3305d9ba00..1ca6a5804f 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -480,17 +480,11 @@ QUuid EntityScriptingInterface::addEntityInternal(const EntityItemProperties& pr _activityTracking.addedEntityCount++; - auto nodeList = DependencyManager::get(); - auto sessionID = nodeList->getSessionUUID(); - EntityItemProperties propertiesWithSimID = properties; propertiesWithSimID.setEntityHostType(entityHostType); if (entityHostType == entity::HostType::AVATAR) { - if (sessionID.isNull()) { - // null sessionID is unacceptable in this case - sessionID = AVATAR_SELF_ID; - } - propertiesWithSimID.setOwningAvatarID(sessionID); + // only allow adding our own avatar entities from script + propertiesWithSimID.setOwningAvatarID(AVATAR_SELF_ID); } else if (entityHostType == entity::HostType::LOCAL) { // For now, local entities are always collisionless // TODO: create a separate, local physics simulation that just handles local entities (and MyAvatar?) @@ -498,6 +492,8 @@ QUuid EntityScriptingInterface::addEntityInternal(const EntityItemProperties& pr } // the created time will be set in EntityTree::addEntity by recordCreationTime() + auto nodeList = DependencyManager::get(); + auto sessionID = nodeList->getSessionUUID(); propertiesWithSimID.setLastEditedBy(sessionID); bool scalesWithParent = propertiesWithSimID.getScalesWithParent(); @@ -805,7 +801,7 @@ QUuid EntityScriptingInterface::editEntity(const QUuid& id, const EntityItemProp return; } - if (entity->isAvatarEntity() && entity->getOwningAvatarID() != sessionID && entity->getOwningAvatarID() != AVATAR_SELF_ID) { + if (entity->isAvatarEntity() && !entity->isMyAvatarEntity()) { // don't edit other avatar's avatarEntities properties = EntityItemProperties(); return; @@ -970,43 +966,52 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { _activityTracking.deletedEntityCount++; - EntityItemID entityID(id); - bool shouldSendDeleteToServer = true; - - // If we have a local entity tree set, then also update it. - if (_entityTree) { - _entityTree->withWriteLock([&] { - EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID); - if (entity) { - - auto nodeList = DependencyManager::get(); - const QUuid myNodeID = nodeList->getSessionUUID(); - if (entity->isAvatarEntity() && entity->getOwningAvatarID() != myNodeID) { - // don't delete other avatar's avatarEntities - shouldSendDeleteToServer = false; - return; - } - - if (entity->getLocked()) { - shouldSendDeleteToServer = false; - } else { - // only delete local entities, server entities will round trip through the server filters - if (!entity->isDomainEntity() || _entityTree->isServerlessMode()) { - shouldSendDeleteToServer = false; - _entityTree->deleteEntity(entityID); - - if (entity->isAvatarEntity() && getEntityPacketSender()->getMyAvatar()) { - getEntityPacketSender()->getMyAvatar()->clearAvatarEntity(entityID, false); - } - } - } - } - }); + if (!_entityTree) { + return; } - // if at this point, we know the id, and we should still delete the entity, send the update to the entity server - if (shouldSendDeleteToServer) { - getEntityPacketSender()->queueEraseEntityMessage(entityID); + EntityItemID entityID(id); + + // If we have a local entity tree set, then also update it. + SetOfEntities entitiesToDeleteImmediately; + SetOfEntities domainEntities; + _entityTree->withWriteLock([&] { + EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID); + if (entity) { + if (entity->isAvatarEntity() && !entity->isMyAvatarEntity()) { + // don't delete other avatar's avatarEntities + return; + } + if (entity->getLocked()) { + return; + } + + // Deleting an entity has consequences for linked children: some can be deleted but others can't. + // Local- and my-avatar-entities can be deleted immediately, but other-avatar-entities can't be deleted + // by this context, and domain-entity deletes must rountrip through the entity-server for authorization. + // So we recurse down the linked hierarchy and snarf children into two categories: + // (a) entitiesToDeleteImmediately and (b) domainEntntities. + if (entity->isDomainEntity()) { + domainEntities.insert(entity); + } else { + entitiesToDeleteImmediately.insert(entity); + const auto sessionID = DependencyManager::get()->getSessionUUID(); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, domainEntities, sessionID); + } + if (!entitiesToDeleteImmediately.empty()) { + _entityTree->deleteEntitiesByPointer(entitiesToDeleteImmediately); + } + } + }); + + foreach (auto entity, entitiesToDeleteImmediately) { + if (entity->isMyAvatarEntity()) { + getEntityPacketSender()->getMyAvatar()->clearAvatarEntity(entityID, false); + } + } + // finally ask entity-server to delete domainEntities + foreach (auto entity, domainEntities) { + getEntityPacketSender()->queueEraseEntityMessage(entity->getID()); } } @@ -1671,7 +1676,7 @@ bool EntityScriptingInterface::actionWorker(const QUuid& entityID, return; } - if (entity->isAvatarEntity() && entity->getOwningAvatarID() != myNodeID) { + if (entity->isAvatarEntity() && !entity->isMyAvatarEntity()) { return; } diff --git a/libraries/entities/src/EntitySimulation.cpp b/libraries/entities/src/EntitySimulation.cpp index 9f81572a4a..5576f21cc5 100644 --- a/libraries/entities/src/EntitySimulation.cpp +++ b/libraries/entities/src/EntitySimulation.cpp @@ -19,41 +19,36 @@ void EntitySimulation::setEntityTree(EntityTreePointer tree) { if (_entityTree && _entityTree != tree) { - _mortalEntities.clear(); - _nextExpiry = std::numeric_limits::max(); - _entitiesToUpdate.clear(); _entitiesToSort.clear(); _simpleKinematicEntities.clear(); + _changedEntities.clear(); + _entitiesToUpdate.clear(); + _mortalEntities.clear(); + _nextExpiry = std::numeric_limits::max(); } _entityTree = tree; } void EntitySimulation::updateEntities() { + PerformanceTimer perfTimer("EntitySimulation::updateEntities"); QMutexLocker lock(&_mutex); uint64_t now = usecTimestampNow(); - PerformanceTimer perfTimer("EntitySimulation::updateEntities"); // these methods may accumulate entries in _entitiesToBeDeleted expireMortalEntities(now); callUpdateOnEntitiesThatNeedIt(now); moveSimpleKinematics(now); - updateEntitiesInternal(now); sortEntitiesThatMoved(); + processDeadEntities(); } -void EntitySimulation::takeDeadEntities(SetOfEntities& entitiesToDelete) { - QMutexLocker lock(&_mutex); - entitiesToDelete.swap(_deadEntities); - _deadEntities.clear(); -} - -void EntitySimulation::removeEntityInternal(EntityItemPointer entity) { - // remove from all internal lists except _deadEntities - _mortalEntities.remove(entity); - _entitiesToUpdate.remove(entity); +void EntitySimulation::removeEntityFromInternalLists(EntityItemPointer entity) { + // remove from all internal lists except _deadEntitiesToRemoveFromTree _entitiesToSort.remove(entity); _simpleKinematicEntities.remove(entity); _allEntities.remove(entity); + _entitiesToUpdate.remove(entity); + _mortalEntities.remove(entity); entity->setSimulated(false); } @@ -62,10 +57,9 @@ void EntitySimulation::prepareEntityForDelete(EntityItemPointer entity) { assert(entity->isDead()); if (entity->isSimulated()) { QMutexLocker lock(&_mutex); - entity->clearActions(getThisPointer()); - removeEntityInternal(entity); + removeEntityFromInternalLists(entity); if (entity->getElement()) { - _deadEntities.insert(entity); + _deadEntitiesToRemoveFromTree.insert(entity); _entityTree->cleanupCloneIDs(entity->getEntityItemID()); } } @@ -149,10 +143,7 @@ void EntitySimulation::sortEntitiesThatMoved() { _entitiesToSort.clear(); } -void EntitySimulation::addEntity(EntityItemPointer entity) { - QMutexLocker lock(&_mutex); - assert(entity); - entity->deserializeActions(); +void EntitySimulation::addEntityToInternalLists(EntityItemPointer entity) { if (entity->isMortal()) { _mortalEntities.insert(entity); uint64_t expiry = entity->getExpiry(); @@ -163,10 +154,14 @@ void EntitySimulation::addEntity(EntityItemPointer entity) { if (entity->needsToCallUpdate()) { _entitiesToUpdate.insert(entity); } - addEntityInternal(entity); - _allEntities.insert(entity); entity->setSimulated(true); +} + +void EntitySimulation::addEntity(EntityItemPointer entity) { + QMutexLocker lock(&_mutex); + assert(entity); + addEntityToInternalLists(entity); // DirtyFlags are used to signal changes to entities that have already been added, // so we can clear them for this entity which has just been added. @@ -218,16 +213,14 @@ void EntitySimulation::processChangedEntity(const EntityItemPointer& entity) { void EntitySimulation::clearEntities() { QMutexLocker lock(&_mutex); - _mortalEntities.clear(); - _nextExpiry = std::numeric_limits::max(); - _entitiesToUpdate.clear(); _entitiesToSort.clear(); _simpleKinematicEntities.clear(); - - clearEntitiesInternal(); - + _changedEntities.clear(); _allEntities.clear(); - _deadEntities.clear(); + _deadEntitiesToRemoveFromTree.clear(); + _entitiesToUpdate.clear(); + _mortalEntities.clear(); + _nextExpiry = std::numeric_limits::max(); } void EntitySimulation::moveSimpleKinematics(uint64_t now) { @@ -263,25 +256,22 @@ void EntitySimulation::moveSimpleKinematics(uint64_t now) { } } -void EntitySimulation::addDynamic(EntityDynamicPointer dynamic) { - QMutexLocker lock(&_dynamicsMutex); - _dynamicsToAdd += dynamic; -} - -void EntitySimulation::removeDynamic(const QUuid dynamicID) { - QMutexLocker lock(&_dynamicsMutex); - _dynamicsToRemove += dynamicID; -} - -void EntitySimulation::removeDynamics(QList dynamicIDsToRemove) { - QMutexLocker lock(&_dynamicsMutex); - foreach(QUuid uuid, dynamicIDsToRemove) { - _dynamicsToRemove.insert(uuid); +void EntitySimulation::processDeadEntities() { + if (_deadEntitiesToRemoveFromTree.empty()) { + return; } -} - -void EntitySimulation::applyDynamicChanges() { - QMutexLocker lock(&_dynamicsMutex); - _dynamicsToAdd.clear(); - _dynamicsToRemove.clear(); + SetOfEntities entitiesToDeleteImmediately; + // NOTE: dummyList will be empty because this base-class implementation is only used server-side + // for which ATM we only process domain-entities, and since we are passing nullSessionID for authorization + // EntityItem::collectChildrenForDelete() will not collect domain-entities into this side list. + SetOfEntities dummyList; + QUuid nullSessionID; + foreach (auto entity, _deadEntitiesToRemoveFromTree) { + entitiesToDeleteImmediately.insert(entity); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, dummyList, nullSessionID); + } + if (_entityTree) { + _entityTree->deleteEntitiesByPointer(entitiesToDeleteImmediately); + } + _deadEntitiesToRemoveFromTree.clear(); } diff --git a/libraries/entities/src/EntitySimulation.h b/libraries/entities/src/EntitySimulation.h index 1dd0369561..646e5a0f67 100644 --- a/libraries/entities/src/EntitySimulation.h +++ b/libraries/entities/src/EntitySimulation.h @@ -16,17 +16,14 @@ #include #include -#include #include #include -#include "EntityDynamicInterface.h" #include "EntityItem.h" #include "EntityTree.h" using EntitySimulationPointer = std::shared_ptr; -using SetOfEntities = QSet; using VectorOfEntities = QVector; // the EntitySimulation needs to know when these things change on an entity, @@ -47,8 +44,8 @@ const int DIRTY_SIMULATION_FLAGS = class EntitySimulation : public QObject, public std::enable_shared_from_this { public: - EntitySimulation() : _mutex(QMutex::Recursive), _entityTree(NULL), _nextExpiry(std::numeric_limits::max()) { } - virtual ~EntitySimulation() { setEntityTree(NULL); } + EntitySimulation() : _mutex(QMutex::Recursive), _nextExpiry(std::numeric_limits::max()), _entityTree(nullptr) { } + virtual ~EntitySimulation() { setEntityTree(nullptr); } inline EntitySimulationPointer getThisPointer() const { return std::const_pointer_cast(shared_from_this()); @@ -57,12 +54,12 @@ public: /// \param tree pointer to EntityTree which is stored internally void setEntityTree(EntityTreePointer tree); - void updateEntities(); + virtual void updateEntities(); - virtual void addDynamic(EntityDynamicPointer dynamic); - virtual void removeDynamic(const QUuid dynamicID); - virtual void removeDynamics(QList dynamicIDsToRemove); - virtual void applyDynamicChanges(); + // FIXME: remove these + virtual void addDynamic(EntityDynamicPointer dynamic) {} + virtual void removeDynamic(const QUuid dynamicID) {} + virtual void applyDynamicChanges() {}; /// \param entity pointer to EntityItem to be added /// \sideeffect sets relevant backpointers in entity, but maybe later when appropriate data structures are locked @@ -72,27 +69,22 @@ public: /// call this whenever an entity was changed from some EXTERNAL event (NOT by the EntitySimulation itself) void changeEntity(EntityItemPointer entity); - void clearEntities(); + virtual void clearEntities(); void moveSimpleKinematics(uint64_t now); EntityTreePointer getEntityTree() { return _entityTree; } - virtual void takeDeadEntities(SetOfEntities& entitiesToDelete); - - /// \param entity pointer to EntityItem that needs to be put on the entitiesToDelete list and removed from others. virtual void prepareEntityForDelete(EntityItemPointer entity); void processChangedEntities(); + virtual void queueEraseDomainEntities(const SetOfEntities& domainEntities) const { } protected: - // These pure virtual methods are protected because they are not to be called will-nilly. The base class - // calls them in the right places. - virtual void updateEntitiesInternal(uint64_t now) = 0; - virtual void addEntityInternal(EntityItemPointer entity) = 0; - virtual void removeEntityInternal(EntityItemPointer entity); + virtual void addEntityToInternalLists(EntityItemPointer entity); + virtual void removeEntityFromInternalLists(EntityItemPointer entity); virtual void processChangedEntity(const EntityItemPointer& entity); - virtual void clearEntitiesInternal() = 0; + virtual void processDeadEntities(); void expireMortalEntities(uint64_t now); void callUpdateOnEntitiesThatNeedIt(uint64_t now); @@ -102,27 +94,21 @@ protected: SetOfEntities _entitiesToSort; // entities moved by simulation (and might need resort in EntityTree) SetOfEntities _simpleKinematicEntities; // entities undergoing non-colliding kinematic motion - QList _dynamicsToAdd; - QSet _dynamicsToRemove; - QMutex _dynamicsMutex { QMutex::Recursive }; - -protected: - SetOfEntities _deadEntities; // dead entities that might still be in the _entityTree + SetOfEntities _deadEntitiesToRemoveFromTree; private: void moveSimpleKinematics(); - // back pointer to EntityTree structure - EntityTreePointer _entityTree; - // We maintain multiple lists, each for its distinct purpose. // An entity may be in more than one list. std::unordered_set _changedEntities; // all changes this frame SetOfEntities _allEntities; // tracks all entities added the simulation + SetOfEntities _entitiesToUpdate; // entities that need to call EntityItem::update() SetOfEntities _mortalEntities; // entities that have an expiry uint64_t _nextExpiry; - SetOfEntities _entitiesToUpdate; // entities that need to call EntityItem::update() + // back pointer to EntityTree structure + EntityTreePointer _entityTree; }; #endif // hifi_EntitySimulation_h diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 6c12c6d019..f44f2eb7c5 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -98,14 +98,15 @@ void EntityTree::eraseDomainAndNonOwnedEntities() { if (element) { element->cleanupDomainAndNonOwnedEntities(); } - - if (entity->isLocalEntity() || (entity->isAvatarEntity() && entity->getOwningAvatarID() == getMyAvatarSessionUUID())) { - savedEntities[entity->getEntityItemID()] = entity; - } else { - int32_t spaceIndex = entity->getSpaceIndex(); - if (spaceIndex != -1) { - // stale spaceIndices will be freed later - _staleProxies.push_back(spaceIndex); + if (!getIsServer()) { + if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { + savedEntities[entity->getEntityItemID()] = entity; + } else { + int32_t spaceIndex = entity->getSpaceIndex(); + if (spaceIndex != -1) { + // stale spaceIndices will be freed later + _staleProxies.push_back(spaceIndex); + } } } } @@ -121,7 +122,7 @@ void EntityTree::eraseDomainAndNonOwnedEntities() { foreach (EntityItemWeakPointer entityItem, _needsParentFixup) { auto entity = entityItem.lock(); - if (entity && (entity->isLocalEntity() || (entity->isAvatarEntity() && entity->getOwningAvatarID() == getMyAvatarSessionUUID()))) { + if (entity && (entity->isLocalEntity() || entity->isMyAvatarEntity())) { needParentFixup.push_back(entityItem); } } @@ -144,10 +145,12 @@ void EntityTree::eraseAllOctreeElements(bool createNewRoot) { if (element) { element->cleanupEntities(); } - int32_t spaceIndex = entity->getSpaceIndex(); - if (spaceIndex != -1) { - // assume stale spaceIndices will be freed later - _staleProxies.push_back(spaceIndex); + if (!getIsServer()) { + int32_t spaceIndex = entity->getSpaceIndex(); + if (spaceIndex != -1) { + // assume stale spaceIndices will be freed later + _staleProxies.push_back(spaceIndex); + } } } }); @@ -605,61 +608,21 @@ void EntityTree::setSimulation(EntitySimulationPointer simulation) { } void EntityTree::deleteEntity(const EntityItemID& entityID, bool force, bool ignoreWarnings) { - EntityTreeElementPointer containingElement = getContainingElement(entityID); - if (!containingElement) { - if (!ignoreWarnings) { - qCWarning(entities) << "EntityTree::deleteEntity() on non-existent entityID=" << entityID; - } - return; - } - - EntityItemPointer existingEntity = containingElement->getEntityWithEntityItemID(entityID); - if (!existingEntity) { - if (!ignoreWarnings) { - qCWarning(entities) << "EntityTree::deleteEntity() on non-existant entity item with entityID=" << entityID; - } - return; - } - - if (existingEntity->getLocked() && !force) { - if (!ignoreWarnings) { - qCDebug(entities) << "ERROR! EntityTree::deleteEntity() trying to delete locked entity. entityID=" << entityID; - } - return; - } - - cleanupCloneIDs(entityID); - unhookChildAvatar(entityID); - emit deletingEntity(entityID); - emit deletingEntityPointer(existingEntity.get()); - - // NOTE: callers must lock the tree before using this method - DeleteEntityOperator theOperator(getThisPointer(), entityID); - - existingEntity->forEachDescendant([&](SpatiallyNestablePointer descendant) { - auto descendantID = descendant->getID(); - theOperator.addEntityIDToDeleteList(descendantID); - emit deletingEntity(descendantID); - EntityItemPointer descendantEntity = std::dynamic_pointer_cast(descendant); - if (descendantEntity) { - emit deletingEntityPointer(descendantEntity.get()); - } - }); - - recurseTreeWithOperator(&theOperator); - processRemovedEntities(theOperator); - _isDirty = true; + // NOTE: can be called without lock because deleteEntitiesByID() will lock + QSet ids; + ids << entityID; + deleteEntitiesByID(ids, force, ignoreWarnings); } void EntityTree::unhookChildAvatar(const EntityItemID entityID) { - - EntityItemPointer entity = findEntityByEntityItemID(entityID); - - entity->forEachDescendant([&](SpatiallyNestablePointer child) { - if (child->getNestableType() == NestableType::Avatar) { - child->setParentID(nullptr); - } - }); + if (!getIsServer()) { + EntityItemPointer entity = findEntityByEntityItemID(entityID); + entity->forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Avatar) { + child->setParentID(nullptr); + } + }); + } } void EntityTree::cleanupCloneIDs(const EntityItemID& entityID) { @@ -684,39 +647,100 @@ void EntityTree::cleanupCloneIDs(const EntityItemID& entityID) { } } -void EntityTree::deleteEntities(QSet entityIDs, bool force, bool ignoreWarnings) { - // NOTE: callers must lock the tree before using this method +void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, SetOfEntities& entitiesToDelete, bool force) const { + // tree must be read-locked before calling this method + //TODO: assert(treeIsLocked); + assert(entity); + if (entity->getElement() && (entitiesToDelete.find(entity) == entitiesToDelete.end())) { + // filter + bool allowed = force; + if (!allowed) { + bool wasChanged = false; + auto startFilter = usecTimestampNow(); + EntityItemProperties dummyProperties; + allowed = force || filterProperties(entity, dummyProperties, dummyProperties, wasChanged, FilterType::Delete); + auto endFilter = usecTimestampNow(); + _totalFilterTime += endFilter - startFilter; + } + if (allowed) { + entitiesToDelete.insert(entity); + for (SpatiallyNestablePointer child : entity->getChildren()) { + if (child && child->getNestableType() == NestableType::Entity) { + EntityItemPointer childEntity = std::static_pointer_cast(child); + recursivelyFilterAndCollectForDelete(childEntity, entitiesToDelete, force); + } + } + } + } +} + +void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, bool ignoreWarnings) { + // this method has two paths: + // (a) entity-server: applies delete filter + // (b) interface-client: deletes local- and my-avatar-entities immediately, submits domainEntity deletes to the entity-server + if (getIsServer()) { + withWriteLock([&] { + SetOfEntities entitiesToDelete; + for (auto id : ids) { + EntityItemPointer entity; + { + QReadLocker locker(&_entityMapLock); + entity = _entityMap.value(id); + } + if (entity) { + recursivelyFilterAndCollectForDelete(entity, entitiesToDelete, force); + } + } + if (!entitiesToDelete.empty()) { + deleteEntitiesByPointer(entitiesToDelete); + } + }); + } else { + SetOfEntities entitiesToDelete; + SetOfEntities domainEntities; + QUuid sessionID = DependencyManager::get()->getSessionUUID(); + withWriteLock([&] { + for (auto id : ids) { + EntityItemPointer entity; + { + QReadLocker locker(&_entityMapLock); + entity = _entityMap.value(id); + } + if (entity) { + if (entity->isDomainEntity()) { + domainEntities.insert(entity); + } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { + entitiesToDelete.insert(entity); + entity->collectChildrenForDelete(entitiesToDelete, domainEntities, sessionID); + } + } + } + if (!entitiesToDelete.empty()) { + deleteEntitiesByPointer(entitiesToDelete); + } + }); + if (!domainEntities.empty() && _simulation) { + // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server + _simulation->queueEraseDomainEntities(domainEntities); + } + } +} + +void EntityTree::deleteEntitiesByPointer(const SetOfEntities& entities) { + // tree must be write-locked before calling this method + //TODO: assert(treeIsLocked); + // NOTE: there is no entity validation (i.e. is entity in tree?) nor snarfing of children beyond this point. + // Get those done BEFORE calling this method. + for (auto entity : entities) { + cleanupCloneIDs(entity->getID()); + } DeleteEntityOperator theOperator(getThisPointer()); - foreach(const EntityItemID& entityID, entityIDs) { - EntityTreeElementPointer containingElement = getContainingElement(entityID); - if (!containingElement) { - if (!ignoreWarnings) { - qCWarning(entities) << "EntityTree::deleteEntities() on non-existent entityID=" << entityID; - } - continue; + for (auto entity : entities) { + if (entity->getElement()) { + theOperator.addEntityToDeleteList(entity); + emit deletingEntity(entity->getID()); + emit deletingEntityPointer(entity.get()); } - - EntityItemPointer existingEntity = containingElement->getEntityWithEntityItemID(entityID); - if (!existingEntity) { - if (!ignoreWarnings) { - qCWarning(entities) << "EntityTree::deleteEntities() on non-existent entity item with entityID=" << entityID; - } - continue; - } - - if (existingEntity->getLocked() && !force) { - if (!ignoreWarnings) { - qCDebug(entities) << "ERROR! EntityTree::deleteEntities() trying to delete locked entity. entityID=" << entityID; - } - continue; - } - - // tell our delete operator about this entityID - cleanupCloneIDs(entityID); - unhookChildAvatar(entityID); - theOperator.addEntityIDToDeleteList(entityID); - emit deletingEntity(entityID); - emit deletingEntityPointer(existingEntity.get()); } if (!theOperator.getEntities().empty()) { @@ -727,23 +751,11 @@ void EntityTree::deleteEntities(QSet entityIDs, bool force, bool i } void EntityTree::processRemovedEntities(const DeleteEntityOperator& theOperator) { + // NOTE: assume tree already write-locked because this method only called in deleteEntitiesByPointer() quint64 deletedAt = usecTimestampNow(); const RemovedEntities& entities = theOperator.getEntities(); foreach(const EntityToDeleteDetails& details, entities) { EntityItemPointer theEntity = details.entity; - - if (getIsServer()) { - QSet childrenIDs; - theEntity->forEachChild([&](SpatiallyNestablePointer child) { - if (child->getNestableType() == NestableType::Entity) { - childrenIDs += child->getID(); - } - }); - deleteEntities(childrenIDs, true, true); - } - - theEntity->die(); - if (getIsServer()) { removeCertifiedEntityOnServer(theEntity); @@ -751,19 +763,24 @@ void EntityTree::processRemovedEntities(const DeleteEntityOperator& theOperator) QWriteLocker recentlyDeletedEntitiesLocker(&_recentlyDeletedEntitiesLock); _recentlyDeletedEntityItemIDs.insert(deletedAt, theEntity->getEntityItemID()); } else { + theEntity->forEachDescendant([&](SpatiallyNestablePointer child) { + if (child->getNestableType() == NestableType::Avatar) { + child->setParentID(nullptr); + } + }); + // on the client side, we also remember that we deleted this entity, we don't care about the time trackDeletedEntity(theEntity->getEntityItemID()); - } + int32_t spaceIndex = theEntity->getSpaceIndex(); + if (spaceIndex != -1) { + // stale spaceIndices will be freed later + _staleProxies.push_back(spaceIndex); + } + } if (theEntity->isSimulated()) { _simulation->prepareEntityForDelete(theEntity); } - - int32_t spaceIndex = theEntity->getSpaceIndex(); - if (spaceIndex != -1) { - // stale spaceIndices will be freed later - _staleProxies.push_back(spaceIndex); - } } } @@ -1369,7 +1386,7 @@ void EntityTree::fixupTerseEditLogging(EntityItemProperties& properties, QList(); if (entityEditFilters) { @@ -1749,9 +1766,9 @@ void EntityTree::processChallengeOwnershipPacket(ReceivedMessage& message, const } } +// NOTE: Caller must lock the tree before calling this. int EntityTree::processEditPacketData(ReceivedMessage& message, const unsigned char* editData, int maxLength, const SharedNodePointer& senderNode) { - if (!getIsServer()) { qCWarning(entities) << "EntityTree::processEditPacketData() should only be called on a server tree."; return 0; @@ -2217,7 +2234,9 @@ void EntityTree::fixupNeedsParentFixups() { void EntityTree::deleteDescendantsOfAvatar(QUuid avatarID) { if (_childrenOfAvatars.contains(avatarID)) { - deleteEntities(_childrenOfAvatars[avatarID]); + bool force = true; + bool ignoreWarnings = true; + deleteEntitiesByID(_childrenOfAvatars[avatarID], force, ignoreWarnings); _childrenOfAvatars.remove(avatarID); } } @@ -2249,22 +2268,6 @@ void EntityTree::update(bool simulate) { if (simulate && _simulation) { withWriteLock([&] { _simulation->updateEntities(); - { - PROFILE_RANGE(simulation_physics, "Deletes"); - SetOfEntities deadEntities; - _simulation->takeDeadEntities(deadEntities); - if (!deadEntities.empty()) { - // translate into list of ID's - QSet idsToDelete; - - for (auto entity : deadEntities) { - idsToDelete.insert(entity->getEntityItemID()); - } - - // delete these things the roundabout way - deleteEntities(idsToDelete, true); - } - } }); } } @@ -2353,12 +2356,17 @@ bool EntityTree::shouldEraseEntity(EntityItemID entityID, const SharedNodePointe return allowed; } - -// TODO: consider consolidating processEraseMessageDetails() and processEraseMessage() int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePointer& sourceNode) { + // NOTE: this is only called by the interface-client on receipt of deleteEntity message from entity-server. + // Which means this is a state synchronization message from the the entity-server. It is saying + // "The following domain-entities have already been deleted". While need to perform sanity checking + // (e.g. verify these are domain entities) permissions need NOT checked for the domain-entities. + assert(!getIsServer()); + // TODO: remove this stuff out of EntityTree:: and into interface-client code. #ifdef EXTRA_ERASE_DEBUGGING qCDebug(entities) << "EntityTree::processEraseMessage()"; #endif + SetOfEntities consequentialDomainEntities; withWriteLock([&] { message.seek(sizeof(OCTREE_PACKET_FLAGS) + sizeof(OCTREE_PACKET_SEQUENCE) + sizeof(OCTREE_PACKET_SENT_TIME)); @@ -2366,10 +2374,9 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo message.readPrimitive(&numberOfIDs); if (numberOfIDs > 0) { - QSet entityItemIDsToDelete; + QSet idsToDelete; for (size_t i = 0; i < numberOfIDs; i++) { - if (NUM_BYTES_RFC4122_UUID > message.getBytesLeftToRead()) { qCDebug(entities) << "EntityTree::processEraseMessage().... bailing because not enough bytes in buffer"; break; // bail to prevent buffer overflow @@ -2381,64 +2388,85 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo #endif EntityItemID entityItemID(entityID); + idsToDelete << entityItemID; + } - if (shouldEraseEntity(entityID, sourceNode)) { - entityItemIDsToDelete << entityItemID; - cleanupCloneIDs(entityItemID); + // domain-entity deletion can trigger deletion of other entities the entity-server doesn't know about + // so we must recurse down the children and collect consequential deletes however + // we must first identify all domain-entities in idsToDelete so as to not overstep entity-server's authority + SetOfEntities domainEntities; + for (auto id : idsToDelete) { + EntityItemPointer entity = _entityMap.value(id); + if (entity && entity->isDomainEntity()) { + domainEntities.insert(entity); } } - deleteEntities(entityItemIDsToDelete, true, true); + // now we recurse domain-entities children and snarf consequential entities + auto nodeList = DependencyManager::get(); + QUuid sessionID = nodeList->getSessionUUID(); + // NOTE: normally a null sessionID would be bad, as that would cause the collectDhildrenForDelete() method below + // to snarf domain entities for which the interface-client is not authorized to delete without explicit instructions + // from the entity-server, however it is ok here because that would mean: + // (a) interface-client is not connected to a domain which means... + // (b) we should never get here (since this would correspond to a message from the entity-server) but... + // (c) who cares? When not connected to a domain the interface-client can do whatever it wants. + SetOfEntities entitiesToDelete; + for (auto entity : domainEntities) { + entitiesToDelete.insert(entity); + entity->collectChildrenForDelete(entitiesToDelete, consequentialDomainEntities, sessionID); + } + + if (!entitiesToDelete.empty()) { + deleteEntitiesByPointer(entitiesToDelete); + } } }); + if (!consequentialDomainEntities.empty() && _simulation) { + _simulation->queueEraseDomainEntities(consequentialDomainEntities); + } return message.getPosition(); } // This version skips over the header -// NOTE: Caller must lock the tree before calling this. -// TODO: consider consolidating processEraseMessageDetails() and processEraseMessage() +// NOTE: Caller must write-lock the tree before calling this. int EntityTree::processEraseMessageDetails(const QByteArray& dataByteArray, const SharedNodePointer& sourceNode) { + //TODO: assert(treeIsLocked); + assert(getIsServer()); #ifdef EXTRA_ERASE_DEBUGGING qCDebug(entities) << "EntityTree::processEraseMessageDetails()"; #endif - const unsigned char* packetData = (const unsigned char*)dataByteArray.constData(); - const unsigned char* dataAt = packetData; size_t packetLength = dataByteArray.size(); size_t processedBytes = 0; uint16_t numberOfIds = 0; // placeholder for now - memcpy(&numberOfIds, dataAt, sizeof(numberOfIds)); - dataAt += sizeof(numberOfIds); + memcpy(&numberOfIds, dataByteArray.constData(), sizeof(numberOfIds)); processedBytes += sizeof(numberOfIds); if (numberOfIds > 0) { - QSet entityItemIDsToDelete; + QSet ids; + // extract ids from packet for (size_t i = 0; i < numberOfIds; i++) { - - if (processedBytes + NUM_BYTES_RFC4122_UUID > packetLength) { qCDebug(entities) << "EntityTree::processEraseMessageDetails().... bailing because not enough bytes in buffer"; break; // bail to prevent buffer overflow } QByteArray encodedID = dataByteArray.mid((int)processedBytes, NUM_BYTES_RFC4122_UUID); - QUuid entityID = QUuid::fromRfc4122(encodedID); - dataAt += encodedID.size(); + QUuid id = QUuid::fromRfc4122(encodedID); processedBytes += encodedID.size(); #ifdef EXTRA_ERASE_DEBUGGING - qCDebug(entities) << " ---- EntityTree::processEraseMessageDetails() contains id:" << entityID; + qCDebug(entities) << " ---- EntityTree::processEraseMessageDetails() contains id:" << id; #endif - EntityItemID entityItemID(entityID); - - if (shouldEraseEntity(entityID, sourceNode)) { - entityItemIDsToDelete << entityItemID; - cleanupCloneIDs(entityItemID); - } - + EntityItemID entityID(id); + ids << entityID; } - deleteEntities(entityItemIDsToDelete, true, true); + + bool force = sourceNode->isAllowedEditor(); + bool ignoreWarnings = true; + deleteEntitiesByID(ids, force, ignoreWarnings); } return (int)processedBytes; } diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index 9108f8d8d2..6574b9d601 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -126,7 +126,9 @@ public: void unhookChildAvatar(const EntityItemID entityID); void cleanupCloneIDs(const EntityItemID& entityID); void deleteEntity(const EntityItemID& entityID, bool force = false, bool ignoreWarnings = true); - void deleteEntities(QSet entityIDs, bool force = false, bool ignoreWarnings = true); + + void deleteEntitiesByID(const QSet& entityIDs, bool force = false, bool ignoreWarnings = true); + void deleteEntitiesByPointer(const SetOfEntities& entities); EntityItemPointer findEntityByID(const QUuid& id) const; EntityItemPointer findEntityByEntityItemID(const EntityItemID& entityID) const; @@ -291,6 +293,7 @@ signals: protected: + void recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, SetOfEntities& entitiesToDelete, bool force) const; void processRemovedEntities(const DeleteEntityOperator& theOperator); bool updateEntity(EntityItemPointer entity, const EntityItemProperties& properties, const SharedNodePointer& senderNode = SharedNodePointer(nullptr)); @@ -339,12 +342,12 @@ protected: int _totalEditMessages = 0; int _totalUpdates = 0; int _totalCreates = 0; - quint64 _totalDecodeTime = 0; - quint64 _totalLookupTime = 0; - quint64 _totalUpdateTime = 0; - quint64 _totalCreateTime = 0; - quint64 _totalLoggingTime = 0; - quint64 _totalFilterTime = 0; + mutable quint64 _totalDecodeTime = 0; + mutable quint64 _totalLookupTime = 0; + mutable quint64 _totalUpdateTime = 0; + mutable quint64 _totalCreateTime = 0; + mutable quint64 _totalLoggingTime = 0; + mutable quint64 _totalFilterTime = 0; // these performance statistics are only used in the client void resetClientEditStats(); @@ -364,7 +367,7 @@ protected: float _maxTmpEntityLifetime { DEFAULT_MAX_TMP_ENTITY_LIFETIME }; - bool filterProperties(EntityItemPointer& existingEntity, EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged, FilterType filterType); + bool filterProperties(const EntityItemPointer& existingEntity, EntityItemProperties& propertiesIn, EntityItemProperties& propertiesOut, bool& wasChanged, FilterType filterType) const; bool _hasEntityEditFilter{ false }; QStringList _entityScriptSourceWhitelist; diff --git a/libraries/entities/src/EntityTreeElement.cpp b/libraries/entities/src/EntityTreeElement.cpp index 60eaafc0dd..0096319081 100644 --- a/libraries/entities/src/EntityTreeElement.cpp +++ b/libraries/entities/src/EntityTreeElement.cpp @@ -705,7 +705,7 @@ void EntityTreeElement::cleanupDomainAndNonOwnedEntities() { withWriteLock([&] { EntityItems savedEntities; foreach(EntityItemPointer entity, _entityItems) { - if (!(entity->isLocalEntity() || (entity->isAvatarEntity() && entity->getOwningAvatarID() == getTree()->getMyAvatarSessionUUID()))) { + if (!(entity->isLocalEntity() || entity->isMyAvatarEntity())) { entity->preDelete(); entity->_element = NULL; } else { diff --git a/libraries/entities/src/SimpleEntitySimulation.cpp b/libraries/entities/src/SimpleEntitySimulation.cpp index b8e3df2d03..d64efdf87f 100644 --- a/libraries/entities/src/SimpleEntitySimulation.cpp +++ b/libraries/entities/src/SimpleEntitySimulation.cpp @@ -47,14 +47,17 @@ void SimpleEntitySimulation::clearOwnership(const QUuid& ownerID) { } } -void SimpleEntitySimulation::updateEntitiesInternal(uint64_t now) { +void SimpleEntitySimulation::updateEntities() { + EntitySimulation::updateEntities(); + QMutexLocker lock(&_mutex); + uint64_t now = usecTimestampNow(); expireStaleOwnerships(now); stopOwnerlessEntities(now); } -void SimpleEntitySimulation::addEntityInternal(EntityItemPointer entity) { +void SimpleEntitySimulation::addEntityToInternalLists(EntityItemPointer entity) { + EntitySimulation::addEntityToInternalLists(entity); if (entity->getSimulatorID().isNull()) { - QMutexLocker lock(&_mutex); if (entity->getDynamic()) { // we don't allow dynamic objects to move without an owner so nothing to do here } else if (entity->isMovingRelativeToParent()) { @@ -65,7 +68,6 @@ void SimpleEntitySimulation::addEntityInternal(EntityItemPointer entity) { } } } else { - QMutexLocker lock(&_mutex); _entitiesWithSimulationOwner.insert(entity); _nextStaleOwnershipExpiry = glm::min(_nextStaleOwnershipExpiry, entity->getSimulationOwnershipExpiry()); @@ -79,10 +81,10 @@ void SimpleEntitySimulation::addEntityInternal(EntityItemPointer entity) { } } -void SimpleEntitySimulation::removeEntityInternal(EntityItemPointer entity) { - EntitySimulation::removeEntityInternal(entity); +void SimpleEntitySimulation::removeEntityFromInternalLists(EntityItemPointer entity) { _entitiesWithSimulationOwner.remove(entity); _entitiesThatNeedSimulationOwner.remove(entity); + EntitySimulation::removeEntityFromInternalLists(entity); } void SimpleEntitySimulation::processChangedEntity(const EntityItemPointer& entity) { @@ -135,10 +137,11 @@ void SimpleEntitySimulation::processChangedEntity(const EntityItemPointer& entit entity->clearDirtyFlags(); } -void SimpleEntitySimulation::clearEntitiesInternal() { +void SimpleEntitySimulation::clearEntities() { QMutexLocker lock(&_mutex); _entitiesWithSimulationOwner.clear(); _entitiesThatNeedSimulationOwner.clear(); + EntitySimulation::clearEntities(); } void SimpleEntitySimulation::sortEntitiesThatMoved() { diff --git a/libraries/entities/src/SimpleEntitySimulation.h b/libraries/entities/src/SimpleEntitySimulation.h index 1b240a8bf0..e984b72ed4 100644 --- a/libraries/entities/src/SimpleEntitySimulation.h +++ b/libraries/entities/src/SimpleEntitySimulation.h @@ -23,16 +23,16 @@ using SimpleEntitySimulationPointer = std::shared_ptr; class SimpleEntitySimulation : public EntitySimulation { public: SimpleEntitySimulation() : EntitySimulation() { } - ~SimpleEntitySimulation() { clearEntitiesInternal(); } + ~SimpleEntitySimulation() { clearEntities(); } void clearOwnership(const QUuid& ownerID); + void clearEntities() override; + void updateEntities() override; protected: - void updateEntitiesInternal(uint64_t now) override; - void addEntityInternal(EntityItemPointer entity) override; - void removeEntityInternal(EntityItemPointer entity) override; + void addEntityToInternalLists(EntityItemPointer entity) override; + void removeEntityFromInternalLists(EntityItemPointer entity) override; void processChangedEntity(const EntityItemPointer& entity) override; - void clearEntitiesInternal() override; void sortEntitiesThatMoved() override; diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index e48f0603bd..f3d129871f 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -62,7 +62,7 @@ EntityMotionState::EntityMotionState(btCollisionShape* shape, EntityItemPointer // rather than pass the legit shape pointer to the ObjectMotionState ctor above. setShape(shape); - if (_entity->isAvatarEntity() && _entity->getOwningAvatarID() != Physics::getSessionUUID()) { + if (_entity->isAvatarEntity() && !_entity->isMyAvatarEntity()) { // avatar entities are always thus, so we cache this fact in _ownershipState _ownershipState = EntityMotionState::OwnershipState::Unownable; } @@ -407,8 +407,8 @@ bool EntityMotionState::shouldSendUpdate(uint32_t simulationStep) { // NOTE: we expect _entity and _body to be valid in this context, since shouldSendUpdate() is only called // after doesNotNeedToSendUpdate() returns false and that call should return 'true' if _entity or _body are NULL. - // this case is prevented by setting _ownershipState to UNOWNABLE in EntityMotionState::ctor - assert(!(_entity->isAvatarEntity() && _entity->getOwningAvatarID() != Physics::getSessionUUID())); + // this case is prevented by setting _ownershipState to OwnershipState::Unownable in EntityMotionState::ctor + assert(!(_entity->isAvatarEntity() && !_entity->isMyAvatarEntity())); if (_entity->getTransitingWithAvatar()) { return false; @@ -768,7 +768,7 @@ uint8_t EntityMotionState::computeFinalBidPriority() const { } bool EntityMotionState::isLocallyOwned() const { - return _entity->getSimulatorID() == Physics::getSessionUUID(); + return _entity->getSimulatorID() == Physics::getSessionUUID() || _entity->isMyAvatarEntity(); } bool EntityMotionState::isLocallyOwnedOrShouldBe() const { @@ -786,13 +786,21 @@ void EntityMotionState::setRegion(uint8_t region) { } void EntityMotionState::initForBid() { - assert(_ownershipState != EntityMotionState::OwnershipState::Unownable); - _ownershipState = EntityMotionState::OwnershipState::PendingBid; + if (_ownershipState != EntityMotionState::OwnershipState::Unownable) { + _ownershipState = EntityMotionState::OwnershipState::PendingBid; + } } void EntityMotionState::initForOwned() { - assert(_ownershipState != EntityMotionState::OwnershipState::Unownable); - _ownershipState = EntityMotionState::OwnershipState::LocallyOwned; + if (_ownershipState != EntityMotionState::OwnershipState::Unownable) { + _ownershipState = EntityMotionState::OwnershipState::LocallyOwned; + } +} + +void EntityMotionState::clearOwnershipState() { + if (_ownershipState != OwnershipState::Unownable) { + _ownershipState = OwnershipState::NotLocallyOwned; + } } void EntityMotionState::clearObjectVelocities() const { diff --git a/libraries/physics/src/EntityMotionState.h b/libraries/physics/src/EntityMotionState.h index 7456837777..be6f5c0658 100644 --- a/libraries/physics/src/EntityMotionState.h +++ b/libraries/physics/src/EntityMotionState.h @@ -107,7 +107,7 @@ protected: uint64_t getNextBidExpiry() const { return _nextBidExpiry; } void initForBid(); void initForOwned(); - void clearOwnershipState() { _ownershipState = OwnershipState::NotLocallyOwned; } + void clearOwnershipState(); void updateServerPhysicsVariables(); bool remoteSimulationOutOfSync(uint32_t simulationStep); diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index df8c3fa32e..0375e1dfd9 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -40,14 +40,9 @@ void PhysicalEntitySimulation::init( } // begin EntitySimulation overrides -void PhysicalEntitySimulation::updateEntitiesInternal(uint64_t now) { - // Do nothing here because the "internal" update the PhysicsEngine::stepSimulation() which is done elsewhere. -} - -void PhysicalEntitySimulation::addEntityInternal(EntityItemPointer entity) { - QMutexLocker lock(&_mutex); - assert(entity); - assert(!entity->isDead()); +void PhysicalEntitySimulation::addEntityToInternalLists(EntityItemPointer entity) { + EntitySimulation::addEntityToInternalLists(entity); + entity->deserializeActions(); // TODO: do this elsewhere uint8_t region = _space->getRegion(entity->getSpaceIndex()); bool maybeShouldBePhysical = (region < workload::Region::R3 || region == workload::Region::UNKNOWN) && entity->shouldBePhysical(); bool canBeKinematic = region <= workload::Region::R3; @@ -66,23 +61,20 @@ void PhysicalEntitySimulation::addEntityInternal(EntityItemPointer entity) { } } -void PhysicalEntitySimulation::removeEntityInternal(EntityItemPointer entity) { - if (entity->isSimulated()) { - EntitySimulation::removeEntityInternal(entity); - _entitiesToAddToPhysics.remove(entity); - - EntityMotionState* motionState = static_cast(entity->getPhysicsInfo()); - if (motionState) { - removeOwnershipData(motionState); - _entitiesToRemoveFromPhysics.insert(entity); - } - if (entity->isDead() && entity->getElement()) { - _deadEntities.insert(entity); - } +void PhysicalEntitySimulation::removeEntityFromInternalLists(EntityItemPointer entity) { + _entitiesToAddToPhysics.remove(entity); + EntityMotionState* motionState = static_cast(entity->getPhysicsInfo()); + if (motionState) { + removeOwnershipData(motionState); + _entitiesToRemoveFromPhysics.insert(entity); + } + if (entity->isDead() && entity->getElement()) { + _deadEntitiesToRemoveFromTree.insert(entity); } if (entity->isAvatarEntity()) { _deadAvatarEntities.insert(entity); } + EntitySimulation::removeEntityFromInternalLists(entity); } void PhysicalEntitySimulation::removeOwnershipData(EntityMotionState* motionState) { @@ -115,18 +107,6 @@ void PhysicalEntitySimulation::clearOwnershipData() { _bids.clear(); } -void PhysicalEntitySimulation::takeDeadEntities(SetOfEntities& deadEntities) { - QMutexLocker lock(&_mutex); - for (auto entity : _deadEntities) { - EntityMotionState* motionState = static_cast(entity->getPhysicsInfo()); - if (motionState) { - _entitiesToRemoveFromPhysics.insert(entity); - } - } - _deadEntities.swap(deadEntities); - _deadEntities.clear(); -} - void PhysicalEntitySimulation::takeDeadAvatarEntities(SetOfEntities& deadEntities) { _deadAvatarEntities.swap(deadEntities); _deadAvatarEntities.clear(); @@ -190,11 +170,44 @@ void PhysicalEntitySimulation::processChangedEntity(const EntityItemPointer& ent } } -void PhysicalEntitySimulation::clearEntitiesInternal() { +void PhysicalEntitySimulation::processDeadEntities() { + if (_deadEntitiesToRemoveFromTree.empty()) { + return; + } + PROFILE_RANGE(simulation_physics, "Deletes"); + SetOfEntities entitiesToDeleteImmediately; + SetOfEntities domainEntities; + QUuid sessionID = Physics::getSessionUUID(); + QMutexLocker lock(&_mutex); + for (auto entity : _deadEntitiesToRemoveFromTree) { + EntityMotionState* motionState = static_cast(entity->getPhysicsInfo()); + if (motionState) { + _entitiesToRemoveFromPhysics.insert(entity); + } + if (entity->isDomainEntity()) { + domainEntities.insert(entity); + } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { + entitiesToDeleteImmediately.insert(entity); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, domainEntities, sessionID); + } + } + _deadEntitiesToRemoveFromTree.clear(); + + // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server + for (auto entity : domainEntities) { + _entityPacketSender->queueEraseEntityMessage(entity->getID()); + } + if (!entitiesToDeleteImmediately.empty()) { + getEntityTree()->deleteEntitiesByPointer(entitiesToDeleteImmediately); + } +} + +void PhysicalEntitySimulation::clearEntities() { // TODO: we should probably wait to lock the _physicsEngine so we don't mess up data structures // while it is in the middle of a simulation step. As it is, we're probably in shutdown mode // anyway, so maybe the simulation was already properly shutdown? Cross our fingers... + QMutexLocker lock(&_mutex); // remove the objects (aka MotionStates) from physics _physicsEngine->removeSetOfObjects(_physicalObjects); @@ -216,11 +229,23 @@ void PhysicalEntitySimulation::clearEntitiesInternal() { _entitiesToAddToPhysics.clear(); _incomingChanges.clear(); _entitiesToDeleteLater.clear(); + + EntitySimulation::clearEntities(); +} + +void PhysicalEntitySimulation::queueEraseDomainEntities(const SetOfEntities& domainEntities) const { + if (_entityPacketSender) { + for (auto domainEntity : domainEntities) { + assert(domainEntity->isDomainEntity()); + _entityPacketSender->queueEraseEntityMessage(domainEntity->getID()); + } + } } // virtual void PhysicalEntitySimulation::prepareEntityForDelete(EntityItemPointer entity) { - // this can be called on any thread + // DANGER! this can be called on any thread + // do no dirty deeds here --> assemble list for later assert(entity); assert(entity->isDead()); QMutexLocker lock(&_mutex); @@ -228,11 +253,11 @@ void PhysicalEntitySimulation::prepareEntityForDelete(EntityItemPointer entity) } void PhysicalEntitySimulation::removeDeadEntities() { - // only ever call this on the main thread + // DANGER! only ever call this on the main thread QMutexLocker lock(&_mutex); for (auto& entity : _entitiesToDeleteLater) { entity->clearActions(getThisPointer()); - removeEntityInternal(entity); + EntitySimulation::prepareEntityForDelete(entity); } _entitiesToDeleteLater.clear(); } @@ -647,10 +672,16 @@ void PhysicalEntitySimulation::addDynamic(EntityDynamicPointer dynamic) { "dynamic that was already in _physicsEngine"; } } - EntitySimulation::addDynamic(dynamic); + QMutexLocker lock(&_dynamicsMutex); + _dynamicsToAdd += dynamic; } } +void PhysicalEntitySimulation::removeDynamic(const QUuid dynamicID) { + QMutexLocker lock(&_dynamicsMutex); + _dynamicsToRemove += dynamicID; +} + void PhysicalEntitySimulation::applyDynamicChanges() { QList dynamicsFailedToAdd; if (_physicsEngine) { @@ -665,8 +696,8 @@ void PhysicalEntitySimulation::applyDynamicChanges() { } } } - // applyDynamicChanges will clear _dynamicsToRemove and _dynamicsToAdd - EntitySimulation::applyDynamicChanges(); + _dynamicsToAdd.clear(); + _dynamicsToRemove.clear(); } // put back the ones that couldn't yet be added diff --git a/libraries/physics/src/PhysicalEntitySimulation.h b/libraries/physics/src/PhysicalEntitySimulation.h index f5213f7fef..a3bd60b96e 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.h +++ b/libraries/physics/src/PhysicalEntitySimulation.h @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -58,22 +59,24 @@ public: void init(EntityTreePointer tree, PhysicsEnginePointer engine, EntityEditPacketSender* packetSender); void setWorkloadSpace(const workload::SpacePointer space) { _space = space; } - virtual void addDynamic(EntityDynamicPointer dynamic) override; - virtual void applyDynamicChanges() override; + void addDynamic(EntityDynamicPointer dynamic) override; + void removeDynamic(const QUuid dynamicID) override; + void applyDynamicChanges() override; - virtual void takeDeadEntities(SetOfEntities& deadEntities) override; void takeDeadAvatarEntities(SetOfEntities& deadEntities); + virtual void clearEntities() override; + void queueEraseDomainEntities(const SetOfEntities& domainEntities) const override; + signals: void entityCollisionWithEntity(const EntityItemID& idA, const EntityItemID& idB, const Collision& collision); protected: // only called by EntitySimulation // overrides for EntitySimulation - virtual void updateEntitiesInternal(uint64_t now) override; - virtual void addEntityInternal(EntityItemPointer entity) override; - virtual void removeEntityInternal(EntityItemPointer entity) override; + void addEntityToInternalLists(EntityItemPointer entity) override; + void removeEntityFromInternalLists(EntityItemPointer entity) override; void processChangedEntity(const EntityItemPointer& entity) override; - virtual void clearEntitiesInternal() override; + void processDeadEntities() override; void removeOwnershipData(EntityMotionState* motionState); void clearOwnershipData(); @@ -121,8 +124,13 @@ private: VectorOfEntityMotionStates _owned; VectorOfEntityMotionStates _bids; - SetOfEntities _deadAvatarEntities; + SetOfEntities _deadAvatarEntities; // to remove from Avatar's lists std::vector _entitiesToDeleteLater; + + QList _dynamicsToAdd; + QSet _dynamicsToRemove; + QMutex _dynamicsMutex { QMutex::Recursive }; + workload::SpacePointer _space; uint64_t _nextBidExpiry; uint32_t _lastStepSendPackets { 0 }; diff --git a/libraries/shared/src/PhysicsHelpers.cpp b/libraries/shared/src/PhysicsHelpers.cpp index 092b9d078a..b7f5242429 100644 --- a/libraries/shared/src/PhysicsHelpers.cpp +++ b/libraries/shared/src/PhysicsHelpers.cpp @@ -10,10 +10,12 @@ // #include "PhysicsHelpers.h" -#include "NumericalConstants.h" + #include +#include "NumericalConstants.h" #include "PhysicsCollisionGroups.h" +#include "SharedUtil.h" // This chunk of code was copied from Bullet-2.82, so we include the Bullet license here: /* @@ -91,7 +93,7 @@ int32_t Physics::getDefaultCollisionMask(int32_t group) { QUuid _sessionID; void Physics::setSessionUUID(const QUuid& sessionID) { - _sessionID = sessionID; + _sessionID = sessionID.isNull() ? AVATAR_SELF_ID : sessionID; } const QUuid& Physics::getSessionUUID() { diff --git a/libraries/shared/src/SpatialParentFinder.h b/libraries/shared/src/SpatialParentFinder.h index c19babbc7f..8300359b65 100644 --- a/libraries/shared/src/SpatialParentFinder.h +++ b/libraries/shared/src/SpatialParentFinder.h @@ -21,7 +21,7 @@ using SpatiallyNestableWeakPointer = std::weak_ptr; using SpatiallyNestablePointer = std::shared_ptr; class SpatialParentTree { public: - virtual SpatiallyNestablePointer findByID(const QUuid& id) const { return nullptr; } + virtual SpatiallyNestablePointer findByID(const QUuid& id) const = 0; }; class SpatialParentFinder : public Dependency { diff --git a/tests/octree/src/ModelTests.cpp b/tests/octree/src/ModelTests.cpp index f3e17a56a5..1ab32217d9 100644 --- a/tests/octree/src/ModelTests.cpp +++ b/tests/octree/src/ModelTests.cpp @@ -363,7 +363,8 @@ void EntityTests::entityTreeTests(bool verbose) { } quint64 startDelete = usecTimestampNow(); - tree.deleteEntity(entityID); + bool force = true; + tree.deleteEntity(entityID, force); quint64 endDelete = usecTimestampNow(); totalElapsedDelete += (endDelete - startDelete); @@ -446,7 +447,9 @@ void EntityTests::entityTreeTests(bool verbose) { } quint64 startDelete = usecTimestampNow(); - tree.deleteEntities(entitiesToDelete); + bool force = true; + bool ignoreWarnings = true; + tree.deleteEntitiesByID(entitiesToDelete, force, ignoreWarnings); quint64 endDelete = usecTimestampNow(); totalElapsedDelete += (endDelete - startDelete); From 4e6a6477188e4473e48efcf4622add205a3c28de Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Tue, 15 Oct 2019 15:15:56 -0700 Subject: [PATCH 216/547] don't restrict edit properties of myAvatarEntity --- libraries/entities/src/EntityScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 1ca6a5804f..7bb7f65089 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -821,7 +821,7 @@ QUuid EntityScriptingInterface::editEntity(const QUuid& id, const EntityItemProp // flag for simulation ownership, or upgrade existing ownership priority // (actual bids for simulation ownership are sent by the PhysicalEntitySimulation) entity->upgradeScriptSimulationPriority(properties.computeSimulationBidPriority()); - if (simulationOwner.getID() == sessionID) { + if (entity->isMyAvatarEntity() || simulationOwner.getID() == sessionID) { // we own the simulation --> copy ALL restricted properties properties.copySimulationRestrictedProperties(entity); } else { From 4159bc4862c5c9a165b546b0cb1fd972c281d37b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 16 Oct 2019 08:55:02 -0700 Subject: [PATCH 217/547] abide by domain-entity hierarchy deletion rules --- libraries/entities/src/EntityItem.cpp | 6 ++---- libraries/entities/src/EntityItem.h | 2 +- .../entities/src/EntityScriptingInterface.cpp | 13 +++---------- libraries/entities/src/EntitySimulation.cpp | 6 +----- libraries/entities/src/EntitySimulation.h | 2 +- libraries/entities/src/EntityTree.cpp | 17 +++++------------ .../physics/src/PhysicalEntitySimulation.cpp | 17 +++++------------ .../physics/src/PhysicalEntitySimulation.h | 2 +- 8 files changed, 19 insertions(+), 46 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 15aacd934c..58584cc72b 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3235,7 +3235,7 @@ void EntityItem::retrieveMarketplacePublicKey() { }); } -void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, SetOfEntities& domainEntities, const QUuid& sessionID) const { +void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, const QUuid& sessionID) const { // Deleting an entity has consequences for its children, however there are rules dictating what can be deleted. // This method helps enforce those rules for the children of entity (not for this entity). for (SpatiallyNestablePointer child : getChildren()) { @@ -3246,10 +3246,8 @@ void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, SetOf (childEntity->isMyAvatarEntity() || childEntity->getOwningAvatarID() == sessionID))) { if (entitiesToDelete.find(childEntity) == entitiesToDelete.end()) { entitiesToDelete.insert(childEntity); - childEntity->collectChildrenForDelete(entitiesToDelete, domainEntities, sessionID); + childEntity->collectChildrenForDelete(entitiesToDelete, sessionID); } - } else if (childEntity->isDomainEntity()) { - domainEntities.insert(childEntity); } } } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index fef198c006..01e63bbd3b 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -543,7 +543,7 @@ public: static QString _marketplacePublicKey; static void retrieveMarketplacePublicKey(); - void collectChildrenForDelete(SetOfEntities& entitiesToDelete, SetOfEntities& domainEntities, const QUuid& sessionID) const; + void collectChildrenForDelete(SetOfEntities& entitiesToDelete, const QUuid& sessionID) const; float getBoundingRadius() const { return _boundingRadius; } void setSpaceIndex(int32_t index); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 7bb7f65089..7299665bd2 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -974,7 +974,6 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { // If we have a local entity tree set, then also update it. SetOfEntities entitiesToDeleteImmediately; - SetOfEntities domainEntities; _entityTree->withWriteLock([&] { EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID); if (entity) { @@ -988,15 +987,13 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { // Deleting an entity has consequences for linked children: some can be deleted but others can't. // Local- and my-avatar-entities can be deleted immediately, but other-avatar-entities can't be deleted - // by this context, and domain-entity deletes must rountrip through the entity-server for authorization. - // So we recurse down the linked hierarchy and snarf children into two categories: - // (a) entitiesToDeleteImmediately and (b) domainEntntities. + // by this context, and a domain-entity must rountrip through the entity-server for authorization. if (entity->isDomainEntity()) { - domainEntities.insert(entity); + getEntityPacketSender()->queueEraseEntityMessage(entity->getID()); } else { entitiesToDeleteImmediately.insert(entity); const auto sessionID = DependencyManager::get()->getSessionUUID(); - entity->collectChildrenForDelete(entitiesToDeleteImmediately, domainEntities, sessionID); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, sessionID); } if (!entitiesToDeleteImmediately.empty()) { _entityTree->deleteEntitiesByPointer(entitiesToDeleteImmediately); @@ -1009,10 +1006,6 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { getEntityPacketSender()->getMyAvatar()->clearAvatarEntity(entityID, false); } } - // finally ask entity-server to delete domainEntities - foreach (auto entity, domainEntities) { - getEntityPacketSender()->queueEraseEntityMessage(entity->getID()); - } } QString EntityScriptingInterface::getEntityType(const QUuid& entityID) { diff --git a/libraries/entities/src/EntitySimulation.cpp b/libraries/entities/src/EntitySimulation.cpp index 5576f21cc5..c272d16b4d 100644 --- a/libraries/entities/src/EntitySimulation.cpp +++ b/libraries/entities/src/EntitySimulation.cpp @@ -261,14 +261,10 @@ void EntitySimulation::processDeadEntities() { return; } SetOfEntities entitiesToDeleteImmediately; - // NOTE: dummyList will be empty because this base-class implementation is only used server-side - // for which ATM we only process domain-entities, and since we are passing nullSessionID for authorization - // EntityItem::collectChildrenForDelete() will not collect domain-entities into this side list. - SetOfEntities dummyList; QUuid nullSessionID; foreach (auto entity, _deadEntitiesToRemoveFromTree) { entitiesToDeleteImmediately.insert(entity); - entity->collectChildrenForDelete(entitiesToDeleteImmediately, dummyList, nullSessionID); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, nullSessionID); } if (_entityTree) { _entityTree->deleteEntitiesByPointer(entitiesToDeleteImmediately); diff --git a/libraries/entities/src/EntitySimulation.h b/libraries/entities/src/EntitySimulation.h index 646e5a0f67..5b7b38e447 100644 --- a/libraries/entities/src/EntitySimulation.h +++ b/libraries/entities/src/EntitySimulation.h @@ -78,7 +78,7 @@ public: virtual void prepareEntityForDelete(EntityItemPointer entity); void processChangedEntities(); - virtual void queueEraseDomainEntities(const SetOfEntities& domainEntities) const { } + virtual void queueEraseDomainEntity(const QUuid& id) const { } protected: virtual void addEntityToInternalLists(EntityItemPointer entity); diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index f44f2eb7c5..ad9e71be8f 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -697,7 +697,6 @@ void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, b }); } else { SetOfEntities entitiesToDelete; - SetOfEntities domainEntities; QUuid sessionID = DependencyManager::get()->getSessionUUID(); withWriteLock([&] { for (auto id : ids) { @@ -708,10 +707,12 @@ void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, b } if (entity) { if (entity->isDomainEntity()) { - domainEntities.insert(entity); + if (_simulation) { + _simulation->queueEraseDomainEntity(entity->getID()); + } } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { entitiesToDelete.insert(entity); - entity->collectChildrenForDelete(entitiesToDelete, domainEntities, sessionID); + entity->collectChildrenForDelete(entitiesToDelete, sessionID); } } } @@ -719,10 +720,6 @@ void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, b deleteEntitiesByPointer(entitiesToDelete); } }); - if (!domainEntities.empty() && _simulation) { - // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server - _simulation->queueEraseDomainEntities(domainEntities); - } } } @@ -2366,7 +2363,6 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo #ifdef EXTRA_ERASE_DEBUGGING qCDebug(entities) << "EntityTree::processEraseMessage()"; #endif - SetOfEntities consequentialDomainEntities; withWriteLock([&] { message.seek(sizeof(OCTREE_PACKET_FLAGS) + sizeof(OCTREE_PACKET_SEQUENCE) + sizeof(OCTREE_PACKET_SENT_TIME)); @@ -2413,7 +2409,7 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo SetOfEntities entitiesToDelete; for (auto entity : domainEntities) { entitiesToDelete.insert(entity); - entity->collectChildrenForDelete(entitiesToDelete, consequentialDomainEntities, sessionID); + entity->collectChildrenForDelete(entitiesToDelete, sessionID); } if (!entitiesToDelete.empty()) { @@ -2421,9 +2417,6 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo } } }); - if (!consequentialDomainEntities.empty() && _simulation) { - _simulation->queueEraseDomainEntities(consequentialDomainEntities); - } return message.getPosition(); } diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index 0375e1dfd9..d83708b2a2 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -176,7 +176,6 @@ void PhysicalEntitySimulation::processDeadEntities() { } PROFILE_RANGE(simulation_physics, "Deletes"); SetOfEntities entitiesToDeleteImmediately; - SetOfEntities domainEntities; QUuid sessionID = Physics::getSessionUUID(); QMutexLocker lock(&_mutex); for (auto entity : _deadEntitiesToRemoveFromTree) { @@ -185,18 +184,15 @@ void PhysicalEntitySimulation::processDeadEntities() { _entitiesToRemoveFromPhysics.insert(entity); } if (entity->isDomainEntity()) { - domainEntities.insert(entity); + // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server + _entityPacketSender->queueEraseEntityMessage(entity->getID()); } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { entitiesToDeleteImmediately.insert(entity); - entity->collectChildrenForDelete(entitiesToDeleteImmediately, domainEntities, sessionID); + entity->collectChildrenForDelete(entitiesToDeleteImmediately, sessionID); } } _deadEntitiesToRemoveFromTree.clear(); - // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server - for (auto entity : domainEntities) { - _entityPacketSender->queueEraseEntityMessage(entity->getID()); - } if (!entitiesToDeleteImmediately.empty()) { getEntityTree()->deleteEntitiesByPointer(entitiesToDeleteImmediately); } @@ -233,12 +229,9 @@ void PhysicalEntitySimulation::clearEntities() { EntitySimulation::clearEntities(); } -void PhysicalEntitySimulation::queueEraseDomainEntities(const SetOfEntities& domainEntities) const { +void PhysicalEntitySimulation::queueEraseDomainEntity(const QUuid& id) const { if (_entityPacketSender) { - for (auto domainEntity : domainEntities) { - assert(domainEntity->isDomainEntity()); - _entityPacketSender->queueEraseEntityMessage(domainEntity->getID()); - } + _entityPacketSender->queueEraseEntityMessage(id); } } diff --git a/libraries/physics/src/PhysicalEntitySimulation.h b/libraries/physics/src/PhysicalEntitySimulation.h index a3bd60b96e..0f0a8e9295 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.h +++ b/libraries/physics/src/PhysicalEntitySimulation.h @@ -66,7 +66,7 @@ public: void takeDeadAvatarEntities(SetOfEntities& deadEntities); virtual void clearEntities() override; - void queueEraseDomainEntities(const SetOfEntities& domainEntities) const override; + void queueEraseDomainEntity(const QUuid& id) const override; signals: void entityCollisionWithEntity(const EntityItemID& idA, const EntityItemID& idB, const Collision& collision); From fb090d138853b65df3594ae1faed96b01458d15b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 16 Oct 2019 15:18:15 -0700 Subject: [PATCH 218/547] force delete OtherAvatar entities when necessary --- libraries/entities/src/EntityTree.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index ad9e71be8f..dc94024804 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -710,7 +710,7 @@ void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, b if (_simulation) { _simulation->queueEraseDomainEntity(entity->getID()); } - } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { + } else if (force || entity->isLocalEntity() || entity->isMyAvatarEntity()) { entitiesToDelete.insert(entity); entity->collectChildrenForDelete(entitiesToDelete, sessionID); } From 3546bab19a8a28f1ee43357270c9a6bad9695ca9 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 18 Oct 2019 10:13:56 -0700 Subject: [PATCH 219/547] use std::vector<> instead of QVector<> --- interface/src/avatar/MyAvatar.cpp | 5 ++-- interface/src/avatar/OtherAvatar.cpp | 21 ++++++++------ .../src/avatars-renderer/Avatar.cpp | 8 +++-- libraries/entities/src/EntityTree.cpp | 29 ++++++++++++------- libraries/entities/src/EntityTree.h | 2 +- tests/octree/src/ModelTests.cpp | 5 ++-- 6 files changed, 44 insertions(+), 26 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 5c10e05806..667c315121 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1589,14 +1589,15 @@ void MyAvatar::handleChangedAvatarEntityData() { // move the lists to minimize lock time std::vector cachedBlobsToDelete; std::vector cachedBlobsToUpdate; - QSet idsToDelete; + std::vector idsToDelete; + idsToDelete.reserve(_entitiesToDelete.size()); std::vector entitiesToAdd; std::vector entitiesToUpdate; _avatarEntitiesLock.withWriteLock([&] { cachedBlobsToDelete = std::move(_cachedAvatarEntityBlobsToDelete); cachedBlobsToUpdate = std::move(_cachedAvatarEntityBlobsToAddOrUpdate); foreach (auto id, _entitiesToDelete) { - idsToDelete.insert(id); + idsToDelete.push_back(id); } _entitiesToDelete.clear(); entitiesToAdd = std::move(_entitiesToAdd); diff --git a/interface/src/avatar/OtherAvatar.cpp b/interface/src/avatar/OtherAvatar.cpp index 43d1ddeaad..aa6c074d08 100755 --- a/interface/src/avatar/OtherAvatar.cpp +++ b/interface/src/avatar/OtherAvatar.cpp @@ -561,16 +561,19 @@ void OtherAvatar::handleChangedAvatarEntityData() { _avatarEntitiesLock.withReadLock([&] { packedAvatarEntityData = _packedAvatarEntityData; }); - QSet idsToDelete; - foreach (auto entityID, recentlyRemovedAvatarEntities) { - if (!packedAvatarEntityData.contains(entityID)) { - idsToDelete.insert(entityID); + if (!recentlyRemovedAvatarEntities.empty()) { + std::vector idsToDelete; + idsToDelete.reserve(recentlyRemovedAvatarEntities.size()); + foreach (auto entityID, recentlyRemovedAvatarEntities) { + if (!packedAvatarEntityData.contains(entityID)) { + idsToDelete.push_back(entityID); + } + } + if (!idsToDelete.empty()) { + bool force = true; + bool ignoreWarnings = true; + entityTree->deleteEntitiesByID(idsToDelete, force, ignoreWarnings); } - } - if (!idsToDelete.empty()) { - bool force = true; - bool ignoreWarnings = true; - entityTree->deleteEntitiesByID(idsToDelete, force, ignoreWarnings); } // TODO: move this outside of tree lock diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 6f0fef40d2..01cc86f8b5 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -333,6 +333,9 @@ void Avatar::setTargetScale(float targetScale) { } void Avatar::removeAvatarEntitiesFromTree() { + if (_packedAvatarEntityData.empty()) { + return; + } auto treeRenderer = DependencyManager::get(); EntityTreePointer entityTree = treeRenderer ? treeRenderer->getTree() : nullptr; if (entityTree) { @@ -340,9 +343,10 @@ void Avatar::removeAvatarEntitiesFromTree() { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - QSet ids; + std::vector ids; + ids.reserve(avatarEntityIDs.size()); foreach (auto id, avatarEntityIDs) { - ids.insert(id); + ids.push_back(id); } bool force = true; bool ignoreWarnings = true; diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index dc94024804..cad25aa61e 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -609,8 +609,8 @@ void EntityTree::setSimulation(EntitySimulationPointer simulation) { void EntityTree::deleteEntity(const EntityItemID& entityID, bool force, bool ignoreWarnings) { // NOTE: can be called without lock because deleteEntitiesByID() will lock - QSet ids; - ids << entityID; + std::vector ids; + ids.push_back(entityID); deleteEntitiesByID(ids, force, ignoreWarnings); } @@ -674,7 +674,7 @@ void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& e } } -void EntityTree::deleteEntitiesByID(const QSet& ids, bool force, bool ignoreWarnings) { +void EntityTree::deleteEntitiesByID(const std::vector& ids, bool force, bool ignoreWarnings) { // this method has two paths: // (a) entity-server: applies delete filter // (b) interface-client: deletes local- and my-avatar-entities immediately, submits domainEntity deletes to the entity-server @@ -2230,11 +2230,19 @@ void EntityTree::fixupNeedsParentFixups() { } void EntityTree::deleteDescendantsOfAvatar(QUuid avatarID) { - if (_childrenOfAvatars.contains(avatarID)) { - bool force = true; - bool ignoreWarnings = true; - deleteEntitiesByID(_childrenOfAvatars[avatarID], force, ignoreWarnings); - _childrenOfAvatars.remove(avatarID); + QHash>::const_iterator itr = _childrenOfAvatars.constFind(avatarID); + if (itr != _childrenOfAvatars.end()) { + if (!itr.value().empty()) { + std::vector ids; + ids.reserve(itr.value().size()); + for (const auto id : itr.value()) { + ids.push_back(id); + } + bool force = true; + bool ignoreWarnings = true; + deleteEntitiesByID(ids, force, ignoreWarnings); + } + _childrenOfAvatars.erase(itr); } } @@ -2436,7 +2444,8 @@ int EntityTree::processEraseMessageDetails(const QByteArray& dataByteArray, cons processedBytes += sizeof(numberOfIds); if (numberOfIds > 0) { - QSet ids; + std::vector ids; + ids.reserve(numberOfIds); // extract ids from packet for (size_t i = 0; i < numberOfIds; i++) { @@ -2454,7 +2463,7 @@ int EntityTree::processEraseMessageDetails(const QByteArray& dataByteArray, cons #endif EntityItemID entityID(id); - ids << entityID; + ids.push_back(entityID); } bool force = sourceNode->isAllowedEditor(); diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index 6574b9d601..dc26b0a9ce 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -127,7 +127,7 @@ public: void cleanupCloneIDs(const EntityItemID& entityID); void deleteEntity(const EntityItemID& entityID, bool force = false, bool ignoreWarnings = true); - void deleteEntitiesByID(const QSet& entityIDs, bool force = false, bool ignoreWarnings = true); + void deleteEntitiesByID(const std::vector& entityIDs, bool force = false, bool ignoreWarnings = true); void deleteEntitiesByPointer(const SetOfEntities& entities); EntityItemPointer findEntityByID(const QUuid& id) const; diff --git a/tests/octree/src/ModelTests.cpp b/tests/octree/src/ModelTests.cpp index 1ab32217d9..0b812c1de7 100644 --- a/tests/octree/src/ModelTests.cpp +++ b/tests/octree/src/ModelTests.cpp @@ -434,12 +434,13 @@ void EntityTests::entityTreeTests(bool verbose) { quint64 totalElapsedFind = 0; for (int i = 0; i < TEST_ITERATIONS; i++) { - QSet entitiesToDelete; + std::vector entitiesToDelete; + entitiesToDelete.reserve(ENTITIES_PER_ITERATION); for (int j = 0; j < ENTITIES_PER_ITERATION; j++) { //uint32_t id = 2 + (i * ENTITIES_PER_ITERATION) + j; // These are the entities we added above QUuid id = QUuid::createUuid();// make sure it doesn't collide with previous entity ids EntityItemID entityID(id); - entitiesToDelete << entityID; + entitiesToDelete.push_back(entityID); } if (extraVerbose) { From 039f7cae13d6066562c5b02a89f8d81e0fc20231 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 18 Oct 2019 14:10:22 -0700 Subject: [PATCH 220/547] avoid Qt container in another spot --- libraries/entities/src/EntityItem.cpp | 6 +-- libraries/entities/src/EntityItem.h | 2 +- .../entities/src/EntityScriptingInterface.cpp | 12 +++--- libraries/entities/src/EntitySimulation.cpp | 5 ++- libraries/entities/src/EntityTree.cpp | 43 ++++++++++++------- libraries/entities/src/EntityTree.h | 4 +- .../physics/src/PhysicalEntitySimulation.cpp | 5 ++- 7 files changed, 44 insertions(+), 33 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 58584cc72b..70be7a4d66 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3235,7 +3235,7 @@ void EntityItem::retrieveMarketplacePublicKey() { }); } -void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, const QUuid& sessionID) const { +void EntityItem::collectChildrenForDelete(std::vector& entitiesToDelete, const QUuid& sessionID) const { // Deleting an entity has consequences for its children, however there are rules dictating what can be deleted. // This method helps enforce those rules for the children of entity (not for this entity). for (SpatiallyNestablePointer child : getChildren()) { @@ -3244,8 +3244,8 @@ void EntityItem::collectChildrenForDelete(SetOfEntities& entitiesToDelete, const // NOTE: null sessionID means "collect ALL known entities", else we only collect: local-entities and authorized avatar-entities if (sessionID.isNull() || childEntity->isLocalEntity() || (childEntity->isAvatarEntity() && (childEntity->isMyAvatarEntity() || childEntity->getOwningAvatarID() == sessionID))) { - if (entitiesToDelete.find(childEntity) == entitiesToDelete.end()) { - entitiesToDelete.insert(childEntity); + if (std::find(entitiesToDelete.begin(), entitiesToDelete.end(), childEntity) == entitiesToDelete.end()) { + entitiesToDelete.push_back(childEntity); childEntity->collectChildrenForDelete(entitiesToDelete, sessionID); } } diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 01e63bbd3b..5f56b3a2b8 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -543,7 +543,7 @@ public: static QString _marketplacePublicKey; static void retrieveMarketplacePublicKey(); - void collectChildrenForDelete(SetOfEntities& entitiesToDelete, const QUuid& sessionID) const; + void collectChildrenForDelete(std::vector& entitiesToDelete, const QUuid& sessionID) const; float getBoundingRadius() const { return _boundingRadius; } void setSpaceIndex(int32_t index); diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 7299665bd2..944286656e 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -973,7 +973,7 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { EntityItemID entityID(id); // If we have a local entity tree set, then also update it. - SetOfEntities entitiesToDeleteImmediately; + std::vector entitiesToDeleteImmediately; _entityTree->withWriteLock([&] { EntityItemPointer entity = _entityTree->findEntityByEntityItemID(entityID); if (entity) { @@ -989,21 +989,19 @@ void EntityScriptingInterface::deleteEntity(const QUuid& id) { // Local- and my-avatar-entities can be deleted immediately, but other-avatar-entities can't be deleted // by this context, and a domain-entity must rountrip through the entity-server for authorization. if (entity->isDomainEntity()) { - getEntityPacketSender()->queueEraseEntityMessage(entity->getID()); + getEntityPacketSender()->queueEraseEntityMessage(id); } else { - entitiesToDeleteImmediately.insert(entity); + entitiesToDeleteImmediately.push_back(entity); const auto sessionID = DependencyManager::get()->getSessionUUID(); entity->collectChildrenForDelete(entitiesToDeleteImmediately, sessionID); - } - if (!entitiesToDeleteImmediately.empty()) { _entityTree->deleteEntitiesByPointer(entitiesToDeleteImmediately); } } }); - foreach (auto entity, entitiesToDeleteImmediately) { + for (auto entity : entitiesToDeleteImmediately) { if (entity->isMyAvatarEntity()) { - getEntityPacketSender()->getMyAvatar()->clearAvatarEntity(entityID, false); + getEntityPacketSender()->getMyAvatar()->clearAvatarEntity(entity->getID(), false); } } } diff --git a/libraries/entities/src/EntitySimulation.cpp b/libraries/entities/src/EntitySimulation.cpp index c272d16b4d..246a82c88d 100644 --- a/libraries/entities/src/EntitySimulation.cpp +++ b/libraries/entities/src/EntitySimulation.cpp @@ -260,10 +260,11 @@ void EntitySimulation::processDeadEntities() { if (_deadEntitiesToRemoveFromTree.empty()) { return; } - SetOfEntities entitiesToDeleteImmediately; + std::vector entitiesToDeleteImmediately; + entitiesToDeleteImmediately.reserve(_deadEntitiesToRemoveFromTree.size()); QUuid nullSessionID; foreach (auto entity, _deadEntitiesToRemoveFromTree) { - entitiesToDeleteImmediately.insert(entity); + entitiesToDeleteImmediately.push_back(entity); entity->collectChildrenForDelete(entitiesToDeleteImmediately, nullSessionID); } if (_entityTree) { diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index cad25aa61e..94eaceb63e 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -84,7 +84,7 @@ void EntityTree::eraseDomainAndNonOwnedEntities() { emit clearingEntities(); if (_simulation) { - // local entities are not in the simulation, so we clear ALL + // local-entities are not in the simulation, so we clear ALL _simulation->clearEntities(); } @@ -647,11 +647,11 @@ void EntityTree::cleanupCloneIDs(const EntityItemID& entityID) { } } -void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, SetOfEntities& entitiesToDelete, bool force) const { +void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, std::vector& entitiesToDelete, bool force) const { // tree must be read-locked before calling this method //TODO: assert(treeIsLocked); assert(entity); - if (entity->getElement() && (entitiesToDelete.find(entity) == entitiesToDelete.end())) { + if (entity->getElement() && (std::find(entitiesToDelete.begin(), entitiesToDelete.end(), entity) == entitiesToDelete.end())) { // filter bool allowed = force; if (!allowed) { @@ -663,7 +663,7 @@ void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& e _totalFilterTime += endFilter - startFilter; } if (allowed) { - entitiesToDelete.insert(entity); + entitiesToDelete.push_back(entity); for (SpatiallyNestablePointer child : entity->getChildren()) { if (child && child->getNestableType() == NestableType::Entity) { EntityItemPointer childEntity = std::static_pointer_cast(child); @@ -680,7 +680,8 @@ void EntityTree::deleteEntitiesByID(const std::vector& ids, bool f // (b) interface-client: deletes local- and my-avatar-entities immediately, submits domainEntity deletes to the entity-server if (getIsServer()) { withWriteLock([&] { - SetOfEntities entitiesToDelete; + std::vector entitiesToDelete; + entitiesToDelete.reserve(ids.size()); for (auto id : ids) { EntityItemPointer entity; { @@ -696,7 +697,9 @@ void EntityTree::deleteEntitiesByID(const std::vector& ids, bool f } }); } else { - SetOfEntities entitiesToDelete; + std::vector domainEntitiesIDs; + std::vector entitiesToDelete; + entitiesToDelete.reserve(ids.size()); QUuid sessionID = DependencyManager::get()->getSessionUUID(); withWriteLock([&] { for (auto id : ids) { @@ -707,11 +710,10 @@ void EntityTree::deleteEntitiesByID(const std::vector& ids, bool f } if (entity) { if (entity->isDomainEntity()) { - if (_simulation) { - _simulation->queueEraseDomainEntity(entity->getID()); - } + // domain-entity deletes must round-trip through entity-server + domainEntitiesIDs.push_back(id); } else if (force || entity->isLocalEntity() || entity->isMyAvatarEntity()) { - entitiesToDelete.insert(entity); + entitiesToDelete.push_back(entity); entity->collectChildrenForDelete(entitiesToDelete, sessionID); } } @@ -720,10 +722,15 @@ void EntityTree::deleteEntitiesByID(const std::vector& ids, bool f deleteEntitiesByPointer(entitiesToDelete); } }); + if (!domainEntitiesIDs.empty() && _simulation) { + for (auto id : domainEntitiesIDs) { + _simulation->queueEraseDomainEntity(id); + } + } } } -void EntityTree::deleteEntitiesByPointer(const SetOfEntities& entities) { +void EntityTree::deleteEntitiesByPointer(const std::vector& entities) { // tree must be write-locked before calling this method //TODO: assert(treeIsLocked); // NOTE: there is no entity validation (i.e. is entity in tree?) nor snarfing of children beyond this point. @@ -2398,25 +2405,28 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo // domain-entity deletion can trigger deletion of other entities the entity-server doesn't know about // so we must recurse down the children and collect consequential deletes however // we must first identify all domain-entities in idsToDelete so as to not overstep entity-server's authority - SetOfEntities domainEntities; + std::vector domainEntities; + domainEntities.reserve(idsToDelete.size()); for (auto id : idsToDelete) { EntityItemPointer entity = _entityMap.value(id); if (entity && entity->isDomainEntity()) { - domainEntities.insert(entity); + domainEntities.push_back(entity); } } // now we recurse domain-entities children and snarf consequential entities + // which are nomally just local-entities and myAvatar-entities auto nodeList = DependencyManager::get(); QUuid sessionID = nodeList->getSessionUUID(); // NOTE: normally a null sessionID would be bad, as that would cause the collectDhildrenForDelete() method below - // to snarf domain entities for which the interface-client is not authorized to delete without explicit instructions + // to snarf domain-entities for which the interface-client is not authorized to delete without explicit instructions // from the entity-server, however it is ok here because that would mean: // (a) interface-client is not connected to a domain which means... // (b) we should never get here (since this would correspond to a message from the entity-server) but... // (c) who cares? When not connected to a domain the interface-client can do whatever it wants. - SetOfEntities entitiesToDelete; + std::vector entitiesToDelete; + entitiesToDelete.reserve(domainEntities.size()); for (auto entity : domainEntities) { - entitiesToDelete.insert(entity); + entitiesToDelete.push_back(entity); entity->collectChildrenForDelete(entitiesToDelete, sessionID); } @@ -2431,6 +2441,7 @@ int EntityTree::processEraseMessage(ReceivedMessage& message, const SharedNodePo // This version skips over the header // NOTE: Caller must write-lock the tree before calling this. int EntityTree::processEraseMessageDetails(const QByteArray& dataByteArray, const SharedNodePointer& sourceNode) { + // NOTE: this is called on entity-server when receiving a delete request from an interface-client or agent //TODO: assert(treeIsLocked); assert(getIsServer()); #ifdef EXTRA_ERASE_DEBUGGING diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index dc26b0a9ce..7b84e40ddd 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -128,7 +128,7 @@ public: void deleteEntity(const EntityItemID& entityID, bool force = false, bool ignoreWarnings = true); void deleteEntitiesByID(const std::vector& entityIDs, bool force = false, bool ignoreWarnings = true); - void deleteEntitiesByPointer(const SetOfEntities& entities); + void deleteEntitiesByPointer(const std::vector& entities); EntityItemPointer findEntityByID(const QUuid& id) const; EntityItemPointer findEntityByEntityItemID(const EntityItemID& entityID) const; @@ -293,7 +293,7 @@ signals: protected: - void recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, SetOfEntities& entitiesToDelete, bool force) const; + void recursivelyFilterAndCollectForDelete(const EntityItemPointer& entity, std::vector& entitiesToDelete, bool force) const; void processRemovedEntities(const DeleteEntityOperator& theOperator); bool updateEntity(EntityItemPointer entity, const EntityItemProperties& properties, const SharedNodePointer& senderNode = SharedNodePointer(nullptr)); diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index d83708b2a2..b5ba65a098 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -175,7 +175,8 @@ void PhysicalEntitySimulation::processDeadEntities() { return; } PROFILE_RANGE(simulation_physics, "Deletes"); - SetOfEntities entitiesToDeleteImmediately; + std::vector entitiesToDeleteImmediately; + entitiesToDeleteImmediately.reserve(_deadEntitiesToRemoveFromTree.size()); QUuid sessionID = Physics::getSessionUUID(); QMutexLocker lock(&_mutex); for (auto entity : _deadEntitiesToRemoveFromTree) { @@ -187,7 +188,7 @@ void PhysicalEntitySimulation::processDeadEntities() { // interface-client can't delete domainEntities outright, they must roundtrip through the entity-server _entityPacketSender->queueEraseEntityMessage(entity->getID()); } else if (entity->isLocalEntity() || entity->isMyAvatarEntity()) { - entitiesToDeleteImmediately.insert(entity); + entitiesToDeleteImmediately.push_back(entity); entity->collectChildrenForDelete(entitiesToDeleteImmediately, sessionID); } } From 0f2d9027e16558225ef4e163aa0d04b4c52a8043 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Mon, 28 Oct 2019 08:19:14 -0700 Subject: [PATCH 221/547] fix indentation --- libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 01cc86f8b5..0ca3362be7 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -343,7 +343,7 @@ void Avatar::removeAvatarEntitiesFromTree() { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - std::vector ids; + std::vector ids; ids.reserve(avatarEntityIDs.size()); foreach (auto id, avatarEntityIDs) { ids.push_back(id); From de44cdaf25460c74d2ccf4f9777c3ed7d60a9b18 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:27:05 -0800 Subject: [PATCH 222/547] remove unnecessary check in if clause --- libraries/entities/src/EntityTree.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 94eaceb63e..fed9090ddb 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -658,7 +658,7 @@ void EntityTree::recursivelyFilterAndCollectForDelete(const EntityItemPointer& e bool wasChanged = false; auto startFilter = usecTimestampNow(); EntityItemProperties dummyProperties; - allowed = force || filterProperties(entity, dummyProperties, dummyProperties, wasChanged, FilterType::Delete); + allowed = filterProperties(entity, dummyProperties, dummyProperties, wasChanged, FilterType::Delete); auto endFilter = usecTimestampNow(); _totalFilterTime += endFilter - startFilter; } From 28f51f6204d3a496dfe783d1da6db1dc9fce53e8 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:27:17 -0800 Subject: [PATCH 223/547] add comments --- libraries/entities/src/EntitySimulation.cpp | 2 ++ libraries/physics/src/PhysicalEntitySimulation.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/libraries/entities/src/EntitySimulation.cpp b/libraries/entities/src/EntitySimulation.cpp index 246a82c88d..c7eb906efb 100644 --- a/libraries/entities/src/EntitySimulation.cpp +++ b/libraries/entities/src/EntitySimulation.cpp @@ -43,6 +43,7 @@ void EntitySimulation::updateEntities() { } void EntitySimulation::removeEntityFromInternalLists(EntityItemPointer entity) { + // protected: _mutex lock is guaranteed // remove from all internal lists except _deadEntitiesToRemoveFromTree _entitiesToSort.remove(entity); _simpleKinematicEntities.remove(entity); @@ -144,6 +145,7 @@ void EntitySimulation::sortEntitiesThatMoved() { } void EntitySimulation::addEntityToInternalLists(EntityItemPointer entity) { + // protected: _mutex lock is guaranteed if (entity->isMortal()) { _mortalEntities.insert(entity); uint64_t expiry = entity->getExpiry(); diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index b5ba65a098..4a2ee9184f 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -171,6 +171,8 @@ void PhysicalEntitySimulation::processChangedEntity(const EntityItemPointer& ent } void PhysicalEntitySimulation::processDeadEntities() { + // Note: this override is a complete rewite of the base class's method because we cannot assume all entities + // are domain entities, and the consequence of trying to delete a domain-entity in this case is very different. if (_deadEntitiesToRemoveFromTree.empty()) { return; } From b231dadba5066ca204fb3fa94b04852e4625abf5 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:27:47 -0800 Subject: [PATCH 224/547] add check for local-entity when changing phys properties --- libraries/entities/src/EntityScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 944286656e..9f0174e33d 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -821,7 +821,7 @@ QUuid EntityScriptingInterface::editEntity(const QUuid& id, const EntityItemProp // flag for simulation ownership, or upgrade existing ownership priority // (actual bids for simulation ownership are sent by the PhysicalEntitySimulation) entity->upgradeScriptSimulationPriority(properties.computeSimulationBidPriority()); - if (entity->isMyAvatarEntity() || simulationOwner.getID() == sessionID) { + if (entity->isLocalEntity() || entity->isMyAvatarEntity() || simulationOwner.getID() == sessionID) { // we own the simulation --> copy ALL restricted properties properties.copySimulationRestrictedProperties(entity); } else { From b5ca93a0194d0f6a51bdbd6cc43b880cf8362956 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:28:16 -0800 Subject: [PATCH 225/547] remove redundant checks in 'if' clause --- libraries/entities/src/EntityItem.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index 70be7a4d66..2a0fb893cf 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -3237,13 +3237,12 @@ void EntityItem::retrieveMarketplacePublicKey() { void EntityItem::collectChildrenForDelete(std::vector& entitiesToDelete, const QUuid& sessionID) const { // Deleting an entity has consequences for its children, however there are rules dictating what can be deleted. - // This method helps enforce those rules for the children of entity (not for this entity). + // This method helps enforce those rules: not for this entity, but for its children. for (SpatiallyNestablePointer child : getChildren()) { if (child && child->getNestableType() == NestableType::Entity) { EntityItemPointer childEntity = std::static_pointer_cast(child); - // NOTE: null sessionID means "collect ALL known entities", else we only collect: local-entities and authorized avatar-entities - if (sessionID.isNull() || childEntity->isLocalEntity() || (childEntity->isAvatarEntity() && - (childEntity->isMyAvatarEntity() || childEntity->getOwningAvatarID() == sessionID))) { + // NOTE: null sessionID means "collect ALL known children", else we only collect: local-entities and myAvatar-entities + if (sessionID.isNull() || childEntity->isLocalEntity() || childEntity->isMyAvatarEntity()) { if (std::find(entitiesToDelete.begin(), entitiesToDelete.end(), childEntity) == entitiesToDelete.end()) { entitiesToDelete.push_back(childEntity); childEntity->collectChildrenForDelete(entitiesToDelete, sessionID); @@ -3417,7 +3416,7 @@ void EntityItem::prepareForSimulationOwnershipBid(EntityItemProperties& properti properties.setSimulationOwner(Physics::getSessionUUID(), priority); setPendingOwnershipPriority(priority); - // ANDREW TODO: figure out if it would be OK to NOT bother set these properties here + // TODO: figure out if it would be OK to NOT bother set these properties here properties.setEntityHostType(getEntityHostType()); properties.setOwningAvatarID(getOwningAvatarID()); setLastBroadcast(now); // for debug/physics status icons From dbeea4038d483434ab89ceab49daa2fd9780eb59 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:29:14 -0800 Subject: [PATCH 226/547] remove unused argument --- libraries/entities-renderer/src/EntityTreeRenderer.cpp | 5 ++--- libraries/entities-renderer/src/EntityTreeRenderer.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index fa18783b98..58499e07b6 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -260,8 +260,7 @@ void EntityTreeRenderer::clearDomainAndNonOwnedEntities() { _renderablesToUpdate = savedRenderables; _entitiesInScene = savedEntities; - auto sessionUUID = getTree()->getMyAvatarSessionUUID(); - if (_layeredZones.clearDomainAndNonOwnedZones(sessionUUID)) { + if (_layeredZones.clearDomainAndNonOwnedZones()) { applyLayeredZones(); } @@ -1215,7 +1214,7 @@ void EntityTreeRenderer::updateZone(const EntityItemID& id) { } } -bool EntityTreeRenderer::LayeredZones::clearDomainAndNonOwnedZones(const QUuid& sessionUUID) { +bool EntityTreeRenderer::LayeredZones::clearDomainAndNonOwnedZones() { bool zonesChanged = false; auto it = begin(); diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index 6a5152b219..1deadc254e 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -230,7 +230,7 @@ private: class LayeredZones : public std::vector { public: - bool clearDomainAndNonOwnedZones(const QUuid& sessionUUID); + bool clearDomainAndNonOwnedZones(); void sort() { std::sort(begin(), end(), std::less()); } bool equals(const LayeredZones& other) const; From 9dd0105ba5f2a2483a872ed9eea518a430e9649f Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:29:48 -0800 Subject: [PATCH 227/547] only one copy of entityIDs instead of two --- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 0ca3362be7..8a57740857 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -339,14 +339,12 @@ void Avatar::removeAvatarEntitiesFromTree() { auto treeRenderer = DependencyManager::get(); EntityTreePointer entityTree = treeRenderer ? treeRenderer->getTree() : nullptr; if (entityTree) { - QList avatarEntityIDs; - _avatarEntitiesLock.withReadLock([&] { - avatarEntityIDs = _packedAvatarEntityData.keys(); - }); std::vector ids; - ids.reserve(avatarEntityIDs.size()); - foreach (auto id, avatarEntityIDs) { - ids.push_back(id); + ids.reserve(_packedAvatarEntityData.size()); + PackedAvatarEntityMap::const_iterator itr = _packedAvatarEntityData.constBegin(); + while (itr != _packedAvatarEntityData.constEnd()) { + ids.push_back(itr.key()); + ++itr; } bool force = true; bool ignoreWarnings = true; From 7692e858a10e4189f8ee68520fe52bfbb7893ba3 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Wed, 13 Nov 2019 15:30:16 -0800 Subject: [PATCH 228/547] use EntityItemID rather than QUuid --- interface/src/avatar/MyAvatar.cpp | 54 ++++++++++++------------------- interface/src/avatar/MyAvatar.h | 14 ++++---- 2 files changed, 27 insertions(+), 41 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 667c315121..503a404000 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -1587,24 +1587,20 @@ void MyAvatar::handleChangedAvatarEntityData() { // AvatarData::_packedAvatarEntityData via deeper logic. // move the lists to minimize lock time - std::vector cachedBlobsToDelete; - std::vector cachedBlobsToUpdate; - std::vector idsToDelete; - idsToDelete.reserve(_entitiesToDelete.size()); - std::vector entitiesToAdd; - std::vector entitiesToUpdate; + std::vector cachedBlobsToDelete; + std::vector cachedBlobsToUpdate; + std::vector entitiesToDelete; + std::vector entitiesToAdd; + std::vector entitiesToUpdate; _avatarEntitiesLock.withWriteLock([&] { - cachedBlobsToDelete = std::move(_cachedAvatarEntityBlobsToDelete); - cachedBlobsToUpdate = std::move(_cachedAvatarEntityBlobsToAddOrUpdate); - foreach (auto id, _entitiesToDelete) { - idsToDelete.push_back(id); - } - _entitiesToDelete.clear(); - entitiesToAdd = std::move(_entitiesToAdd); - entitiesToUpdate = std::move(_entitiesToUpdate); + cachedBlobsToDelete.swap(_cachedAvatarEntityBlobsToDelete); + cachedBlobsToUpdate.swap(_cachedAvatarEntityBlobsToAddOrUpdate); + entitiesToDelete.swap(_entitiesToDelete); + entitiesToAdd.swap(_entitiesToAdd); + entitiesToUpdate.swap(_entitiesToUpdate); }); - auto removeAllInstancesHelper = [] (const QUuid& id, std::vector& v) { + auto removeAllInstancesHelper = [] (const EntityItemID& id, std::vector& v) { uint32_t i = 0; while (i < v.size()) { if (id == v[i]) { @@ -1617,7 +1613,7 @@ void MyAvatar::handleChangedAvatarEntityData() { }; // remove delete-add and delete-update overlap - for (const auto& id : idsToDelete) { + for (const auto& id : entitiesToDelete) { removeAllInstancesHelper(id, cachedBlobsToUpdate); removeAllInstancesHelper(id, entitiesToAdd); removeAllInstancesHelper(id, entitiesToUpdate); @@ -1631,9 +1627,7 @@ void MyAvatar::handleChangedAvatarEntityData() { } // DELETE real entities - entityTree->withWriteLock([&] { - entityTree->deleteEntitiesByID(idsToDelete); - }); + entityTree->deleteEntitiesByID(entitiesToDelete); // ADD real entities EntityEditPacketSender* packetSender = qApp->getEntityEditPacketSender(); @@ -1704,7 +1698,7 @@ void MyAvatar::handleChangedAvatarEntityData() { _needToSaveAvatarEntitySettings = true; } // also remove from list of stale blobs to avoid failed entity lookup later - std::set::iterator blobItr = _staleCachedAvatarEntityBlobs.find(id); + std::set::iterator blobItr = _staleCachedAvatarEntityBlobs.find(id); if (blobItr != _staleCachedAvatarEntityBlobs.end()) { _staleCachedAvatarEntityBlobs.erase(blobItr); } @@ -1746,7 +1740,7 @@ void MyAvatar::handleChangedAvatarEntityData() { // we have a client traits handler // flag removed entities as deleted so that changes are sent next frame _avatarEntitiesLock.withWriteLock([&] { - for (const auto& id : idsToDelete) { + for (const auto& id : entitiesToDelete) { if (_packedAvatarEntityData.find(id) != _packedAvatarEntityData.end()) { _clientTraitsHandler->markInstancedTraitDeleted(AvatarTraits::AvatarEntity, id); } @@ -1772,9 +1766,9 @@ bool MyAvatar::updateStaleAvatarEntityBlobs() const { return false; } - std::set staleBlobs = std::move(_staleCachedAvatarEntityBlobs); + std::set staleIDs = std::move(_staleCachedAvatarEntityBlobs); int32_t numFound = 0; - for (const auto& id : staleBlobs) { + for (const auto& id : staleIDs) { bool found = false; EntityItemProperties properties; entityTree->withReadLock([&] { @@ -1859,7 +1853,7 @@ void MyAvatar::setAvatarEntityData(const AvatarEntityMap& avatarEntityData) { ++constItr; } // find and erase deleted IDs from _cachedAvatarEntityBlobs - std::vector deletedIDs; + std::vector deletedIDs; AvatarEntityMap::iterator itr = _cachedAvatarEntityBlobs.begin(); while (itr != _cachedAvatarEntityBlobs.end()) { QUuid id = itr.key(); @@ -2491,16 +2485,8 @@ void MyAvatar::clearWornAvatarEntities() { _avatarEntitiesLock.withReadLock([&] { avatarEntityIDs = _packedAvatarEntityData.keys(); }); - auto treeRenderer = DependencyManager::get(); - EntityTreePointer entityTree = treeRenderer ? treeRenderer->getTree() : nullptr; - if (entityTree) { - for (auto entityID : avatarEntityIDs) { - auto entity = entityTree->findEntityByID(entityID); - if (entity && isWearableEntity(entity)) { - treeRenderer->deleteEntity(entityID); - clearAvatarEntity(entityID); - } - } + for (auto entityID : avatarEntityIDs) { + removeWornAvatarEntity(entityID); } } diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 5a59e6129a..cac9f54be5 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -2970,19 +2970,19 @@ private: // correctly stored in _cachedAvatarEntityBlobs. These come from loadAvatarEntityDataFromSettings() and // setAvatarEntityData(). These changes need to be extracted from _cachedAvatarEntityBlobs and applied to // real EntityItems. - std::vector _entitiesToDelete; - std::vector _entitiesToAdd; - std::vector _entitiesToUpdate; + std::vector _entitiesToDelete; + std::vector _entitiesToAdd; + std::vector _entitiesToUpdate; // // The _cachedAvatarEntityBlobsToDelete/Add/Update lists are for changes whose "authoritative sources" are // already reflected in real EntityItems. These changes need to be propagated to _cachedAvatarEntityBlobs // and eventually to settings. - std::vector _cachedAvatarEntityBlobsToDelete; - std::vector _cachedAvatarEntityBlobsToAddOrUpdate; - std::vector _cachedAvatarEntityBlobUpdatesToSkip; + std::vector _cachedAvatarEntityBlobsToDelete; + std::vector _cachedAvatarEntityBlobsToAddOrUpdate; + std::vector _cachedAvatarEntityBlobUpdatesToSkip; // // Also these lists for tracking delayed changes to blobs and Settings - mutable std::set _staleCachedAvatarEntityBlobs; + mutable std::set _staleCachedAvatarEntityBlobs; // // keep a ScriptEngine around so we don't have to instantiate on the fly (these are very slow to create/delete) mutable std::mutex _scriptEngineLock; From ec872bfcf84929b2fbdb2b9352dc12cf21fe6b8a Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 14 Nov 2019 08:12:39 -0800 Subject: [PATCH 229/547] remove unused variable --- libraries/entities/src/EntityScriptingInterface.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 9f0174e33d..d68747b96c 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -1649,12 +1649,9 @@ bool EntityScriptingInterface::actionWorker(const QUuid& entityID, return false; } - auto nodeList = DependencyManager::get(); - const QUuid myNodeID = nodeList->getSessionUUID(); - EntityItemPointer entity; bool doTransmit = false; - _entityTree->withWriteLock([this, &entity, entityID, myNodeID, &doTransmit, actor] { + _entityTree->withWriteLock([this, &entity, entityID, &doTransmit, actor] { EntitySimulationPointer simulation = _entityTree->getSimulation(); entity = _entityTree->findEntityByEntityItemID(entityID); if (!entity) { From 56b1be4958ade8765ac0de22a22d3ab67c69c3fd Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Thu, 14 Nov 2019 10:21:55 -0800 Subject: [PATCH 230/547] Fix Realtime Unfocused to be 60hz --- interface/src/RefreshRateManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/RefreshRateManager.cpp b/interface/src/RefreshRateManager.cpp index da6c5cbd37..e1da1699d7 100644 --- a/interface/src/RefreshRateManager.cpp +++ b/interface/src/RefreshRateManager.cpp @@ -42,7 +42,7 @@ static const std::array { { 30, 20, 10, 2, 30, 30 } }; static const std::array REALTIME_PROFILE = - { { 60, 60, 10, 2, 30, 30} }; + { { 60, 60, 60, 2, 30, 30} }; static const std::array, RefreshRateManager::RefreshRateProfile::PROFILE_NUM> REFRESH_RATE_PROFILES = { { ECO_PROFILE, INTERACTIVE_PROFILE, REALTIME_PROFILE } }; From a4ad78c33759372722198a4180e262e8b8208533 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 14 Nov 2019 11:28:37 -0800 Subject: [PATCH 231/547] comment updates and extra includes removed --- .../ScreenshareScriptingInterface.cpp | 90 +++++++++++++------ .../scripting/ScreenshareScriptingInterface.h | 8 +- 2 files changed, 65 insertions(+), 33 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 8348e96f10..0ac18769f7 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -9,37 +9,27 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#include -#include #include #include +#include #include #include -#include -#include -#include -#include -#include #include #include -#include -#include +#include #include #include "EntityScriptingInterface.h" #include "ScreenshareScriptingInterface.h" -#include -#include -#include - ScreenshareScriptingInterface::ScreenshareScriptingInterface() { auto esi = DependencyManager::get(); if (!esi) { return; } + // This signal/slot connection is used when the screen share local web entity sends an event bridge message. QObject::connect(esi.data(), &EntityScriptingInterface::webEventReceived, this, &ScreenshareScriptingInterface::onWebEventReceived); }; @@ -55,27 +45,35 @@ static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862 static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; +static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE ="local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter) { + // We must start a new QProcess from the main thread. if (QThread::currentThread() != thread()) { - // We must start a new QProcess from the main thread. QMetaObject::invokeMethod(this, "startScreenshare", Q_ARG(const QUuid&, screenshareZoneID), Q_ARG(const QUuid&, smartboardEntityID), Q_ARG(const bool&, isPresenter)); return; } + // These three private member variables are set now so that they may be used later during asynchronous + // callbacks. _screenshareZoneID = screenshareZoneID; _smartboardEntityID = smartboardEntityID; _isPresenter = isPresenter; + // If we are presenting, and the screenshare process is already running, don't do anything else here. if (_isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { return; } + // If we're presenting... if (_isPresenter) { + // ...make sure we first reset this `std::unique_ptr`. _screenshareProcess.reset(new QProcess(this)); + // Ensure that the screenshare executable exists where we expect it to. + // Error out and reset the screen share state machine if the executable doesn't exist. QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; @@ -85,6 +83,7 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } } + // Don't continue with any more of this logic if we can't get the `AccountManager` or `AddressManager`. auto accountManager = DependencyManager::get(); if (!accountManager) { return; @@ -94,9 +93,17 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon return; } + // Construct and send a request to the Metaverse to obtain the information + // necessary to start the screen sharing process. + // This request requires: + // 1. The domain ID of the domain in which the user's avatar is present + // 2. User authentication information that is automatically included when `sendRequest()` is passed + // with the `AccountManagerAuth::Required` argument. + // Note that this request will only return successfully if the Domain Server has already registered + // the user paired with the current domain with the Metaverse. + // See `DomainServer::screensharePresence()` for more info about that. QString currentDomainID = uuidStringWithoutCurlyBraces(addressManager->getDomainID()); QString requestURLPath = "api/v1/domains/%1/screenshare"; - JSONCallbackParameters callbackParams; callbackParams.callbackReceiver = this; callbackParams.jsonCallbackMethod = "handleSuccessfulScreenshareInfoGet"; @@ -110,22 +117,29 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon } void ScreenshareScriptingInterface::stopScreenshare() { + // We can only deal with our Screen Share `QProcess` on the main thread. if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "stopScreenshare"); return; } + // If the Screen Share process is running... if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { + //...terminate it and make sure that scripts know we terminated it by emitting + // `screenshareProcessTerminated()`. _screenshareProcess->terminate(); emit screenshareProcessTerminated(); } + // Delete the local web entity if we know about it here. if (!_screenshareViewerLocalWebEntityUUID.isNull()) { auto esi = DependencyManager::get(); if (esi) { esi->deleteEntity(_screenshareViewerLocalWebEntityUUID); } } + + // Reset all private member variables related to screen share here. _screenshareViewerLocalWebEntityUUID = "{00000000-0000-0000-0000-000000000000}"; _token = ""; _projectAPIKey = ""; @@ -133,12 +147,14 @@ void ScreenshareScriptingInterface::stopScreenshare() { _isPresenter = false; } +// Called when the Metaverse returns the information necessary to start/view a screen share. void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkReply* reply) { + // Read the reply and get it into a format we understand. QString answer = reply->readAll(); - QByteArray answerByteArray = answer.toUtf8(); QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); + // This Metaverse endpoint will always return a status key/value pair of "success" if things went well. QString status = answerJSONObject["status"].toString(); if (status != "success") { qDebug() << "Error when retrieving screenshare info via HTTP. Error:" << reply->errorString(); @@ -147,10 +163,12 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR return; } + // Store the information necessary to start/view a screen share in these private member variables. _token = answerJSONObject["token"].toString(); _projectAPIKey = answerJSONObject["projectApiKey"].toString(); _sessionID = answerJSONObject["sessionID"].toString(); + // Make sure we have all of the info that we need. if (_token.isEmpty() || _projectAPIKey.isEmpty() || _sessionID.isEmpty()) { qDebug() << "Not all Screen Share information was retrieved from the backend. Stopping..."; stopScreenshare(); @@ -158,6 +176,10 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR return; } + // If we're presenting: + // 1. Build a list of arguments that we're going to pass to the screen share Electron app. + // 2. Make sure we connect a signal/slot to know when the user quits the Electron app. + // 3. Start the screen share Electron app with the list of args from (1). if (_isPresenter) { QStringList arguments; arguments << " "; @@ -174,12 +196,7 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR _screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments); } - if (!_screenshareViewerLocalWebEntityUUID.isNull()) { - stopScreenshare(); - emit screenshareError(); - return; - } - + // Make sure we can grab the entity scripting interface. Error out if we can't. auto esi = DependencyManager::get(); if (!esi) { stopScreenshare(); @@ -187,6 +204,12 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR return; } + // If, for some reason, we already have a record of a screen share local Web entity, delete it. + if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + esi->deleteEntity(_screenshareViewerLocalWebEntityUUID); + } + + // Set up the entity properties associated with the screen share local Web entity. EntityItemProperties localScreenshareWebEntityProps; localScreenshareWebEntityProps.setType(LOCAL_SCREENSHARE_WEB_ENTITY_TYPE); localScreenshareWebEntityProps.setMaxFPS(LOCAL_SCREENSHARE_WEB_ENTITY_FPS); @@ -195,14 +218,16 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR localScreenshareWebEntityProps.setParentID(_smartboardEntityID); localScreenshareWebEntityProps.setDimensions(LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS); - // The lines below will be used when writing the feature to ensure that the smartboard can be of any arbitrary size. + // The lines below will be used when writing the feature to support scaling the Smartboard entity to any arbitrary size. //EntityPropertyFlags desiredSmartboardProperties; //desiredSmartboardProperties += PROP_POSITION; //desiredSmartboardProperties += PROP_DIMENSIONS; - //EntityItemProperties smartboardProps = esi->getEntityProperties(smartboardEntityID, desiredSmartboardProperties); - - QString hostType = "local"; - _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, hostType); + //EntityItemProperties smartboardProps = esi->getEntityProperties(_smartboardEntityID, desiredSmartboardProperties); + + // Add the screen share local Web entity to Interface's entity tree. + // When the Web entity loads the page specified by `LOCAL_SCREENSHARE_WEB_ENTITY_URL`, it will broadcast an Event Bridge + // message, which we will consume inside `ScreenshareScriptingInterface::onWebEventReceived()`. + _screenshareViewerLocalWebEntityUUID = esi->addEntity(localScreenshareWebEntityProps, LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE); } void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { @@ -211,21 +236,31 @@ void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply emit screenshareError(); } +// This function will handle _all_ web events received via `EntityScriptingInterface::webEventReceived()`, including +// those not related to screen sharing. void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { + // Bail early if the entity that sent the Web event isn't the one we care about. if (entityID == _screenshareViewerLocalWebEntityUUID) { + // Bail early if we can't grab the Entity Scripting Interface. auto esi = DependencyManager::get(); if (!esi) { return; } + // Web events received from the screen share Web JS will always be in stringified JSON format. QByteArray jsonByteArray = QVariant(message).toString().toUtf8(); QJsonDocument jsonObject = QJsonDocument::fromJson(jsonByteArray); + // It should never happen where the screen share Web JS sends a message without the `app` key's value + // set to "screenshare". if (jsonObject["app"] != "screenshare") { return; } + // The screen share Web JS only sends a message with one method: "eventBridgeReady". Handle it here. if (jsonObject["method"] == "eventBridgeReady") { + // Stuff a JSON object full of information necessary for the screen share local Web entity + // to connect to the screen share session associated with the room in which the user's avatar is standing. QJsonObject responseObject; responseObject.insert("app", "screenshare"); responseObject.insert("method", "receiveConnectionInfo"); @@ -235,7 +270,6 @@ void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, co responseObjectData.insert("sessionID", _sessionID); responseObject.insert("data", responseObjectData); - auto esi = DependencyManager::get(); esi->emitScriptEvent(_screenshareViewerLocalWebEntityUUID, responseObject.toVariantMap()); } } diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index b3d39f8f25..d64daa6c6b 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -12,13 +12,11 @@ #ifndef hifi_ScreenshareScriptingInterface_h #define hifi_ScreenshareScriptingInterface_h -// #include +#include #include #include -// #include -// #include -// #include -#include +#include + #include class ScreenshareScriptingInterface : public QObject, public Dependency { From 37010648be325901025adae6bcc8cf320294b4da Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Thu, 14 Nov 2019 13:12:01 -0800 Subject: [PATCH 232/547] Abandon exponential acceleration and use constant acceleration. Hook up turn->sit transitions. --- .../settle_sitturnleft_to_sitidle.fbx | Bin 0 -> 250128 bytes .../settle_sitturnright_to_sitidle.fbx | Bin 0 -> 225760 bytes .../avatar/animations/sitting_turn_left.fbx | Bin 0 -> 436624 bytes .../avatar/animations/sitting_turn_right.fbx | Bin 0 -> 436624 bytes .../resources/avatar/avatar-animation.json | 278 ++++++++++++++---- interface/src/avatar/MyAvatar.cpp | 23 +- libraries/animation/src/Rig.cpp | 4 +- .../src/avatars-renderer/Avatar.h | 3 +- 8 files changed, 220 insertions(+), 88 deletions(-) create mode 100644 interface/resources/avatar/animations/settle_sitturnleft_to_sitidle.fbx create mode 100644 interface/resources/avatar/animations/settle_sitturnright_to_sitidle.fbx create mode 100644 interface/resources/avatar/animations/sitting_turn_left.fbx create mode 100644 interface/resources/avatar/animations/sitting_turn_right.fbx diff --git a/interface/resources/avatar/animations/settle_sitturnleft_to_sitidle.fbx b/interface/resources/avatar/animations/settle_sitturnleft_to_sitidle.fbx new file mode 100644 index 0000000000000000000000000000000000000000..8e6c3fc007b1b80f7ebdafdf88e374af944497ff GIT binary patch literal 250128 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

_pFdFoj+?*pY6!)t+uPbTUo1 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 a|4+yDxH-d*UOV*kg|kIYPMBNcuKxp%t(n{a literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/settle_sitturnright_to_sitidle.fbx b/interface/resources/avatar/animations/settle_sitturnright_to_sitidle.fbx new file mode 100644 index 0000000000000000000000000000000000000000..c4f020da7074e9b5e56dad355b65e85f8c5a43e7 GIT binary patch literal 225760 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 J`9Sd*{{iTw8G--+ literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/sitting_turn_left.fbx b/interface/resources/avatar/animations/sitting_turn_left.fbx new file mode 100644 index 0000000000000000000000000000000000000000..b1f9ee82d4a1b1cc8553a430509fbbfd3efcb2b8 GIT binary patch literal 436624 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 z z>zkD)H?P9giux)#lA}nm{qe#Hv!5L^jQSuQcYjnYXiep^*l8J5RqNGMp z0N+9=1)Y?PifZ)CQIMN$EnGl2Vm^@AoymMqB>&)-`}qT&$PM`} zNc;DKo3usZqvF$!<3I;PQeGvJ|R8h{er5cvE2fNi$xZ)lS22E;El>CHE0 zpMf`?;od|H$>Y`8xuge2hU@mc=Id{ok3bEVxfsY@BAXb{Blbz ze~3{tNkP#dQJ7M~BL$_{ndK%C}wv5B+b!y9sqRZfAstxYfiOQ4PjcB+W4U)|TP31P|u z7qy3!82yf{y5$wIog*^@yI$VsD9Hq|{S!GMGTH0}R@WLm^M2Yd-gNRSHeX*azk<`V zxgxm;Gn{=v+3t0dd&PR4Gj6Lxf|5DCKC}+BwuqB64?nGi&vqc5x8uY6yS5)1il;Tw zhjaJHQd9LmGwEGPZa25~D#lF2T9#%^Y>chM^AKGVxZsE(zq!myp5 z9*$+|E*&FV;_O+cPC|l!D)KL~}n-yYKs(SN7-f z?LZuw00Yw)3DaSXr$*i+o2y!r?j}9!EI7*IY@iRU$a<4*1NLVN9G9pmy+Ng$!qw4I zms)%WYP?OlkRm1ylR3NV(mdIj*Uudz1`9vSB6DROWCvQmio|oxY1EE(_d=wZ3bALM zc=PIU$g0>I9zNbv||+>^Czq*Uz|! z+lj87Tg&dJ<;>_YR~2SjCMP1zG^oDvpE$9Mp^YfvWo3d@cw;>R9J>8f#;=$C2+pQA z9^Vg4>v*jAzOJ=z8$5oQ6mC}QMXOImU{6`6rZA(+aXvAEIO3zJw-Yk_$=ssQht?E5 zOe&wriCY=0WqSGw9iq*qO8Q#%8Ob*pw%46Gibe)Jw^d9Uj5_AAp*!;=n%UZ*L;R5a zfu|fP@&x$W++~J+nPj9%A$B|`v+aB;O1B8R^@%}elln-3yhz+VzF+nB>0<9=I109w zC0;5p$M6NcuGN14KA=Y9f6y`gyDtB4u+~BIuiAd}k663@{}QrdDc(;8T#e%UKge)@ z`Sww^WJCL4P*}Zsn97maXhHi|BMB~>{fyt2g6GktX_X&XqzKff1})up%~@Jh$Sb7u zo8)4u+V0K+u10Rp19PEAmv>GRN5WK8R8-eC8e7zbYJy(v{)23bT&{(@V~)yn@~+9hpWdJrk)UIx57vQ{Dku6 z-#k*dWmN?t1x}q!?PV}^>x$($_o0s>dNvKe?@!-z>FHrW4R{LPrw=6Lpp_`OhK98n z!RJ$BOqW$ve4;xE9af(`X^V*HA?!^8xvH`|%w%ER>i+1-h@b>DIttKedp$j@<_z!1 zl!udB&LV}jqfr{kwvYpwextM3k+t9qEcY8z=Zg69iA`iWy_uA7 zS}(_?AEiUZyp9cfC5Q*7kEiH%f7yrJ72*&IXu?>bfkq)jXWTG3CtC=rwT&YZWXoX> zV=SirXTx=uEg2+M*n zkVyK`d_${88iTk?f^mZg@z$$2ah$Fx5sZme6{v63hc$Y6QED0)r?gbeC=Bv$M#X3t zH|4cU5d8?@)%}wbIJ2uu<;$mllm?8ou z%YN4YKU4c3&&KoKv3V~*KjQD_G7lB^8%W~G+NI)fE-u;Sk)A+p@ypQ7mcTPl4^X0 znRVC???#VlGLE7GiU+CJD4L#K@FarSKHM40&f2^SUJh)gp=*7JC9(AZicHjiZ+Rs% z&~@f*Mk4lVen4=I7gMlG2n@qT=_uL4FX=Dz3Gyh&Ftb{%A#~g5piW1I_Iep?Oyfmd zdq>1W%iIV}i=+qFlKtHelEdA~s6b2^_(QHijH%us-PI-ue`Qw5ms7o>e9G)+Oc7eU zb*3XUELS_0Y*%c+T>1$D0?9+~7(_>Ux_*82l>~P-Z3a3pBmHT~j{$Jxr69!XlpG>j zqV#Ei%UR;l>h%WP$N~(H`eKU&Hyw6+n-}K?%!j))pPDjPdT~aD_34-%l{g|*qOQal zav%=|&81lLC5~o+bt_+!obTfih&k)2L1)2}Kog4H=oRk*fdC*Y`aQSDJ@pb4e1saT zx7ruv)X4U`-K8UbZY$`aaCm=5Xxd8IDAt7Ow8Pmh(|S-OrTXA4*G zG7x7Ol1X3{8}_34b*D z8OwWMH1PfXQjHqummkm}W$Y*cw?=qSrDM~#Y6OVg67_0=JZHjku;Zyr&&h>;y-Am! zprIvu*xuPvjqwt-I4oy6)E#^+=5dd2G6D5|N^M92-rLCPjHqb!hIB9lblv${VxBlW zK54F=Ajr+)dwK}ke#n|Peo5YF-D*j&(yENz#82AOWvB%?nyUjOZGZe#UFXNV?-hNU zbq{mcr1m-v^6vorO5=fH0-jKY%dz--rJW z!YM|7K==;`{{i7YAp8e}|A6ox5dH(g|9ub!TKqL*B>ra*4*M&Bo8s@GIZGOa$h}Q( z;dTEi%8QLc9-V?g6-J_{M%Q=Rg7x|p`qQaT&wkWb^}nd*`)tc7PZIJDSI@NP(@8nU zbB51fu!vq)N8?~k*+t0e>f%VeU;YY#o$0v-1(3EbC$G&3{Wo&!BtYUxmyPif=NB;n5aNZ79WMAMr_hkSgA!n2sri zH0rvT$C(aWh1}1U0Z&Ijb`ebhLQ&x;mBT_}>E*hPlte9#UgDvU{%Lo<9+VKj$_ zdpxGY(EHDN-*~1dmdapY}d6pp{dwcp^ zorjQ|>9ngld1q9iz`IWJ$eX4!58lm70916L(1n4j2hFcAP?rz*54Rx*Q;$CAgHsER7Q2Z!AGa* zKoa-MM!hAgJmY)KmLQdMP5(^<)y%x@w|UzI7XH?UQtmmTA0@c);;f%X$<8$I*i|dr zy_JzOrQZ#b$B!i6+=*B_;ij5A`@#1*mjHKoR$LyS!=6Jf=3IIo<&lZwL8n{B`#XIc zQQVW_5QeEk!G2%eGYDtSbK+h!*INC+Hdq+qed%N!=ZhIkVmGqLTr+ zYJ41u`+l0o^k0)1u#sxal0^|1piLNvWq}q}R!5dXjFq>1Db@Ea1B%jqigxe?Y`o$) zw6u;)AmXpvmZ#6(09f5P^5oWM9Jh`gcL;14IL@seS?k5;AxzHdBx?N5KIf5FU)k27 zI?&U=e6&8%Wk_@;pl7UZPcG$tkhA9@PiS#4pfNW|dmHu!TyIS1{*vYWSTWYCoaf_l za`^+8teQn7wSF3J>So$hLHW2{7e!NnhE$90)4G6Haa@{#?h@q2q8ajp&TlRWWf?R{ zdajv9w~fv0fH?3RqV+|W&rMxkyDOV+J1U%P#m((J;G$i%G%Hd;dhem&r9M_yY|WPN z_}2aAjp=Ip&jFu7XySNChV2DaSXdGwr_P8T|ce$6s*2dWa?+taQcZM}8XO3cZ9 zkvEP#d5Q@<9k|Y@hi<#Ij?D*a(>3pH4G?kp(#>u(kflI4%+XoettC%Zl5ys&9uUW=TD!tBjJ%Z~P_Oe8CYT*~m+> zBY~{5O5WYN-jD0-Uzf_5?{j&M+2W1wGlr50P#dXM3dMAm3V4sXM0k0>>0Geo#c3VE zZQ~+`s7RrHx_rZuzOL_YYBy@fzYJ}a91a`V9}TAUucX!~dkpu-5>Sphr}?Kf4*BX- zkE~J~Y=%VI*SehZw~Q~p#N}!jtbO?Db_o|~ag=MrBljA_M|B#aJ*4&R)X^l<>D?+m zryFNAdC0F;_NNak>EzoXVXkwcXkRf$E_#OD+ZhFG>^fqk%;OC!Q?dt*!9pF8ztM64 zBi|mqY=4wqdJJF@I;XJw5TZ;wJy}1=&*B!Y4{ygNg#huZ>$1M8m@i_P$y+~-- z-9jLAmV>jVG!PuyG$ny)~?9m zqa^0%wX##%w6ut+sE>{`6ps_*&yQm$He#Fa2#>BBh&xuTgFF2wSv1G(7~MZK>6)nS z^6TnEuW@>%VR03*tH$TU6<6ei!R}EcdNikS7iV?o)fqA98_@ciWsS;Mwc@c50{xLnT z88CYbUWvF~Ml^JD=L^t*ulBxIn;w)2G+U(PmVg2ukZnj%5wTc-OGq`^B4ml3O{i=9 znE=NXVLv_LJxb?xRY+KExv8fq_C9qMVVZc?lMx&h2us{FoNGB5-gu05wJ6KfUdT=H z02{{eaUPKOnfOUx16V%~sD)$CK^1ECUKu9D=X^nWl|4Ni+X(7-loMNDg*xDEHeV1j<)d`YR>`LmU4*M@rGaPBIqJZSo_PvPl@Lt7iurp2y2sAh1v%(&hgT& zA&wFLrmm0ZT?EnqFDjW$XBHriPR7TcqbQQ@{ES$GB^JicOQOB|xl)$(=>;v9u|YRo zof;D5SVNSO%n?}HBEV$_9Eeo9-*AcA6>h#VwmH^;s@k??bkDryT1_HGw!K z5{`T4Pom~Yeq1BAVFy3L_ax|cj*Wp=XX?YyrwC0q%7U&!bVRc&9|+dg)1J!2S4LU0 z&qTcH&>MU#&?YCFw;yTUbpl^slaIhw8O)Hl6Z%(n)xAbn{u8^nW^rJY&Wu)!T!C$T z6<`fE=Yznr#+y|MAx=*8xjCzDYCKYx>0f#9*KE0YqX7MQAMYTHZMLes^Xm$E_?@W3 zd3i)oivu9r-IM5GHU=2kcTfMB5^|O2U?G0ED)J>jQZoXX*hob%X&<3QY~=EF^~s8! z@R+1fUa`U{e8nnPhqKd5TFj=9vE6CjyqWKo9OOG~!rf{4lbXFMVd^}t6dJeSrMn?k zr=Q-HQiwuha!heBlC5rb?6W*a??HT#hPZx4V88wV&E5TSH_u7<>E0;_i>-P}#yvQp zIp|nhXxT$Fz~wcX0OtZB+Z{1%%xnc{)W-XqOW;j}#pSP_gVr1*00OoVJV>q1A zLN&0O2L}fy9B^6YO05L1q4(*&t*nqQEC zBn0$Eiu1F<L0>yWSqBr?`0JU)}v&^ zO^^Nh^LBb4zLb7z!@Zm!2<~*AmFbjN@h}q*v;B&rP{|1ULXb;HExE_tDFlS1)un&~ z{O-oVF$T;qQ5GF7+-1VbI}!l}*@z~EVOZ^hy-T3VQ+C_8AsssN7I&ki+E;0m3R7!+ z#wgW0bRi{??4Y&0-Jju-R6ZtKo)J)Ir3U-SwE_p?mF8>I1@kGVg@dN{U|r{Ngo4!s zf{`!!_Fj!3FKX5Mx|6f)yEtJ^&y|t0NuvGK->M!W4Q-E(;koZ)sbXxAy zGvKtU4JrrleWi%%G}GidUWZqN0K!mvt-y+N#UcaRws2l zj2lf|7A@l}`w;W7glq9O^P^tz$3dGR7D2RGYcyv89H)6)zyf2bIMbD0){D!`ZpxQ6 zbZK{XRq=$f{W}Y@5y{t<$>@zAe3Jv0U-c8nEs7@F{M<|tk;}h0Z7AA1zr2)hrFs>m zBFpJ1zeZJD`dId|TK2d*sBc(>l>VIc5U;VtPvMw5x;`#Cc_{i_8q*o3T))H+W67($ zlGn^t+KNI|rGYC}2(MN5Xb9digSSn%l5zMUH>ZJji${@+u;<(1B1&$I`rg+@6bM-G zdi%oWl!nnze)606k1P~?ze<{?tq;)iBnASc(*Zpd*e7{PZ4Mm8#x=x8^@F+6*R z+&AuQC9?ZBg$^9Kr&lR9$Ok?b_b>Qyl;3`y-jk9uBDK6HR^#zA>W>_@Wa3&=f3=7W`E~vnQ4O;*Hy;J0UFal zg{j@w@!1+;)ionZb(FwNxmP#i zF`60BL(hh$G#h#a=*b}KS?I#$=_IAed$HL1Uj0&ZC_V%Ss8Z8rbi64>jkpwu^-9-* zB|Zv9ZGAmk9>yBWdCpVZy03?*W#1+WShjrsOR582E4*ykP0Y!1!&qq_lUOhQKF}%r zsuycw#mncB5mN@?A5;$EYIF1pvaeHv@?RI2AH3|F#*mAuQrKOh*KW-lA+5~T==rkk z)|ss{K6c^w?dNKLjz5FLb8~gK&uM~bQ%F75U^%X>wMCA4%M{f>AL6E5Rx7_-=Rs`J zJ z@GiblWR_sW6=6JIHq~k9*$Kp;9mDvEz@K)e*bkW8EGlD$e$3h=$zoqNI~i2_`juSK z$vfj$fF;jS=TIV3Od4JNXZ$)BY2DE&G72Yd>D#p=GE(3#&mz6-Y=>i~;=Uh6WHLA$ zfJGQeT-I zVJHi<_v91e?6&KEn3klzHkaeZeV=uvxIB94m8Pm%7lB#c$Rkkk?RG$cGDWMul-IJo z>1FQ>G~!BPRe+O=6Co4EW@B6V{iA0(*H^wMKJP3m`O(wlmOWB;%msG#rVO6}E9m>E z^GJvZD%I&C0p^WEV~y)-KxjvcIWy?`bOK?$AL$b zwByv|_`i$r|AvBdKmAq6PydmExBtJiu+G1pETbn%-dmA5jtP2IBoiHO!d|S@D%<*+ z&8X3-ey-21p;unrV6 zARr=O;yNf;=4F!X`!`BknSPmmj}Nzxc?ZgZLJ!Mjph{1S{RPRrVigHGA3GYu@6Lpx zo=ZKrb^YDTf(r0F=`2XRGz8}ArPC39F6J)!w2dOlALsNjnrx~2QMF;x-jl0`mvj|L zlK_PuSRa8eej?zrh4DR-kufmz4q|xAS4H@DQLZ48col6QbgyX5ZvE>TWPb-&Mfd=D z*9{h#31JKgKB1Yv>w|G2{`g~24@K-{=d!sjX)bnK_AhOm383gI`r+~s?#RrYDJ0DS z$TEU;J$yE^qayae+F<8q_DKE)0t4OkyW;Auy&)Yj&KC=<@|F*CCPTKe`h3V zW(1P)NdD^c8ID-REm`~iOq7eqwnj6^@|kvhd+7cCV`Pf+TK7E1D}L}X!nt5$u3g$c z*koIDXC8_mKrnz^A@k8_9Wl|RVERImxB@Kn~}Mp=Z%ID(B0o*dB3{CmuViuD{%ecJ-_!{ zzMTsDtk-zxYTROpJtIZ+2dtrpjtKO0%FID-Wh%phZ~4&jVE39vzBBBg_R}+TqVt(tWYaK?`zx=}td*CuI6qkIgY#k~p#;awwy zAt-0vLl;vI7oX7a!8wZRNnl+_kekno>QcHzJD`^~3MV#>?Y~ZAj|nTxndo+e^CM4M zJWQ>*PqHJ!T#)>tx&gs{Y!mAb878^v9F>BeANj5@mHMFY^Kjs(QSZ1 zGDI}YU!pt>;=#<`!Jn*`JiyP30@kX!&Q)>tj?Y%HMOVZLZf(BxV2b`W+ncioeeq@6 z4=g3%lo!TKBjk!8{6^BlA|em_0Zn&)V5Duae8+dUWbsDKUhpX4>cP4);gZNWk3kTS zz4#z_ z>}e!na1L&Nb>nrRm(lRaU%0WmdgD@zSuvV-gx*D|bO>(3&%X?986? zI`Mi+-*+n1*+#$6?GOFYxiX3p9<*8t;q!jP@L7~9mkmyDpAAJpp)H~W9ons+d#md< zo9ZJw0?dVso)Vy7WLA@FSB-YuZ3j0aNvVziKT&SSFxFi5&+fbG&J==6j7eI{0OQ7H zneX>9^7L2Rx{N+b=IC=_iJH8+cL7UxEqF%=$b%(lE=>j2tNqgseoFP#0R^Fyivi7U z$4XWF94bzL^dJ2KM%!f7!i0xh`~)Rk(=5DMCIk4uS^FPX=WrIx1H>GP;kZqL9etNy zd;2IsSAJHc!QzrWfxW)-g4#lWjux`Ug}tx`V#ZqdE{pC&q@#t}(L32^hMnS10UPb~ z@j2sAi{JOYgMzGVrcq`b$c<^b=6aI?k~tIoeEjPDsVJbJK-kfKL!|eB9Q;(O5Vkz4 z3_6d)2dS8l8P2X?+-{c5Vh!vaIX?+L&Sy2`PJjw(J5YrL98&}l+D;tF1mnwzyWA^_ zTuacOT%%6F;wK(LC;Du@2WtrgcP(e=zwjPzj7a+sAHg+0Y?^gUfD~e*Ztlr~TBKr7 zyqxdMCv3`wpRau3c;m>qj}&cb#8xj~>g~ zF&5qyU<*_T6HdrYgkpNpMfgYV++(^WR%@|^kY=JIQTLdd3xY`l#AIm6=8wqBt4QY3 zyak>Hor+k)M^`YVwe;K*twlt;p`;0LTrwtO=o_X*1Bi3^E5Y^dzJGt0i9T=%Yb*KGS7lMS0Wlq z4L3~yk-x;ZnjH+|HqU0TMymS+ZvAANN)vgD-j|)RKTx@nnWRU!WgIDaZqH{O8qeEEH6=nPgP886uNUo)ZV7A(R6WWz^qDZ);25~+TCcX&%0cvRf;N|1Kjcy|Gj z5qU9rFYCS(Q(b3G$-Mp+{wzd(`JJxu0^jl?B^>b5C!mEyC9_{xt0o~pWRYdiX;{p zhkXPTp(IMl1CcFHFF(kr3UNG-9K#QnlDEje{+8h~>XtIuu%zCs#YMElsgEnz)Xqf% za9~73t0L7utRl@Wna7C{7-K#SWKaVU4R5eV{LsdQj}PLQ1((-MZd$zl{A(n9GwdeR z3}z0GOUX_2HISLC%I0c*^p1yZi%LdUa!0obeZW1Vn~6~nuh$I>dsq*S>nyi_`4}o9 z0`LgMaNe9*-u>WrzL>|l6Cp0HTlcNiutAJ~9~qds*8b}}-OolVpQ+WA&6+kK-hRM> zb9?;huNZCEsJQ*d(m695F9^%F)7x^ls4;s&%~%E1{7vMB%)3F37j|euyeREH*m!qO zeXe*(Dk$3>#NnC;*pG-@*)(5?-!;#lpJ##YR>vrIPx}`}p2P;xg`|3`!*1LKz`as7 z4xCc*w{lnKS}%{rJA|Ydab)2V3P5h`lt0ZVfv69PN+!Qs@Qs3YMS4bJk__c(A zc>cDxye;IkucBV?4@V^Iye<$%=P6*D`Yh6}&Tnq;jym#IH0kadpD*@-T8BF5(=?2d zGlwQj^AzLKZq4kF$SBpSAv}Uhw|~a&}&itFt z%8xbO=nj1?(``p38nf_LZ4Hhuiin5N+-(rMrUB)7du8{bUp)~n#X20#O&oH`<*_Mt zQQEXYO+zg0o-X3_ft%E8zsK?DkGr-=jO-PXadSUvbjCG4vV;U3j(zv4eu{GqN{@Ze zl-EdhTVk(Zx($9UN9_?EbW)k`AcZfCpItyq^$NdLYtr$O$M32k+m0Tg?rQ#K%#(n{ z7Nsz$oB!9oU{3{j{M0T`6rj#|B*yEkxNhE=x0mI#9x6@e7TM?ioRcTi=fQuH#wFx# zSNbdy%@ke@U&tUOw49_nvzg&0$%;5i*j^VMczX4Ud_AvUYQf@-jBG3o@Z+GGDuc{s zDa}b;-_DH=cBhcvQ`W4MxAqCnwpk01FkC+hSJ}ZzF5$HMC%Fp1S#IYqu?x+;iVY;g@=zGf}<$( z?gQs*7)I^Fb5##jjdyA>nyC`%0{k3r)m5Lx;(gH?d}66@yn2L;p12mjY`MIKS|6US zR1_8#&eU|siYtpL-yL;5J{Dc*reb##1fm*h-jcQ-FVXodzQbex2}SciybPUPi${(z zvEJ>fQ#Zpu35zjLP;`pvkT)JYpl(nraz%}(Say>EmQBn0(E$fQ3@0Dod`;czo4_OR zMJAZY?7<`{!fUri8;gT?DE#(vt|yf^3g%%X?hQYV&Z_@7CA8_vS_r4tEQA#p8~Gqc z~08>;SyUe$Jw5TE2<1pf_4&G zM|h8uHwwli_5e!8$BDO>PPy)vyhi8Ax}>iTR2dtPS9hESK43danihY~fR-VYMq!2s zal~Tx?*C!$u7cuhx4hv85AH4T7 zuN(}qFHDERFLRA)&U6Q#8X)V)wkQIy=GVUG&T`Xuj}MU*AI?tYPUJ{4l!# zQrPhbI;?+-exbwCJk#ZYTwTfRKFqKh=QmA~V(U&#@vMR{JCsqFLz2W;EaYf)HfeQG z8PeA+qSm$nL#uU33npnV;iBQxlG z*|;;rbZAY!zNKQ41uk%h-WM0!hA*XS7{(^%Ewt<8+V(})%m;Ux)@cv!)H92m;0IOwWp8;zw zU8i4Ijn2j>szcB)fna#gKx|`|P2cE!j}ZNQB~G}7ICx{3XA%lwv)Huu6%J^yV{Dh} zJLeo1k~a3-#GgT+%%?!@`UYx#c%ZifYt=d1O{O1FOs5^qg+MTdbnSw&x^Mmzq9bVgNW(C?@*?>JG;6Hp}XW_rpo15Dwq|Y zoQn|X{uFi_2f$9q&xGCk{;5I@mtZXRX3+XgDdq*3ly4)>Tya6!1WPs78D)eF65gau z3BGe|f7m3Yl-rnLJleR(TMMdl%G`r262Us(>`ap{R2Lxb zs8uxAL{CunDrZ&D;M*!Y&ya?F6Aw+hT9+rlI&Y=Sf&3RASi`M_@Z?OL=E75~q3i1`?y zsl~%?R}u*tsR&ult$l21g1ksHaC;VHNc2qgMi;OA_loH|C=IM$>J(!-%7%U(RvXyw z7PRjAr5-VkwX~3ZKiQy|JsB*;dtZLO8zkT@2_hFLt#A#v*ZKAG>)c3#)V+#Dkh2}9 zpxGKrD6y2ND*~layN6{>3@!K)ZVX%AJ?puH2jppuKM`N@iNs&}tK`wUovg3F&2!!X z!}snB8>9}9QGlSH`WBN_+9$T9tONHB2g=Mn&f{vZ68aHfBS?kEm;7P|{Bog~2bbV0HpPoX0^biyY{k`HI=won3H^+V!|TmPDJf6R8L89iNK zDvsEEM30E$noHI<$b3ij%RvlQ9MeSilje2rQI#%S3Fof2m`)1-oCs~RU?HJE+zY~D z9q3ro#iWUKkAflO<7I#@q>#ArH`$LTPaZ=^TX_qB&8Z`7`#LPl^aSo4@T>g2up~aU zQI8)<&;aF8{N|&QuwWUr%7hXZ>5UEn?XzVr7#iN=q&kO#$t2OUxOJt_%3RmL+L=4! zoYvzPOY5iDkpqTxq4vd^n|^k9Ffipc$ULCC@OC3V673^G#h$+1VF7u+Z8I5}9Cx-S z%kyeD{90G=7I(pk*@%=I$=BPG_C6&X48BL;3rKL(fBw5KazA_a3}4a8_pOJAo4S>? zw6mv^$N$$}8UM4rT3DKzn$rB$UMVtUdrbKOpNo(Rrk=g3e)jC(Gt!r5|M#c1@}C>^ zv(kTI)MtPHqW>}G7$f7aHvV6Y+Wz}r&;P8I`?FT=&sw=ZYvul|mHV?+?$27eKWpXw zoonS_g@4^K-2eHMvh_bwEnKwvXa^h_R53%`&qUh%O&yEi{z0WLQkl=6 zOWh{stOIRsZ|{MEEb|4HrSH~&aRW|zKgph_84`F{D)c+0UP*EtPBX&Cp7lus-`N|U zPd)FuVDFnrj@?u0qgJRbGjO{qv7A?zuQqWzw(p*h#7+YcS_*+$Y7|B^h_Rp{k3KIWP@63u(?LS^4{Wa zig!b+)ES+7s*CZe}(Q_(q>=MQbhdnV^DRQMyJt3ImDi?^*=b2(1Ha<6Ia zP3wLSA-aDl zE8%#8CLU0Q{FLGc=J~VC_H*Yr|M*agBPQ&-*T#kw9|U4&7-K8PVv7X(GM(NH8TCne zjHgF7H<#bX$1BY1*4{>17Ve#_c??~%h4zhwo_uq+SwcO#dalBx$ZGgyjPa#Tv4UGL zYw7FchoG<>rOF+!+0f4I%WIA=iaIaR5MOszk`4X8@26bT29idgkhthT?Wm0TiK+xK8$Z?k-rjt;ort#WyB3}|OByV?xoj2F9n)Z8hY4tDs|Apf?r z6yIDGm*>eXdhwl^*Xr}_s?RmM*5R!euRtBdh0ViznfW|)m2u}U1je(hT<7?EGvR94 z1&prhxpC9e#M|k8JfZ?kimZ-%3xdn{%N00_njE!y0o~S)UZ3v){ZL8Tf!Qhuhe8cP zHngm=XF-59Z0`mK7)YNIx~4=IXfAx8j$`AuzUdLg3qPIW_EJ)DsbuaSU3*pCPG+|K zo4Z~ms$>Mqbx$g(?(17OqPO}_q+PX4UC6JRVk=bvQd=b49+4!`^+8T!SAMof*0(Eu7jH~HZ z5(}l9;3JuAm#GdFdtQ?PTb0Nv*R9qQ%PIMkjwp6sRZKrn60GePGkObLd|rCbmCIQo zQ#P;q@!>l2S)o`M3`;7&hdun#o1V-OkH^<5S`9zy{UY(tZc588Y$URd92LEWyo{Vk z|CDsIyk?Pan_F{w^55phQ9zgvX_B2L#I#c%J$n?gfFrN$mD`Iut9?BoR_ z?%NRMbuAOrvgF-8`fM8)$f7!}1m~ODTFnl!jQtv}&%@?#xFYL^jWe(=&l^8SrHr$7 zAylLmfDVC5nG-GJrMpsXUMHmlqHI6u1SbN}jvfV7I2{n9eyHaIfm$x7yf(Voc^3yn zJCb68XezFD;r=^uVI74@JQSOEdOO;5yTAP0G;_6e zhg|tWSNzG?V%((K4*!A{(fq7&jLw3&0&(i}`ay4iw|VYNIJ?z~{B+~irF5M;w250LY#Zrn z#`;}^f%M3DG)pLXz*Z`imV8_TT&QnwJ#hiJ%{kxiGaA5OoMteT@@Ztv#c8C zT+JEyx+(5*BhvE}nqO>TYE=Aj)Z4v-HJdD5jdOHgZa}cP(t~BGI%ox%{414tJB+Oz zl;BSzwW797(LSMvUR@#|;@IB@HeSC6GbgfdBApFEdlv9^?kiGnRi$LaxA1jpje!!9 zFFG$2=(9yD0gaq{Fph?mb@#+tW9OZ_LGQy%`I@H$u>%uZZ3^}^{Jo=Q3s6no1r5-5 zqD!fHZJxgcl%60Y`;b(`n!V>i^B6NQA7mN*;9&i-OK~r~yXuImd%B;zXHuUB+F1U( z#^)hD-IxJHJKgjRbKhQ{H4I|6_Nhbv>uAJ@9Jx}|zK}r|TF(8(X{?7Z{~J86`F1>i zT$8X9%h{S6Q{HT_+cO*OY>@T zULX?M4i<44I&3n#7FC8pjw*^x$OqUSrKnG^_n~)V8nXld7md&+D|}NRm3AK#s2J>X zXTjlP?=vI^z8+kg!eZ&vjlJm@Dus5I)eg!b>@k`zG=dNx0ib9YKvFV1M<}7|kh9wK z);-L{M^9|!PK|cuhZ>HMHd$9~r*F;6ZIX6G3JDB9Pk6!3i~Bg(5-q?#l;OA|W?jdX zxvXTrGK)(M;V5|`^AHv}4Nb}sxSLn=#WQhQwB$5ge~(Woe%mqP($$2&p@aZ7b5)}V z3YJCf3+{AhGRZ^33VLen-;h+C0?_YOo_}IlzaujCog(f`+r%!OMejMnz3Fk*i2|?g zcbG=u88jo<9ARy_4l@Sr2$-^C3BeplDEDmLLdknL!nOXT~`y% zsoXa>aqs8_BHGu>rJxDlFco|~fr;}rpkUP)w(l`luOUKpUd!1I5DkUjmk@V1E5#o* ztPT)8HbfZTuiqUxJ-p?ts5be*uvQFMWd9^^#IdR6tpo1ojN9Dz{8kg%XY{#ggq>1* zc^BPVp(R(+`r`}EON|gMIbS-cLkh|H&8K*mys!8H?%V`Vb+1SS={9fkv@Bn486ew! z?fuwmGe;ZZ>~9S|TYD8!Z>`;JO!f{cHpLI?daJsydd;!0v-n$m(=RSB>QKa>Cb(*O z^fnByfuUE-`Z7RuoOGG2?l)((%+Tn1&|m=L;=q4 zceSJ_w&b1+QT^{fr(qvW7fz#^%!5$RIH578$4aQ|xro_~ z*CpxsYOL9??0v~8yP!mj{^r4m%fuFPG>i=E9=NB3%ZGaHLa3kB{q1JuVfjW+$kjJo zMM8YdOjNE`Kf>*nva?S)+Ag3ERa;M{$@SFN&=r1i6>Ph{OT^DbT437br%PG0M+7>P zABXbKzq{kVd3JfS=byXqo6djX!WdP5b?g7pg#mvb{#O?cYy9g=e_Z&F3;%K9KQ8>o zh5xwl9~b`P!v9Ve=4t=yj*+2A+8t#8m;aMgb6S!IQFZDS-$LxQ(U;Rnf_T*hyun?ke(V>g5#z18-x*iSJr(Cv zPiysAPw8cgiv~kFzKkKvL)26@+7s?;P| zz_7KfK3*G<`=Z_*6*eL%irtNIyVJQwHW>nKl~U=@AN?J!?r}CK!lsc#QHu*g!Ky1C zey;6gwFE-lKV_Ip1j#?V0p|BOPc$nJ}R>;w$Y?aaZUR_LG z9+Qe=9k=IjtoT%d;hfZmDwJ7v77=GLdD3i|bg`D2nHYo?MtmDBDymr0b>j=B#+rj9 z+CB^F6kkE)1pS!L4ZMNg91?1xUpfpMI=GU!r7f+S2WRL*?xsc4 ztOPaum83W3Sry1<+}k=5_A2y|N4$TC>h*cMeobxCf-W04PttXyNYsyD9;iX#6WZgL z2Eu-zr1oC{X;{=E?gHroVuCIwyX;bUonVBbNs(dlxb>JK`)s9|qbzUdWBCD_f&6Tr z)o2nIGmt+wBn(mq68f^-k*|vtN(jV%`JnIu0wk4D3LU8)MHOb> zZ2$!yAEU0TJ)Xvy+=N2*oSMf-Q?A9x&QS>j)kY97_$#-K!3|27BrGoYy2T}Er@#x` z7hk-Zt-HBbyP{m!GZq!-l;*c0PUAtmx-F}>wbz=MwTMUF%3`#_@q1^-pY~;*t> zxUEPX;k*ocYyEDMhZr6+Uv7bphkkJ0&i27YY9P*z_O+Ji-nIXtGKsM0tE6xA>I-Z{ zh&MljTXNBsud~Gp_PKueJ$Y+DP6#EubNtL%WLP<$KQNle1-~c8Rn#P| zb929sc{H|laB_J1k8$ELr-?2)`TdQF&90tGUzZSR_Ut4Qt)|Jo^zzL%}?;UW24Ax2ZYI_)POK&%JYtbd^)ejvj`59r|^#9;E*2s ztPPCBaPwL9<)u#?~dfxCRmS65O?Dt45i%O?1sp4JJ#LP?B3wDi`5!PZe@+D6PEa* zCDO6_F6M{^t=YQooXhgp^vzMX1jLFZ+s<0NpbOOTrb)Pu2#&vW?vloMf1BeF^)TDO zx3O_#R3*XboipZ&Pa0{zLhf@tc5z73i*!5Jv@ z?Hboh*{rsr`fLK~Ok46~=&Z=vH;RyEag!z{6`u&e(H2VU*^6~p@I4`djpP_ZA6e~%%Lbm)@p(SK zJWO&S=ftLn^b8X+t+yaIbH`vhUb`XKSzirCrE7|~Eaw=1+i53^N_Qg=DUe&vZT$GStZU9lcnZ;P6L042B&1^%#~dJS z0!un|K0{ar;-3mpvXB~AJN676mu1$FwhQA9xf#4IIhs_)PW zx$}ZQLF&1BOr$znE?I%j7H|>qp><*i%H#RVU0wO``TG}=WI+dR&u)BvM)H~Xql&F= z`Wm|Hhr$&|t0UJNN22y~7g4g(Ps0XK)4^4e{mySf4cz_lX-S&sLXa36dBb-h|?Mq z4f(C09ANE_edJ1W@4yQ-Obj>;HGq~he9d#|*w6F<`+KUxP9OB3I{GX=TA%SA0iTzU z_SqUGE`y+_)cu!-x($FE=L}K6>E*UB#Z@OdJavLc!7NbqxN>8+u?pHmWYS#d0c^jh z!*Oab!Nqu29Tvwb1SWia2qgywtlPEpUh=il15Siu8@o3E(MFq z&830u3c@ClXR2YUEzz4nEkf;wIzm36a+H9#Jx^^yRP<*QL9yrATmjGKTkyNgAPDqz zE-mnv5~_upMBZia#dq`!Rb+=U`-)8Nqd9zc$L5=DzH8k=Z z4;s7vc_Tc^#sy)lv)g^KlnKoSN(z;RD|zO>Rr5TsUQ3$AoCr41IY%;4xw^jRdAV-D9au7&dqvS zcaw(3rfZ&3NV-v3E=RWHZ#ftRXssOQMkM%X3qCg|9^=gGAJ zy7t+txvB;OD6WCKTrGkJXnmj*cj!H@i_+Nea$LJp){*!I-C)?srw#A=pi$B>Gf3hw9WLy0Evn^z%{<>rQ z2Lj_NTKQ_5Ie1$AHDi|i_pF-VKjwx%q()FhRq~7Jf1!y`DM97iaFaW)8?F*(!)7B- z&Kjv(zdhMCSb!+Lbi-U=`l7%Q|GkKW%Y#R$m;G}ubu>?jm7Iv3CwffCug&*1M6%}0 z8nutxLLgs6z`pNZpf{J$v@1_~3?nl?vFz|bU5xP8A=R&k?e$FYVwI(^QuPI2(HQj} zR+V*yUV9y6Gq_*lUjJp#kb)+ys9lf8Rd&daqs_Pc?YB4qP#v1EZC69}?m6oct|_(K zErq8Qvc%GNs@q>t$q;FS-IyqnFy`9#d84a!B%HL$g>EhaHcz$a`wt$>1D4-ohJJGK z#|7WnTn<+>{PLkRv&NH*%=oyLs(9te*A&knBJ^^cS(is=S@-)wriAjIL#NU%9p$ZW zW|ojuS-+JX-S9^ik>(xwON3RV%3!u33$cjS-kh;mgqc@CtE1+kV>@@B?7A6SpS-qa z51En}#~?NbY&F%V!I;6Jve&^RCI*;XBh66VBIC3l&Hr1*&@MTjpRig;#;+>oBjZcp z8fX5!yp-5#s6-by#Fy-9jm+*;KHMZ(xK_G=PsZH%$DrITYHJwkp3FDBos^Nu5E{I8 z$Ctyw9DG!DB|#b8BfmZHtbb1CtM0BN4P^uPpqp^i8=<~wcxQsNbDwLw{>Vo)b`2qR zivrWv9R}o=hW+-h|NhOmU`)$nJG z=!E&08xWvSzLn`koh-%Ls^E!61d{i9>2T-kT^>%BzA_>KYt&1LtN|4E(zwU{Bep?e z*(!+Vf(^1Rs?jecgk$5@CN0C+O?z7jJQZ~4Z;KMT$Ge!0y^8(U?g zSimPQ)49+O$(3?v2piEcJ3l^>;QHD;!S6T!lUO%Nez@PE%;NL0{b>GeXpE6S%Z7z@ z&B|!DhP6J%sBr%n%{K<G{>p$B?u1=K)2eCDYg>%$PXE z*q`N*XZw(;y`C!_lD+>-9uxFJU4WkFj*AU5S&%=-%PYI_aweQsD?R7j$_wY6pq*XC zL-Ek|I2TbEb4;xW5yuk|KvqFmL;RRc{CJrOczfNfW?}ZKOW^=Qm$&SY{V+AYy>ID< zL3^bNDYi{cSAnM?ej7IfR}kIUX+QnwSz2dcd{9G#UP6gw zD*+vg@grNAo=&OHgdo7fy{9B>xu&>#F{9BKuk(ju(&LAQ?86+ZQN)i_Io!Sqd)A*T z+Fb`GN2TzUp-3+bu99P=%i4=q8s`0!AyF~b7fx9R)g$@hD}((B4yT-ut<74TAWYT$ z_wH1`qi0_^zFv8+!n`rBbzH&^ZB=E60!>Wk(m`}mbkqZJPdx_IW}8AeL8MCMQ*K8g z=(kR|9j~dFC5ks;9lD*gF;)SwkqBm6sN=kg%FKl>3@aBeej7?P(e#_*b+nCv8S)J$ z3WQ5>Pt$-kvL$z!B=4=43|W$&z@Bn=<`&9XQRIe9@!-F3|s-g#Y*X5?PCX75SV0k%a$|FLC&fSz^Pn|42T5 znK}NO@T>l7IgcO0n#{$bOh0ARWEL_TGaS`^)@5)m6_CVe5)rEx{E9NjaR+<2zNT-f z5=^ORnHfIWtQ#=_&BLXGuLIga>+5I!VxaYX8eCl5_}H}R;h@$>55(gw0yISIs42xV zyaUDD_JJAs^RnmF;U&;MpsjfMQ9bzW3d3%Y{1;rG-Zux&ar->cGYWqwz>TvL;|7Hu z+H7bMyPJtszZd?U%|~Njh{={ftNna_M0*+^PuSR)X%t~#nZGK1yb^JIn5byG_TumovG04*WKWPq#Bko|a}0j^JAWohAAW8fo3RxQR=!D3iC?302#uFJZu0 zY&$X_jQ1eZxUm!H>`x4+%{495+f{W#1|kGC;@RIe0FrDEQ3+Aenf%5v=%hnAqv(DL zPU{?ajQy+%&caIXnM+=R{tU+w+6=nca}IBNrvlA=@~i^iocxIDEZ0v(hcC3Xq@AgnTKH2Q+ zH)FeN5#^EdsEr0oAZQ-XR#n1gZ%x#xV$a_l#gTyT`@$=tG`>-p@!4xs6uXUz>#{M@ zR(Y3x+6L=yWE^sBNRl0ugl{LeW_5{;R&Hp_5$T>skyI@R(yr}x5ZusE;ejXt7;*DV zUHR$6n{Z&kpCqQ7!kGNwPnFQMsP>B`e3#y7Q{nkhDzA@$v6nvF zFYxIO%(2Szf+Lb^+n@mg*{UIoq3{Q@2|rj`b1Zhc>kv=X{_K09I1 z&7J>3umbOj$v3p(b=HXVG^0pj(C<+9&mNXwIQ5xeWL|qyc%}ZyCbfQmBv4&h=4oOI zCAVpYx=L>gUr25=>}WTyNA$!5tnaC4TFP|EftEkmG@RD0gQEjx>T`u=PhGn#UVQW! zzHJX$byMAue_aH1wVC5;B)+Hx_$`xzpX8J_;>pWb!|zGCup(|z54+PDsMPS;?YP27 z3y_;RmMPP4vF=SD3H&)ReD7W5u1u)6F|tmxF^^W0yM+4Ny0(r)YW9YJ8SAEn0s+@> zJl*57PuJL(!{H`5w&4P;>)_pOT`rql3F%zjKrA{90@QLzXNN4H7S=77FfTyRzAVhS zvKgt3pASFY3XzS`-g)=9A4D5}&3;OgaQ%h9&X@wa?YT3Li@O@JjSsmA#jT(3Dqv~b z=%U4HcHNYua zI)GRbFLlx`?&7B<-vysz+6cEz6P|vFk2ty3t**-Gzt@RcDCpSLy(7mLmFT59DbI=m z(=NmPQ@ol4-E!_!j)OByINDo7u1{-q=i1ihE+?Lr*n$wJQ`Q~J3oPXO4JEeR6;E)* zHjN!-ap%lg#?=U8S1vkW^BwmJdj}>4=R^|beb#bjmn*Y6>=LbF-&*4R8z37!%FW|z z?A*%1aF$Bt5HUzqsMeP^J_;ek?DzomdmtSuKK1ZAM12I-PD3%WpP#NT;hJBFb+oJ7 zyT}$)O8z3g7%l#fwa~|jw<&*C* zld$xfDw81~=enq7*?>>@XEo;vsUPt?+fYJe#Qh_F3l}N-{@*R}-ySW21pVhk{5|hq z5V6A2zaV1szYqT_5%+KXA>uzo{D+AD5b+-({zJrni1-f?|NDtp@!+pJ#{Xggp8W?c zEs{@{gmxj;f@|()zQ^vLMmqM5$0Z0unPc;IfAEiGrz*%*YQAdNA&e#}VN9k<<05)L z5FPtU4%_5s0sM^`TTU!5RINx!**e9xF!KapZ#}l=U)gc1zpl?Vul|~rwNR<>oaO7D zE7bsS8rCzZr(L8GC{^4N*R8Pp;@m6@s7n2i>j*VZemlev1|p~W$VGueVOGPq^nINt zM?%rFD1Lg8YzFgo_Vw+-4z(z5<9NZ7XrSDIIJ`MQLU~|lYVm76pV-e7ueaOP0#q$M z{KikJOxucIOZ_!Z*UIaP>?_5fA2+x!xnl!j>MTB-?r{A2`^LR7?}>4{l*~2U zzhB+PKxu?eZ+`aY#`lfoTU62`G?sEyKqviRCgXMVi=&!uR!YQ)fhXPh?<>|R;TP_U zjsxkK9oL2-693t)l!>JN)d#%SQ=+)2RFr09gcKU zz+0$hT-0#2_`}rZW>yu}{R5UGBMEO2Tf0_Cl3|&Pe=XR_R?@Utip$6>=9jms-@^O> zy=PohTICcZ2tQ8M*XP~@|4bCCkL#6;!0R3K_8B2RO1=>}v({l(J?_Bfivum2AF8! zTzsB4=lc{n?lf(hwbRTv@O@7?EME+F7$o?y#Q{2=6Y7f@8cNSwMT|;ahnj+oDiMn& zXF}FHN-Qp<<8mnC8(j1~?lU42EtK>Kb^aTwKPP5Y2J<#cMg=FIygj$=!+5Xv*w0_Z zeHlJ+qfcbSfI8hAvt)tk0{Ve1rTo4FJSF|)6c_t_@9n=^v2SI^lnp_g84ibiH?$Il!nCyk5!7m|r zm?wA=SPVX*Z9jKg92U;%4s6nUDmhcij2;d-tMfj8heUH1`G-3W&|-Ou1h`G+b8>_> z@_{>RIajM&Egjp_W3OJKH?i>4?EtAxEE9~C_9ps+nt!Ojx@V3!*wJ*#%2sgnVEsX- zv?+BK#9rExh|w;OQ|U&@&m(p8F-qBv7*Ffu$(;LyuRFnjxg#&ZsxMwxMH5bWfc+tr@aJ$N{70|#B68Ne%~Cd{ zIbUtPvSwgX$k1DDXPl%U){rpepfc-TVsWCl1N(D}#*OkU(Nn83Elc@}ask8JKT{0BRnwAQ&jS@d&3b6OP2@iKZw3caKWt0v%Y?^*c^{AaKZBQ(p zv8+$UX-7I+HsmgAtF2b*Dv3@=2s! z#f`-DyB^}6gOHCly>dmF-RtcKGM!%<`D!jxSD{E*&tReBI8|BmjWXG1b%VmN;5edf z5%L{@f-q$5*%&(aV|U%^_$i&In3e-$M|YUPkcX36+oZ zev^y(g2aMQ6XqI14~c#3tRlAWVU+C@oRbzw&@!uH8 z>%a$y?xNTTwjAtV8v!dAZK6XW$o3@yIZerpbcXQ9nyTNxk4(5@gHm!dmTj-R+ zZaTEgKxk~2LhnS3q39=G3$90cKK(^r3*8NX&UEfF;}v`qZc%b;$KKT`X*32_D z#(J}2PJ5rDS*!}3z(Dbb?qPVzEr3dBVKDZ3eqB5MX?tAn#d@-$8MLe@rzXdpQ(Qn5 z4dEjW2(qpC^i>(N#_7V%CpMA8fyffMN#}P@&v2fFgi7LR4-lieTN~Ra@S1Yw1#kg; zs{vWxC&;V6;HJ^dz)Vbd9_j6{9~6Hu)c^E84^W1tnif5uzO}>9axf=X>+<7{QCGWx z@CM5(1mFm#-B!HJqj;dZw5Oy~XW26;2a$JfnxKwIT$r}K$^}^aURwm%K3!VCgM!bt zKDJ~a3K?jOXM9ME(}OTn5-AQDZtzWPFbsgpsE`gdR8`M=8Ygdu2zR-)Pc~!%;E^bW z4QcW(8>lD-&Elz-fI;?tKk+kWa8sLgPkoxFd2kbG9N4SC*jPO-5Y^C7J%K1o!Ajc$iPs}tQb)U{#cfw7t|1jSmThqL*BaZfQwHOzXigr-hE9E9vFNIav*)OX| zkMdgpsLooyyQj|kjoGC-ozo4>g6N{uH+^RZHVsU)djeHVy34nzO}SDop|V+F(A**t zpU^!=n5U4KaGx{p@l*f%g`r!tx%85mZn7->O?${~58F3oQ`^VUvJq(D&nr#v)Xkw# zl!dtGdyEyD*=YEgp)ddvmcP5`@?M?km||pq(mBGL0OaUOJO{M>M6AeWnm+f#Wxhm8 z__Yz55F#5pxS}|`+S3}GaAw)HeB%;$d4Ed}EX;q_s3+~+P=gpAMEwO&u#jkI#VBd= z0I8D(02j03r=xGP9%)3xc{2CO;l+vsXTic`RotW1!~-dN>!eFza4R(5=I9gro73>y z{aQMn+yMf7mDiChRCSLFFHW6RHwb?Pv(=NFI&EJUu!@GkHWlGeLxhV@+N_Cgp2uT# zIlMzXbG4FiJ`Y;TG(NAAd$}>Sk8O%5JA}d-EKG~7PAG!?rjcM)Zu}0!+c<30MO}+U z0h0ar%5v>S^(0m2@u6IhH6$B<8*mD1-Nu=@+lH2i|K_$c>n3KSM{hrJFF7Y$$iQt{ zPq`x7CLnfXV>p0xWs)4PSP$>v=sGWh2M01>zK#No?6h7GHo=xdxRE+>h@l=yWTGlo zgN(XwGE7b_1Pp6$?R_TRVX&lobW2vkF`YE|dph`3z`z7sXo5SNnR5jG1FHZ<(AoS; z;U}GO$q(9zuu((Gn*k4GhddA}_HXGrOgE}ja%Mg#ptZn`UL;_oK$@)2GP_?(?_E~jdWBb#SPf`Wp zypEMOQDa+m81`uVQQwX2{607@8yeokei7NmDcrNlR0O^1xJ`mw#JKO#^d5mXLWe>X+`f0Z%J@_%Iv|IDyWYPGM4 zoG)oZch;wi&zfweRIz=gDTwmy_rrh58J0#zeunb*3IM#fPPUF_9=6U-(w=T!R!Ut3 z{{n+`p#K7co&P@kuNXWH`-8!MF!&D!|H0rt82kr=|6uSR4F30H@b{;`?ils|d|tTd z?|ET8%@hpeh)Rz#G*l$)=qaQ`G#NqVqu5wBMVvZR9DAZPRH^8f70H7IsIIo}99%s5 zBPc8FwG@ujml4ygAtx`mwfaT9EbS(-SostRe@I=rKmuFwZ*$MGsU3`m!b3i`o@^01 zs_bCjTZ#@(eRNiHY2`^F3nnG5cb{OfZ+?*D*kXjI0;gSX5cbd({jRA@KYi(|!80-f z$%aqADeVs~rzSU&RL}kOsS16w7YfZTg54H3zm06dXk>3n&ac&`MM}0{9Ha^{-{N9K zuJT5Al|kZO4pUo=TzRrAwEi@n$GC(0S!Lqp4K44FXOACVVN;*s>@B@oAjueyRMi;z z`g39?y_Xs={2teEEW8o5&Px4@-}XdBT;Z5NWX1Gkg+8a5U0lX%lw{Z=l}eJ82+y@5 zY{iifQZz2NC7z|Y#sI8Eoep4n_Gt4&Q<*7ibiglOUTk)D43SDdoaw{hw)1{b-5v&C zazwwMkEWpI!%o+7uf4_XD>kEdj)*d=HBx%0;(j2B^GWUaG?jk&JQecRa~ma>j?}d% z5PhkJpnnZ-Yro>nHx{%B5o^)Rqld%gZOHEZ6KW@6mq^wN5;(m>9!mkEIT?TqvTJAb zYW>te1{%Q>An}VPnfXiPJ=?hvW!NYU#LAH&D$1&)UE_IR+OWF2Xrtr^qb<eU-gvmMQkj#q(iN9qwRD%E?E?gLR7jk!@_40bJZ6%Encdnc?6g zcTWP+72V}_*vVOKunU$}aeER!Xe7Qog|c<88_sch?0=27p5s*{&=nG<)4yd&GnUko z^nrhcrR419dFQxyxSV%e1XpZZgtS@*2v0s)qU;;91xC%cHY@94d2P$C1&0k@@%Etb9)mKUY6?EToxKga`N|rvzwgh;U-ot6~|1P9H#0Qf$-Tep432XLX0x%wE)b z;2PxM9017cc615N(y>a#N(LssOS?+-T$i)z2lBaIYk$!CGA@>T*lYCuhrPKdhnL&$ z6B2RC>K)6bFM6Jo?OqT|i$G>iV?B>qt4R;uxG?QR-|V4NX-ZujtR=z1^Tp|xPYzjw zp6kL_06F*FpBbQexq{bmZ)gbLdMKh^k|r-O$*6G=)_YDVgjOQX#h7%|Q+NI@=Kmd) z|Mxk?$7sm^x#jLZ*!Z946tDd!DjO~Mi_dz~47iSsvWreCQ!l1x=1T+sZ$xXby zy?qRH2Cbi63j6u_`3EptMre~7?xkV_ zT+(_HRpq*wFRW^Ii2ZeW92vwXf(o^S0f9dPU?6!c_j^ioW2tI!)^se#41YXh4PNvt z(Ia2%rmEHbTc!p#7g^eGY%q2ek;H~?U2o&-J#Naca8uhG*iwOS`5E8 zot|KC_Hkoh;g@(eKH~8SG5`tb8MTf2vN*^WWbrgwB5{F7EeCUh2EZKRY1=#d$*Op5 zf{7ZaFYH!FpeMVNE{mHvE)xLKnkyJ3EIkxpCco>bOZiSG4VNMPqh`%fG2A7724LKw z8FR@B~|o{OWS=!PNp^W*G^icrBY^_&Z{U+CY@T;uVKC9aZ9?<~mHrw>?P0 zKmkfYU13r($XWjf^1W*Qn`^T1;&K++#wn8S;HC8L@(MRoxqBa2xD(on#s+fw%Zq@b zcbDxp*WbPe#w}BRHW3Hur7s(VU;4r}>5tdNf{aG9bz_f<0* z(5W^PFq_6=(DpLxPN@)F!vBLWk}o{L+4QVa1!lwn3NBwQPhQVWN6EuahzMRId43M?yS3z-Zd)x3E+#x`K1P$&G++l`H`c)$ZJ=rTtM8d}SM7SYF=;OyLaijQ>lOlFG;sUC@u&LYI@#U8F-(* zyLsa)SWRZoz(5UF7(K&2NQ(&5DhJ3OgLe9eXxE^1%?jpNSk=ROSN8?o6q5*WfOD(? zsP~7{^45Cr^5)j_btE+y*dG;$9#c-6>E2`^Zr+3vl#UsYMP@a~#|adKUQ-LvP5@uE zQJS_MQZMRvKCCU7I#5;nsLsdpd{?e`1?ek?)^5u(8EE-2q4rN&d$*8e+-(Xo$lc98 zr2gP}fP_G~&BL`_ZCyKU5;1=yNyQWRZI*=jlH{T`G$1H->C^)Cqls8CxZ9rS=#~ph zZW^9({h!GRmhsS7G_hzK700LhN1fDI*FON$wsXGcp!GcHcD!Q-rcV-Z3 z>O@O0f=PPGfCi!?PY~6jM>ZLm1HT1=p#%>|fTV@((-`_n zi~SEIm3AH(U!Q|T0gp47q=V4VauYYthjTCrfqiCq9q?$xDe(`5A&Rv7jp|0%Oz?y)x$M*C$D0NR7=cbCduWEr_H8U_^0u#`bfys2pzyOilkbj4vNr9HIKUQP33Lf?Du)b z7hISxRF_UzSgId$ZeF^jese;DfLcmuyF#ywBpw*QKf8YA;>}NAot)mAreesX76in+ z%?sUzTPcVgwdiAMqmoZz5-XHWlUG-edB&*4RHF3MM45e)xGG(ARf0L4nDG$0}D$= zUsN3z;KdK?Ga4=O&=*=vSUkM z`^=wxXR9S9F)<4@7C~EDs?fNl+j}-*G8UiD3}H10vK}Ny!=?%IFEHzawHyOQM(kNE zEbSyU=~iH0x1R!RAvtzKab%xCMubG;;dyZsiR1pAga75m2~386FUXK@|3Q$m|Jl#K zY$UGxXYqdvG8Nh1Kk=uL_)jD8pGM+8jl_Q%iT^Yb|7j%t(@6Z^Y$X0b_4gfv8Ta2d zPCWS^Eg)GyNzC6eK7yZ{97_^rzn+O`;ze-Ge!UIe1a~d!wR%fbS%SQ*C5F8YTvi46 z-;L@uv-pju?^ryBE;mX#U!b}bm|GZ#Ek-;z=MrKRMMt(bn9M?Yc`MbU?LmxI@O|Z{ z?H^)4Zj%A*)Sd|tQxzpc7zL^X{+cNXtkioe#G)UEPRjhj_cks)x45;LkIZV$!!1Bd zya0c4;I?G#sc2S0zYWlQrCL(flrky(0was5$K0uP*DQFDu4Dtk@0#r4yu=i5*8qD~ zF$;=q=KT89HHkw)q3!*h>qk!Y;?aQ#g?zRg>o0^wvVA$!sU7?_uOI8YOjy!OV~V$V zEu*PQ5tuU~sJpSFe)}}mWHD-+Lc6wd6<4UBx)##Jq+S>NTCA`Xwj;CwPwNhY5|(-6qn)&}m>oTaLxcSE3mM|) ztbnqW&@=#2^6$T*5Q(1pyvekr{3TbQ*^TiPcqyeWD0K3?bdGq1Li z^F?BRFY8CgSnalIS1H1dl;#sEOTN7Hpyk|rpPb)PoCWGZKMZ{v(_WhaxYfNa`exd zBvfvg$adhr(zx%TVwtzj^?=RYe)3J8$G*AP0o}JH&(Qs?q=nq{TiyX&lBFKHd84Im z>#cSyrJBkf2)l5}{Z>vq5tb?DEh~Ytfv;;R()=BIdi)*!J*w2{3+)mudpWITi#gf$ z?IU@nf>ytZU|B3?j`f4l%vWg`11nNrJkf_dx5=73buD8Y@|uG`K~QEtfiL8mFB#n8 zo!K<}S4R}$JKpt7tDf6^&586)qKE+vjp}-TnFs)K(x94t-c@GM`&|~Wxn!{<*K>T1 zLKsuj+ht)h>ZDGkn$G%Fr$-8FjFMmQu#|B>XUfoyEjk9hKB9ONctQFYSg{s+IYz;n zU1lyXdLwdm>M)qQnbUTq#c4S9wXpJX^2o}pf>7^Px)KyQ=dcyqYBF@>t;q<&@AoSLuTrn3c6D4r!zI z*Aku&z1I)|SCZ%gJTN&)i$I*?8efm|QNO}CIgdkvgE0%&+Iag>>Gl^hTI+8GskSfL^1a%g& zb0)+4^`GeYzwzn{`oH7n?mv3<@jqVeXYzHBspkymr=Gdc&O>bXXUx~H%)7ogipg4O z>py-en)+eh%w&|g9KY;alw=XJuT3(J4NO($0E>an#~AMm42VPPds!j_VTYQmjTx)0}}AZ zW86|bhZ!?oCaHCKQR3!w@8@O&!|HvMs@HvVGNgSNt_9IciE>2X@*V#dqw=9Q-KX-Q zcsmKMj2;AMew=tvyrm%v*^JcFemc5w$k%R;o3*lF-|~F!b9-$IOeV>-`13*6L+I?3 z`%P6y1;ja6s$Q$+5FW=~!~X za#}_CjMp16X#pC&xhM~xG1Ewq2rq78cJ@aB9aZSXvej0!6 zu#!GDa94S_m*{l|q%R+7PR70Mh^P;CZQ&n72dO4qCn9M$0uruh4W2}wE#C#=C!76< z28NVAsTPyMZsD(qno|u9TQW8rjl3PDlIj<<6WYw0O}HCWg4UkhbZ#}$LNBUF(ozaj zzN*0|6v%ox2@fG$N;H8ovyFN;_w$qDwTnwQQxpL`?=27QZf>`oqczk32+5d-c&r0&qeL3k_goL4t!eX1(65$ zdb6zyG(|Hx)rHkm)yE(znYweA~F_g(bU&%CKy1S(&&x5^jal5 zag(Z@poyOW+*=<(zKledXa?lML^$l2sVJJ2(XR)`C2-Z2A=}^ z2I~b)-pYQ5zm(_fP!F@BD26lPxB$-hRSk5Pldg9QzxFnPn)_52`NQp$L_(HM;hkN( zWbNz-s(BiOdic^jC^A_s8>^Hpy652fFUdx(Pz8-7uKalk-7q12}&8=VqRtNLS&9_0aGTM5_2@(ECnqI zhZpv|7y5df$`6eVme5y36p;JmFA%~GUrD6Hlg{!$#v{R8!kAyaW=&!MdAeEp52k1# z;P7^ppBcV)P~4gE+mO(~XD!fz_)Mr&!#FgacJmZe(ZV7>-T7Gkvsa|mN&fI{Nf5$* zJvjkLrt8Y>7JRe{Cw8gJ|3)56c7Qe{r5oDo7s~ww?Va2c>$~$}LiS>84b~!m`#>Kr zkpL`gc-ARXuw`V5`-u+fp|Jtped5I`tbMj-R2rFBt>@fwc<(l<9<}?fo;r9|2*~O z(swBwamLeDvTesmlo0l2_*}+2hbT9NVwpVazKbb^Gg*Z5Hj&N=*((^ zFPfg)6hHZ)ZSM!%5B0!Ndv@m-xS`L%hb|BdaivxO#$=syF{e+Hoc`vcH;e1G3Dp8b2iCjN)7Z;dDI=^nu|=G>=l zGpI`^wU~`S+}YN)(jb&c8B}+KQJDA*ZKAMPbjG+A#hZPbSr+aY-6B3$v9a6D7M1Y? zPiFg>5qzaIeX+DO+uQvM&OpL~${)4ISJYKikm`%!8LRXx< zxeJb%`3nkna_4Jzw(a2cTIfN9bh2x)tX)p@03~e%C9PV!=i6c@D}cJc8|#dX}DW^3b z44|L(XCNE(wpWZWv3v+thpC?B?=*)AS;oJPiC(?>ZCiwaqf3{j-knF^ zEnaLu>G3PMi7j3j=PKP;`(+7#Vu*a~`9#TwzgBb{NC4j&NtFpVWb@g4?4~EmMeHvQ z44*vNem_TPQYJc^?vUB8xy|O|;Qw2F{5oKoo{~M0op;pvuXj$>ai&KfW*(kUEj;=4 zxhU=jV|iJlh7yybt`76n&*|8LpA0&hs`YV64<$dl2-z3PWVwR6WfDX7->fx!v>y*8 zQsVPwUK*cz!s=Esn_?*10pK_e+Z`dT9dx+$ZNw)+<}d=^NbuLgyS6 z)Q0vaPfy{GwT18ZU#5LRTFCg<)UmgaiHimlka#H>&lOwpo*(E;Yq8>NoE5xfH8YqU z;v;f66fGqr^QfN`FWMlreWEEB*1aJdc96jNVO2@{SAo5Xy&*>#_4;1p(zPCsZ zDt6L7d}V8cEZE1+R`kf1^P~Qv zqj>GbN%-3c#?PmRQJzP5z=enx=#$5hlh1H;@9;j!R`&PT{64#(qj359X@rPvNVZ>N z?Bhr4`wuM%L;*Xp-}R?x0{P%MpTf|2tnj%d?1u%lF!1d=h^-AKIG+>#T_>zY`Z<7_ z6##x4rXM5#Pwd9jU`X>=5R+nBV}b2bqMMY4cI~VKH#3DFI*f)Uovmdp4aS@qRobkg zzUJDh-0rh#nFhWet8y<649fqCyi~o-0T#>NlW~J8zPKmvYMFj?m{2RAJ@Z0EcXsrK z)}Yk;(!hsjC{@okoCh3bg@y3+HGFF(dTgOKG8W(iiNLWhW{pczZ*>at1+6d551@VM zk9e^UBGqBdtP(HjbV&7=K1TR=Vs07^elQMs#wf@WnV@j~{Xm5=0Tn6$?!d0;oYH;%r5A2Pn;+D7Epk-P-*zKPW z38-U~li1VR8rf6LG*yyX2SS<&7}HIWc=T-wS>suu><;#Y~A-a zTdxF2F8Dkec2g_oNPZ17@P~go{K}%BCYps z>NI|eQT%apN_=Ak@6>3F5ykcmp2o-LOQ(}&rXW~AHv){f58VI#`?ra!=2G&Drxx(j z8ZcISflW_6U}=0`K3x|BDyUe!$BOQcIrgF|6Y(wlzKzK62$OQ<}J zkjV>ZkgrPC6Y&e5$bdJ3p>$XG78-Man@qb3C?5GJTzpLpFmKLr&nC^}J)zs*i=wKv zxK4(Tvw8t4Uh&^sEW0fW)jUxzG{!zG+3V}FKXP@qraiajW$zq#i{WUKN47A+wu8qH zjCRZz?!~n=>#f!uhZ0ed*RC>CPSv+L!c)W2 z1j7=+NUg8>?;o(6C-)w_UNH4MfPT3|vD%6DX;#$q3Z5Q(e>mA#thJ~UGZsSvCSua6fXGptz~mMt3SHNe&+B_$0XomfePMel%Nzxu;jpm&5f2Jg2!F>4 zIxvEGXDf&vxG_#OA}05;7X4CV*)N7pwgmhvDVQrp!B>v1d)Wogk-;xmE+dB}nV$ix z)aESkefw+-%6z#GMebiu;CK3k*4H78mXQI$K>uyykuj-%|As1OZ^!2PFk+mzU$OPT z>q({D3no&BmYCDXtX@K6x#h|4=&x{O-v)&K9-Nu?qNd|KDQ)^fCC!|-$lVuU%6o5r z%qM|kwioiVuXfor{`9{)OaJVwN5-?fV<6*l#u|BFpJU`(CFslAqD>fK?aYTWN0 z`XuGFnW*z$MEX$BT08VScq;jgVlI7m!nvc1Snr123c9qwYXp6Fi+7{rMG|NqN{zS3 zQuxapbyq}}8c*34ya&#I^`PX0CF`4tvQOlD)!prbCoAZJC0jj9r`KgiW;gUcjO=qU zU^YUj*1;ZgeZ4pmA?h4GNI(Z2S2u>hKeE@>2^7Wvb3F5-K-$X9*a9DXd+%JA`Wy1= zA(xSuH*ygXfCLxzBL)MKHM*rfC1|My*`!9TsWV>ZyG1PhjV_#;R%Kw?#JPTlw5F-G z8>4Am3+}_lPh!2hlNhB26^nR-Bt+&G(Fo1qW=xT5B7nRa#LA@YdyE=|ABt#6%AK;_ z3}}$T2R=NLb&TcDbLzW`Dd$TW&*kik&8LK<@>||i6%x=}DNsLntUfh3d_ilPUW&IA zAKedf-S08vkH`XvZ-61M9u)dlTyrddr^)?{aV)J66I@vtR>s9q;^?ZRj(%5bcLO>F zN=EOSAjzN8Pn*+FiLkW`E|ABCP64RxPF9dr&=Ybodz);LIm$Y{`9`oA{LDJKQ`?rn zwNRX(z$2Sf&wv@-ze+FQ&k|m2vkeKTdsFKu;E^m+GQz92^04fzwd1N#fEUmA%AAgU zsii)E^4!r`mdsVpNm(AA&}=$(j&WtrRVb2oWj3bIf)@5;UH@*=?d4B#{xxbGN;l~O z020ACg^cmq*!K9Yl^xC)TZKdzNgeaBe54X1tq2_$qF}i-n%MVhA2Us|$by&}3%a*{ zzL3zLhoFSU(afDk6kv(*kGZLW)d^AgEOAh~hI{yfKXB{Gy~8l?jebx+t_50;ny!Cq zt;l?|CFmyb#tsH0RG?Z13X=uvreYx1)xw4^-}HGP@cQnEZXe`5yMsRR?)IHo3lIXH zw3l*HW(?u>y*j**-b=dfVpQu1%*)Qh2G7V~#<-kBqFlQpKT0Ib;UhW63Nc%_{eYgA zQ3~gC`LXcgRi~RJ8Kk+DjZ|f0S#*)VeSaC@POAP5;=1feac7O<++0_KlwK|c2Pp=B zC^9UFlRX;ug0IcKxG4eI!MFBBpji9VwTbS0^iD_t6PtcyPkRT)h*uS7ud`M&ja-nx zxub_K6PE+xO@RW>qhK3KOio!dT##o{Xdz>4_;|m5pT(UcqyW#+0`Xzf%z1Sj89!u= zGj=LBd1WvD_7&so7%~OQXo9wv?_|16o#A}K=bG0=b;XIx1*KNKMw_GbM|PRqx^Z3L z5A5C@G-LWW9eozhOu#)-CLu*EC&|NJor09PXAhHY4Rj!MvYtW@d#;DMW5+EZrjr3S zGkw8RrW<*|w+r$#2)M#N+Hq&7Hbc-=)^*@5NpD0GDWXF`(g#umpaxwR%bWHwili^e zF@@Ll-2)mvMGxP%KSB=m1f4({toDzMygm2>L2NY5KA@Ow|64RZ==#x)>VV*ML9GJ% zQAnJMZrDFr_g}VXdX;}~(cgal2aDeMXFvbaqVNA%{NEOBF8jx#|5)@Ni~eKLe=Pcs zMgOtrKNkJpx9D)izwa3M|K6gJf0uDApcEE-nD79zZ+xV^=T+QGj93>mzrKS7Zi?=z z$dqR=QaT#RO-q*kl+G6&b~Bn(Yj>l`d?CR=tvMEVf$C2B5v9(<%Av$t!R#rrHs2fq zy&b=p8WN2?g`H6}pbFo0)@+)cB!6+}3apbi*82`>l7MvvZb;c@h06#rr;C6CQ!mC` zwqK7w>`jYi7s@(-%qZH+L&||nbJ!V-5;gPkO(=4qWOfVr| zm9e#`UogolJpRnKAE;9?uq@s9bVyaz&BOPZ36lsLwyzb~$joW8i!@PL{AIm7em1x9 z_oqzZ+NwU!b?HdYI^2oxcmOTIoCTL}EO(Uy+`bt{6#>iLTsE1pL9xTfsL>R!QV7#a zj@fwiZT}NQtFiHC)-dVUJLx^0JACe1n|j^!auwv@D3({Upl>Bp5T}WS&n=>srGdE>6t?Vc}-fP?`;)%5EE^kt{)}nM^0^& z*w$Px9efl;;Nkrd4_M5IocBuk*o8ZYT$+YY>VEC29)!&_)n*$It+8McPvPQUgx+Z~ zx-P+=$_@7Z)F2CcpZu~LcT-+$*$qgWG3L-pSn-{=ExdTV`mf=S(d+xd=4Y&g8D`<5 z5k!*eRITY|xXR!L-!lF%bxq=xR?AE8-yc@1BSt+K)+ggNZ446#u%xqW4grA~q#E4{ z5e(jT&(-AeEnWa$PaUH&MX@Z8~;S`I2Cs82-ukyT~`a~MNf2XrOjn+xg zKZ!p73wx~p6@-SK_*IYX$h~;qN)Ugu!o|zDUZT#o;lpnvJUa~%zTgq1h)rU|D>TLo z_u6y0W=Gl<6Hp5rL6us3A7ZtsLC?J5@42>?uruACk+`tzRaO0EBu~jnwW|6JVkOAGS@bbbPyM_ z3;c^;thv#_mo^)w{=JSUQb!;#S@J62(mzcsu~DtK{rkQSz=@-3w1KnOT!6|XPnp?Y z$l0JPQoI`R?K86mZ2%}nZ{1W?Kstn0jNk`bZcW)dPXcDl&W4*Pl?7xNxyNHqU^^v)2%JuT|a zr!Mk>%s{R0RR;Tst-{)6t>CYK<+)YHy}Pp9QAeg12=@FVwIJTZ-@w7^W>Y&1L8;~+ zH!O$O3gfF}dkr29^#&hS-|an4A0d6iWXXDsXL$Mqhe+<8U0cm~cvdAg@z8jrxox># z$cDOd{i0m-InHe4o@e>WrTKmwEUh@36O&B=NVN}KG;)uzWNEvHu$&}*OC7HZ7)YPL zbXy_;dU&EGs*T{hndIJu7mO}Y6G3r6fRmqqu0gLomDGAdwXX|e#9KZ4v@a;rWei2D zQ&!^ym|ZfQEL&-`g`KCueb|c=3%+>2iX3=zU-h$u-_X)Io2Tsp%!J0Qonk8<`X?d& zZ|HgO-QOv*^&jbZ;eY5kXxZK*(eTmm8E-YAgpp1WAJwz^rcAmP+CeyIx4-{~@&oQ&TkI8%)TNH5DHUy`M8s_XPRXEx4+P-1Df z4z3V-uUnJ(;7ImezjB78f;~C|#-ui{YI3Fv7A`dUY)iu-UN{+mxLrv}aTkKlMWke> z?jr7~Yhn2H6ptB+;4&kTW8T}S!hOaVkAqqBrARhO8Be-O1rV7!m0EZr@fAcMA{cIA zPju(ejFf0?2}fO}x&fcgIYlBFXl0&Fd8hP|2)Mv6a3+qwQl|Rk&4&S-w;!k_>>?kk_e0At0VW3(DBJPy>(JlvlsM*Wcx5VGk(kTCu>4gmsYsDo2Fb>*2 z1=BcyAxwlf4T=~V=mF~B^w$J#K#;QpfSb2gH}k@32BI**M)XFh7hpL;SQ7b~-6RW) zacU$)j5sBJMsj*y7wM{;5CICZ!mLpc!)EM0!8xGB+l*pwUV=Ek(}xPhD#06@r~rva zr9Q8%QiW@=}~nsRE6Rv-mOT;uNX z`H(M`%7=*Yf=sFQaIP$B{co8UgIhzC>o6ajF0_}omb@hq7J^QPK9$!u;=UK7=60=BJ}W7u}bPZm|p}+#Jbqi zazJ4r(m>xTcp~39R)tj{r+36*;(B`)0X5X6Flcaie6%of$OQZy)49+|c6GI;qQ5hH zVk)S)`T9qA%M*z{J=+C9P!K_$P8yjV_Qy!34S51r(_CVoYA}YK+I39nL{n&T6>q

U;L7V7UGgZ%hf3gTu8MDgGo5Tl3K*-#@fP*s{ypOu6XGL& z#S+*>`^V#J!Se^5#*h(MVUIf%$m|Y}{W(H4If@h5gd<-cD8wh;5*7lM#SNw&z4-P{ zV=}ek7lV1?j4G5sS_aY@sdJ;QL+xaH%UbCJ7vMwxBp1N5r|H$2h*|7aYLxtq}3kHJFT1X{3(FyNj4f4q~(}X^tjn| zKZbG!-LLQ6Z>BLCW1J}YaNa1t(?#URSRNF4v0sLF0Z=O_d`oHU2K0vc`|4aWNZOlH zImteVJ282X$uCV@hpdg<3G=l**k&|z;f1%EUI$u--aZ6lgIxJM5>jFN06Eh!x}^0o zchSl#Zct$}*hA4YCaa-|NZ@;)D9fB|{%7!=qxY{V?;foj@Cbu+GP&oB2ip@L+Ez*a#J9VH5rc25f-O}PpiuIEh;?anUm08 zWqKH9v2G=aUqYWI(qi>ua~+>-b_5{0y=lBpH@kd18nhYTsVcrYWddey$bcMz<6WrBd=#De(-)>-w8{TGhpg z>J~ePsl*3d1IiVLbh1lWnd?L7w(7El_m!zgYcxObJ{iL;Uj~=Sx*HUUnw1*OwaJN3 z+#vgQHYjaX(xyt}q^%sh-sCT>Oq;<7BtrUm2_+OVZUdY9jKB1)&`{Yjrr6WdSgK`2 za++BNGz}aI#nyeK2;u$e3)4z5VEb%W|Jp2l0NqJ3?8tVVt{Ql_S7^fKR`HkRY$5xs z9EIvHMPfz{kuK9ARvuB}>5f0MsXl+yg2PS@hutZr zS}N@{rDOQ7VpcLx{cL8=M9Qk4h`z8{*CmJz7<%)}Lm7{AOXB1aqb8Ph`Ql(7@al2L>5 zd(H@LKV|dPOqParrRWp#TiwjRjHqw;SW>(UcSgTFuQ*qnR}~1!?t2b2p3Bdle~}pO zl4viK&t2MYy{r7xjjwOKiJZlcoZ{sDbqLRUWQ0X9!X)bu$CS9xOIzI4b*Rcm3S)KKDhJyl1;zjOJm;qdbs76Jd^lpCcg8fRj2G!7GwqKtTU+} zKWR<(QA%4?gqGZ3nhjD=}P(I4{aMzt*{9HKIk_n91P8$xbSpe{JpbWB3e|X z9xPs;mPZ@YPC(k=F5N07F<6hA`&&9!l{=RSQIe$~rF24=y9P^p(&Zo=5I5RNz@fU7 z-T6GLa!O-X(!=Z-j?;wyd9Y7%aM%Uq5pd zGs3kX&Z9Pj7&<`}T$aqjpX_dH@fBH^T;IwzcAm!-vjN;jW3wB04gGT_|DXPwfbr;m zdYc*l=V_zux7Oy6r-MZnFLH3-%=LVteX53qJ^Sdv8|me_!DK{hgq{ z{WmK>C(-a}3>{CL?YatkreeZRcE#Uc1AbAHk<{o_bfyDNWyW8H(4K2k*=*GI~ zg5=CK`e{Zq#JutJbrT=8%&&xFXB~A7mjQ2z zDGy-j4495p-eESVvOPJ`A0gFpYoSXT1pHP{<`ps9{ zY3ivglU`QiUyI8J3(<2(3byTfhYht1n>P6wNpl38>ikywpwb z2oy94GcIs7l2A@>HDeSSk_>Tw_?EIeE%-T@_`ya^;ATsawbsU+>ptNv;UgcpcJj_6 z6KaDKPS%ri`?`=I1EEEamHyz}y9&HSUCXY84njbSYP{^=&D?lEZ+^aFk2uM=reKYo zwpH{6oxGFCUWJfTudK~W@y}q=cf*18!4voqG0UgV3Q2ws%WrGIKhiMVOx@v`XF`S{ z_{R)z`(fGI77NzaPyXVP0pK9OdDRL0G=1(ZV2)e_j_4jkyt|2ebCX#=@{#o})pvxP z51HvV6Z#;0?A|l1$P1}4Iqi-`gwcZpzJ-L5?@tT5`l)K7Z)}?^(VJu*-(ho8v=1AF z`nLx=mIQB0ktK zO--*KoM^nqe>-TbS2rrNr$f=Ix8d9Y8sdFmX1?^3bOH>;n2IYP45qpwXhoqL0}jem3@y2E#q`jak4^vYsv>8k3)u{8S_kCK$|k3euvn`|XpJ zLTu{Vjl~Dr&geK!kVK~+sT-xn$UY;@IFt|<(3}U}?mfO-6O*<85^+k0+MpaqHQ`oC zS8M>McA8fAm)xyRpUW*nmKLtFTz8w2AUaoaiNA+qaPGSt?h+6S*R^3~Odj=wSLcB~ zfvtt^>t4TbE{QX55C`An+deZ@Ghs9*z7Iv$2OFWW;D?B|PK|JhC1ysJE`!%1FN>%7tD&#CKMik9SLs3l^{geaBS6c`XLj})8(aUZ08V|r|%o;EiwFz;A z@y>+wO*250hJ$*}@AMu9<6z?w>_p%+Y600p=DY08LE<}Z!JLRWWoi~PQ=p-9*_-+C zBZ;RbwT*JVM!PU0A@p3G0bpp+*&MGz%G@ugVb1>&xjmC_E(KHyrn=7ohlt;$U4WTX zqBpZ5WKZXo)?Wwi94i7wd3M1|+o0qAyAt`KEQDQ?mc+A;14m z+6n%DJ>)m2Lx9D>6T>QgQ5!qM^6=Y+jDKC;VeeA`qZ-z{2G%!Wj7K}I|LZ|NXRm*+ zw$Cg7gW7VL{~eeGXYqfl?axnt)b@|s{!!aMYWqiR|ETRBwf&>E|9!PxbpHE} z@$}!TEz$p|Eqi*9XR^)H;gy_hMI+1oZ(`%BUTNxy}sn7 z0AxCTU!4D=*xH(%Wvqk3&z^(o{7dEZ=$d5zJaIBwydg!wOK1JNgf6SET z(UZ1y^}6?7JyZDw@TmrD64eNjkMTwxmqy|pa`CV6kRZ935|eDiDN47EUp*BIK9APo;p)J3-<8-_Nt)&c!Ka0`D7O@udXLo8)&VwI)mcFa1gj&pT0| z2}`Ar<{T1PJO6+@-)q4uQH9@zfT^^zbXa$$T!e_M?z;l+Cb>01?m7Nn{LMPtHr~PT zwXx)luSZ>ruXON-i71r`X)dDhOsN(PTnWabDqr=@NEX}uI=9!@9e7ea@FMFjv3?j} z)cUTi9wN=?m#s2IwFXo)uo3e~qTEu($MT4T=10W{O6I8hunowlKfzhgVgN{Ue)E6( zmt|?_r~c58YN{7iC84UZ7|uvsryPnGcDg+qLP=l5leV0OS;H1y1p6@hI3-asw!bo1 zQyl43{w=KcwBcQ=Lo11zb{t7Z;5bO3{5@?kJ=xLJ5UAEqWi@czQ4I^3ZWXOs(Oyt! z6yP#?{xbo-PJYI>b{N|x^7EJSh`u2+j1m8x{gYWP0qX-BjbtX-g>kv`;(~Ry(GBp3OR;NnEZ)|WS+j25wwzBD-*kIE`tm8c~%g zQII4S9aMFlRGVRi8V%J&V!Aiu1a?V0-;_)g_0AJ1s9tXGKJ)$&)Kh#J>OzsyB4B>J z63Rru0RAbNw7MCkXQ!LK7h4Ym76CNd* zuMuw19`&464f}FyBKD22Wl@bmVvrAI^>*P^V=3sdMxYt!_Y=^5Vo8`&v1TH`J%8G< zXdj7|x?c|b_V#^DUk0h7mojuSCbF-juU&zDxUw|9q~+FwzR;-wj7QH~LBE#sOdl1g z6d%bsMFce1sAm;d_NYRXMyhW_+Q|?&H$-~hDn?JvFDqK~(e-`wh%~Hl7Dyu6Z{fD; z;B|YYMkmNyw?}6@X-6^P+N{gthvtbbFX+pZnf5qD}=il?$h}H8z#o41B9$rO#aweQH-Mp7Ip+$fgv5cg&PvVYHC^7>w&G z!1$D4tdp>R`J_#*AFz4yI}7$H_wcvEd}`k5h|b)F$#9ceQWl5e*(2uC#Obw5sb$fX z6W3wxey4dHXe#O6WZT%JxWs9;M6#g1@D$g$qu&^4wh0jv; zVze%QpP2ursmA~RG*#c(M~{Z7eqa-L{r!#Ee`%_G|Cs9FKQpy{I!T7~J!dUiPtuDv zjE9VxIaW%JgD6Gfh&4~mRT@7DSsy-EEltsS#X71tp~+$>tfF&D_e_*4F4dYrHR3}O zKZ)(_;q9hJ$-{w1Fyi5)3kdT&2`E(NNE_A5mf`Xw@ghOrB7h1DH%7}|*$rB>g(-(v z$Ry8D*YwFj)S!8zE7!Y3mJ6WAQ4ey+oJw2Us+7B$u{s7T?8f@6vN9iFXs#PCFV zFPi#g`=(~b@Vr(Gj(n8Ql3tI$^F!@M2`M1Z3s?39guZhNAj~%f!;2>++z(VAR_>3x z;;xNv!QSpzLN_T6(*!OH|E#V&6g_PNzjGLErQSZBEI%Y`sm|NCTrW zvY9!#I^+GF@UT&6&kWRSf5x}RWZ;x=4^l6OOw~kK^mBY{J-mA!)hMt1OTIV$IAVHJ zNRn8*K#ru~gB;bA$r!B0%-40mYi!d})-A{mJURas)>6s!l(Za8A)tzH4LV4`2upFtJoT?o08B;RE_<>kR}q}d0GLJhYEvP0pz?#4Wh<<+*DH_~8b zy&3pbW~FOi#-o9F$4zE1Vb=n{TTSC8{iFQ-^b*#sqDWHDOkIn)D_YhUq=RQ*5~6hU zL1O=I;AUgUa{@+2r*Y#C$*#Y?^HJF>N*Rg)3Pu#=s`szCeBv!W#@os21@9X6*_O*$ z_>parMG?4s2Kri&_{auQZG(@ku$G!ci{w*1NM=G}G%4=29ck~ST!oxi3ZnxpyX=gt z%>(UFPB)2mLMA(s6xGY(1h+-e_RIw~0F3LYs>mwc-P)=t=jEY9ScF^r$@7Pwf*=u; zzuM3p){y~IgpKxNeZ8Ys@^$hO%5oo6Pm@2V%L@8_3Sd6@ISxje+u;2_?A>Qj6WrQ2 zdKE+k0a1EYY0{;)01DEi2}qINdx_KlfrxZz(u)Wp(xmrJ=pBL}MOp|*lahqcLI^o? z-rIfVo&DVRe$I#e(a&pU&H8j*Yku=z>x!?3Ob!t_L9ovNdnRCp6VLV=rp>C|xsZUh zfRdw@clb8_Me@F7NB?fH;@V5pTcL-my+T`EBpynL_H>!C;*fnBkm89z^Y{7N_%L(F zE?sjQ#CanS)JM<2Z&9VVn_oE<82kFiH?^gz>mh?QQzwUoOO$<=Z5?&hxvewt)z}MK z<2`71I8LW*OEk{X6GTgkV+#V(V&~eSM3i~DS7PxROcM_v$R@4oQYG9vn=k^)N3dfv zOT@okUX2u);BIiC**x_=C$5K|?6ZQ52vVR|w_!qS=UfLXUsEk$3lXE%#k8}Qd(iC^ z=5=3KXDn9Rw<)5I;_yOfvreBgzjN`h1^RBk_hVfWL67W|vUo5(GjAU1D0u1(nbC@a zvZEzITMs%d}Xbj2mwu1AdOuQI;W>XZ!Pta>VO?hcN2G0>AgR;S<6Rg@Ry1BNIxzbl? zG2|0wKMn$Ypvch6xu3R(RufMCO{l>TzOC#Yl&%Da!cHEqEN z&ILa#c69Qx#%_*|}CbdN7aM&GP7`}y4ylqg0c?K0EK>5ZxybZS1 zR4PS>#^at_VY-Nb?|wKLm;0kNJ(mc&7V0iL_y>(pKpHM~ql{vR@Qcg>y5qoBEnkpB zhq~$*!q(iuONFf^duZKKdetqhg9=;Ea=gl0VX{Oi2Tyk& z=n|@2k4ghU76rn(e&5GMQY*?uVo){jT?tbvQfPAzzS}}49&~oXDD}9Uoqr{fp&%aE z@o;apD{K%I+)|AeTzlG$Nu4^D-|M8J9c&BiX2J0Ah`;GSDGIvx-V;At3~bjDzTkDc z-HyEvpF<+|-hx~ip_EZ}=+g%-m&)am#nLpLADKxP6GCFQl+0jfjn*#C9qlu=2z}0r zmAkr=mhA4(*??Psj(4YyLf4@g29XyD7m_lOT?UM~Y&QY~o`nSWUzOTlQ*Sm^y6Gl9 zL4@r;PFx(v%SkwdDYka%z{_#)b3Az~@gSYm?{+8qcQ*U4uKE84Y(ZCT?X0Y)Magt&VsZ&XM4exOXe9#(1^o}g)3K<+y9MbCu0AZX1o3q&G!C2+~3md z;_t$$vQ7-SVDBgYfL{pA}SBaq_C6}W0N5PbcY{N~thA(3X#&|@`@wo1{%4ZCoFA7H7rH%ZjMnrGbX;4r8pp~YmrU~%fRIXdEVlT6Tubh&Z<{Lm5y^Vh($dC z;U~e?^_HZLGU<~w!(Ba(i83zTZq>c(ZRU~;N6rv`b1lu~+`oDu>I<$^9qs;T5>lf) zdd@5$-f0q&UWO>mc?8OyNdQpioiik>zqv|(ldQ)QbD z9g(h(e1u(5da^Rhjo71lbww$Exzw0K1i(WQI9Ha$zf9XtNooUHR!FFuaWI4@Y;`1U z^t~dxu~)<2$vmFgs5a~S?D4pjm5QPik-icZy<#PUIl6FaOTf{%RBD}AJA9?}4`ZPA$n_n7{JqTxCSo=YaKGv5v=W3bShH8P1$fJ zLvIO=tja8oN=dGo=W2Gkqogtkecs+J5oLmz*x-g3GVhv;Le9t_di4)uT}5+BKX4!J zH{K=z27O70h+wps#(H0VqEzq+e7zCEsjoeXjq<$P)G$bO-QRB9VQ!G=H6($p9pou3Mb^91I!SFLx`5MTVm4}l%qB}O$n8Z_oVcsqaoa0duFZd_$ZIZ!h`tWp-UgRO%ww*$op zy#-qMM|(Re1RN#MQ=PJvjIB$ynk)#u{UqX2u$8%@q|&t?iSs}xREe?wcrF%oEo#K` zNt}DPWMPwV8-jHNenE9`9_6&Kn3z@bAjeDkTMogJn8oL_o+MdnkU^aL4Ahchc>CrJ!AC=__+7tsewTTt>L_`o@l7tn6^|&RydY^Dm z#;d$`@?!8z@6$E%SnD$pEfC6*7WdqgWuTScuK^0m<$erBe;M!TjS_GJ&-8eT$bF1% z1Zt&bA=%>A$-Wu~2GLK{F|?3TwNKv}@Kp+Ay*>3fphZ%rlm@)6b2k_IQ>8qJ`9`{2 z_iPlAnx1cgWCM}HfUk}4mb^vowxasD($dj^l5zseF4X7q=4Y}Pb zSi`w&_w8(O$_U$sz|3lAMMD{ zE#hJ@*>ot4i^<-_~Ui!0m3DY z0N++x_xVf?JBafBRoPWUQBgfUw}s#@Hb+fE8+%V#cEaB~)v7-T>@0}a^YIDc04SqxUC0<;&(i|F z!R>3VcGM&$A-iVRft!zJOVD&Fj zR#UtW5iUsTvpL^TR0V1rXuM`2)g{D|aLG^ADQYL#o`3O}xp*v8JgKv~9&R*i^r-(l z7v6DoE}-Onm^QuD z4)vms)pvDHHjh`=)1oj?C10i!%BHCpOz@G)E$+mla8cT}Ub;Nt+>bk<%@R*YB;g6F zA)?c0Uz-qTxvEO7XC27=Dn!p#J12eVv9D!s= zqu4$EKBfBM>fq_;phhUE1uF{?eD*a2j7r8?r;f@nBOS)@LKC2?YyQ{#dI|(4|R*%1e&GI^kDz;Cl=cb3N^fVr1 z0e!96nU}_K0*H^6cPz7yZyvPQyx`fK&e0B=w&}2*vsbVJqbDrp`MvKZoMw2-cPI<2 zQ4B((OeOrfX;dqFwj8Lt1tpuhiR`bUl(vYQ`I2#II=BaYj+UcQLiJp|>1Yq2+O+g{ z=(+tlxF&B3v)dNXtR2@Rn;43}_*HLXCSx({5`CfJyVnHk;5JV5xj5=8f4U`f@r!tc zaPHbzkSop^GNj;0b{bYSvk|t*CSOr)SY9QjG6cdioQ4h?lCEO-2%A&*`^<5hOL`IDh z(e~EK=S5(Ik+Hqij{2<3E38C(?>4IU2hgbHBOhaZbMoCVzwTuP=ygb788Fv4vEDL) z@B6mucI5|@$oS11*nDKP%xn36q&ccBC|G&dj|HKV+0DT)(#T;cH|(?blUpe1?fI)F(I|=3R5CXK*V=kAX~MaH|3!zkNYzpS4|O zx=kzfxr-!yf{niSwD;>*o)XWMxGQJifICZWyCkPS{cJn(8FZ^{b=mfqOS?e3qbop| ziB7Wz8APZxmp$F zJ~^_&!=_fcpgG@qH)~&lx<+nT%xst4!TG8UY+1k9GApFFWIeyi{B@aBXx@)GeRL7A zs>hI<2yy#~Ikbb`TT_V83GMh^RPFzrYz#>?OEPMX#i_$}2NXQnLb2M-z~HG%BWZ*6 z3wr+%UmM8Mb1dGpqV7q%z?R@Z71Zd>nP+LBaW;Hr!H8#57Ol+-2;4L=mg$5cZf`ar zOCs5nw|Z17%R?6*M# z8E;bQ0gYX{ef&Whd3o>0%h3QseSkFj`;ZRtodJ!mHq#==Ku5RCDMS= ziZLE$O_LW^5l2!ebY-jS-+RQ|W)m{&K|q)uaCwm;t{R{~ee=rTzitKiS_u z+223e-#^*kKiS_u+223e-~WF0cPi_zJI4Q-{UuKe@)@$HAFS)0nDki^;m&^1_w*pb z7n|v{A(H-cR+&l928ol02`y}k3>H>Tj=zT0j+^;ue%s;bQRBBU6x0hniMPzg4NjBq zT?jn*RBe+8v@5RmX?tA%j2^5B>S)~G|H{wuwO%rARxWi)egro>QkBS);^sbye?GB1 z(m(JV9yp?p9?A1ft&s>B9DvQf=5D5uqB6{1H+#3pzCmhAtZNu#)F)Xd|+$wMx4dA|1)}r2D)Hgu_3xvesK!^T!8W! z`^=_Xcr91Y9-L_IT-P#2RN0qbF<2U8xT& z&0^dyEbeAHFeVC+15)nMFNmV_6<3XwnEY>27n4M4QE>3rwo4E@AW6p_!)Br-J;~`L z%Bi@FS@XnRd>vmuOcTL-Zm5C#dK=ii2>K4$n=}K{aBg?lYt9+a$On7h3-%ld&-5AU z^N@RIsPGMMf$Br>;}D_%3{i#NwXi_q&frNe2C8|MSMr`W94c;$!Ks>IQb8M_)mhO{ z+5u0Ub%9~9nRk)3q&Owhz}`XVep;@nJc^m+=Wz3{`Pv`Cp1HQVk?WYy1phoBb=i7g zQh`nJIHhd1r5BiLE1;sm@wE^v`6Ty(SjW&5#xk5csxRlg6__jn5N{2T7z|`&^Zzcf zH|QX3q4xUatnUTZovQ*PGHjZyzV=JAOd;hX)c&rEjF*X&JnII?vts>aT=5Sn9r#_H z&8s>GBswD^IxVMh+Q$Hyag0XiR?Bg2Xe_{UVWBfSx8Vje&nOF4lo>N9+e!{}+xw~J z;VdrhpW5iRSA#u~PuPAvc$kzBEF_&UA+h8wOrxZ-u7f(!eGdm=lcS6^YoFki9&Vzn77ME?(xoK#a_O{ za``=mIqubWMA*n_^ev2|q&0q{OLBTVwkGsov0|2AXY3KI{WAB1x?g2evG)xfw0SP} zBLGqe3M_MkxxnJxi_}}TTnf74eR{FHFUneuPhZc%4#SsR9xR^wwss7*?VD>0)`sYR zid!kkA!r6TRUP}_AQzPUvQ>(-*?(2c|4Fv-|0~%(`*QWl;@8i!r1^jCG55D*EB2dg zNB$z)xgg^NN9HcHWXf#elq|I?kFs)dk1WkGQ^IoD3O!{zHp<)eheL7xgq5v;gDu@h)bEbgJY5|Tmj~`vW<#MT7b%>CsZ`~MJK6nh-$g)by zgqLOr@o&k(`Ixbq?Tf2%bEHS>Dg9AY{vMAe-|dzj+gb;7h~}G8!K#E*FiO#^cjp^tc+tU^Hu$ULbxA_IXO7hX1#d0JLn9%9Flb;1%K>Z3tv3JK zaHhGq2+s<&sND%{g;}P@k-FRR{O35 z&upuTyawr;H6@Hm<&T8>`Sw1K8A1Vl?NI&|%`e?{!^Boy=ovJ?mO zYQW;VK>^TUa@=kowv(c;I^Xm``Lfgv*2V`^l{M@5Y%wQ}wPH~W3O9P}R3%l?AIRMJ zbu~VeX!U&54=CBd4e;EhXb#@7pKrD!+goWe;H(syqkEASe}1a`3(-Nj=eq`;(==)x zdArq-LwFG+J*yx^px!$UW8sGp+V*6>i~8%(m9u3HpN57J#Zggyn2N?0mf{epOV8$m zr{E|JOS+$~lp>)~bgv19K_G$)W32E>(3zd_N>#<$m*;z@Y5543Z)z_peKz>TmC zAhLJ|s8B~$?cl>Xiy0e^%ERZ96w`-ydEpB`#`)NEaHng93jA7ItrVi{y=*u|EM5Vw^aUr7?(URZJ^}HVuAS+`JCf4Fr+F4^3Qx@r2BXGn zq!fZ0!%O;)3y4OoGER8sS5Z&rPX;VN`X^kViba!V9gLlEB~shM=%X?0O%&6rXC&rS zIIxZtttiCTJdYGRN65I6FgIl&Wsw#efwl+A>~Jlp!eh%yNXDW-gE8URpq?=+K?y=; zrr_99U=?sdXU_cqJ{=Ql70~WSP&QMTsZbe$9L4g<)U4E|9J3rC-S}Xz`Vo6$NR-R< za?@tw3E1fy7Mp-eC%yoSJUKAsx>m5JYRs|VYfwb9uYWE)@pHWJO8W}yiR>{2_?x}x z;V^!zgC*vYn9kyD@Mjmq7OXQoe#I|x-{1?nVZ|73?tLW}^_hV}fd9?Lac4-yi`Zi}$}LQh|B6$eBwtXEY2szeb!>6Os+P!x&FdfmEu^|)&+EKRTd#j78t-TMp;}9Xc{0R1|%ml|F z&X4m#&>K6|;|&2oZ+-Ct&z4KsAZ;rM45A+8t;*QDzJ}|n!zDx=|R9`plm<80Vep%6nd$re*g?AH6i}-({4z|}=5kZX10_QP zbyVRr>jJk}d}vehvFWT%>qafV2uU2m_-9i;ggCt@c|OLS2&El3ogOk%S`yN5H?8h$ zAcItWS`~=iRn-Zn+a|KAO1%&IMlT9FPN4?mZ3Gthf3ZD-X&E*zR3dXEAE-$#As&A zA4R2^9`x#R`T}Ri9~vKc7K*&!K3Uh>GXS|asz%TYm7*fyojX?vPAievHd@1OXLWfN zc^&UjiFLfRd<(e+!~Au8`PW-->2fepH|8^Y4=+>1l}kL6iZvpdE!Pj~R)4t8Q;ynQ zUsFd9zDGK&fTWxkm%W4u8*eEQtmmabkRm7l927r~a}l;ww<9$(ZKu4Ph0yG|0caa1 zHjlBdavq%1IojQj-ID6%BjQJ}deQ*{|;sU)jE0qFO;`aO|4mp!QzXg zZKeQ$GFQ=8S6BbdX2Y8PgUwd{2b=BseXzf^+4$7cW7 z>>r!`W3&H#o1L%v>yGjEpTobtzr(+H{nYE%2JiJrhcgSi?d5E$JffsdTB08qm2H2- z6xFVmL#_U!Y3oODZp3nMday0syit0Fc{&)u0vOR`YB?G?tjyY5|FTYfi>LUOjiXuT zH&BruW7Iker0Y~Rk4+wf-}EV~Nh>YQtl|>-+sm6 z9Z^)w$dFzb)wBgWvLacHIqmH03$7nLm96G7zGygpsxbOFrI-{Z zca16bI%zHOL<^)%B3^ig z7;KA(LSy!%VC9#e(F}=p_Q%pp&O)-cRxs58m3g7(_nq%qFBCrn3x6N-H4qIuc(kZ$ z3!?3l#`y5P__wMbP83gh~CL{lI98PK;`mH-8^0O&~Gk zRE_qF#EP-n>}Nb>U8J|O_j+%sa2vJp`My5W+xB_dXTIXmo?6ipxpxTdbPtgckCS=E z5SNcL272NkbPi9A=x4(2u-S*J3EZy56kbs%yPyV`50(oH(RzwQSb>Lo>wdL~k8ZEj z-k0VFVfeTGJ~*?Ma>&1Ysy@^=RUuMf%4u;?kYp7Z3VIujOU`XN-Dz&r*B}UxFJC2> z<`WZJdZAydI$rcCJGITF-P3u9e|n8|?oh)lHnYUO?vwR!W_FjBcws-|)Ts;T^{l!a+)luZ08R{a7t@h}v)Dtbi-mwr@2Bv?QiqVX~sM&zBG@IwX^Y4mrw)NNl!C=JO;en_Rv4mEJpd( z^%PxWYT$N1WBqaF=|Drqy*w1Dy}F8*ein<-#It-ELAH`*f8x5xaCNjD@QGK zFDrXwa|6bh%B{b)Cxj8n3p!o6nKD1Yn7?6Zz2D?;;iOKAFuk+(?cRgPfw1T%A`X_L zg0>f`U!jplOsuR6Ujq)w=^!RQtzfrd?ynG*0*1Nu##taG>xml@dvbnLQ|3P826fKO zBsD*Dp4_YjSPv*Y2!}lED{txn2MPDMe$58-s=b{kcsP|D#t_n6KM zo)dKvQH6xaDITQXT#;nYlrMEWcguXwJ(j4K*)wVls0s8_pvqsSc_2z{y*PEVRA^>h z=azRd`w+JH+R@(ex0af8tEJH_Fy#;BneUyyHoLy0q-x)Q`poaZ4V0ZHRic!--K)LE zoe-NQqPVJ;D3{upCH|NhZu0r2*qr#?SKiM@=T%(}_cxr1Mi@fAYzC&JJ0|S>uoHj$ z>S5i}%D$Rq#bmf*>5prSWR9Z(fNB$Ad3#%RT^hJ&(>-r#klgA|HZ8#rT+N3S8rH+} z4l_B+-ocaxP0P~t7fp#fi}HS4=jvxmsy;D^ca2!Md0m7pPrTN&#f6&MGJ~fkOgalSl2Aj?H=5#Act*va|#1<2t|Td3Ev@dbg%}E;I>`nhh-7u)l2)kW#+p z<-#XEram<_Q?=odoFKg{L!73D{L&YH>Ubga;ze$qH|BlH9LdsN=PND!{2NuP*2I(( zJd~<~a%1q-2m8?<5Tx8YWP9J)45I@CeyXJbyt11K{xM5l>thp)z9PVVtH|T# z$e7#Y3smB`)6(HAY$AaOJLxjST>Vc9{QiGcV2+}zS0dqGsQ8=y+5_{q3jE}^0&o5f z?gkqt7%_LDkNl1gQK{VaMHy*npOx*4GPaU3_zMdk-sN$5SLy2fMZLkrREz(sZj7E< zO}~Ce|h64f+vs{2i|$OrNqd{$jF(Jr_Voj z%Y+f|rv!y>ripv5cjW9!%XN>o`8A{lw;2`&+kW;od66Mf{3&{F#8Gtn&MYF{iBN(H zKPwAt7C7lX^hnCQ5pp~j_b-UB1A|3aTUf|AtW&usXN1M&27!Er_>kFGTav@&R; zHZBVB_Qsw)Af`cQ+m2_O^Sx0yG(dRba`UCpJ=?yFec)SePv0n`iNi?WwtI+dHfWSS z^0@2c$vdu^5NTZpR0(A~!uPri>flS%HWK!A9Y{E40nU`}1M^NKjP2iF7t$twQ+P~h z-z7dUnta~!JO`F5Ie>})YZ(_U$L!kIDBYPGW4%#a?j4b$=sYLxeMcuN<+`iZ5*asM zkBH9&gE$h#Al`Fxq1*!m4i(%h-V`3c(+(!psO5-t|}PmA-Knb2L~3v#2(uoG?IRAM5^Nw_pWQ;8n-fA~Gt05%{SM6qjXdS^4X(({3=* zmwYYISj<-_r@n(ey|OsWxsx8EwHbI;7f^o`c)S~IT%{|2Lazf)Miy8n3fzGL$H`B! zC$=;`o?b(D2Z=HEV{;dSZlDX?U!mH@VM&%cIh+Ysi;@MyskN^b$#w9P-cYZi05+#1G6^PH`8MWF0L#LB?`mvhzKQRLCmTg^3cxT2#@S;~L zEOzM=2`25Nm{;a4+FW5Hr1fVw&)W3!W_UB8M3qe!Fy+>s8S8dq$8}7_O+lK3wNr^=;T0-^lMBukv$>2 zs)d<}KJp$~t?@QXp4(zlC6YuGXKnO?0fyx8kKZYZzW_oVZ;wY2eaKr4$vNA8nB#t5 z372(z!x{(Ge4Sh6`R%RhV0u12NVfpdQWapa=dpn+_|!&>oi}$5Th@?S&2i0h=COqb6JP2sL+4))g>a6C*X{f;$hBcLm>DAt%fNBJ)%F4O(Y0IE+-sixB z8xtD5Buh~0TX3F!tU3-!aEHHvEoMcr-G|cO3sGQ}|0!Wbm=Fw%Upvc<89;T?A5f|W zl2~_6frBI|mEldVr%3Q^(jh=A1xtn&bS(Ir2Ts}nF_n5Cf?A;$Pjb`v>sUkSG^ zT46nUQ|V06PqGqL7jk{jBZ#Pt=A^qwt^-AR4yeKb5P?gdw<6G#%~8F>>&+IiB71id zM{{lm9Z-gPj$P8P;0Kt}S71~^yNrFuNz2`*QTeVQ_BF-;R3_>IhG7x>5ZN)H0AZBx~Z#vuxXa`Pf{M>RMJ#l;}0PIL9 zy$6uUg-Uj&lq8;UY*`#x)}P!48|GfCB9oO}z4U^yKjWDltu47@u`)?2$&mOmW`EF< z;teHCD~!DNtiue1d9-FaE!6EU-LzWXv1RQUOWOSK1ANQUOiYf|RQLKS(Yx2#t9;SB%Y!32g+9rY`{ ze(eR+yM=Wo`kaAi$%2p_M3^Gi7`FoTiO}EA^*=X zEc}09m?kyI2WHPa7@sqs?kcE7t6rCl8xx4JkRjD5pXZdJkJpxEObaWp)Pu7u3AaiZkaZjJ4hfQU9qY_i-z63vdd<1av4McUZ2+B58^JZ%%OEsx2br zRiF|xyX)r4{X_o6T{{g4L2*3SaG7}WnQd~L&~rt99+yBql7ttJwQHnRlhVu1yyHF_ zy|vl%Om2SvB`}>s+WZiGe|UeHGe$ib&y!r6lw70F37vTV^QT&_MhgD{pSm;qD>}{= zT6XCfQ!h@PsgSZ~=I_7zi6h5eGA|Wv&%gA3q+hoi&E=cc|DDo35=-$kNuzWFeV~{p z*xSooLW!}q2+!ua+V6Q|uZ0;k`RSnt2d(hA-IF%8C&#I83gw8-&0;4jq!bBT>^|>e zCR_M5@k5U{HsmEuas0WvR7~ry8+!_ORRtR`=GtT4!>@i#P53*T?|ALJ9o+*Z(v-4h zc>`3U0H2=&2EZFh2K%~3&Idrb%L$aR&x}1dbQG;E82^q%B$?&JvzB4HzX+xn8$+I* z(vtnLLR@Ja;wk=3Q>KEx)#%$N>Qm?^P~8Vb%ZxbQjEm+chmbN6Y=K#|sO5`XK~P2B zeH&x{M4G*Kcg@^6wyA~A+@h_#D?i!9tX4?BjjAI?6OFaM8Wq85$EbF+XsyKYk^+2v93zg-NRq$iqwR5>lI>gXB zKc>G?f>vBoERlKgNNC!J|690(lZ@wg4g(iPZ6^xLxzs+BF-YI%_;0V)tUg3Q=F1rn zll5KJPt%m@oH7(@%~uvS^zLq;y(D`Bt5tWNB*w|JqTK<8bZzZFekebWQbJSYS4a#F zEIykveWp{B>0l$*{DeLC`yShu7~!Q|NoT=EaU`utd$QBCN3mA6-`Rt?!adoHV|Teq zyC5;%W8;UxfvMqG2fgsI?3*mv*8xd)t9kjX*4p3nD_>1HCHZb}{lbh280_)H%&lwe zn93wR;r*p&=34>lN=-^{5njziaGuAGd;njt;LLfu?Iz=3L<`U~vw2jWop4<0%*th( z2m1oZ3j`bbodyW@I_l)>ELr4z6_qE`#vX|ud-Dyd=AnVpfLRY9!(8`9J9acnmqNLM znQ>yCf6=|}h~>j@sRWdJ{=#SUVZrS8M$aV4>CX#~hoE1jx167|O>?jrQg1Q^bMUYV zq(^I)*VOr+K!X)o6G18Y3X=R7a^>ZzYAsD##W`)4{CM5TggSnHDQc^zfzKmoIt z2FvA`ccwkPkw;@ox=o#ReE+&iBBbGaJ!6rSBe>>s?9X|+xAPgqNG?({$!EQy4;r;^ z)WkJ&%S#R8t0yGQqYc+kq|dEkDc1GoQmRBbh^{M009cyy72+mOe`;=9;^GnKT{ zH?dxa_HQH9_f9`a-8c=2D(hfQA&Y9ApuiI50mvUdnzhc(uk0FYozR_|xw7JAr15$5 zmI}Uopz6|HCQ5brdG1I2cV0S@kw%h^1m23|%ruTuy|^KzbFhg1U045SwD(_+M*n$K z+P{8dxIX?@Z9e^5)cx0Q48MM(F2rp7l(h@3FI!mna&VZzKd3J)eK7v{$6M3VMn!DN z&+{8Y_z%L zU+O}R!R-nPD|x3|7AA%#5d!;K5* z!x+q<7Msmoyt)%HU_z9v6Cs-62O>{bo?+@ouPHo=tP+>)o&ukUS1Nbz=CVaWmRqUP zPb@n`DAwu5%Oit*{Z~a96ndu6Ma&{+vAf?0pJ$`}%E!Z5){MGlgUJv+9}KD;w^Trl zfuc(i`ZwUDomb{yMlSteLB1ZV@w(em9IplT=8~@!)62hMGZ}yDDc#a-Z{CO!iG2VZ z3nr6lY@)%IQAb%j6drYzpreyxzm&$vMR^2RAxq@fsw0vB>4_o4~2Gd1nQadT%;k@ zrNn*#z@x{GXG_1@s`!Ed@^Hp>)yddp_>i|Drmh%r=TH%8)`3FKcbJ|0X z7u>2d;TZJ6?Elo ze1>_k{x6RLe77SG0hfb^6&}ZQ@=Lxu7DB5>X}wysnq#*>MTtTNE)^I|BhJcgG*YBG zeJ*FoBQ9;0RS#v*Bz0Cn zHKcvV0+wBi*$!Q8ddLS5=ipgr%e~{WrXMcU7&r)_pRzrXY$(-6;4Jsvj+!Zq z2Rb8#L38zFDD0$PGp_5N)V_Ggr9$2G19?Y9%EOFGNjLQz6|=-VFQFwXx3@$iH&*NK ztVGepoeYGi+TG}Oto+ekteR@mt{_I;#ag`?FJ2J zR-Hc=*;lE&u@@3EXuSTCN}d)a;}Lj+usF;yD|iv1vU^lzCBlcfnX*Z=m;8 zuuwj;V66MwC@61e;Z{L8uQL1QZX*x1hr|(i>&m0xl}}qjKhsV>;e}@C9x5R9cM+4Y zv9JVBSDQ|ZfbDxoZ(35d51#5*8Hi14d)DgmQ(^#Hr>*rX_E}e}rn~7sWP4&=A%mbp zWyjSwY0{|v8!q$jE8pbl}>fE_5Ozv3)6ip(Eu_KJ9jpd_ZqyDt%YU$rplWE(duh;Qb1@Xg ziK5*VM(q@izV{4LfKt*($3HVOfh2a7sR$Fs+MKz*?fA7L8(tkh>{J|w-9vI*vaU~e zpHTK7^9k4mNcRU`P$yUWG5MNoB}zWoa%8Kw)0S@m*Fw^*)RBrxC}OL=)Sss77Mu%2 zV|izh3M>cbrMka+;{X5u7{cUlXR53_O%8r@l4lgqPpJ%Isi;R06j=5QFT7M@R?N?ix)SM?#}PW3W& zp2@44X;$aAhlli&C6uVuBi^lPywlZjIlnm`=`}7ePVSq?=%FT>lV|0mCV5*+OiZ>4 z>yonR)wsD)EJj$~LVo8vl;CT1cvQKPFBPofwW*<=cWrp%N3t&w$8{}Ejf9(lub%ea zerjF&Nh_#(Q|f6$V%`yLpAI$P;%n9T%>+6!l6{)n&YS^05zjbz{c;U+%)bOcv-0ai zz|-AR1(UVEC{!_=2{GKvWp^KP-9;aEMGLV;(+4frw2uiZ%Tzi_rPuqo&D-uYPU=n1 z9I9tMu#H5Rbrj8zj*s|^3k_#4P-}S;I_rd-^yZvgIw!~4KlAL`f;>wf1VOF+^+#dB z0@Ks{bb+t32VZf0e5^Sn?z3kj)ohA6vWj0UpwIZ4>GR!H`01fq;U|6Br=`fKEE+up zZo44mp$q<}u24zAS0a!Pb_lI^Y$-HsW4in>17@?L?Ha|`V^yQ_j+JX_kp51IcTKD> zzsMDXs$QZ4OvekE$KiwGKXm9XjXfXD+nw4RB-DueO41EbdskYDocx*$fgTEqe-lBqEN&{WC#WByWJe3|&taiKM&6CnXx zXrG9rq7!q~5UbKU)@+;-bJIWC|14EAf!ScF+-5(k6XWo78hX3%hNbP=a|OyrJY;8Q z@HZ(Rl_>nlu*J4RG2!p+_Z1uc$U7V!Fo_1si`rErqJxzZCdjb!qV#(yfK7(8gY3;U z(a6w<&V=>IVL5@1hXTE^{KrV+1<%^=&ZDd3>4%eEr{3vu0{pgQw;S9$bPSyXzn^!0 z;R}=*js$dP&nX^Y8Be^1lh7PLV zH|Uz4FdIiHCY{?GHYf%$bS7<=R|=V~$7zZJEHRp2k*DL?%`ESdK2lH9sWGz9q;lR| zI6W*EAeEZzgN66dD|6d|TjlRpS*n@X59JHL-TU|!eJh#EmNRXdvow}7UX=45llsB( zqel?E>T%apVdGD#WGg4~oscA}m-p#|jbChZn25aa64&r5PI_tdd`gt2$%v=%i}M%c zhFs@n_S29eW^uEC?qpE+6vBD%M3VW(2j-wzS#1U6ke1gMF=G>{(L=xV&yM6+VRGen z=9EDL#XN?%c2Efy&qOu22H_Hsr{61(Aveu=E8#*pVW5pU>?;eCXM!5!(Pv$izL5y3 z#J-0P*Qpk_R9;fN%Ul#$8=*|Ny8*IkFUW&hdJiS%uH$xtJMKGd!}}h)WI>|lKnPle z-520`qp8+5yMoh$)bR%_ekAps0;_}B^id-=<$JW%4G&lQbsu;#-wqhvy*Q(ITIbbW z6#JjDTmjmbylarKCDByr8jlmk}hD@lYDrDTxw42(-366RMIwX zJhrBTV}P&Nrrk$aW#X9L_Y$78Hb)?xUSJyfT~q%j>;CK6=|8jXzkY0(Tl=dnAO0=t z{_DqvjelizUyl1TccD$i8d~i&Ql0J7`T!2!xuB+Y8my$gcanxh?L~grc5)urDdK*HHW%6*i5NIB3D+qcTRHc~z!j0EA zJuX#c1agT-B8e8k&BI!ych@V&Pk_zb9W7(b=x`^Nfwn0h^3Ic0F+lJo)x4iABN+S3 zPs-|)Wd1s9X0b%9H1`8FncD`)!Qi&S!`s|ofu2fB|ayIkdjS+mJCp$J498w zm1zWlD>M_1;sB=O)Hz%ng!J4xnLw)TfhD`FDWvE;wow4c6Rx<`E~wtc8ChiBfMX4r*|-}=E>3cNm$EO?cF_&n5w4e+?#{vg5jd@%19Pu83Nh!8L@Bc z*oBm4sE2oFFdQOBJ&*k<<{>I%B-0I zJ1++D(UK4mJ+nkGUV=NYz|sM?U~K?~xU0f+_(l2yQ)}^}2U@gixhuui1ezbH*K^(| znGAgt3FfA8a4jwJMq5fKYCVh>WWLWN#c3};VA|lx#|)LfbuxA{q6047bF5xjJp~Z~ zjB_)~6K)MIF0PZ#awCnDGT4CfvrP0(eV3^lEMa7-p%R3MbQ_|dhyrOM>)orT>V`h={pxF3T*>vfe_J4B02Ey(Ph9@qxv_|H&$5Vn|DH#_T)CrgJ(`oG9kG0Oww8V+OR zKU>E>2M3?`gPUD_Z!aw!QDCdcHA1Id9lFIEKdiFUs3MxKPFpjP5hyUSZp$myavI|n z_X$Vu*&1v@+;2G|XuqREKu5byKZEwZn;2WLO_#TA`&+F(sW8qwWL` z{5S6ZUbfG*W?k3LaUAP&edjn+wVLJ$73|J@Rof;`9u(;@gE0wJdl+me34fd+q5&drJr6Ngpt=ug+w=O$$AlOfFD%{6hIyXzo0vmTT5|?!zN#XaLg^ zaL2c8D6+T}XwYV(LAn|C=yMGtgktjK`u)30{v+kki$7uCyEJN!WKSaTYX{3Oi%^%UTcK=y)ziXGfdTB|wBbrEkv~J&RPm zzU)0dD~FC}3>;M$W`ZdRt_|(4Do!ao!!PhVu{yUg4bXMjHBFzY9jDhv=$j&`aNO7Kc)VQef3-uA|Fq13>;JRNVNmsdL>KUU5bhG1l*JEj zuyi8G62n;)_y^LpNB?`$#raQb9O8aI(!V6#;@^k=NV>Rte@OQa>HZoEnq?_=Ybcs!9@NU29d+L&{W1}MK^1&>}{S}}0$BSF{<&|S2 zWO5RH0n&K5cucn5Z`$vq-};qC^Nv%w;hBkLMDPymL+tf0lYG(Jx1Nu__iS-W%Ny`w?3qW^PYO(gL5(75Jhs6#a zUHdSW%Y7Wv*Zu@!*FI*W1X8Ndk*QO?V(*)&rj!qnNh3nJ94`&Xb7vf#P~+z#AAFc8 zUsI5x9(R*D9iQ|TX(|vYZk-o(RNMXejZ>LKIM81-Z59kJi)*jDj?W9Z`55|{BI1}v z2v$(hfDzBm(>?0n%m6=QAopq6z)^C1eSG20EHu@{Vlx{Z zr>gKh!dyuERhxz3xT21PqK(mXXAc3=pt+#PD$XKQ!R@uwyS5HW!kY&#Zs)fJH^1Nf zroNCR3DC5R>#8MaF3jAVEsRbzyZemsFwaQcBPvDMdd%tZyNObMP3e#-8R>`4aBqA! z`cLiG=JNW~NAkzo_iVl7?YutehnGAt3Ze6rhmcSX3Q$0QY#>vJH*@JZVKKJQPJ z)}N88pj?q~>Vy}#)NHg*2(ykb`}RWCixccW8EY`S@7bI0=$?N6^fb%YD={xtN&E@7 zWBN~;2?SIJo(ok<>WJ8s-@!h4T>D(U|E@|XEH1FG)Y)11+Y>Cf{pv=vY3f# zf9jFq#66pA9qhJc9Z1*_gSIEX+(DxzeP%Nm>zNOwX;q$#W%X1&j?ww*E*u z(Niy~0`;C?$=75_h^;e|eKhYhPSLapWus+Zw{;4;ez z{i-w`lT4RN+M3)W4o5AmSJ643U-nu7nvAauR^@EK&Si_H3pPoRa6Z$o-&K5#xc9XK z-iMVX90~EauN%8d^52M>F+xp_951XC1FO=iv|lQ|X9{dq*K0N%mSgtWUdSC;g&V4y zaM_)tAj$x=GHhB&yju774N0Y|b8;&CA*wOZF(oVo;k|U(i{AzNpS?Kgf8FhXH-&@q zJhRl}7W%KEzxOY__|fm(4zRy_v1#((HvDd>m67|Gi+cIjTWgBB8z3@1otLWdgP-X* zzM|P-(3IftaSHZ-ok44s(V3C=Q^xL_MXZ*+zLvQTBXpzOs?iO4K71X9{b3VU2MdEi zkf@Gg-(rM(aPZAFV;)l;_6AgRUrCuG_<~54yAyiLxb}5SSIRfr;uZr_uf6i+!+}C( zTeC&di^}MT`iijh{2WM6P-3^Di%I5I!W6IhWYHuLpb1l%lkK399<7a!)k$4U0%B#3*Ww3&0Lhc#uhJ^M{Q)A#*nN4}B1K1T^XTuPF5!zld z)GVEpVnpdy&kaIwZtj3B)IJ2)ayfuWNK-I+QT_$|cs3Jo9dNQb3KxUF4wI4J)hE2< z-0yLJ-(b8KF!fG6FlLj~9eu&pc>$^f0E)|XEg>r|_xIM2cTk;vv9SHz+w^$oKAwP@ zNUPKVaDY91Z%m~J+-DT_4k@fQav0;i>wTk*q2*xye0P^5zX`9~U!HdM>#ttbuZ{4p z2|9-}+hXu^w=(Mx>vEP?YTX^*!%-nF6Rr8T=ly?xw7yeH<&3*#B(OtyksTm(iW z?oFjq-W*CIDvSBmLg!1hOn(ZqV;8yDuitHAw)R+OERLg^jrX##SAF#nP>&?owSg!L zLOw;oY!Zn-Q=I0Z=i-rGYLmjz6TIxLW2P) zyYNTGpXN(tD6RBk+lY>_W@(s>X#xRi4D0E@fPj5eS|%G zD&101=C->ceo097cnVf10pXCma?i(Wd2uN<{&Us&>KNA8qG+WZ2%;ls=z**^a4q!! z@J93gRhT(}`^UADc|nR5&{QZ-2CGV#gU=BE;BE*qJ__=>qL=YysCCQusIt8DJ&HPy zHLUKOEYs1|!mWC1iEusXg=ZR;z}OxN`BnkdrMYvmi^K`j84LI4$=9KZzZCbfPDopb z*xsU(nK$a2db%*ap9g?-un;T$%hbEIs9tBa6R$hYfHH_EF*bI^6FrHgfu>_ls?BBI%g;2Y?|q51&}dD%FKB%}TjCDtulO9k}iX^*YzM!S_!{Y^xh1>Q65z zDazj2AoEA+{W{0*Rr57;=d6;{`-MjB6U0aZVf9E`gP!EWjY0Cm({d}&xQ68Vox1Qc z`$pr=mE`!~3wtRTq$WMN4~QYXVrfZTA@zEMWlJ$FxXn(?n6j&hDKT{ZplFqx{$eZu zN`G+JlABWB{+(RNS0tveRNPeQ^3XJ}@a?TDqt)QkR=B6UyaSMEh$qJ*j$Q5`S{NIO z!)7#y@I~?uQ>IEPk)_@N5=s5qDeESug?Qa?aSp6g1s09ok!`Tfa>kc$e@W6Q=t5p_ zIcnQhQ$c$D{s83b%X6SnUGLSrhHVk(CP9P?LEjz~T?W;6hfsB%UU{|&-DhRHhl(Ug zuvrZT$?Dj;VqXS4qp??1TMmUCL6M1fO=7>;Oy4Kq5VC@Sz${R`U^Zfi(D&H#ll<$G zLkyRT6L(#}^d4teXFYi-85*jHZ2k5O*u8t8G<2QD zOqqODe%2MfOn!zE`WDrpeYrbu`Kuh+Ym&(hrU={Y1@CY6=fAkXBCd$LQ+;KJQEHr= zaSlMY=Oo7#o+GHl>W+$gLbWI}C!EU@d2#&fk+e!3>Rqc4LCT5o_RFpyC)AO`d%s|5&EWM}35Q}a zYWE1;2@LAC4)06syRd0$mzw?XR&l@Q_P$(po6NgB3UKRVyYncyAG6_0D3TXlRs|IJ zUJBuHvmUG^QBRG$f{1@Pf4m|S^t$S1d&Vaf;Kl*6keYihUg@OuVeRLh4MzZ2gMw%3 z6x!_ZyeKW4-A9(5fRrP7w~(Y{550_dSNJJ!l#7gYRJ%mHZ=KaqA>_+g?#v%B{sYE; z!1xas{{iDaVEhM+|1W^C0^wgX1`-bkhfLck$k@)^-$~uw%g*oR-zSYVyuVEvv_>I@ z-vVeV^O6NA_wDlF3=OUp*3_R>m%0yNX=OX-zHQmKO&*p78X1-mAL)Y4`Ufi|`?hgw zwsF=GfRj@!<)hLr$T)sZ0L+U86 zq}mgb@W7eI>YTSzlK*P<;Y(-U(2>P{UQL``;imOG)&5+xK0zHLTD?^7)5* zzL9opktEqHb(yk;^s=Yc8}+{&2r2TA_HoB%qNkH0pE-5ZM4`E`ywkF8y77gXn3_G9>tm|(k93eJa86&}7;vQx8mAY( zryh5n4!+Z;w^zIPb{I$ae3&i)V`VlP6|W(HOme8vPuK_3cx-nl*QE4({^VGIJM)yx zf4ViH3(h6s^Z3!R*p3FCFG5T`;RCcIN$&ZhJcUor?8?wbeV#-M?>f?mlzlQjB$;bH zqo#2p>Zd1O0Nr!mQ!e@CVe#IUM548LiTe?vT@If_n=z`r$M^Z6>HNQhSn1yoJN6r5gDiDi8G4WME$?gPYZ+3j z<<)SG&UC%X$zb@(k>v6`>s`5{X3Q)<*|ZAZ3Ql#sKhV%=473)-^k<4mUYpA zK~JqUWI23mk^@f?v}08{-qM5+QWzx%_Sm^ehsv6?U-fdT*gr=a6e> z?%4r&D1*f>0rhQRLDkGVuGK}oyRe0laBpDhj}ll7s7;m%U1A4ay%oHf0~&A=-?M7H zOP?F-7&3SXL_v^DEenP9PEyQxA2{8!>Sj|zeS&5m>kIxPlnY`)vs4*apCxA^}`ie z-YY;K{vNycHEyy5L$S0c)y$hKcK+E9Ktc+MJwT_NK%JC^A=Yl z)9bES%bf7}WYlhvUKFKGr$NSL;#Vsiats}+-&7q zya!xeVm7OyJ@r5KhIu*nnd`Izu0M+bmS$eH4b|YU92k;dx)g~afjx{_d5{>~uXz2k zxeb8V`G#}WgGcmvKbqCIT|n1?95queL&0X2o7V!{&umzi;?MQ%te)$IDp(>e*Mb>` zH~JN`u7Hbnop-&xyDIijZ8qv(Ey}_XT-=@CH}8iIbWolbJQzfygL%SC4XW^ak{07b zk1k&H^Vcgn!7-EA8NIKcvagQF)|fcg?E+d2XGYr@-=bmdukRdGeNo1~l|A6uW;&>h z4-osIDE@+;4g%`ur-ULVelq&NuO)h<*(6&E2oZ&u;LGZZ(43c@G)E1w<%jfx4i|EA z=k)TqFy!DS)&&Mymz=X1yi88e8VDdn^wuh%uitZh88s+Eg+B08>kd?Kt95GYE@Pp# zrGLvVFu{J%a|;Uo!dcuiZXq^#!vo{H=m*EuE1w$$4%Ati7UmFX@EgFTZ~UZhyo%yT z$TjXCcrxM+Gd<}OPC4rIVyb$4wOdvKaLSV0^L1dJ)#wCXPVR{HU-PFFx9ZCguX|3D zJrD0RlM1}JXK-=(swg`u?(#mHObkpajOs$c5s(8TfoP+<1-59=<7kP6u0HIf|AiWN zL8@*usquJs^!eIZPHsiwQMlF28|=Pk!J9!eXhKl=TB=s&aH~BU$clzdT7FO`OWdW{noGDUt2+Z!LlrKnlMoSTMmYR z^SOU-p8vmmZkgSqJc3w5CR?Ut5C^RdxGKqsph5u${^1|E^?>W&bL;BTf8bUgioY81 zzvNb>--rLmt!4Coxb;sy_fJ0ePd@igKKD;P_fJ0ePd@j*pU>rH{cFZ>`SyGg;d{ee_ZDivoA9eD;$2Rg6DeUdYDME|`ifjK4GA5zm@UOVh{e z_MJc#jw&MdPJZUJK2gh#F|*GpA+E~tql|sXSWCc=b3JSwvafUwL}3*mCkIV=Z&q+` z^$3y$3M#I~&Zn(W73V!j6-$&SxAt#Gdt_H0yp~zy`}745HAYXWeb;i&`_m0b^;Obp z2{WD*C%&5xzJ?x&Y41;i6=o z9wJ05WSq0=55I}IYBmI3Ck-O<-GzkxFFXrYf4x=)CfY*Pl#lfLa&#gQce!kQek8DV zAABLsS`-IXo$DB^+dK%^$eWpXH1bVy#N6(9JnjJ~rOAbo?nq6Nac6H`j1~rK_p=0` zFTzqiG}DTdZ%zJs)9OjiaQyDqdu7FKu}n#=beIY8IT>ANsIDtup~Sn?c91@@1uf*( z6OenAHeBSbsCL4Yo<-nTaOaa7*&LEk+?n9nS0P)IWXEs!HDA>@nxsSCsu$l9RP?&p zJL%(5R1!pOcda!53WrmI*ydf?peLR^D56`dI9jr}KQk@!yYI5mt>)Gz+vzk;$6lpZjSp9|lGBE6 z7n7|k+)1}2cP6SU2nd|>l|HKhugI~kxw)$gH0GXt7_Tss96#|$*_K3{uy}@O9eOm5 zX7PloRCC*mk8@|h+!eUx7*XNG>4C68(Cl7v{a)0{l}r`_r+G9gE?aY zwgs(@yZ{P5hx7NM2d)c40or_9n&b^%tR2v@xQN|H(9V}r@74iABb?mUX^VWCpR+7k z1=?Z9M7%{FM&!&|9%yFz|{CjVTfW1o1l5EarnsKB#qDXNHaL&JCLPTKtg3Z!d8;f4FylWxdRxc zUG?)EzKA}E44AyPt5C=o=9l(W+#LAxp;?WA-25s;#;(ZX^MUxxFTmT8j0fpcli%0t z26HGSaWi#IGSoeSz9R$XW+cqz6$VR@IO%igc3NM_h7b%ig+}PH=RteK`um1Hm|fb= z8T|?NaKTE56>XD*;h~E^cU3vZY^Ez$%l2L!Y2(*#Z_@44>bORa z^ccUNOv`|?jbU1s#+O%>j;7t;Babg`rda3{yc!yL`uj^L>#q66z&sgJFE|Gj>w@)@ zz{z~t>!}!bg@7&b!uD>hrKRfUL`DJR^Tz^$@N-bxugUz<@UeD;B=>#&+h7_h<)z2tmws4OROlM26S0EnM#`YZ zx=bFVkI=QVK9qVS@+b(4ya}&0IPoua3ya-W3ut>5$uq*bTBltB2r|W;pttfRAU6x6 zId>n6-0*&T*w}np8`lsYPU}pO`jkjH?1q+iHr-Ty!r-*@imd)?BViGv!H2uU2-%U0 z(vEQ<&Z5~O(#7_;UVQ46xD$=-)n+tgb=Q-uzD1IH!d!`+JY<}qj(H?Fm^EL&IKZB0 zuXPlLd!_)0>alLSn{^)0v2Ioy7Vct8BWVj@7US<{{=D4jheUZT1ec!`>)_C1tK%1T7AMOP24nb<8mz1gqj# zE{Bm|JE6B)n3eF0qzi^2e2lSewdc&g_-kQYl1$g=)ep(KHO>v|1g1rWWT+8o;@w&6 zn6R%!{X*loXKUzI7RgA#pG`)7Vksb>tiGvWnh=n^;&6Tp-@tB+t{k3C^(s&tK3TnG za{>%++d5YX)cPe5sN2Qk?!p&mv-36%>9tI-D7fE?6_uZ(JA1lYXno#bUE}3)#3b$d zJ^!#t*{5xG7Qe3DAPW0+lcoRio%Kz>#{L#!!YNiugdG&G2+-CKpWF0uyGZVIIy~># zGf`<3Tg&_Ov#ncP3F?To#%^avTy`g0-$EQLlNFN-#f0CyUH2NnwV5kc$IR#GxdM@< zgR57!_$R<-Qp~HdTdaU2)ZIYq6!uQO2$Y*SKcdxb1jNwOD@Suqmeo_={oxJE41#{) z4&-#F@-8&0VT@)rZ1uL+&Umbav1JrSx06EebnA^tOmQR$+4SniDI|QSwVf?2tv&oa ztVeh@-w!*BA6uf7D{&;-V2w88>Dp>~zq^{@Faih;x_xC3D&1M}lE^Y#1|M2&BhNgW zLKa)5z8B>sTNJ6lcN;#Ti8>0sU)!Vi_Pt6CM1O?)KP_l45yE#nRwJA;*$6!1aj z5;%xzK~_BN6Jdsv{K`2c*QEzXP1Z@(b(kW`T5K@2yoMNVH}r%##b$Q&?4q?%X-zke z5pYdpGw1O3)>Y62&nJjqflR36`J+qDTI56}!JUR8TBlaq;cAi$`_5rIsXeP;IyTuB z0?E3sL{Rg>=w{_%yWH$P!=qp)`hEDLWa7|%#o}Ql;pg(eb1=zP+|cVT>m;OvaFjy| zODwgpN8AZwxSzUAF>>+JGX`Zf8XGl%jAmC@!O`gMN5ph-DBZuQ=+^l`v_yJvb>0I^2h``5LfKfTo$#P7g+rm;RNqlIR3w6H8^374ReYEtfoZRYia3E?XfMK+N;p;O;ik32X8#oB(Q%2hTq!|!EcA+ z@(L_yCU$Q#i@TByDDO8T_OIW3Pz)t#GKGh(Cl}j>)(pRFbN|9~$+>TnF{wV*bNz0l zetzgWFq|b_oZ8#tU5v^eX#9ixMHPE-_~K6x@8Hqq9jOb;Ix5dQ2-KbZV-rfRZxS&Y ztW8njR{bcXwsk0bP4YtOQP9ZG!?!j2+ar6y^^O8Q+^3`BMATivae z3uB6&^=7hzfLHe{Gk@p{71`uL6l~7D95-#WygT*bE=xA*texyV-+m#}Pp|6oIqO&G z!X)U?%iA_MCLh`2R4pj_C%muNjvi+0cD2;vK~JO#NG(>jl$ADPw(MN7JMA4J#h>*` z8-U~dOm<>q&_xlqIz$DJkXA#FZWKC9P})mqO&PeP6mVb~A6T|Pi2c$-T_Xogy!v>S zY-;lMGLH7L)Q0B^uI={GPugwia2M!QnqR{0E2s;P4+D{_o@Pn&@9M2GPIAVa)$z zamg~n{JuHS4C~FQXb2_@IA%pT?r?9Up@WNl zRTOQ%EppQ=A}*9Ct}0TymJcUC%qR~z&vVKNJC8@K*+TY6^_HF{hOGGBxP(aVy6=wJ z6#;P-lD`IJwVr-lUJHUJh@K{;g+FcYG@dW671uRxxq6T!Oh=wdpHfbY%S@tV_4*me zuSUo}Y3@M!vSdBmemG@3WxiPMHE_4hbYsqPKTt?l8fv{I|McC{PdS{S&+msC@n(oW z*J3x!d&wjiDXt_N`D<3L=qR%XY@K>@KP+dOMmn#37{-wI(*d%XI z@iS=yYB~ubmBkPzmqBKvbva%%N23RV7n$Q1Wh@u1(8~vjL?{N}i;h_*k$hZYlb(JA za4UNpwEkFav=@FJ!QmPao%A@n=J8n48=Co(&E9U#h*se_Rw=d9F2S{@>G471oDX2s zBIQoeIRTqD9`r}gjpMeX)DBBO!VjuToh6YOOCJ0O7v`*-qZzVWqD_gqwuqMt=*{6wIeUe$j^MOd^WuDR`)AbIwFnA} zo>rL>$2@hf3H?0(2E}U17deHjIhMzPBNJ$rLKlG}0SO#i%$Vpvva&CGJA84mwW6Qr}y>n#R%Mn=G608Y-VOqfH zm{->VqMVWBnV`?oaM#urLu8V>JgRA4h9C#2h$8ubB1ETiR(y3<}ZL zc~a`KQ|B$;rAp3LUe74X&nVZ(SQy$4-}pZNq8u_jbgk}GJpTEowobNjzGc3*&65hq zdr2sp$t!|~X`e$ER$k3K;b`E1`A{gJ4aItGTM zV-s0~sccOy02WE#HU=o6>cu3r&p$nPE*jjc5Aw5~`}yN^MayhXzy0T?aZwmZnR>%% z5mM!R!ety(-A&~nhHxzS(in4GWXCUF1AV~9N*a>2VeZnV)TuG=tJ}7Gm^ofw^vK=d zZYW`iapaF(A^5diG*dMg4-8#?b@cgXsdwzppiV&3kG57>QhxeN8*0%!K3|WQXN?`} zk>ic>8*9%RZ&=jZ3zOh zfBnYxzYOXAeOtoP?~tymp`jB)ulMuG=(}d=&y}CtyQjKj>NvzoDQ;j!#ibh6`$gWK ziismZHOdyRiu1Y9!)J_|@0cg<-Ft9X);@ZWQij2T<70VKyg}G@=M6?#@kkERp#TX% zte~uMadB~>e$?Td2AtF3H`h0Me#6djO{E|tUsN)Zw)dFueSPqrVDemex#E80*3ARj zu4VxHY&A2NW!J;;Nb6r6(sFoNv(*mM=C!7&9sEu8!?B8OT|*yU zxZg|~tD4#b((h|Dd3RPN{EXLzPS?A3KV#_;TYq$g=?$CP{J?pv^y$tUP(~*iYT2OQ zz}{!I@A$g@;L{!BOO^;S1wME|0bii8APVL|36e7NOfAj!aRX%#Q_w zB)N?~!O`#VWNxX|LsBfTyJ}nIs(mGOHD%uTu=+tuy}BJmKoY;Q;#4T|GhHcAAwuo& zNPadTc8_3fdMC-zKI~YI{k~A4@DR5$XG`|b?gQfw;VP%HrVA@OA8(`UmIH|EdX{bx zB1J$nh#SE%T2Jk~JIMGT^4D5lV)Z=NfwLN3eW4cqOQ4d$vv07*Bj>q*uOgR-$}G;J zo^MoHvz()0c|AEcn~X)RS}Ilbx+8gz!kPV}p^(!b)ZOzSb%l>7RcAUmpfQh9(%;|=*859`-N|QAwU!LS{nUIz};1b;x%lI)CT19rcrzd@Hv3{9E0_wEeLm^a9{3V z0XiT>uYe!VdaS=;Gy>@$>?PguNQE1>G|MI7N{k#l-UQKG_C>ne54ik{{TF6)$1%`W zOVjW9q#HYzmzP74@T2MSt4MF{b`<>sXNgwYhx&)mtk3^NyMfjXwdQV$(tnIC=r zZsTr~B}z0bv~kjJXDqjAVI)VnZew(GwPkfox^|*f*?;}=1m2HcIgEMjYx-3wc!Q@6 zm>|jy-cFpdb-js@NRA)gI0~&FMK>7NKrZ^+0KpJTQ(5fheITfQN}?24$#2v`%1iNp^+P8!^`Ny5dU5Wxk16Gu=LT>V_ z^g~==@1M@_Cmy(0A+WH(*CfTlg~nGv`<0C3a|3l6FgtS?q44|(;Zn`7lkor|%$2RN( zg@Dz~<5v7*HxI>I!j`phal-YPiDy@~#4stEyr1zf>t_6k(?v2pz8AgJv1xW;XKsMW zl)D$E?G&9qmhrl?_2bT9)@+3A3d5MNWO`VfubW9}*b8mEu;Bt9&8G5CRW38; zADhLAUX*QR+gws#jcaM!>1d z(ZHniVna~8Ln>nKh0A>7AeH1WmCVwyle4z2>S*rwEb~^f`~*_mk5fX-FT5B$GZ{T+ zTWE&NFC9(odm3pFX0nAXNrElWv;Ir_2p5GueTNi>>)XS18z~jJDbfBZqt)d|QH>X0 z9d-nUb*ms7U2eQ7=?y8h@DzH8K&Gzwp6qCqS=PshtW<^VOy@Qhhrm#^Y5TVox_Uas z?_NT^2b<;-+ENloloO`hZbj-65Gl}nn8)G_``&hBp?GIW)hqF$Ak`#rk!Dnj_AS!o z`{wsxLh(W^iDET|6fQ=|F>yQ{u~WvEMBDZZMzD9MmM0LI@iDTF9P(iNTTouKSsn+ogez3Sd57WiAd|I)CxbBdSGTikz$}%` zpuWlMj;{#c?bLJOB9*v1?3w) zB;$UhnSigIRz}$`gV7ZgaCI0NFMb;Ti1Cd^g5hLHKkZ;jc7pa~9!2<6lBZja)Z$@i zHV2}#WGjZFCwT*Jq3)RU=+Il{? z4!JE*M`i0+SA19qT%)+y#!TtO_1&`na{Gx1-lzP!hps$H;-XK8LByi`Q($FRhI`~?$=LK7Cd=77Wm_gq)$UPy<#2}xn_x#sv?QHkfkxD$)XhLrD#b4w zH|yclJ9sLqzbofI%Wdlax?X|n<1L(XNZF@ry}zn2&cBS^%Ku)kaPt4kZH5s;ueT%D zvk&rlrMK_D%ewpPHl2oTY#D@eNd1X&OK8>_ZdcybR6OoXBXIlnAJWaf8@Z8II zdtVbGe8*?E?}HUI@jcLfH^{h)0i--i5qYwN@jTht-rjD$vMm#NB=QK2fZbr#e^$Yv zrOD0qosX7ifUn%}n9Y|4uOb}y;VLI(hxA8PfNF29z1s7*WiNp!l=}^yV%q`{ueZ5(fqGdaTPV(?+6!WyU zZKbyvAgY}t)ME$q2?k%JX?u0@K$_>!%Ji!u+k_{r{SAb=wVziw06c{b(;O693w2$p z4*sZ~-}~I-7qxzsc$&Megd={^B+fYy=e<<-=IKCX07e zlN>nuXg;QXK}@FJA*VkSEas7$PeV{ znV7hJSOAi+4iL@E}425WrD;#r}(8f|}^^ zYb#7S1IAx83wn|*(P!QOTYs;0p)!isR()bMH~EcDQS2g3eGKJyuv_2My&I8fsx-{B zf@Iwd1Oi{5KNu=T29u|T!9VvNfmK)Ugpkb53DBIBp9x;`KI7aphz%uoj&1`ZZrj7h z^IQ7JOje@Hhvo7Sktg1E4nzX1Fh&%|vD)7HnYh@eyGL0T{BVVh9{3dl`}gYwe>=sY z#leGEaQF>D3h$RVf4cK;$d9_b^iYF^RK$$msYTj@^u%?Aw3XOoV+-drU3W_f-n7?bWv<8}&^vVm0~(MP&X<*8yNz!O-fZZ26r? z_R67NBVTAQvDZaE&v&$Z)97OSdh+4{4&i=lO!G+=7|FVRH64(AH~T!qL7n3q)irA8 z(*Uy$$yM>M^wert2u$`6Vl+xWeV_h#85vn$+ho@WIv@u(e>KMV^8UaS`?7g zdN0yQhz`)LLw(+{boJ2E97-gIl_WiJxQ$k%ry35O3f7odct{U5V6w?!1JSO}W^0%v ztjr&ffr6ayYA!tGHp9JSDRpzkP6S=|i3SSg(4lW95SUy(AC}APS+5`o8e|V}RM_sO zZr}P1wy}`e)y*Pi&P&UlYpKbD!gA*wVTg{v8&J@GjLBjJI4)bNj~&7AHE|fpF!{C( z1?8=8x*3V>lD0{a7n@E%@9C(*8R--O-vvmdC1-KicD}=k1A;d>JgXLO^IUjER>vM= zr^P_H7_^D6LJ^_DiPVSURW1pZ?i>jJcJNFQ2#kHT=0UR-oW!I^{rcKlQXc+}F!ZO~ z?TNe=+B!BcX1ob=6wm*9FAB3PwtDeHYSo|u{Jf{BN5)vkyrHsO(AYweS`&+Yy7T zsc`t?kdfKOhW+1{mk-+sMVD@-CbsTo&sMiLQDS^Ae;REGfAs|!*Mv{89>ihZYA~?3 ztUuVB9>ElAllExjoL+L=#I_r(s=A@CmA&~W(Ak5$@J9HRwX@`f$-uRiKfstNyhqJ> z)=uH$Zl@4a^w6afK2dhbZ@9TMpsLwn|ldcK#Olq!@jqB99yqJjUzZMfeZxn>$6JNfcYOQNg>$BfgW4Q#)cG= zF!t6-&0$cxov>VqC?VtRvj==;kfk!Aq(#ifbpgQBP>DuGB;+uhX}Cj=}* zcEY`M50vN`-CRPOirGCIs7X9!pS^q2O{<($0=YMZu05dZHl`08v z3MKFDP5q1FirN1M#U1z$id*s5H~L4#?f>iWUlo_j=(pnjR@~o;`&)5;EADT_{jIpa z759H$alz()zA-}oz2bWOy@cV79ya3;!)(LKD+WS}w{H$MFTF^foE*xX#Ne-aLs}8J z-qqPe$<=2X>NCc&ZFnUb)Q-e#r>XIlSt)8Nticr=+muyRwaPr?t?_JhqsGq0Mko1- zU83MDs5=0T1~>qqAn&&E;xiFn=&RSAES@mjxGg|dL6QjO^`}z4^cn|M+oTTxoT>%< z8k=)rq;r)lYj76Pwii6^ak0dzAzsf5-qnv6c#GKN*b&LvwxLKpGhdi6daVVTaNT@jc zLq3PmSe+kP=_lgPW>Xb;s!}8CgffexxC6yrPuL|faEkvVe&^#lS5i9l%cRirjxZ@y zQVd6)f&-u%ndiVlz&BGWU0NT~JUL35mjybIyUy(aPG(=AXxX2o)OP$4-MsePA+hIJ z*v%zH_`CdQo}#kRZL;c5oU}}SmkKfNa$zF_hdTQ_)w_^19huf)bRfRT~%BnPsrD6WGF#gey_;x(A% zb+eceM8ODiimE~M$g|=R?)F0IrOnT_UM&;r%>y_wx73LW-$dOKpM^&Cq!LA3AYYre zISVx}eX;o1lNcqFWu6!LMe~d=Z|wmCBKuK2XXJj#bbv^iu%ve1a;1*=LT}U)I=?8x zMi%8B8|JEJE*IdljX;eJ%Yxp$K61ZmgLkh8YHMVauMtmhNp*KW^QgD!?iv|4+A<80 zaisEVCl3sK7Uv$#wjc-siT|oW@gfJ$7tT#QUW^2A#Cz9{fcVUV2ct`mzj?J8Y`9op z*ZSZs#O$7BaZ)Wu-7BWUN(@l!Ms?oza(Zy#{^%6kbZ?~i0bdz@jqls{4Or4gl^NG{ zBYiD*0$oU%gjD2;sng|#Hnus4wPw1l-Ym596K2~=Jtd~Ruk-cCPSeBFn%U!?=GBRO zVYefBfhKdG+Ha#1&zyH}y~1K}Uaj2e*d7q1VzXjDNV#eGv}t1=ox-BDK0rx=@p-IO zsJxd$3J&4bmRNyw1p{c^ko)K*Eo0flAi)@ZBWV|z4ToNl)c7!k1~#UI3i{y&KeTwy z(2=+KNyVkewVt3xaOaPmzPSm= z;j9ihTpwYSMJURJflRqkh}*@h2+xbGLLFRHyi)&!7J>3&!!mBT7$0%2{1EZl-|IJxh|tGwq;KnmDaDR?|XK16Y_d1HXLM-=vSNmaX{+W!KIVS?^&p6 zyA;ZT4|^ncR{mb*DI2h1*kbd=ttQ!$`0Oa$SEO85QSv96UOjU4K36UwKiuk=Pf_y_ zh+-lTGf>8|`14x+??n9f62X5T?)`fM?}FW*pV9n};oiSD@Rt2a#GjpYlN`y1yrp9* zjM>t@b8J(Rsz<0Xux0Cf7P01vTw&c2h$k)l$krS=_=cnR$(*z!MIXV)JDSJ*+KI8> zIrPWJGmRjyo71aO=+9=%8Zr=s$o*DaT%1`2DAS`UBfy{$7{yeZqnTV~O)temzPivr zm84+|J4qmBfzF2oqbEz2tLLRx3utnXI2gMzFt+6x6#Q(Tcs4ZtNPay9#75^{A#GXTIPc8mge>F3VI zo|P?SS(ca6^&F_1bni-Nub+M#S>I#m=t-OJykER>W8Yv1glMsLlSwvWjltE0NA-^+ z`D`Q)Xx^De$cGb*m&12Z(?4I_6eujMRWs9{B@{O$>YO7geil+3 zYuE$Bossro8V}@pqI}J|4@hp}Z)LJL*8w98fL@~tDEb%IxWjd)p@+wSr$?g+t<>pC zNR1rm-d5uj@A9{m=TE>=757mq4fy#mNG+A6;E8cOz<8nsPoe#c+pr2a(}RCI81i@~ z4z8Ng`aq&Q0UObYAvyE9>*k=CRPx>kJnHk>aH*kp-(mmRP z7}cKVqB_%U?ob8pUJm2|uB)5w4~!|A6q$B7WX2R0f+JwJzW5#7UqP?jZ{e1W^@#?lpIEeb^;8LPGCKMkGpu!~Vbu!;Sk2OZB3L`R*B&Shw72j5t+o0Igc^=wO%>lM*jy zfqCy4!RcaPm!%P;Vs=8)T5+z+Y2cO;aEzyn(M50$Gd(#XsuHeAANr6BH0Dq4lMlXJ{60G`fS{|a$SU@ z-|5xY|AOjzJaJi=eSB9m4-Qv?4{e6N1;{-(g05rxJpv~M7y(g8`@E7Nwl5Dm4ykx+ z=wWt1yc;E!lrXKppJ6-KLCqUdid|bx@BIZAaZZ}lu#%A%IJZ2({?Va(!_4bBWIrSP z8#JDWBrlO2Vcv$4_t9N^$t0eYR63(dRLc3K$@_7%4lO&bz7$UBox*s0R#>3C%7*=@XH;~|4+{Nn3HM}aWqzC@B zuW(hGXTsi^Xom0HR89sY!i8>KfaCRnaLt;O1F{z2z^kMdFqE|Uy(D@9QEIBVTt<1T zQ)enntamGS+M3+iE%}p^6|gwawXP8CW2_A_g*JJU-<}1~;Uu>$W5H9m%;pDqcbOVE zuy05YMT9~A@av8?dcKHIG7wdz#;iaY0R@WwaX z_H+%_0M}yCsV&Rr@@=WE+7RF`rE8|(4@BmQ%S=a^mN*j4!uODT*|?hGn+SN<+qJ$f ze+}GUSzGV!tu@wA-j(a0BZt@8?p=Vd#bD3_NNWwJoMB9eV{?4Z`Awk95cIH1HdLSU z#CwUh^Fb#d!OO94Mk{#jilW5TsYjmnuE7qpRI#<}Vfz zaj)}J)YBj#b-ea_ z7>5b?0&#rxHsAQ`(68$~prMj=c{5gNcWJPE@uVp~fms{A z(%sYMXU~>~f~RDlUFKY|` zctw&(5s$}J_v4Skg4jO{d*bn)-L7>yOiCl}8($4X0qknub0rMxo9dK=hlf9Uhc_1o zeC-9x9g(gN0UM>$d!pI3PU{`c6d-S%<;XaKN&N#Q#4dcwd>5UDZu62=!&re0Hp?2x zCQT+?Av0dw170`8U#nieE0egac=Op-dSP^?Et4G>TNoHu*gVL&U@{Xd<%LJjRP7z| z^GBLoKm3#~zdElNZVuV0&;KE#1q*__nQ(nm|7cl$^8}amWBZGaZ(Z`Z;)6jF6oG0u zLATB4-(g-M;xnn~+fvN~I;eQ|_SC``T(9XWTE)qTT!hIrg$a(GsXyBXplOswWcrAQ z2x+)`5BVciU8CX&zWSA%F1}+9jjxd<#mObTB5b0+>GrA}t~>HnH>XqI5&mjfIptP$ zdL?A#re!sL+-uzk`}tU~2(NZ5`lgtWSCiHYApHH#&TvWRox-bk?S?Hy`qVl0s?&g% z_Kl0}8UG7QYc{8ZwPt}(u@88~4EG0uMyb=v8oU&~q4ZDJeXHJa9eo|yC z|CAcFmy+T045{y_E%~Nmoj(ec<3%cq(Nj!YhEIwKTHDz7uK-AhcV3!GoA06R`!`Za z>}23}sw5_WQ+fjl*^Ho!j{Q=7`}no<@%+6&x0b!av1Az3U+(9C6_Lr{MDqpxyQRgE zx^~UQCiMUfhYJl0t7~?pLoEVVBwYp*v9y%%_B;btnAnLhJnmq_7guaEz`+N2*1vEkPuMjNr-SJ7CIIr#Iz&>SgY4y}Z;JusT zv#s#*aM2r<2gV%Dpr_=PYjhCZCKyQq$;vG%iBJM%m1k>jMFG@LQ=haf{^aMtn zvmC4@XtnXx{Tn&j5@QRevZs{xuYSmha|>qL#SPneJJzegT~7RN4nroHQotP+Q17n2 z5C{x436tX{#~YYnWS*2y3Zg|Lp%~0DhL4WO;_c%h#_TWT%ggB%k=1hW_YRUdJ#B5U zRQH+$I#U}Uc2~8JGBBo}>$=7O$K~2y7&T@q?t<(mONQpgpUF*{$i`iwo4E=M=#&lO zk{9fI?gPnt;tT!P8C6`wtT79I<1wp;zmBSmVijNeMO7QU=;1kLlv?E^o8%&RpH%;P z<0(GbbwV-L`k`ODHbltRvCuFD`YZ2r?eX9{rY2rofb13 z^z;kUU~hteH)f||1JGvLeE*n^9&a7~mBPbMi6g|>RIFnK^(5D){Jubf9YE3S!6v-m zp7&f_!^BBG^sILkR2TBA3+0QxSUaV!~u5uX_S6 z#`oKI57wP0?x=yaa|$g`!V`zqu7f$^yn)-Rb`9-#iDA^e{51u9&Cg2EShR zo%pg-Yvrdb8JYB_$#q2n^Bb|R5+tJ9nuVC7&7W`1d#0a^XW+N znQ9+}FUvag<#}?~lp(APS7jORHii^D!quW~7&{JQ;m^#$bj|L+Di!yAo<-?*-m&E(|*?E#Zx!%grP$0p+Na9@jqP*RFjkqTaDVu^z9xQEJH~ zDa^Nn2Q5t#QzQyfK&-Mx%LV8o`fr3MR~Jx(=0}5DZhQ~ zk@>O$e3o!LO!cN36WpnOlc8e@O1(oV;Oc#5IZ1z}s9>3RebcY>**#e`c@4fX%N#5W zY*h$0V>t&=>)x02Tj(+9OX;SvcZ>2T+zoB8|46sFmRY&(kLS9c>DX2CGX?S3xjmp? zvh2FcA#j(OaaQMXGm~p1RZ(7~flo}|;kkfSC#)zhqIj3^X)u0yl*e%n$!YSDW+%is zDGci>)2uY*<%;6V`Z22L*vddBvCF;urqFKdqrBA^T7NQi-6=o=8ky`otwwSMhPQ$zK+T!j-BJssHtAaxe8 z;;1~X!+3N5ZIDq#3$qy~S+JwMOlS972ojb(P+KW5=n5Twr(5xY(8#?^iFxU~0vxa=u z(@PZuN&7a`WQBVD?NN(wt!+s*A6+MYjn<3mdPI!t4!%e3c)9wv{wRoYZ<4s$elk_jr_pNpXNRIFT;#Dm7n zNHIyNIpZ}u)lXsCGY>ZsB3hvjOaj+(LS-KwyIKpC~P!P?%4u$c&`Qzk!N8;VA*UY++9iYb7M7EN37NQ>+oN(wm$MV z*8Yy-{*L1Qj^h4~;{J}}{*L1Qj^h5$M{)h*|9oSV{d=s<`!k9=hcqF?!Rq$>)@f3V zZ>CvLQ98e)TvVhno1XXaZK)00fmB{q!A!238fUSLigw!<@$yeje07&W9cxn1)`m+3 z0TU9z-SM~22__D2kK}^TxX?ZLn7`gP;oE!nnKUHWjct=x#nj#0KC33>kj-+M3a^l9 zhb~0qv3pM=0<|UQGT&n!rv2pIXtWf^4W(EFX}oNai;8RKjy)-^IaMXy0J3|G8APWA z^K~ica2W7y5kuL@yUdk?e>}h&-20%v9XU%b>&5s;T4C%XR4bdgjBGu0jM`uHeh!Ae z8#?n)^}BF5FU-nO$lj=28m<)CUs11eBt@5+g5UN?t87q_J;+>$Du?Z;f8wH;hm4?cL0Y;B1Yxc)ptWwn0jN ztp1srYq!5X#EpNl$Q(2-kd$}{9Fexm?|t!&V3&?Nknsbgy!N>@Q~9u`-j;yi3&~;v zD4kt^!zXxFWwb^ft=ynkKdqRHQr}3w*9qU7`Vt>r+*>c|+)t{uKpyo=uNAlIZSRQ4 zv(Yy=E6?BLQKrps+MfcMA93;*-ay`D&noTHJ%Qhtyw%fqQksUMz8lRM3q0v(^4#pt zBYr32l3?r>wS6Y`v7mSZrG?+CkGCW}Ml>X(@{v?o>f~y3=GSu_Ypl|>Q|u-q^_zb2 z+y}^4bwE6oC(J$Q+{mCI4@z6rsl3NZ+H6HnJ3hC}u&<=XoKEp1>Ox+bD-UesruDWG zU?*wW1d35U+nBOun|tYoZ)sXCO~>I37|o&-zdL*bj19}CGKXmFUbe!GhGkSocxmwR1_^hPG4!Dk(Q|K zXrpXTAzo8_Ll-)ppEdDoIma-#GcJ==gT4+E4f6Hf2L0G{)Oqe!6+c9rKtn-pm6fLT z!Av04K(gN9r34b@{(V2wwu9hoTViN^m3pEnC1c|&S^aDJs6Pw`I|0(q6hzF+Z9Jyc z_7(ENqnaK@G|}g%8Ye3|ehAS{X3^CM-PM1Y9@xV3=_rG8#=^As7bJ>6er(WIk9M;Y zFW&-U?-7>`%^5Qa)$Bt`@BrjLzd%O6{%K27!8h99z?{Htl=I=rUexZ+zG@iSR!5TH zPfpMw_-#{z9)kQxvwTLuglfKr3$||R;CiWBn?BZzFXb(mN$V?MAd}AKS9Ip@DhJ|E z-0B9;&yarY4qAJeyK7&+GrX+n$%uPb8|7*~@MvfGda*f|JBcD-vShHlJvlgw(3XBt z1z;%}U4wpv|FcA9I+^QAHYl3d6Wo9gONepwI2go0zIn9a#`JH!_LYy?iU9pOmU&@0 zE^M0YH>KDdHh)4p9_=>+YRX%m6fvd$k+`Ni?Pxm8SNajQ;J!X6fNe9hAmkoGQEfi> zgo<*^XU_PldEhM#uM$#sFyIUQ^3r2DI_*;v6;e?c+f1W%Ic?@e?{(@_|7n>_>Q0*d(ZnUfCzO;Iz>coBXO8@aWTa)2A><%1iXa#aiOjbU$$Blp)30V@Yh`-|0b-C; zw?6kxf!p*hD?-M+$ri#gM9I)CVopKF-jG&FxPQk<#C5n5FmOwy4H4LOE zgQG&R(`~=-z!EEpX&zp##zTT^cQw&tyM=0yn$5LoG2fOcNq2l5e#$-gHdLiIr5Jz{ zLmt)FtPhEF0KMsnXy%U?o8;^s6ppLWDpI7cTX_VK?j*Z(2$=6}#s6lt4|pg@)PI+r zKF~dLri8fpHQu~@6a8`p?5wTSP%uVc)U7aga+>H0>*b*7@-T6bqhHzLy>4>F2~l`Q zOdsqZE7#3Ica>cn1t($*OOQN6pGoCMwj|t{ONnw&Uhy1ZsUsFb19Ej%s<|UFdJSCL z`Y7)^1~5j=t_8)x&6Jv1^7+7zQ%tgmw0w*S+8g8|G?W4uU2%_}%iC=Qa;;tk8 zs+uoG9e?Z@8YIEljvdTR&1(&TFG@+SRAdxN(D}tuYr@AA=kBk~QZCy$86vezTk*9z z$P)oh^G8wQ!Bjnui;pa$vRIFN2C*ki7b7nRIZ~nv(T#)O9sBQYiR-806-1_SC&jby z48e!l%^8>o_p#p|lRzQVw1 zg^9KeXq(nG>`X+HPYONluv6D+`RYP1*BiuM@y-GZn%_(#q096h1d_&rfeZ*7u0<6t ze5E$Ekmh}WOoq;T3#$u#*A^Pm&~@QMcj#%xCWcDq@e1^4l%C-aER8-Z4*Mr4qoL7#z45@t&gAsdI^EFICr6NFRM z4hzJFu)#F98Xv%X)5~qe0)vP<#pF+Ym>kS~Fh<8I`wVcxBsd!jDV`c2$%h_?8fIH~ zJIEfi17!%hjv#P>Jd1oJ;jO=xS_DJ5*@p0J(?P{v?-dqaEfZ%N(+1t;u7{0*q}0#l z$CoizI|vm3xR_cHa}hR)-0$8p`~lRd3WqjzO~+nNp4<{u;Ykx108AcBf;VB`2HXL| zK=I5&Xsz1Qjv3y^UCXT4=CZsbSB8^_7Yy#v*Mlt!CGNJx%$v0e^EK}2{JBooq;RNT zest#waW6Yy;51XUXjpPG7cn;CceUr|&N-+K*^A*0xwFz1xbD1uE=pE~DPUUJN&QL= zg1uZ2Kiz>C^yJZMwQTwMOM#0CSE|Dhm=qA-Q&g161NtUE29))khv83PSOoT!WQQ;{ zpdlW%)j~2E8v`Eg54AyE5w}zrF>M8>)I}T@d&@h9?rNywc>=xp$fmXCOD)znF9ZVY zst6#?=kY_axMMu)O-{S8lrf1GPP~)#2ZkDqSU0zt_XyW#a^nTY zhLqVT_Ql|sNA2~)Vc1JDxcwT4E?g*aU5wTW3Lh=i%+@=zSIfq!%6$SVOQF@Q)`%c9 zx$e>`kx34C)^8>Sehx7i$Dq=gJKSU;hjl2Y@#>0+h+`MLby&nz-^`tT9$gedn-+Xs zoc_E*D-lCj^W`uV^Vj72A8tn*EB^OX{B+|#P_gyL|3Jk-e;xiS6|ZIgrsCgJ{F{n@ zQ}J&q{!PWdsrWY)|Ibsg;Fmw&7?S^Smy8Yk0N_opLG*RWSWvfWP^_4KzHbyR%N)w-3FO(})xvmFnW zRrBN-YL!7|^>L9g4hP5Cu{x=FuhtIs+TmiovTfbjy(#0q&NRZzBI=j+w4*VE%^*p( zbf?MCZ&~IgG=}qUYLl#y@KAX*>|(-UCsES(EttTRrZjR^IF2(_MoGa?_2{-QK__X zy=S<+m2$mB$f4_#<%Mh-6>+qd(=HPkCPYI!nZqh<{qg)}Q8qp&xu6}_+EdTQHfu-e z7t3II9pJ^{X_d;{AY%?uv|*jNa#Zex1LW0+rTX~#3nQt<9_i-=I* z&yw@^#m|hyCyd17Y*9ETTE}lMd1Mx#ea`})!kd3s{4{>s8nOEWo(;&izq&tB0TdIo zm^qRwxly^DZq6zil+SjDaC!OhayW2rnrqit#EUeNdzW)f>g)YT(AF)lKBeX15r4Zq z#7o-F%}B?8hBXlG^TKGP@UA{yiI@k#%^KRiug&)H4_|^H&02LA!B}^)o;H@NwPOmp z!Xh;jiedyW#}4lxz4q&lA}Irv*@o7l2icI1Vm8H2Cq^tVhHTLo<*}8)T}KYSnUF0p zcC5nr$!wRb&;=;AbC)&DF6D4lev~5S+S?>H$Kbix!N%FJRLW)?BRc~dc#IhbK(jeM z^Tb&*(r_C3?Zh+1Nr^%=T>DIRpoUYtyk2aijx~!td)5JSm}#$EYd`!r4r~JN7SVWJ z#G!iLP?y4F>+D8Bt>4%{z|+`I=(QdCZV9vpUp59&@`kEa-MaLU9=Pl;^~_X$Wp9kO zduE zt#XUSr3ks}Mz+qfj-&XVUv56KVDHh%nG zfEO#94F_c|ZRu(rc^}P6f5#jpEC2ShFDqX#X%Vbd=v#d6_hWoAD5R|&*%A6bnFM*o(Qcfza*E*H{EHG8xd}g@wj|4gshhN z2)YHegQ)~GsZJOj_;TzVMDRnd*pX~zZ2zq{@KeVLkL@t>FS(m%TG-(_m!e+PX3bXzhtW(slMoMag#XI>|-IBzE#%}pwNc=yP4c?NvdI2kD7w? zu!ze{9;e_P;mXQNd;u(0CdaCfxAeOASy+Y)uRc2kCMbh@c7vw9S0e}tWJ`?Kd24q( zUS#9*Er7H;R9WZS#RC~lWlBiUguiY?H&0@!dcDx~TQb!Bw|;aw>+1!$r%Rrf9>?W! z*E5|VQl*}fF79>o3P2IkE8YM?St4|U&Jm=mToILNBxq<33f^ZpN}&gq+bcFIqT+7e z%F0LWpei&h-u2(jzaEZoEjo#qE!f<6znx#>@WbumP>l25iCzG$#C#UB#fiJQPR+BU zYHKL*sS;Aza1vTk)feK0YE^o0K7mf|fr;z&1=EXIIRG7`<_FuJ9~tBe4t<$T@N^|a zO1>U`Aup}iWuY+dE%;NJbw2pu1gCvae(2i7Z=~iJ2g@|HQuh39T})4{EY`X@U2qR9 zc|uvf6{vV99aIZV-f;DJHsTRM4HTBZN~YGq2klSOENG3rHVL>3HW;`ED2_fV( zWPGYv+!4c~Ab}8bF|V>k!_7Tx2PqOW5lY_{6VM__k7r^JK~BE(L|Fx=BwMq7x-5*% z9$fU>Hwp)1@Zh=XcZiVVDmew6+-gje%a8g|(0y2SRd+yOR|_tDIS;Z>PI#HjrCyVt zq{d3Guwx(<+WX2dUs1?D%iJ_&RGe7g!Wdi9h%a&{XgPm3>B*tIXJ9F%>t-DudOHvl zo&XStHVMbFiaL34u#}Tn;H|!%A)c0M;df5F2rPd*$rLERl~GD)jad~D>?7pv=rSJ5 zexk)#hu73#_*g4DhtL@)kGCA4+tU}Z(A``PI~=&%zH3HkTPhBYQxmt#@`odwiu>Z$ zIyZzBUYuU;DA0NWR%5JA3n*4CTNRg~Z)@|>V@=)Otk()(e?lL7wwe#>IheZBJl;Q^ z1ZpGG%#Xl;YSsfz7tipWn|Q(OO_a1_$om_a=CiwW8?T4R=JH$bfD3QgZ5aLMM=Fd= z#Gq4;_X}+Bpyq2CO3y-Eh9xNy&onWu#Sj`$=J~DQ!nklOa^c!U2BnjUqxegL!H)|~ zu-3(eUv<4tD0lsiJfE{17yU?O%?Qsq_;ZgJMm}^Rr2mey5?o4xM*DSX4c~0kXHSE= zc8GE>1RxI57Dk1=DD=F*`?tnh8xhR;9-yhiUkiYE@l9cy=pKdXM2iJ`X3Phm(4#4hXKY2DUjTnplHcz5WY3VV#&OlB-zE} z^7Wd!t7GwTvf3t6-`O4OcFcE;sG3h8a>zjXOTL9Smuc+}MnAC$m97)XHCP6YBMEpr zm?#-$LgXGu8IBH?<0nLNGBLqwqD9U^CVtjp4b^`c9sOgFj7lSlm9{H#=QhV1`URZR z_n-y<9yIdU*E@k4**rMUq@S}1JrAL=O8&bAth~pR8_7-gqV3ftjP1H zlc?H5dQBWql{6bd!8$A8gU)#meO2DU<(wAgF6U*JYg;8b)ZF~jMf4LexTHwyDR?$l z-m>y10X*jgQv`97?+dg!mTXVsi#?&c-TP}`#e+pM&zk@}acD1m$nG&X#SFDBbS}wX z9fd&6+$#@R!YqZ#*Q_}}^liH6=2)Mk=u`9smP;0NUHWTT2Fmvd!h?TuQV5D~o~1}K z?X$KWmLseXt_wl{KRXI~vcW^N?zmgODA^6t_muFiE6b7Ygnv>HVFB%j700bQ6Kq~* zjNn>HgO}b^Q4WoH+BtHc?{VyJG;5;F&2lVaue&00f#X^J9t!q*w>=2O^-HSeLz#n4 ziSv+paf$WoF|?M?;(O$N+Lta`&rU~5KdF4{J4M~eDeSJlrk?aa<$V7ho_zl`=SywX zE%vB4GVn=@m6&VdZpyUS(@rrV>QM@>EwXLDdmAPHlJxEA{P%p@z4agXmbv6V@U8S; zhyTjAc{RWJ_BY@D=G)(V`gwq+4rvrK zzl}7c%#O>zVI3h2=ARW~D&!EEw4To%iF@6xP5OGRdJOwSKBW`Vx|e&X!O0m?PoKr2 zVrwTId)0F~z4$q89jkHPH;IxUp`Y1{&1I4)__*=P9a9U2UZO+%;khgaYdqH8Uc$xM zYAsieG$ze~Qro4Q8{cW``oziIE`$;H6_XawN59?-%avNw&%c6AIXaOAd}MdfSM4HJ z&HpKwRiKJv{>jvhqMz;2Nxct`mNVb8!u^uolWKG%7=Gr`kn%&)St`S9V)vP#UIK4c zV{v!})o5HuTjGfa_X{d@n%k03hji*$Ed`(I6f;HY$`bPjz1H4US{@h?2NwlP-}#8! zDT(u~9_=+Mr-$x|xg9&Hr`jS{XSfV5*=2_Z2L)H z3}FZQ1b%2Udd4z{EloRBCF~wN`auJm34xt4Uv=Z7 zP@B~A&l6g464h;oeQY_GqOLgk_4{f~kK5~o6-_=fP?momh_o=wRVA*mOc*JV$Jugb z2Q56(=ldZou5Pnc%rn+pMsTe=c)(Neg8imSO{rrLtuEeApLBIbi)Ixos4lzMF0Y`g znpv$9YBt)y*Ry&S_WX!BihLpMLNlF?$`9EU($6q?8Zzv^fm)F*y%Rm@(CB{^lPDE4$riKyrB5A~L4;Fk zyQ1c%uAc>kxYrqVe^3+u^oKKtaa2z<z>20=XNo zSM?;@IQ3*lj2 zA!&VwkBD?tBqxW>jD~rKrfqgL9t|UfuhNPhb3lu- za-Ad|b3Tkc7SFmVQT0jK9&`x5#Sh1)!cHi|&a}angtX@#O&gh(iAq`Qol4Tm`Xu?E zi|e3h6a1W9V6$AGxfgXqKQU(RFcz9LX5eL8Yu;&uz|H!{ z_4%A|K9d^%%=J~=ht<0KsISlW;-{oF>)I^A(Ep5PSV{C;%p-WX%utDrTOxt%j6LdsQbiMqjEo6OY;ycm+S@C!4d z^X5s7ZD;16gOM#$l(y+Z9DYvkeKF#TGCh{JJ|j#(&KCXZ`U(ry>(7IU57V#P0Rp)f z)2-lWu%G^HzRm>M2G8!Eeyw;}{E%!%03z7Y<&+eaL}e4qF551ji>eL3?cDiJ&r`_W z{5gE>L0jGVyY~7pXw#0zN!DdZt3-|l=fYHgXoQ1Jk6>HJVch}gDHf+vBb(`aR_ zA)^XoCo1VGe-`8Y3dNGSR}LLSx+!pqB&b5olZ%%V;Gu+CP1kW_Z$?5?Sot*_>a;i& zj6J50mHX`6{5rOSTE`aYWV})bub)NTy1IdfZmzd=DOB*}*`Qoo#U|{^`CNmNy8WUN zQLm9LAHWsdUQh$&>!&0WCzvx}ym@N1$6wd+f5+dy|EKyNmhJwv-NCN&&ntcLAMy9^ z?G9uAZ~QgZY>hJg*h=t1`BmI^@9eQrcAjnBs>WeRL#?)Me}p4-)E$) zca7#*{6t)hM$|IYUte;yqc1~&Acvc=!=dG1%adSWl>Q=^>%2@;btHr{nO7A(L~-4tl{v#e@ii9X zr|?j-ON_jUP&V;4@BC<^X)ym3tU-#LU4Xvj4sr#VUhn@v=vs%wq&@DKAA4{YxX02` zWAaGuu${s~KUL7wUxQFe8wOnF{wf zWh9iFg3+QH{JG^S;+qo3pLe({KWiyq$CJQA(hGoV@Xc-a9*&{C^mBVI4Np3WGKN5j zj@;x(gHn&DnC&x}%)=IQSA|2X_QSVU<&3;Fz>7OYt7W$i%zRQ_B`KW70EM%qZpzu~ z1qj1xckI7elKfON2dD7}>~)fQUjJAEUo3hDjWDVSj7dt`_dhd z)-LD1_rj3*E<}@m7xO8H(Bg8HVC<&-f=CJNC5KkSzCG4y$2(lAP>UYYIt^PkO%Q?> zAaP@1t>icsZAU~oZXg0h`f)h#=ACH&*j_!btvqi^us&0d8t6VqYFGt4e8!m@|yL!whiY>;awR8yc44UWs+1Z#4^LR zLb)8eR1_<`d4KCvgF=L;N0)uQ4^tZ5f{B@HW}_4yw~fc z5a!9<0;2U=6}Lu@t!eb2x8C`ZXDoP2jUf(it8YT#V$(S2PkRng;GSEukJq6JKXzER zIUzv#)B6XFSM3D2(nYW!a_iOY(GJ zR&ZS&_Zk^$D-2d-f}tt4_}e*p%yCcv?i8|)0)92n&no&*9s2aAEc;0;2{wO_LhPm!f4MDQ z5sj}I(4EvXyK$T~Skp6RDko@07xS8A0nxY|cjg8y?mkPFTrYT^JZwNENyxYYf^BK7 zSU*vOo^f?_ND(PydEa9co*@PpLZHOV>?5(ow5BojjPP5cHOBWr+sNbNZ_Bi`irM-5 zr(_0QT1w^L6YnPuXr(e7U*T4J(uUFb> z)WG+hq~PQWbXK6~fNg32Yquq(i#`M?I7R(AIkjSc(iy75V>}ZH?)jn4el^?XK^*cO z7glU@pxobXThv$B8NaUB)qm#Vc7W0e5od^2$_`$Fgo=#tg3#hShafl z&CLi6LxJxnrR`HR{5AAM|H*#;o}C>3)qek<9S@B@(zFQHdOjM}Goo|e|Ha;2MYY+k z?ZT!46ff>jN-4!lac`kODOTLAxVuAAptzUfRve1EYp@mxPSD`NgC~#xYpnIYbFB5x zZ_fE`{A=xXH}^=!vvpnfIG%Hy!C24wC-rTc{`cyOvGyO-m$K_Ws4vgohySd;NrQjX z_mBGiQQtr6`$v8MsP7;3{iDAB_tjT=^shTc^1oN#h<~W>r&&vyAz8BGL8{ZP$Z_1d z9DzD@P=}J;PXF7H9|vztGeZl=tJ*fIl7#Fqzx6Bq=6J?c{wrl<*Q%28H5$#S&NlFv ze0<%Tu-knc?#I16{!SR%0|*p9AMJqi!BLXXYe0?=YWJyuB;#j8^wV>5tUd9k8_Bb` z76XVp(MP)l4+||X-STR}Eu-7?<{%0%KPeedKw+_8+Hys`d)RmwMeMSUK=FP4ltn3W ziobYlsx{a0N7s6<>(t0@2td%vi`c&{bN959E{C*-me?YXZ0o%}V`Sp3rYhr)UXtg_ zbf4#ib_~>I_z4M5rg|`jHe}GSbqx3@-5QGcmd@s2bHDN#AI+mJi;Fs;#>@*9DU_H0 z-sSH5!Jo@x?(S~6No2K;VDw_YE{}BO7SpU7YWb&suiFYTpvUF1EQ$mNe(!_{){WXE zFYTT*s__s0&a19OmyZrUloty$dcJBXmI7RA)v%J+w}({P8ZN_yWU;RsX6 z&9(%KJRuW79+wl2Hz~d#6Ky4P`F7G29b(c3If;zsSTf2I+0NJTuC;E?j4H9vzk7B5 zu64AK4VN*6qhW?!X_kE7E1kih;&jj1Q@fwW11h*1g)oH+`4sg%L+XV1mtlz@@C#)a z#sfCYHt2}luV`jWCaKS3RFIEi*F?!JtNP0J-efARICHwXzgii?Q*e68-|lnuHOcvm z#jW7Q6=1P9>L+2!(8n#h#L~m>kU92RublU?R@m3fVl7;vNXQIt@pA7B58X_m2*kwJ z`i?yDMPs(-z;niJQQf-XU(hksS@g=q6Q?k|H?U0ds({in?D*gEJT?{FbHY|vIv)D0 z8}`}LnV!cidmo1Q?FiWoZ+|KGvWJd7&aO9*m@z*2#;#uxLIX?Mqk`;m{-?NYxB~c9h_1c<2dOH-6#@V zlK-V71$~K92$+m7nvf6dN;Ob3CgJw`pn9&(x3!IA=Mjq%cTnOLHYrLx{ghXxyEDX@ zUR#T6ZEYVTX+0iIm%SJ5!TxQuO^u-|bKA_eE_|w)Kzn?CVYwpF!RAn5&X#-Dx7gTv z+Bf@jXVn^ej8BQ-d5(?(P5IfbZE}9XLaK7!)K>mlRo|uwIRH{pQ)I9M+kP_z5CQ|? z&kZ*%mb4?!M6qE?UYkm)-19G_&C*j@sb-Wf&t$sd<3j-B9Ww)aur_Mvz4eIRi13x6HPX9^bho4c+Wm~b5D|AA=bZL-M7U+ z{i4`1;#dc^{~o?`fX)Ab7*!)b3vw1xgT5R z^iX^9ZNoT`TAk>q0SNm#;NY1rU-%OXqS|)bgq+Ke(G$XNj(3dr*a;g{3t@kc>;J04 zVgGIC?*u;v#%tqT#E0p>Mt;%1RAH*WJAc#uR$*V=F+HlD(*p|WVp$w>1*U@+&t;o6 zEx05|_3AWeUi#1cuwX^KE{k|0p1fR&o#>Aj`stez6Rz*;5Qn0$(X;vM94RN@rSGcy zs{1OUdD*>MI`5N5MXjgPa-Hk{iUPwuS1>3iiNFIrEP)KYuC+H+8^}q|&E&^ z$Qq4v8^ljw2`)yB_VX53JL=H^V@?UmsbG&Shu;GJwm$%^H(Redci@ zTKJb+>LVi}s39?C_`XP=Q|PZ@)_M1zwGS`Ri$F;_XA(?cSyVWsYD~~JdV8;;Ionx$ zKY575JszLpfXMF5Gs4CfU8^iOtdnqnQ+=zBBjyk>A90;UNu6)P61cpMajSfCduJzH zw$6S?=}N@?WITxW;b4!O1eRCO_{JT{EcGt@tYPe=A&iKM2bM`{6zsQhY`4yA-#=D>?J{ZRswEze+_q*) zlHAhPiBS@^1rVgb;#GAc&?+UIroL##8+~yeN6z5Jjl1a0xgHJalAh~@*tPU?Z&P48 z@KRRXg%xUYSzp3r49~+R+Bb*@u(FglYt8u#EfCF(uUPL&GZ8<-qH`a_IDoQu$F*c% z`ypFI@wjy~LBFFqYg9jRK=Sw>HK{c8->e>k*1%UuW{(KK9Enc2{o8jwkE_%o=MmF| zPg>5$=4!;dM_aSU(Ks3;6ZdolG+P|Fjh@8w2r+w1gMil|0^40R>zb0)JC%Y=3~dXH z<1HTe2P2mbixd$)NyEKq-3C0kk`NP26DrN1Yd63&fSLbu=VS)Eu+J|?-5j7Cc_dnc zVZl5wcR|j@p`SCRnqd>)I%_rdfVtYbzL92A>?b7Nv3&5egm2ep6rfVqxyxw8VX|@0 zs-|tXRW3#qa{M^AlvlRvR+3{K`+=kjGijHUx(c047pMTyL&?dp_Wa=Gu=kFqe+T2X z-w^qjMkGr0w4Km|C(@mG6MXs8R0R6#4a<#rZ4p<84=tGX49zDaZ8&hLU$OrHma=0C zJVW~^0=mog`pzwf?Ym5{#9rh9-MZ|%s%vtZ%sH|zDUX%j-d84H*O;R?YC4SjTaAWu z*MU#9wP`?S=&z+ayWZ7|(X~16R-Ox^!-B?d4#Z^F#Zj#(;COH;00MsBe!iR9Ar-jU zq-zpKNqHsPbxS?6o>Z^CzVN&J1i_N-(nJXsI`c~|X45|f;MwV8jcnopPp9>ugNjM7 zfq9hRY8l4<{Qw5kA@1N^E=0KZ3=mu`ym526&xno4>B35Z`Fl;tOE|wg2{`a>!=58* zpTw+cQ0xg10eaRq`AYwWN# zd=HS#Y()G)jF8@EsVzV#msrF>^RWkY z$JET@6c`Lq0lG2vwSt)JdlDh*2~dgGUv9-anQ1qZ9v=6B#0z0kO;1ia5XeA3c#BUz zimNJIico0avRY*e)vPWc4MUl_hBik-pgHbKJti+dz_M)>B9>ABU-?*#gP@p$ppOHh z5M%O()|lIU`<7u<8+W6#5@x6#rW)1Dw-6VAPz%%I!_{rw_{%k;7;V`t!(xt$q6giCHGlBCBpF34YudgMYrbzqm=Vp3RqkMAE>n*-bX>iM7v6$vd z30!{wEfHngLGRpr2B-*_vT>bwu#|bO1UrYNUD2OKp5H$x>zb^u{Ck5b{43)9$08K} zKZtiL%{HMuesO(BeE3!jvLgRVvNSQL)C`NsJI=%R;>hHsUhToXwKk)kpe*eJlANc(PzklHO5B&at-~apY zySx6^9Ygxx!>_>KZ4H4QU@f{KJo+S<8YhkI`KPIuW10-ci*GVQEI%Z%Fpthyoh96M zLH*$ffB0?kceZ#A_HCb!QCYsj=~~aFL6LS80(%d(*IyO+s{lK|olt)$?EH2abr-PO ztP-5ZK0eWrw;pewVN9U3l=w$XyJufaH<^P&%pc=5to2B~Q|j2NO8+K{%~I~9p{e@G z18K-Roedf#qVi+^@$NhU;>1Km@I+w*XHSZ2%U^0M1(WG~F7$Dymakhu+bsahTx_)61TB`HxupGu$ z6tZ7vpP0H67`eGlad+pkyiW1QGv6&K+Ufqp2XYx`)@+ErkTjPleD6J3B?SQvsEz*cz~nB6lq(& zE@zpR>iBBc_Cx3NL}9YoZ{@HvMt+p!)M0K#`lR%$UE0 z5(-fl;sXr=QAzS-fj`NI=rc555vH;^B}d6>ke|zQScGlZ{Cr+tuqmL!-}Oqb9z5Wq zN8&1QKJ&15aavLqaqY2k>?#0d#*BYG$80Y1l{F`-rr!1|nwh0An>IfSu4t-F zznh%j^QjBn7#fcvnqCQv)w;;4dKGBQyOQ@g?6XJL=iffSKUcPn_3p5=jaqA|!Z7!S;rXq9m@9974(uUELe# zp=>imbrhuIi-N#|a(9^<1_HgriZU+O+wIlRQ7TZj5k4Hjm!-lx;|d=F_KH+Rac=xI zTmP%l{v&_%-)DDu_x}2g-G8aH|H$qx{jIb>@njvk9#?by_mCK6HH|rR)S?w>ySH7@ zH}yTwO5bFqTAR%GRa6>+-FADaA7<3QWxmlEi}zQod!av-p{`$`nG$BXFbY6>N`e{D z+qXA4|MRcea?i!Vt??--DcZq7nfmje=1-u&`}_J|h>+@5mflVOt{}=+_G_(2S}v_S zFF4_nxI=->L{4$mD9w9D;&=cA!y7RVBC=Wzy;T%lOV~F=cFRT|+#6knx9?gquv+FD z9qj$QA?cq*M41h39i3d?gt+X}kOxe6X*6#O-~c4$XECL(gK5D$e-lZoi` zL}-l7m!nT9MxhZtEh7TR$jQ>_&t17O6=v~rv`DjdatDu<$Aqp^Vb&@wApx`O1mbM4 z*A5h^SinX%!T>85G6xqIu{n;)YH8xo12yRIt>1X`ynor8Ppd9bwxEB@pyxvelF5iu zqpGe4FiTm`X3}wA8PLbHqbJ3(=IG3;p;=RS?e2ROV$#IZ&h>7nW5jexEU#t|uF(R~ z!$DNUhi}H@uPxTiufZ}sfA*uNuGx;NKi{c52x@_1bMOD^zkA7|;4;x??DG>9Fk^qU zJ9ZM9janx!$6fm|(7s-1GPMr=4Uy8kqu*F?B(DkZB+goCpx~|%`cg8yUz-D6j_Yey z_U9w?Gw*Hxk3@s*wuJ`3wyUs46G^aGLud*!?pJ;IIjKpQKiQ#_B_C90(b=!y787h+vn0sulU_`6 zF5zX#CGHJ!^GV_W=Mu;5P=T+lFzB9vzdmX|Tl-PG;&Kb|5Wf3_U(t5P($Q$cnAPzH z`-*+bcWZEqCBoU$7w_0Ewbx1(&&;>S&gamPCBP6)Dtw#A)8P-|Z~@40>>G${;xZzY zFs(JUK*l$D0tJhtFDR2NA5v99o-(7xp9!cw8q+;lVr7G*EQKGrM*F- zs%Uph?=}rD5auAsXeA4fI=mS#+I^M_qo#!jP7`xW9OI%owjSJ@GCamM;0c?)u&>RT zqn-~BT&-H1j=xrIJ`VP73dFM~I=NQ+nHz>o!LB_ahChZpv%(f9`;A)S{Aj>Dhgt>0 zdyD}lpk7qlnzFfZkFNo_6fxnw2IDb5oBaLSg_es`F_-wxIHxdc6ryAVpwSN#-s_pV zO+Nh2PC8!>fnWe7>mH?C0r#7&Am>FWi7v*DT$SYL>+v|RFdmAZCz6#0V)QwcCxZdM z)#)dIVND{-XS$Rr<5F)zE+aFbWfU--x=l&C&n=8qP73`uv2-KEjJqb-is$k6%?Xj$ zg{LW5VIO&o*Cn->7tIonYBmuaK&nkjUGcE#@e5Eqq0+lfrIMUrd0|AauR_R4i0)uB z!Rd8s;0)1`#9&N_vf}>h+^#R2$n%o&bsa4)mt`d#;XI=Ust%CHV7@z=rhN%agJn^? z@H?Z&iq$$_C&3V+DP(~afX8-j6FwWtNNJ9~6B;$!^AT*1V(-6AaJ9!k4Ll!^daktC9dR(ZDi9r#F6t@r#VOnxE4B=F#*=730X{jz~RjfE6OX?iVq?49c?;nHzx z;-YkkqpP1gfU{mIk9YuP=gqAKljttq_ZdsY0AGK=JNG0+KkV8WIuK&3z&SPWKdgZ! zH!-=~=RFp#7QhEM6;V5w_&(mumF$B%Cmx6qL-&v3?ouzmyBx~i8D|CL!clo$h>5O- z30xJrrI>)(>!J10Cp--%9=3SPz-iK)GkeAx>+gr*Me`h8!QHIZtdiBl)rhQo3kYi? z)$yz7ud1W`;o-Q(;ennqX45<>eJot)yDKDJH@tCnZ(V$C8w~eG7%34~XPG`0^7DKS zy=rN#X^_;`HWH3chmOff_`A2QR~Qw$)dI{jm)Ewg_#wa{7UaNU$;oB1>Y8J_sHx?a zW6SZQ!PMn|2&C$-7*)7+NRzO)0!eB@}hqbt}J=pKV0kvbrr|3)K&3laG zXOHv4{$7Irvd7^cyY&C)aVX@q%CEg{@VYO(Zct?|FcU|De1vy4*LPX+?@fFfgzcEqyg@9W5Oa|9*2T z^8^FK=Kkfc#mocz6x)*8E&?+?dBU19H z`{9vTYKurh1`(+Ft=UzG*u)%g8G)zXX_Q5T=_~;ZpL3+o3;Ces?2EHyU5F;&az=MC zD6tE9+cQ-g2tgA0ODsSB*qA*uVe$sa6R}QR%r`oI%J~LlbQ7h-!e@#-$i~Y%yk3DN zWS3@)yda<-QOx7--K4jW@UI(9pZNp3e_;0y?EZn>Kd}1;cK^Wc{{z@nME-Th82$IK z+x=IfclKJ00t*BC#PGDM`uT;GyG2#AvAmL66E%lNCBroC!6)9PDjhuoem42D{;%Kb z2iO-fGI#}1fcZmDuHWyg3miMtCgpaz^zVCM^YNA8V*WWTeAXq{CDSV+Vh3`gz$9a^ z&QumRKY7ciw6@^XIMG_m)<-%ekhAtm#q@l~vBH5J{7a!CaH^c9f?sG5G{P6rC5af^ zQ`@T?Dq{$|3E(N7Y+-7D81qU;Zxol+-HW?_zoMd3#CKU1nO&W?udj~Q9qK)-@msJllB(qU2b8B4RX^=)hY0(A*|~X?FXpi zMd}NLy)1vquNAr++iliVkIVX9Yl62*Za>)XaS1fE;Xv~J8%$$*r||n)!e!)Xk;qCI zO}n5)|Es5#Ki{6ZVOBY5ujPFR8p$J?kemtTg9>hful&;}1fI*Ch~-F>hPumeJ=fS* zV|9FQVZz7GLchze_WZ>UMqZz|n-ep`DB5?{$5eG^tZQ%~9RFN4WT#+AdN3u`jFzQ$ zq9`8&xTq@i3+-*gLakA_Tp}JaGD%WrjOx?cbF2Q3yxtw%30RRgWa(U{{o&_&+AN>9 z-5)4dHbTz`4duo?=eKz*(kwqwAQ*PXY7RN(4;tYpe#Vw9dzShWEo04H z*<|bLl9w=4|Ni3RjMa>aqm#|kTBu(C0zQ-TA@P}(A`@RUW`iN?+B=yC-E5Pe9XnoX zd5vwqEW#4Aq;VM5f@PQrFtnBSHAM5hJ$jv^jaWDJp#&gRf?@`(-Y-ExJ*T2E;$5*n z$8mRW-SB+JWD^7^zBpSjckqy3FO5r+xzSK?)z&mc^oqnM?GhmA?hgq-OxNMN?8_nX zURWCw*6(TnHAHdBZ%$T;OPfMvV9lV3j%T3bI#8+K_A7458~n`e#NBw|2a#JZ_~WyJ z-Mu*t*-2|&aS1QXG!Atv3QK))X=~vk1s@Hrbx6he#S$<`!m#&LZ9x z3PvK0=J%yX!qKY=@<42jhjZZiM zw3SZdJ`B$W=8j%I`8Y4%DjlQYUb#lyMMG}aZpsQJ+O$kednFRP{*CNV*p~sPoo}5u zH!|u=G}XyyaI7rD^KSN@ci`t_Cat0Gk8m64SSFu$3wIma?^666Qd*7 z9hq*fmjM&lGvP6JBpLd@`QUz~L^Wr=C1tsguQUyvUy#X>2ZAa)< z3C6SJi7r=H$&WZXCi3K3^^BqgSDB?ZPDoJVyl7UM)aIx; zN@tR9A-Vl*buD5hwu$E+$=DC^#gG4c%Kuklj{I+fz`9cy7_Cq9-uT}CwJFB_B{9GF zI|$tKH!%n5##+<$oRUWO?U8qKM%m4NxA`42t`Jqr#MkxpkC|t zN^{UoS)t_pJh}RBzXds2i^!!%P0axYc}<1} zcW~hSJ*z&Ct}2tCQ!k+~lL)2uC=|b02kK6VqAa^%0{HbxLr&G$11g&z3eM-X&l^ey zSm{axR5W9zG^g}{at8Y9H#XPAu=&=BDunt3jP%l=!01=w%{wKpVs}4}$hcU~IJJ0d za*OjIMYGPl-yGU?<2S_vNWI!yiBRS3XngTkzAqLtRq(#}qe1JBth>UdL9BgK*Vwd~ zulle3Etf!wzu8UN0cys#laeDkm_uSLy(W660V+w(^5Q$c^^lN!NuNP1+9F-&yh{t= zN^ABk9~~T>${Y;Z_k^L_Fh()~l&a=2NBUUZZvHCscI!H- zd9T2T%Xu8ClSOoipT^n1-4vQ4`ie5*^pxXe9)r=fF)}EGX54u#(A9UI;Pgwa)F%4l z5aLs-spLWkG$i%sP;dDTLWTGsd1tBaHPLzEAm8TxB+&M*dAM41>WOn1zgEPiERpLM z4ez*6u~E*o-%ToqxeYl8V_n;R^liyd&t|#e8tLtEuiuL5`q>(E{h-~u55{*)5w*Ec zNYO{G({7r&Y<`lTk?wMo$+~7MWoy)PqS+!cZnJ3~~Ivy-3tN;!leJUGK7fa~YYl^3r! zQtgN)KkgVT5r0A6;OBsO{e)HqZkDjQLm4v(f{S2$!n+J}C2~e_x5r7ecKv7~Pi)Xs z0Oc6PXYrBx)0(oO2fEezkK+A3=u>u}`Wt$$=8|@ss8jSDLsf6JaA9qW`2bXf4+MIP zo7F8&dTdOJTg{${CFV;Fn!3sDlvp*YxR+JpKkQb)^zY0f1k$UALxp7P={LxyrGk@v z-E{qDo+4`ym@U;#HPRJ4$GevOViJ$c&Rb+oDh0r1*s3~P26sM`%cj~y@{r-vj>`kV zFY_$;UsZEBGYnZXtxCX;y^0BWp+qU z!jwuQf2`AVWp>NCX}>O2WmnK?_TfbZxd-kz;FyS#ikvz3B7lZQ%&!0T9!cNDbHOHt zJJ8~){EBl-hmPWO@zi)sLFPUpApl8wjxP**0zcQfw(N&4mWPoZ(5#bU7n=giA362r z_*+p#o*Vcxc=bjn8?2|i?_&HguNwHRJ9lm``}lL98H2z{ z_SH*B;eZBH6V$K|UhbNa6oE})7y=8h$|FN{*W^A?JZQY!J{NOV6WO6{6C^@09l@zP z7_aHW$3mo1Pp{dIfHl$GL%z(}ymuvtvGoZXJl*VxuQzh(qwUYerCtp`I1)mqKQR%E z2{G@!AxoJn|GoDq;+mA*gBQA)*!_(A2x#>jTAfmO8lbo|WLepJZPU_oS@C>Bh7rfUK+rzx9Nul1hB!C-!2`(*scgi zVt3z{b9XTJP&pYp;sW#LgHD%^i+a4s*H5}6O!^AKUxI8`_D;U1V7i>g->!c_51g#! zb>wc`pdW!AKRQ|bd(+AOtHAI-7N+q3ComitcU(|n6e6)KzaoS@$KrK;f5fj$a9(PL z#S37>wM*O6?MkF!_~G*qV{-VPO!*c0V~j@_82{@fFX1~UTSqewTW2R3Pd6`1r5{88 z!IUL19%DSf!1&juto8TdKbvyvlfS<7$CR^;K3HXen?E5Sc3(DqG<@BR~b7ulAxOuj(Pq^}>Bn z9fz6y@`o$VL2{dx0P`6ebsEDK>N>mBljFg~X*mZ#RnCvSDSHLZu# zlwuB_Mk;mp-$k)&G)x?CN~I~=jeA#z^!*Zuo$%tGHs>tcIca|PZehrOLbU4_kgiNL zyPNS$f;m@agbmi3Q}}Jg4fl^J|1sr1ru@g0|CsV0Q~rNp%4Gz9-7)4KV_*;{TKa06 zIe1#iIXIhnSpDPe^{>bO^X)ZxvhR1W7S&*AtpH8?FR#N`&2hC2$bhbTj1d*JLCQC- z5mObpa2FB)BJjw9-dsp;idr$3ZprmqV;<-13xBma9Em%h@lL2e9Cfz}^Ud`KvX)?V z-SNA;5P9wV*>q{^ZI@oqciA9J#fR9G*dMuwMwN&HYWZr;O`q*3{Q!8G9*nkP7`kdLvPN8!U%-#q7(d zLxlU(zVPfuwpDgEx59W)p30@#_*U&W$aUN-b|qZQ>_`2NX7?=#SXRQ~bn7(8c4mxi zbyWm9$cAikmx(x9LqlfwSS@UGW*2=+B9k5;pLRv=^s)6xx#K!Gb9IwdlNYd)TZmN53{xiw* z3UuSCqIvo_Sln_{qQJk5Zkw+#DL{*31;SyXX=2Sk)$uLh+$T{@glg03fRO!aK6#K} zV9QYGr2?qM@C+oeNw9bSvtitG1i2SXq%p1pCMe`+@e5=@PAMtSBDGKKt;Q z8b&nBC*K*X#bvvH`D1gCX(hYb)C!`Rye1h6;d>gf5^NiyD&A^~+DFww1qGj=R7Pr|6t4m8 zjA{O?E@d6`_Mhf)Im)e4_Pk8e66vHrb()FjYhl3z zy*Do0FI|4Rm};_hrfWU4ZM+B*!l$z%k5G9czFXnTv&~rSCxwTvUkcSWa-7F1K5&F{ z%v`g7sPB>PM6rf!>^%14dGewXm(!%WbL^*Uh}=LCt}3~hSI+qU{U&g=p={^q?|JwC zM_1d){+gM!|4~;9|I*boU(Hxsx}j)w{e;TmLb_ima?`QXexapVWOM#D%iPWF#>WyR6p`24Hx$@yz1>XKVvsW*NeJjC10C=j3n_J) zdNCV$4W^^Q6|5C6BKKVAp2|2+ysXx!B8$G$QZ;#=^VvW^_X|_!KKd}XWdf5E zl`B~-7oa6WF3gcfZRol28fjNA=JRR5vBvHz>Nf?qm$mVLn1I&C zcM-YTbtLGQUYsrEkq>s)8qce}$n@*CZhWn`S0_BRu3 z`SFZ^ZpK~$5_skA0;u5IshvtiEL8>3{?M@(3a+MR2|k!Y21vAJfK%nuc@plElONu> z`uFv+96aweXO`(jg|&TAh0z4-$e;UGO$al0i^Ds1%Op4a-s|pi$Tl?zJZ`@I5zhnS*-=Z2rxy*Y(X z>z+r=Asi+|du?ZjHagsF)f%vm6?l6L?bVL!jc~pm#|e0bA~@XkO%vWWm)I|U)l+xN-wq~*_PoLC zI6ua9QD?=wU>|c0<0PZ5WLM`3N=)pcSHV+Mh;zMccrD3+ zIv{s?kJe}n=?#MmAtO#%W1#cLcaq7|v{zzyBRyr#cNo<_cMy7G&DlRjF6UM{!tV6L zX!C&Q*oP)p)mp&!XcLtae?gX|C$}Sa`-1jc@v5u%IrG&NbPRrkStO(nx%IU3$YJ&Y zjnt^=0}AN;xBZkppoXt=je(-XhU0IwcW~V{yb3=1$%yN1KxQ!GE7?GY0=BCX2lzri zTtSbKUYPW}n%^C(1iQn=8`wHG`$I|uP;tuJ@7{1Keft|v!SwdW(HbJe`wP$r1XH`r zHJiX=^!cLoXt}qy%yx}6C%k8mk2SbFtT6x1nPJ|PLH>}Ww_FVC%eHTp5-`?xAo&Dv zu0M+p;^K~vDSUvP0h+W?aBI1oe3WH;zmK=q#D0&>~4 zCRsJOmf)HDx;v{M*G1<3VC^*zEwUW#3!H;(OCuN!A9Ek&KVTI;#Ig<(38oY%V!nTM z@X;l+74uNQGe9aQp!pW&Y=-7XN-2P`?A`f#y-kL`I7@9KN=k+tXG#`E5S#V%klY=> zs|`oLW(vCeoj_9ZF7md)-Dk+jL%Nz3*Hu+4YMfHlRcF1;W6Efh@*L%gvfVrsRgs>qMF11{IuhMR3HICYzVjt=q2(`;W!9iGcC$1|lEnQbQkA7hQE z8+`&K%5$8J5!qb_#xn4deCR}5OU^kj1r6Z4@ju^{1aznAxsrgZce-BI=m6H>t*%K3 znbh-J$Zu$P-(rlKNp+I^WcQ)TbR?Xou50Bp^BK`@Za%vE@(#~ruJ$`E`Cr@Y{eKcv zq5mzY{lV!q5oQ`f>|qkx%TR90--rJUs5kU~0QFDX!k@Namj%9Z#>&8~~iEP1Hfr{~G}Uvc02;@jYA;9G93x{t4P`@_{9o|1!P z5-=vehHF0!;P+71;P_M+`Gk;A+Aagbk@ffM2iYHjnOFeSWh{#^2>Jgpi(GW_^jieKeT;#vx#SBF%aDoIt+H z?j_)7>oGhddn|**8#ms5ka14jq`dVk&#C~_>}_NBjlh{l@cTSf8xKug2^PABbM5+F zUoW||Vq@l|j@gXb`et-rj2H=LZqg4gnc$Q_oH-qq4;&v8?refvnMoYP*)$zU!$zN~ z(BmM5nN4AOAW*dk06~+pH^~Xmn&wyMD^fr84co9z4H(x%T7a(>yt7qR8i&x*@r6SY z<5s@-Mq8)5iVR1d^kYKqhgi!lqiIFopd$u*xQ_ z3^`C4wd0q&5-O=!3HE1`^sn|U^!D-K_rDPIJG42|z2=F}aEd=Pl^FcRC}9lE3T`emaO?iIrx@H*DM=-;xynT87~EuH5%9s~CLAI^Vj#irkYP zOI2wu&FUB%E=gq4&N;?Rcnd6FS zeZddhJOPKU`kBqX>=oze`1C@llq_KWe$Ce`=v>ohxO01a4kSHGyuQKOS3v=*pYA&b z)9oBPFK}=|nJO08KRsI(*3~tjn-F4K%Nq%6=BAEv!XH*8Xz}VkFCGCyLLXr3V8s~H zx-1QTS#ZYeFrj>X8qjl5+h;_CgX#X&_WUb!l{JQe%@9ie`VjP`-Gs0O_;Iby?1RC2 zM_{>G(a8J^O9oSjfEb~$vJMBu)~mrWbuv`cy8?36{W zz51Vu8ruzlAwJ{wVEkZ*U+C!Xd z(F;x7R+>&qA#n=SbkmE(iEf;q-v@qOAU(BE=s(?vK$yhr>Qks?lP8)#7hK-+`^GGJ zz<7!}PFS#(Hnt)7IVE-qMFgSzYGWxsO2uIirE+~OCtO@6V z!N{XI74q@GXPm8^TkXF0hffJxI4Z77}SS(!>c4GXplFg71Fhu@QAF{BxWVK5-w~nmzf5uh>5hYF7`- z7}$CwS^Fao0sz(XXQ_w-lmrYR0rLjHvNDxkCK){uE_m}=@bw+6`~H@XI;nsn+kI(9 z*5mvWZHuTMM%KdQ*Q@;=d>?feCiDc7!LZ8yD|x2kdcD`LQUo-A;6_DTR5`&VLJ#@8Q&x2(@v2zSD$A-1X_9pHl}9VRKEcSYy(QW7RyaoyV<N@`j>&y{s=vY)-K=zXPPnC-x|zo!MMIB;L21->B3 z^0^C8fStuFfN{LI@hF`0h@c&+AbT&HG!;E?S9CepfUg;SihXzIlAAE*f+&3<3{F5r zs?pD@eojk_h5$qEh!;)D*uMxdMtzZSYU?Aa=UT%YpUpmI6(Gn%8sB}Qu^aH?XSMEg zyLR%KJj`8t2yQ>AeJHYXUr!ylUaN)MVj?f3%X^7+Q?CrgVkKz$Qjc&R@acPWU>3c{ zzD0zf!$ZZ}Nq2cj@au$%MxSfA?PFFrCztiNGz9w1SY0sA)st79ypfk+!oy!HanDH1 z)tRS1t#$VAB_D|~h2s#|@KnOzInP1STcIE6;t_L`c9YTakUotuGM5TDoNDg$$B5sX zH(oRD-JUH0gxBfaKA>`~?t(7sHhLFLF+{;bOYubnTo>EXglE0KL)LK(YI}EPSwc3UR7c9YW*UC9geaBde3l5Ee_(2AaBiWA*yDd6)RiplhZF zaMtRgQj3E|`d1B|(Hz57)@z3m2L0!vusXuiXpZg>nUKD)u*pM03FAZ7&y){|zs@^cVZKX|ml!=en8iqI-i@R8~%lSKA3Ig;j%>o=SD+;cH96gU|(7&TAInQ0@(M zn0F>-d!uJ~LBRY*N5Y)J+AjUkcE-`((Qd>wb;M_0 zZkrL%_<8te}B1hEVGeAuV+G536t^}U^->5iZLc*+vn zkXMY@sjZ!+$wrsZzYvI(J1iKY)wV))zoyBObwUdV=8C6>`g}k!_}m67`52zXyXcdi z!_v+WiV4c%X9&TeUiYrkFP%G*y@++=COmC+9}^|Mz*wI#S@{cC>SxU6B}qBJdm3;i zC?h@rIyS|4=K~4wnP6I#Um-Q0?Dhz}!Ga%pbk|F)eYuh(4yy4rBRSln$MUCH?8!T@ zcggv1@auBFlB7Fcj902>`Vwp=CY58N6HlNPeMC>=1676$b?XSsv5V2)BP7M4FR#hW z#f3gwrrjSzmJp}L@rd{^?BgxuhZt$7^vqtNJKLZFgsw-KPlTNYlys*>8LHS|fE?5S zMgP3@QK)j<=^gP!1_BQA+!^k+a(I|}0RyyIkOHeK*h)dDj)Z0MBe;leubfO+AFjkE zY*U%oWN$g{j+J38Fu&)VWy6UO+idfNkk3-TAF||8M|b5g02`dzbwBu|NX{@9hjDZ| zYMdbh!@!>_yy*5aF}Cmg;rNR_MR%m+X86%N@mX_hI{l%`*KU-X3VQ>?s>|MZ3@4FT zUQ*ZeSyFza;wFOB0D)k5b?tM;b1r(|`HAUh3IFkw)1obE+j}vp|2h{YQ9OMo?&y=- za{p>o)}gy-|B2yV3N~y|)2w64k0;E)e&8-kJYc=xGVesGJ^N&%%FpK*&Ym@-?d>b| zsx#w@&xYr!5C9aCutdAoal^?#nu?v!0eRxloOV~>=$MtHU;@K4J7_1(W# z-mRg3qr4V>&F^oO*YB^ve^%Zt?mx==M|uA!?;qv;qr88V_mA@aQQrS~<%J3SK4U!m z>zFL$cT6_T8lW+sngPF z)YtJ*^Kz5YIj>pI)atcoSuIS@Fid|jJTjv&a>TlOi&Ff^@qUn|SU3NI)wtYE_2%n4 zU1uW&;i{Ixk*SW6WQXEeA^N~z$saECGFi!G7K1GFW6e5o=0=BbgQ40b@q8ko6XFR+ z;teCZ9S*{g$5)q6M)G4Xug3_4iZEes&}B+7vRsvnS&J%(m>r0$j`7ym>o?7LUmZUh z>e#=uy{)96;m~hsl3+AoZ{R8@X5q;y1=`^#QzZ1cFf z7ZaK_CtaqkA63TafQ$b@9DNBWXmT-_*rU_ofyrSu!(4sApHr! zkNejaRSjZGN>nRKLQ6_^9|$sViT4;Va(l|ARYh`oXwCTOaqD_<>A?l1 zyexIf9G1NIlit>Ln?0~muzb7MGs@D}79=ZNJ2CUVQqLwQ;wWZf$^a};@cJ>OXELoX zGUilPGasdsmB4E2m$i;;DjYNCjR%h<6-FW#3eWfKRYP1}O*rW38jJBMEou)$V0zn9!9)0}wWq$aZV{cAhj{N+N43dc!{`iygH)OJ*d==sn!{L2mB zvZpqai&VM4%*}1c09Uy=?TuFH@Y8Klg@=(1teC=Clj4C~;96SPWmTBU&C~66kP{F_ zcdajX;U(wx!+g~M6jXd|c%;)c0CqX{uQms{%PnxrZPVt5o8}J}ixkeMQl7Swf^`ko zU2CgL1Eo~V)FV!%?2|)9Z?-o*-1~yC-6Sta2>xPf%)0# zcx_(Kz%6x2w}}{(*yt&0JMwQ-x&^nRslpM^2f}!^6MkNWm1#*vzXo@lg^4w7rsIb^! z8;_rZPj&97&D-sS7iKQYc);Sol(|J=!Qac`e}>tF{}N`UOAwyfxD<-Zy!-u(lfO;V z3j77LTYvQ`u+#Qd+In^Jk=Xsw^Bu3^ z+K1=!>`MS~|3Mnkb1e>W0pPMHq{;maP(Kglp7CmscrkT)g?~Hj;b;*;wEcaInuTz1 zw?NG_Qd=J^UNYFNQoadU8K3YDWlno4alBMmJSDzlcq=SV=Ty?3rc%o3UMe>(=lpteZd+? z{H)FM9<8hD=VRBDoJBoeT32x@GQ&6TKn*3KXt-w`2w3_)Ud=QRyHRPYhofq1u%{gt ziCy58lc+b@8cRQtnAtXt^;Q0J>IKSYsJL?>XCz`WPpO&dJxz(Q?sH3h(@A}DQ%_rr z`1%pZ=PtEHtM99G$Gc8q9^Yb_N=lJE_E72w#D5@d@WplT3qYz| zA;r-y-!@_Bi?3a!Uub5El`yypfhmHagi({HT4>r!Pbdu08{$nlB%AmXcb(=_s~q{% zUD|J$!fy&xHPPB~MUlw8je_h;jUrHuHTxb5Z>Zu`4vd-ajW*wP8s~99I(#@jlJ9bO zAM^~U`1TG<>_Jx89J*kH3o!rHs7DV)5$qgNKm@jEFPI038s0~;k+_Q<2Qa3WxIxbA z8n|KGFvcHilMla%VNU6eIexQ7tU!Mgh1))ORg*Ip+yV<)1$MXZLe5(V8mRF`Vf$~> z`A77t1<|z`^-Q;KGl3UJ!VviZdI5oLMh7bw43CkaP{Tr>o}YetLk~%3*NFLD)FRwz zy?**@#<-jETQ`n$;}U)v_vkv#MHohY%E-7BH&h9vx4a8AMnq5f_qVl_Kfll1)H+;p zwYVEmw9`0Ktnuy=b#hE-JNsd8tp4;GwxX;|1UUr*oAK1k-xf^zqV!T%^lfD^8@C)4 zve>BHKWO>8rahG(0ll_Q#2_4_&0vvAuJ~Sf-BVonz-DZ-1LKQ?{p?|q;wfIIUC3H6 z%22ZvLI=!urxqHwuQw8jv3A)#9@! zOosBy4TF`BW=xugE4BzFj#X+mUiJehvBG>yP7m=2a(4T_1Nm&Z(I&<<2`-Jf(mz+QbKF)pxy#ArZj#Z3z3gbOsg?}N_|T; zfms)tp5H#SDeE&C0K6Rwz>q4Dz*VG(42;oD#Vn-K`RcGtqN>Pd?TBtW;!fiQzm4cK z(4KW4d&W)ew3wj5ogPYN1*_>fd^-dVo9$T7zV1D*GCntAzN~Mv-iirt15cUz8Q-c1 z#KJpFcWd>x*_Qyhxc8bt+{Z^w=z!*J?=Hnvj3X(Ljj29i;0F5k(=$8)O2YKNc0!)N z)7gJ)s0{y4XDJ2>P2XmtMEH@J(Begg?Z}M=PuC@V;(7L7?%DR-Kbb72*1tB{SKI%_ zWZ{3!>TgXJPvZCH{m&-rrttgoKdlS?v@WnTD*D+X$Gh{RksFj+^0R*UIf90#K7hGRnoiZ(c5tZB#b@Ml?}6xu$iKST$~ z7_A7f3#7R&%=q4&l&bQ7vC$^C=CXYP+7ZuLfO5V}O`vB*Y_G)X%OXg0N)S27zMCaNPxPHR=w6^w+;xp}&NIFmE;5!?b5s@;dFY~DNjqwMD4 z!UJA2wC)J-h!L-TW}UV#7awkN(~y*s9Qgc9?UvP&(xU1L5O&M3emX0!U@)#V#ACe? z`Xk-%>97bs4f0QVv3iL*_osEipVkF`S{M9jUGS%M!T(C@g8UD^&lq_BI(duqAIV$7 zbl;>zO9GH}Rr=VT8q-P-L0xZ)#$dur-eW5+S`D3MJtFhrh$J@8@CJweAH_|!gdJTl z!F})bn8~IT7j2J$77LJjeXKzYd#U(D?tc3jwEawQ6DqpNAU^3V>=wuBD&kx4mRnPR z+bGJIDNc;GvaBNay?T=ci{NNl__s8wkIWp5#v7_)HQ?5^&QgH+WWKLRab|iYm*r3A z-GrOUqxWFm;z`Y7TldLWUQt`3E{8MoO~#{4=E72DYh(4nBIcW_G{^X~{Kj--%U)|^ zOnLz3Y6SW|2*chrY}Bd`gq}W$scH{S#gTmC`Qlgh7FgGjL)YFVJ*4O8{K`Opac2#$ zT1)#;UW0Gpqt;^GeGXGsqjvR@cwmE2X*y>4fTYovseo{xWmO*GmpcToS@D1;lc*k} zId^)*QQ9d3AuNcYqhlYAncsmV%FQim$l$fG;}wt%jt&IncO5QgffbrW7xl6=&so<> zl}6NYidZyPnAd-?%)HCmFwiyUV;-*ko=Yvp>gT5M$$!AEvLsFXD^_CwR$YL@vWYMD zw%~P#A$l zh4~CEvya@|F|jIaH%ibdu$|1=4cNas7DabcOqi=0Rx(rFbuqVstR+pvwob7?2TOVBY>+!9`uq@L`l^fRw9QeY$b;Pd7 z?ve9|@1AjN+RxCD2=x)?BW+KpB6C`Z*Jz(lb6qQVX83k~Qr&6EAT>Gi>k`}Q=WDwvsx4T$Dh<%YJ3>Q58(>R;SAa6CvmZcD`*1XK;KzHMlnIXy;$Ckg9eao4?-(xx}6 zpf8AWW=(YEIp$W@a;vm*YXYW$(Qn~^FT+^i^P>czJ4zNLxeG1O1Z9HcD0nnE0fmhc zlOsZDnTYFfJ858jy` z$b>84IJrQK43X;QKt;UHq9<6{2uIi*MN$*T9U8|bfjD)8LxKv^J*+(9b{EG^`)v$) zUmtBG;UtC~AJ_<9VYl+W-ie>4iQNm&O^__niWuWv+p`kl(h~I0>0tOkuH{LQ9v@~c ziw4UPJATytm^1mwRyKNE4JoG_I-AySVCfq?UZ$PT%J;Br4mEcz-DE+xV#aI2%9=+riO%t&FDU@$@*_xdA=NlG({b&V!KcJ4)*O~Oi zVBl5?WWXp@9{pKWst65R)9ek|4PoVCqhNP9dp+hm(lF(vW*K9fkN<}1WrijiGIsj6 z4rP^nmh#}kre&)>(_072NtO}R64MU+v`c--(o{*;+17iBh)wg}?*g+=PiKe}jn;zI zB|>UsP-IM{A|I@ z`hez3><*Qd*_B0lKo^GUm#C=fHiGX=hZiRGqsIIGkMNt(qnli);J)j`O+a92jpUb) z{nXT-PnMglHv^yUp2Q!9&}$9DMcbVgyx`}}eOr}usirxLk3i+0A_BX+T=+xu?oL9o0zS0d>C$$_lFQAIGFP|Q{koD1&dPH|5Q!}L;> zV{2a-z}e<7+{f5#;tkooE!3>+()tds(@9+0*xNUY6Zd^m)NvATu}F~}Yra;cbujWn ze{6V-QLXzEMNUvDs8o+NX#bKe49b6GKXAV851@0Z3m{;f3_QCCkIJcl^|{=oq0`to zw<85p0*@Yoml7Y@YF;!m$w%zouNs!v_1_m9ccSfI+JuRZR0eT)h=oi(^uVSsjugKe znSVPhk&4ALKCwc`VH`~|w(lg)Z(760N%(}exb{6vxZ*u@z-RYLKsykm5C?;}sl^5~ za#4NYX~hM&@%9I-`ILqPQtqO281j(^wApgyb}1u_Lb0*!twk3<>_R|BoS4fxS{ zT+d_$4r2z!e^QzMgrWaquX|X*5Gb3j#&RuwmrvGN3&c5w!rr#XW+nJ_b~u0`hQno> zKYU-^_s^4g*ls^g8jM1nO~XVla6c*s8z1_1`*?ai((*^V3TQr*)6sN{yOne`1PAyI z_Bb8}7ItO5n0%VQ;#VzjbmiY@UR~F$b#}uLfgE@qY-X=L17LE3-~;+8V7H^qEezuY z;ksj_{#~fR);yuyx!;iU!@E-zOUg|Z+gLBE-AChF1FhJbR2358*v{)Ugn(2h9N! z#BDdk@MUEU+r7X3j-vN{qf9pfXhnZU?DCXU744P(4aZ?I>gGcjs5h^Z6QW!y1?eQW z-ny<+^0HMVTWe3h$*A;{HpmAY-!nD}h#%#?gfEX%E!8x8ob@s6UxmZ;v%84_x_!Ky zky~Y97%lfcI1cBBL^}C_mP@92`!r_*7<15)U|3;lV3pkC?c6&r`w~5b;@|HI~Cv;2yJh-jSJXM;G`5j ziceU()&(2M6k6P`%tXEg2#I2MwwYi%9GqZBijqF}wYrYraNL4I_hspSn%{luiR2b| zT$FW=V#pxwQNd*I2?d;=8GDQB4MH9~=qzis)(V*XU7R~#26%?=`UxtWEIm>C)d)x5 z>|8H{VQ#09hG+f5W>3A#fF$FI#WY^k{d=nqG1JR|>#o#u1y?AYHw)&K#bxPU+|2Q?tBCVERY^Of3pS0e5Y%y#4mPHTq)9pb zuxl{{)UEL*->taM&%93Zz!2zt;ga#qz5mH#6;!Ov@_E-JcGl>X%|z6|{r-=ZK1?!P zQ!%6DOt%S;bVc{2!-3A5v z;dvw^1{wBhcMDS%ZsF9^0q?fAfina0UKd`ER0IIN?)!&Oo+S>)9-ID(D?d~3F5=w? z^M}+Q9=82H1-Rv*{_QBX190hLN)evWP3^w_dz~0>r9>yR0@fq=kPa#I%=%Pt<`!_) zn#YHEvU^LmGLqMSlX1FGCX?7^8*`O!RdeUx#r6$-JDljkFH=MR>qh0VY(t{g(7vzo z3%$cwwz7vUjPW~jdvFPO55ti zBk68C$$5g+21ujpfQIUL?5uc1^gcjXc!~N1bYk7Us4Dj49>2Z>@b(vT2nd3veYA{! zxY=$G))Jvs*;k1i@Oyf8pL(72TI=_I$M<&_`;Tpt>Hou6noqW2aMz-K2F^!{cxZBJ zSF{4|=Kl@HM*cOgzvbA1zXt!AW08#iaO|Im?4OA2 zpNQdyMdzgJ#MynoW@#NuM0}+=a_rDHj_ie^HC9zx%BW7~I<*us zF6YvVz7H5A3W~m1H}`EE5#tsY4;v&gq*CM7oE8veeXQ{N4u**NIP1Gpl9`*jc~OCN zGv&CFU$Z1L2et`d(#JK+aiuTz)>u#yhYMk<&u6J5%vmylg}&Sc76CRH-f zXLeGWTOf9ysW7@m5X9&zl1jBwwi91q$r(2gj^);~* zeV)PI_b@d+wLT{w0a=br5*mG{pL|?HG|Bw2-toNca-xoxz_iVSeKJyaB&Ib5qQsP; z8rqG|xwy7Pd42aoq>rX)Yl>DvSv#ulUeH&TW?SK;42>2DPU4vh&BxlV^@WNI*AsjX znRhT_!ETryf05vtB8Jj37R7!?n>D;Pp>#^0LqWC8w5KLddt_|IG^(%@h+g3p*_fu< zuuL{{%50VfcH<}Va`l+6j57BbY ze)b~d$+2%1`=}fnA@-?cE!t-Woo>_Yb-0(D5P@=?(Tag=+QKXZLP>`-Il=nT1TuFYbZuK>l6+11mbw2OV4% zWQM*&X9|E-H_DElxw`3(NpRvwS zP>{=Kw7`6R1+34Uc)q*_xM20V3wE!~a-+^YQ^RTFa10aA>%tT_Sim4YZbdB^v)s^i zp>ExIPwv-RN{Peig{ES(h9FEC@ErB=fu!?b9bKjUir_Ts3ai@oFoYcGhiR}2Zu`$Q zMY#D8OH1!Hwx7$Ee#`E;@KW7(V)lw#G&#dZth>$QP;R5kzGTT@ohB;wIErWF!oxkN ze!Hd$3-91kjfiVgrD)nqnBZHu1Q3wN#X3!jMI2t%y%#UFMV?^?-231zU?72?pi_Z- zb}%2I|23k=W7BPm11i^ziG5{KfQteg#xY+q0Px)ZDil1Xvc$eyqrwC%)<*7U33W&K ze5l=NLnKzF`ZvmG$CZ+@N(>NS-OhH%`G{? z&B=b=YxSN5oaf#H?2q{fUkQB+Pdc&FS>>nTi;fEt&Xnmzuu=uCyZe;s^IUAHH(b(p z=yRf+#NK8lcFG7BO~vTBfrS!4)zRC5m%-4Ao535F_pM@Aa$2T-eDy8)o&1tXfV#b# z76PKMH7osRtWOoxBI2K}-cIITndx+4ovfDDZG51x5X}(R4Z4m%(wV#nX&q7*_7a^t z*}t0E6`(xXttjo@R$}N04}R%&-gFLBOP~~C9!4?xMH^D;_cpYEArSZJVggO<=h&U5 z_2t{0U;4Zzkpvrop~TRDfRB-PQvP@_>dAMfo^s)8$8!4bZ$u!D{q8#(u6A3Le8gbV znDp8UW6RpualsZlTP8mS7(wooKLvY^3&95gf09l+RV?dABeYFtmY~@?xS#v261xis zE?OIZ$1b4Tj!(2~)t7Ot3tT&Pto86hx$pGCtb8!zZhzm7uC>(s!ig*eW6`3hTkXMO z>1)bljxbV6Qer{YGmz(CFNbGUFut~IpOzvm*s})=JlW8MJXU`c7-V~%zwzTGRW8Z% zf&v1xNixD`#&6Ff({t}lQU#24S_e?sb0iW28W3-CSyxtaIuG9ObCj&69IhI=;U$?J2S5Xx1C+z((d%k+^r=L4)BcF*J}(4_e{} zUU#s2Me3rm61xyPvDk&gXWMV()Ua%wA`}CY)X;#)2~qM}zRM0YSSp1KrJU zZhHfK_j)xQ6M${)XzYtq;rr;}kltG--(}e1^F=!^8&h_NOrq!1Iz_mV>HG1iCo0!Z z>4DD>@h~GT|JtzF{|?grvG39Re~|V&)hIjLZ9_()jP$w);mv2gXGfp^3DCp?{tck* z{2M?U`fEOa3us$^4gNErNxS?3v_F9M2hjci+8;ps189E$?GK>+&jZ?p$6x>K|8>^?CF%-IH!}VHrR+igcV~uv!qG*n1oG14yEAb_Z zQapiz`Ws@m21!#23weabu{493ca;R=j%5cYiPopE^-a-giz;|F$vdB_YH1F348%n#^*xWM(JRTrY*mis}32NRne~$p9p;O#^ zjm*g}pV3%B)~yaKKI8TFJuHszw9|x#%G!;TV-r6vJvA<6SQZ$=3HWiotz_=?O;u!- zgmbaw?WE4zO*H>Lc)*wB?@RIqcF)=P?X*c4xZ>_%apTk^y42B)gC(ryr69&JzHfZw zMuLM$Cxf>lg#+4y*M8=`Vgr630}@G+!!L9zb>6!LX1y>rr4Xwym|)psrrZCqBHHch=J%M3?TK;fRI+j=sRD z1*V@dbWoJ~Q|$Xu5@!pr^ST>2p0=Ex!K;c3g}PPo%XsB|9k1B>&lOQYDqj*tCK6_V za;9PCf&8F^Qydi)&@H2!4?s@G7_|C8;aW%;7)$j)iQCx8%+*j(c7`mZ{RLVu#QyPm zLDS>HTmCVp(epW~FgvP%8sVgvIEZr~`-s@}XmJBWw6D!Xbt9)cvueo#J zEU`y%s^avpAgkEqb;%@kkBw_^D+JlgwrR(Okq%Zf`Cz^wbLJr9uonwlsAQj6lZ}6S zYMZZO-xSNUPoI6G=!29Evg5lF^DFV}D=qk5)I7~IGIaDshc^C$p(Sy3ecmq1T-l)s zym1k$X?EG9ur8ic;G-+~=f?C$aVOU6#WSLdMFS6I-lG6nTm12Db02QM__v(p-!EX( zcl0yu@i|65v0+_Hn?v%1{?c^L#WeZvo!{pYdrAwRh%<;05X)2^H^scVxrma#5q+cP zu2Oc|#(3fO#5Iuo)hl1yKw-Rrd9XajJ=$zS>lm3WUVUUc=Aw0drA*stLn21KmCwnZ zC+cpb8QXOZsJdtNsC?*mjRIM}5!6B{4TZqyvoL};e z8ws_V&Twqi(0|I)-miiBwRdfT&hG94#5d2*U~u&3PfrG8YvHnzg_(iIkC*tkeX188 zI$RdNzATHaN@2mWYQmaFJ-TJ$mx1Tyhywj>i0n*Nk&0)H-4#B8pG=~!SDIGja-@TlU5c+nASDJJyh zIfB5+G7P5E#p)2g2U_^GuZx%Sscy@m4`+MznTUuM4AB6fhI7VQ9Yl|aEYjBYvg!U- zap|2Fa-=XbnDa@ik8)mn>syJCfbF2Wm#icHarq+3-JM4_s^eJ?OIim6eH+26_+b-x zy=}T=mEW!C+7*3j+b1kW&^xJd3v5h4@avhtbE@ZxFnr_-t}&uOwT5T)tbQ8Z9n6k2{&GC^pEogIJt2_GYx)qT>?fdp;td zZo{smmWrQIx8@v%s@hdI7|^0N@&J)jCw6fL2)^iI%az_+(awUCOlIA)n?Qxy&f?6qt*`Hp1hi{j zo)vh`N<&6HoyPYI?MfBnOOU5`f$cg#8E!yD9u74wR>UqW6^u}T1hH@YSv1rcyI?J@UlRl+@Q#zGwZt@_aQT(?e0 zjUc%w#&BpxI3(0uaZC8R2biIOcvKSB`-lJr0zqV688(z_r^LuLc_c{2>ixZveO^np zK8W{C8$?T`0xvwsQ=hB2D@BYC0z$)i8%#z#c50Ak>-VOQ?v}fp*iQ05M=%R#KkbL+ zpFZOA&_{>-^G8KFL2)K`=YzmC03GXCTm)dp4{a0o=~)6?6!99OgItPS9h7%0we@UQ zt;K&$7+9Jre%}dR1=_R<-xrpXI05l{pbW~9{^Td7^As#Cf-4k89V2KT-cE;B%oi>_ zrK~4zxrW;bY|CJ>J{|aay~^63WGGmmp}uP;+i1RI(K%Y%2ezNez(Gqdm%d2hFoY3w z69abpD8G0^fRi*!Ci?*^S}5Y0C&8mWGh5!H-T|3UuVo%B#(kD9bpz0|~_ zT)zA?4?~VT@j1T}UQcqrd^L$fK5%8=lHW_Th+kn}VFMRks}tAP0ZF5ycHlA#de*D^ms&WQ-IxT#Cb2^=y-L8O z0v#cnnN>(Cuc!}4LLK?`yGf<)O!o;$9quNn;12p^enqtCd2K!z60kI+5BNEo`dy0ver|BP_q#*6!WhP^a=>e&!1Jy<`0kV3_}VZ!xp#ufc!D%omZrzr>&7>_5fXe~Pm|KXgL%%c7lLASd?{X%aTb3~+fD z-6qI!5wJP|LKgI`MXi&*4HZ!)1n~L3g~7X+_W zV4r=l{cswCr?!EoiX`|Yq3=n8tcIlcBVR=sY2A^TK)t+F?J7HCm7_0~F8BLT>(pDt zbGa|Cr|x(yw7Q~pQhz*i6eKWKy2Bz3kf@MCceDgh65K2#-lsGaOl~~qP3;3nnF{t< zOi70fj1s&o7#ia*8Ke~PpJ6leb_&i>yi&OVL)ea7fR{FiCKrvFF- z8qV9=WV%y415TgF%+=9Pe0?P&{D|r6kdytROK$S*xcQiQ*2vra?2tpN9DBu{3Zk7C zOhQ=WOt0-;dtdd6Q*B{WIgpl@yG6@2h`iPQZNV`=YUv7ESgYSEGVww3HdIGLbMsC}jE7NND1DOH} zF;zSe8qIbYnw!@{Uq#tm3*m^Mr2&)-RYg*n*9ucv9&2R@KkJXJxeGo@p(9(&CJSq- z-itDcS--Gsmko)$Iay~E8}QKjDDgs2Wa30nb#07YOI4ZE-z#Kcgi%Z-=8E-m+LzZu zTUIgzfgmHYa%-Y(g$oKw+dRsFE?@+KzRloFI#Ow>Ww&BX(xUUlO2)@fmiu?y zpyf%Yrs*NFjPIZHn7wj_<4j4AhUs#uEzZ$SZ2jdP;OUq=&T;<7R^;(KwYj*TKonMQ z!}&>M5EO1xWKDn9 zBFi9}uX6BIe7r*eJG8PgEBPL#OtC`?8{&yYN8wC3Y@c-Ds|}UP-No=!0Nn9i*6zLi zG_7PNq{(W+WWO|&c?^CAvi&I{?wpsiwvBM;ZWXUo=M`gpFad2JQfyaZ?>JNxzvT|P ze?kX^03Qi^ufUxYKGUfVz0f`})2>?o^a48VURe!AkQ38i)AiuwKH{_oh=deZM_B>Y?Z3jWK!Yz>rcpMlPaG8@Vc zV$9NBFWbqp(96iiqSM8wp(od6au&ZW*052Pw$nr7FMn-UQuIdB_H_xn+Q`e1w{^w3 zM(YK4zXHUc_H&`R)=v~nOiblyg>$ip^uaS-flp7veq_!HGooELy&JxX-Kc$|CgUZ1 z0>A1UqIVv?S!007?LobVT5oFovnc(JvM?Pqn#eXx3DG!mo5+pwiI8LUaeCd)QcP19 zwrlld`Hs!sgn%pwyGMoDd$~F+YazOXxximS6b^>Cn*_YQriSB?FOP{^!GINTTlge+ z^4buR@sq#y21KcWLtDRDRMy!Y%v?)E>lg@Qfo8OFBnN@*C zZLc1pGRoYy5UOF~sjJyilfFQNEo%f8eD0L27K&7O5XI5Z>q0X!YBfvFF}onz&^-9j zfMcT!=jfpvoxFM`VqOu{JBp$l7H+rM%Xu=p6=S#u3@D{P{$`0pY`@&2Z9EoA2NUQK zRmnBAyrSO9`KGuv3^Oq8Ya9jV%v04K+pDxRt&>v~oFL(5)sf*O8X!gHo`?G;RE8U~ z>7lmqPdDM;CzUQuvtS)8X&H&Hq-u$e@7J(cKSUJQKV~QRbz!Ib1%iXp%Z$ap5Q{tz zt~LuKoOEdpV(;>gnLJsp)&|apVSaq<6--E60$&f|QwVfck8i_gwd*BsLQ*NZ#9Ri4 z*h*dQRTlT}fq@e@so&$Fik%ryj?NtD;swGY-Az%j*P}0Xb>;~6+4s&LL+-uiPO)HB z*+$3+`WoPp%Qd-+z%_96&=ak-a2P>AI8dCGKlQG3i}r+H3}@H+^_0Y!jq<)%8g-^Z zsmFAWI{wE_=Aeyi1<>5=d(lh%M(MRl55$MzI4URQ(upEEW!rNBA&GQ$cM$8@_YFi2*74*L=jJQs!G=*A&S~UBrUGYYHK7_Y$&=8bs-&a*6E4^SmaLB?)HQ(K+l0{l;lpfQE&8|99IOh26rSB z`~5_Z>D5gwKmp;NwhT`zSsa)DZWi;yR1b24oCuqvTut>ZH084E;^o5RX8hG+b}x(t zuU_;`+wRxL=&#(6(bdu|(nbdGP~kGL(DF@Xpcp02nPRwcq6h}yqaYUM>6_kg^6jmu z44oxoYwGq{5k&Txb?l?X=Y2#q&D~kMM<&$j9A1kl^bk}w2KcQ6Ib14?sl5;Il47O` zTNsxdrLBMz3s*}sq5{U)&0sy;V@(YUrIuFg6I&HCe{l7O^XImgVNxx_2?BntV{{!k zMx1b+b;F1jdltz{oXUVGhP<(2&zpD*JE4ODZgO{*Iy@nX{agjp(yf5g7~WU_H9Yv4!iqUs9! zN7PoYPQLrEhvWip{hs^zzAWG{tVw9+c!#z)T>nTuqnXtFf%5s07UW@^0)>|PN-nU) znPzpe!-(u=u%E-`tU_44n=l_>iW|!=pnNWP56uJB&U}fi%~Ho_eJV!48U7ZU>R`Vm zGoB7i=IGLXT5*5TdUh)bSF>l&yrG*Hi;LvZR_y7*RM}zab;~kPwur71r~m z_nnUKp^y&m3X;c!AzE|Bau4Ay5oA>aN#Gy|=Xj^*iUwGOc#+U=RLKB#PXzy9SOl}+ zUYOSO_SM=bGak=vqm}a7c5~)64x~Vz!Y2K6T>S4*ooY1&7?OW)RsX~2WmojC(d*sb zzd^5ZMs5v?>bMxo%@@g_&jgywlh+=6!j=AYB0%ecx}BFa&U_6 zkK&W&^F`^i=Rn~spZmwWFtRGLtwBjY)aKt znGwbqi*$)sK=~C*tR%H9GvYwT11j3QA7;Z2nC*pF(qs=Z+a2yrtl^1DG0Bm>X5x^( znRAZr-=!HT&JRd|N@?_~%2uLHJ2XvCh_b9F`#hTZNJNbYjxTA_=t*NEDH&3Jjc))R zW#fs0oY?WY7JSP}68k0nOCyZ4Gzh-BG25EYRoJO^BTR6*7)DXi#Jl_w9DTLDP%-Iu z;hl6q9h- zPdw!Ymwd5m_GB4Z{7C|}Pko3)^(im;pkjCByLi~z`4zds%l%w?Dbf^O<*sojMci(S z0kEgs#@Eo&0KZVAn@?A}>C5GeJ3CoC9b5?%t?6#If>6A}{_+zx` zH>|Hy9Wv^(-5rYJ#vQDQec@3L8tQUL1yjQnTW7cKn4WFV9 zv&dvC{_3!7r=eG(fXQqtC!?N=S8U+u!a~MIN2{!k7T%N^g)V42#TvMNw$^pJFVc1Q zm=E(V*u3+dBt&~2Vk)5y7-Ae^yoX+Osd%d4R36+Cvj3WEXY%$xcSO}W{rLL$UJ8+w z!WY9MZZx!6ZX=??SgWTxJsy~2i|Quf)LKGAP{AoqNH|7?DR&}XOAiBq)-+bAF#A-n=p~VaKy|@&(z&D2Wj1&F<~u5A z)(tn5a0u1>-hCq&XizKe;Lz|=Oy>t;g1R9}g^D2}$0;Z`&V#t^{#>RvTul|StC<77g;&+~l-PL5 zT;MG241e(Q*=JvZxMCgaQe!e$4ED@dx0!Cg(c5W4bvDIWpOU6NEcAc;8gD!$WPNaW zeR*#^#xNE$@&2cu5H+xqUAa=unexa|Ysg2-$*RLXzLm(&QELk>6%COn3IDRg1}p`I4tTr@_7_0#)nN^IU`P zmN~xrL zIbsofTrg}f;i6OiMsYf?4?&{R?e=Wg?+K+1gM`vp)m|%0ElFt+;&A(iK+n4(ZHA#G>C@8q3Lv|M zvGmK1M(*$wb}?%7($>;$)lCerCmS!Y%>~!N@U=Cw;N#C1-+&vh*t|?r#6%7|ksY#+ zpED?MguBZj_xvCB?kcFwuI(E>Qrz94K=A?vid$Q(K!M`!1&RlEQZzU<~l4#6eJJNJ8C@3(Q!b6-2p{q3>6X3jY?bFOt9^P6?#ZwpL~1@U{uG+-Q& zXGg2{misZ_40EnU^rno0+o~uUQ|mvw?#Ro!{1La@#p(?==@DwJzZ$YjL2Q@mE4G*y zNZG2++xkLq^j~j&v zK|JhljGK1iKx4?GW@&)XNKAGAOtVRw=_(u;^y>nv{NH9PI)LXfd=e_Fk;s zlHlXE`BsR{(e{|!#-R#-Sec2efJ8r@%qhc8|MXFC%F#=idQ;{xMLs-RkuBKGl^6Zl zwunB#N`tyEz;{l_Od5=>`@TBfy~h|`uswuShqVFvzHkLEAK{#Tli}DKk)fcFe@Ar2 zTM+M^D~H{dlm=Znyhg95ErE|?^Ux~4)Xfl&NE?HHlK?LVaT}@TyGyi=kX!k4VBb=y zMb4KXZeAf6K_+RGA^q{n^}g^4{%Pnnp{@rFENROe?ae|C^Dgj;F4$;;h*?+wCgvk^ z^(My;Q4NyL=v%n7YvNMe`}JgsOia&v_K;F$`j*soPA2aQ1p@j7(HM%goi`L(e9&cH za{wlK8_m@reqI%#*sj<}wkN+tff*iH{5Wz3ps!qzU_3C{ehP>x!}98!1|8@%Mn)O- zN5-?P1EWm|!edh#n;>b4-l&RW=UF)nUd4xN);vFl3h-7;j$KnOvCNtkrviYVW_i<(u~C1CG|Qp|6856ruDHr(N4X5w1*Iv} zU_W@h?F}k7vA6!aX#JPfEWYJGs~HmY4{8Sa`+fdLHJkl=@!!=M?fy^V}=q|IWRVWrPI}IMMbqP;eGL{N2hd+C{p|Db>=x6SrBvQ8~;x-uYwa3aqP%7Z& z{OX`{KLmb}e{?f;k(Z+1$egWyqcSu_kTLOVs6RDhKK0`-vX25MA2|au4lx-_4IkMg zM@w3Lzx=3et{wmOt#+piQnnB!41|Z9cTtP_&KQE1djDf&Hl-NI9{wHemNqKhEhAGYzFJ6@r z!?~Em+YeM`ate<;0rxw+?-y&_uk!n%k9o2y6(#2r1#;Mp^tV&(cw%B?XI#|VvM?Ql zCxSS9wTOP6=rSAvk2lO$Q_J52DX7Keb1o>_0@qvK@0K<7(R7W|G(io664&S3^7q$6 zY;rbT#ismTN4xlzlxnrQ^inQtug*`C>#1mA3FUQHT}r`@IGfr0p-+ixIcq$DVdd!%Tnmbl@ zEv=)8_2kw^!FFr*IID2TSR*uXbz7N@3MgX$mz}1U-&5LU1VY~hjZj(t{uDOpa|3on zK5c7)Q?>OU_(T<2bmr{>K6?7KcTVYd&ehzX(f2D{U1I%LPzH(xWV=4wFfE4Q7eDk^ z8aw^4(+=55%egjc%gJ!L4E%iitUn9GHk|&+djhYI;Aidph#4c?@gmPD3A}0%C9HYJ2=XBDGeDLIU~LNS=Se$waem>xxJaWzj<63 z0V-9*h=%lCZO`co05F|T;`*WrM{z$a;FFi!t2(1#)g*gS6FCU{b!tQQFqejZlz7om z(FCmUbMaEdUdImDcrp_dW!r=ox=Zdq=h6`B9SSLuF<{ZFXpiblSei zbP5!G#$=&6_u7y1TRgRQ9al@*`4zPoS;uB;W)j8j?eC|w=H7m%tv7BAc&Vh* z7&4(&HmeiT1-jTME;`ZAJeFv~)>^*rv_$FD{fK8xb8QFUWboP7Ep|MzNL*3noxZb# z#f3x4T&gjCilG+^hts?QOZA8tInz5mfpq4j)CYxMeY#J3pNpM-ib$f`+2c8)aXfxp zpfVa{oBYnMW@sYADml-U+3R!WX36Gf*Bo&p0XC1C7v8B+Lqj)OF2ktUHSw;d@$o~s zDMRyl*j0e(w^o6!Kw}fjy*fFevb>LtCdv4kT5D-T%DbK-O@>+(x-;yCL+r*sSad1^ z1w22NS_d65Bi9NM_LXa9af7Dlx=?$%g6tH3jS}LRJ7%`&In=c_c3&R%16xUSyB`GJkCSlmqVgDNug6woB>-|$>)dMTuxOV*W75S#-HJ5 zeDw9#rcTm&AiE}*ZTUXIHM4844Kovw2j36LN9fn20vjs#!ZOgGPY;JF)w*tD!iE5|E;pILC(OC?yp#f8J;3G|% zX8-q+9?c%u;Uhz2dsSz#OC{%!Y{M&5e!n~_MCvIZJCgCrVDmn!ksqNhIys8$vx7ZL z$10#$o9k*;mdU0v52rf9m)OfDh&eKp57$QgAxUFiFuhV~FuBs{j>46|IhU3ETas#);kW&0KgPB7~D*?D<_l$7YRo5vsb^h#F^H+PnfU$D(T%z_WI=oAFn1L?wL z^3#f0tM{L_;gK5rt0k~6mUkt1O%YR-5Df{y5}+0Iz^ANepkIk;WTs-xM=A!m4V8!>xF zHBM(>HLKFB3Gse~U_4Bvxgfbyw(B>m?@y)KnDx>h7n;9~g%zsnGC9;D<&>B^--TkC zWbVX~=rls`4$G099b@Ph-a@mQ6O_w~#dtwyZctR)#_A86w^@8YCFuCLyva)3Z6<8j z^`3LqFFbDkFF3b%*Pm-B{JH8t7oAO}YIH2o|IG1iQK}LeSN38CZ8s!8 zwmZTOkQs_LStyCWY5+W3H2y}spr9YMUoQlUrf@`Rxi@;dnLb;-wWnk)F-YGxohrte zZPcW{+2^*r#57JmzxZ6A6X1Z1j&d^#J5He9JoOT81#9%<%sTYpH#c$8Ha1W~7Df$_ z1M{pFH^l9`PO=^y-{>>Xl|U4(?NJ)%fiN{grz-9AYM-2ki*&pMw;lGhS86&;d(RDG z$`>S26{rs=wt^Cf#9@GaO)55P&Z~PYS=o@a-a5OPM}EyFOVokHjq%!t>yTD8Khy@l zyqUrjd!tU^n^k6di111rxO-O(U z%(!lnhaC`&%G~7No9;L4xy;C@>#SQbyCqT29G zG#J0aKJk$HbJ_k)f&D^&YUZp)&Fc2x*6bNr9-94~%75yqhE~(F~s@A}}gz$BZ!ObR=$# z`yp!NpbnWcQ`*hm8Q$f=Rvj1qv(5+o=`o#*upRBc@_9uKSGxy*H5)LD$n#Q~8{>5z z*4O$Jn2O3bc^|4^@zo;TD(f!L6TCq{QXJOl4@E2>f&puPVG}RwhaBWRFSi*gUryoA zg`Js~g=5Vz2K{HjYPL+Cbr0b|T-{|BXnc9;-KE@KrE2+n-NhxX;bUO?p!50S2ioA+ zBtog{3(;nA(`Bv8NVi`!D5R_ea{mV_@9fNEwF0EeiF?|jR? zr+l0W+P86tNC`c^7IdeNIZea}2A{P~j%s-_oX|w3 zhM~&W7Pq`%p?f8x73|rH<3WRnKGNcpWl<{FBExLdk7X(Wi{M>AtkY^CsgS=5)qmMW zp`-uVM&GRbgN-i!{XYMrjUNBK`0qAq2EDVT(K{Qxv(Y;ny|d9f8~yLwD6sFZ z9)s*Z+bGumwNc^8kQXxnto;X)l_o%c*L*c*!L=v?!K4`>8bY`MK6~}c=iG@UPwfPm zT!}vM6BiA9b@+ypltBEQ$!6+@Q$wzfdF#X4REtgKD)5Q_c6z^Z7vcjn{k%qL2CSt_;Uchua>vpzBIWY4C zZLxh8BpZ~P(KMeF(!Z7K8qqmqaX|0mVpdQIwz2WLZcAaDkd+?&p|!S0TkcgR>5&+K zloaBh6V$Gi6KbR>@RXA!-9I zQP5i|vHUerA!Jy=^I=eVNHDP;%2mO^Yc317DCDyM4*ke}g6OlP={L9Tw*bbOXK8$Z z@o)R{Uo*KzC`NaZHSKl(q}VfMSJ`^o&g%>qC%8m1^4kM z@!qn0W^dy1xe*IZEmv$Ikq$E}2XGL#S$618j532n+r$fB?>cy@(&GFgyQYevuIEl& z-&@PGC<3U{uE+V_Fz$Ws?Z^&txSv1P(;OY_O&NwS8^8lM{GI!hjqAG(*2&g$vW4$1 zEDgId@7WlgQYjquHZ){ATGR{hf7Yb{w&gDwpXnu+9PW?`W#rqIo{>0I{F&RKt@GJb z+iHJf!-vLjE$h|O^VZ-F?ob|0U&)De+DCl$N;UKHwAD;CJ@6~Xxsm|U8^nqsK)E1rhzjx3S8N6Mb<)t2lv3JQK-V|R|^xG)kg zH107SmB9EwJ{vmf$iGglTw?(wt`>rr)F0pX>fyt_Hffue2KG=`pUSO z(Dz6oI%g7t!~8Ny@;UTHiW;RHO62M(uxiCJSB2Z{Wt6ywnvxXP8SobSgeyuM_V+RI zzrjQI(Z7zGe_f-b)OHGa>hJHXYVU8a?%{3k|NjMxME-rrGE8RjU%?_Zztq)7#~L5J zpXO@vdVcV;ZizPAEz9b?)q9av#rdDLT1iRF@%8id^^;zf3lbmS8EA=#dp>IrwysQ? zH~FkupVjrJ<7lQmAD)ZY&)t{pl5kPKPf57kGcfEQD+dKG-<-Aj*?)UBVN$Yy%1PFP ztZ+9WO`^V7)pgirGuli$5(U|O(n@Z(N2J-!zPgb+M}B{B-j`K|ZdSt}pZSRF1m5R} zJOL9{gt^$xd`zm;XT zpl-4euVdK{3$c#}9$W?pUWbrYUdt+WB%f_B>9!r$cHxq2#)Zi!l{!{{%uC2GfvybO zrD?Asj#M@_$J+B}qpxQ|1$$1`2i4GFXH?)?2%*w1IpWNq)cF0z&oJ^hdb9wAP_Xf! zjEvDR`Bit%9TmLePyU(#R`sAUAQ%8hF-|A7J zhAJAg zs1@N)r&LgzAeCBLJ+M)US6}otzqz1Mw}|c9wF~~*l?8*5$+AH{MYN8F_6V0+&ztGh zC<`mVFTjtBRG_lJq-erPcv<51*P5(tPK_5pPx_?OvcjzHHJFNB&F6K+Y&Rm`Gw&EX z{U`T59zDj&KOA-lPA}zn=y64z$?B3H7Q*T4R4(*z>rpiB{1$*+DPn}^=Im`{NaR*x zLhg^v>1gNXVd$&R&R({gcwGU>AXt@4ca3#Fa$Q~sRT{>EBJC&zAaa7xE`cgmk{H7r z;pn!Z6x6pJJ(NphAUaMs4Xl&I;;|`9qZBYlQnhJ)52Q@;rsFG;?ZQ)dy3PKSx#1R)FVnG$r~1z&Vrmz3JvzQA-j^=q^{tIV6P(4 zhZy2&A$hR*>`R@Lp+g%Sb`zc;)F5K58#=^#Zq!E0?*54!G^Q8l7{~*2q2PtEe{ev? zmKX!B(q7JbW-40=y@#0O)giyAO9!X=inkj%;kGSGg9w&cx=VLKuwm0k!t}(Q{xi?T z1l{Jf8*i|!j_}pDDpI9i`lRcYyPyoj&YQx5ig-)^4x}kc3XRtwVpV@#lKkha#@~}( z!K+#F>h`FAc_2mN^DbN7`s(eIeOzUTD+@>WX(f#I^DZcn6}f-hZlB@HQ=#yg)cfNr zD0UDz?4V8$+Vv+l=K7-okSr2F&@!|`v0>j%05)82jv4IVQq?0fmj?Hq*FeXBFEJ@fcqsU1*eoj3*1u zuD_)wPj11n&C$mz-7Wx;7!%LhnF@q2UDGa3hp=W2q(LurHITn%j!?hB3c>RQvgi>V zDP9n;P$|KoreqN{q=-p@#&P zn1DwYm3C}bGw!|Faz;NB_YN8OQ#roByL7KKgs{ z-|g_@^qn2v+2NfX-r3=u9p2gDogLoU;eX!_o#y`PF`EAKH1dzX|AH^%^^6lE7T_2} z-b+Z5twt@FI-tN+M+obo{Y9y-uj$18X}zS*|4*uEej*H)jZLr_=IABkFH~JX-sF(v zu=OX3P_We~zU(d8mBOQ^|4QRMizwJXP})Dbiew_79waRhPdrF*;Kx0GuNPd<%`x9kuH4Y*@J-2FWkaqh^*%}EBtNdaF4#9=~eYS z-Paw7ugK^=qFIz{5?+imJ+oCR6>@FY7OZsDjE+}K{B5{Zwkjpv3{@M`*P$zw>82Wz z?RlCc;J^{aU-TyY(1yydhF*+{<&5=9tijNE%&HOPzTz;RTcURx3^$(=fml?sDHYz` zRHX<#lH|^QPM>V9A%gc&f6!?U{gGBymnW57^#&x7=n?r!=z_H*$ztyy#bm6G&3dEP zuJ4F#cQWu@`D?mS2T*!QSV5re@Z@~tnqi&)^>N8dF4r;|uo5x+dkD;W1pVOe{_>k*V?A9*;W zUo{^io*2x|M{B5_yXiWHmNsn}v}Qm2H8NPDVo+hE1$~*6N#yihGn?#dhLy!f zjJZJ>Z;h5lk5Oyx1G%Et9~wjqxU>da9o8C$ZM(8=wl0DT`m6WPFc;xn2wRN@)QN%W zI(br0+}})hb=}++E-K@CA-;IbNx=9cCk_7%n@)@Lz50jBX|}{!n|4ZG;lye+1UoEN#MPHw8VCPW)1fX zcdzojdKZ;z>qNKi?OU)-L(_M{V%2++D!h8BePvd#Qdd#nO}kw#?0hZSQm3piGN-&B zF>9M?zSCtqwxb91JFPB|#w^@$Vu0<^XBu|cXL=`0d(}=NLO=IGfe)i6h}lqSO?9Z$ zf;pI_t|g3Ds{p2Ko&yCjFvBh-dcm)L@}GO;vxm<{J_?uAWRnW3xW@rRBp+!OUo){% zS`#3G4_K_enG?26*}SPV$%|!ppb8O6kA>JjEl0&n?4pFX$x!W_5t-1V??$;qrD3=pt{rR4g_+l!Sa^z4iuU`1}Reh>rsHQ&6x{D^ykMeHpME&YtW?91YDiK=2Y< zv-}sLz1tI(^R^I| z4aqSE>W)_j*_9qYH~Y;uzUiCvaka3bca>*$VpyR|)F+NM? z?tcOi))GbapsMW*C%RD07af2OJ&r56E6K%(KV;#nW0t{w`|`o1Y0pJ=Zj;651DutA zm+wuSU|+w>+7j$uA-!xV7xyh>Z+#ewb*L^xH`^3tLsgYzC8kN1R{3>12pFs2TPv4) z^d>OV?Y^yo3QgydnoG%R&Y43-LetIHFcq&~Dj-sI8*hz*=f980Zw4vIrZM?iv(tk=7Ud66~7L}u8N8{ z9xhl!9Vt9aI8*sjsqEYJ{vF`cZ_2%Liv6Z`s*q+1IKFlX(OL3tHdb@-V=5)UGi*eF zXS|D-K_j&id?!VuqU|}Ut+gXLMR?y?DPr5|t?6tiRM;XCFnU!92tx5^bI)idLG8XJDz7wtNi{uo=<^m+O;Y0kVOS$g=zw1uByZn0H$n7);s zEko5AjqJ9);c#e3zN4b>sM-EA+f$XJtevc)G)1#6a{1GR&YzAq12#m@W;4vTIG*6_3mBtnb_+}(f^ zY$VY|p>LSM2^8nW7O78&1!lJ~NM+!4d(ADQ16m|lBL=Cf6t9VLxu#-4%igdMS)K|? z5eXUM@)4h?oXmQ2LO6^9z8ZihH3wBF^M0N7llwy_sKf8QT{6iUx^*!K5H|eN3U%Zg zr2EELLl)9RtBuOKVL=Y-e+3*S!vL4#GUsRIgW%f1YIJUFxY-Xsn$D(Mis1S!+*$5+ zy5-UXY7tSYHKKK(#t$3@kzcVieH##I`4c3SFRod;>qCz{F?Olb+8$n&ImeU*wnk8Bcc*bDxG!TL^<`2RVDei^W;NX!%q36D9+rEH zXt>x{TmDEx4v*|4s1lzg!z2S^!z#|t`fpfM6x45UcV5;o-PF6{DwH2t%AEFE%zj^B z@$xh$lAZ~MT&h*{FTaxhO`}2&b+fJMyj*D+m{IV1Q&2M3&DT{EpHABJ#*Z$XW9mra zX{5<0Bl+{k(YSo+QNWCCSmACwjQE05#=cf6TuGm8Pk;4h5jjI~k#gNJi}>u!2EO); zR31m#fUaEW;526;#RH>bbkG~EIdIg3Y_P+*D8SeGA*%&vTyoASBwY~K?pJ_lvuq!p z(jNyh3O5!4QLAd)VFR00C2&m(Nn3v@)Ec#b^08S(J?#}=G=*YzIC90b75n}!Y5!#q z`+fAEK@2kV4sBcK+%y z>i;u{mHuB4)0uLAJ#Ea01?Wl{&8-Ttmv*dBBac(7L`Pffo4wLu9&4}q97ILyPt90F z8*ik_pmX*1Yv$On!DPkk%Vc#68PQ?km$`Din;#dgqMkmxVGkzQ2XU-lBl7*m{PO*l zkJ}qn088IKgEorHJmru`h@@E?caimQJnh)XF+Ni=$?DOp$MBsN^;NVXkZ zkba&r8a^1f<%+zIm>BT+EITML=9{nF@`S*&rH{;Oe3b2GMWjRXtUf|uMK1q@a=#aI zU>%O=4d4nqriy6rOJnROiY!Uw-r?)(N)--=;!oFpc2ZSxew5+cr>`Xz^6Fh5(05Ur zA?x+p0}a_8uf{`JmSB+a!>{pXaN<70q1E4S2eEGSahLpm4pl$)c~d<%0;+JLOa7$8 z12o zP5UmV=7pU&kzjD5>8GLc7lof^J`FzP>aPL12j@u#OO%<&i@J6;B5=A4PY~&ix7X)V zE2`}YEC+=JvZ@8YZb?gMR)28yF>YUri=8qEtmE-g9kFQS%EMo3{l34oLX?znIpBD2 zj+EDp=a4BR^-4V-lW0!^!afH2X-oMb^tCd;z zF>cZT_OOJ;#hb@4p-!gz!HNg_a9xkN^$??0@Oy_O{#Oq!e!qti#*2N_7<71)O}aw0 z(#84eL9x4`;yt1dpEaBQ{+jR#i z&lJz9F`-K9XY$JHL1SmR+Pb>Bdp{Wy3s)F>#cso|_gC%s_8)A^p6-FWH$2gqom|cC zgPP}Om*wCtFXiwd<8Jdt<)`)d;l_Gc2+P+v7;<({f7zv zYBzFUY3$wk{?jJvO&{T%Y7B3|`b5%;MZ|DE9PzG^=E80-u-RWtF8s)c*n_2oPN{&J z0ORichGQ%t))8JAt$am=<88A>ftZ!yka`;wv!3qvCZa2kD94xyYU->PYiw+^u@ht_ zihsQXsB{uq#GI%#V^#}L?JVo|CyDFGiewkNrnpk%=F|!J;(8T)_EPxa-X;5(s1goG zefgU+)`y@hWuYkVaypnBaTsbWP{4zsfJCTkD0V3#5aQ`m2A;^d7wkM5I_v$6G1rb3 zM|%&`oquy=S2jy^8u*E5!FYQjs~>jBlLW}0@SF78ttbc7s^I4SuI13J*NU~>_lc8t z`)$|jQbt~TfC$W=IhRPd7Zv7IM7zQ4K-}tm-MD+{`#LB7{do=2*LDNEM7M~ zIu|b!d}SphGt|wj`&p8tv9UfX$b1$mU+D~^uiHhMF@(uLC$QPgcL+(k0MXR~Z4hJm z*QTD0w|;m9E?=@&S2=%U>TYt6DjTA=`}Mp@FPj7mW8tjKeW6uH*ChE5+er#2n_!$2 zX11Y2Tkmo*O}iZnXkkP-hsgUBL>|T+*f#V-p+C6uKnj8oYI6SRsOrQu`->})NsMI_ zpIyzAm)W2*)m3RWwUuB(|IP93wYFh7B_`*w$*6u~q=-@n)~R(CIZ3NFiodB2>_4N^ zynT$d)1f=4+1Qok-g4`*lplQsQa22K-cKJnCmd^i&j!uVbqTEw%j|CJE$HT(u8IOx zt3pN7`yhQWmUeYRs==niQf5|pI0W$LG1sb_V5A{Y?nQ!)yo zE9sRIeDOd*`3F8vVV5?7ryHBQ1~3vwhQ96;MV(jLquYeJW=|~cD-6X(hl{7KhkuZlA)k?c%@3vG%GW54Wc!5h^il2}8j?hZ>&q(qa22&O`G6|~ zU%i$1K_bl^1ixa9Y>D4)>YrtA+1F?Ohh*RzjA z$vR)<;g&Bg69oO?h!)Odk0B_@k4ufuLAAEAp>Kwl0NTS6vn|(Ti?=I73 zA{A?g2r2uov}lrCY3NFQ@OeY1xPrGmv&V-HHZPCiHyFt}l;PJFbUn-#))x~8_|UI( z?uiW-8r9Q!yN#a(D^UZX$P^WBQ$oXOFG|8RkfmxF=u5SB#7~YLZ+|nU`6ddsHw?w- zi;0hC-034%`0T~d146C!;KXHL1-^(DmKm4Dk=XL3i^vC{i<>^7(!vPH7Offc8Qs-$ zWpWYa;UjxLtaVE}J(+n-Y;~+qm4lcb(`-=fT3QGqA`YV z-Mo8#eH0l>Fkwf5rzqq6p1k6<0{e|!2|kEfpc`M#7mxQ z48H{lSyg|i+^@xKBZPIire^-GYX4;r<0Zhu!o|YEV#mV5B7f@T>S^!q>g}Zx;2Y@l z0y6gxASQSG46arYPWuNd*|Tv{a=H3OOdn2?x5U*+YNN*<+uRO1?WO3CvwRw4HOM(iVT zzh{L;%&l&8DQ>-7?o-UW)*WNH+h0oJWFLd7d^6~_#&saTSQp_10@IxMt z!=B!72_w$xfA(v>Cmtz`_v%D#K`Hl(GiPMG1JpQ`2AnTjARpB@tB}U{EoCx2IC2+h zi9DPpKZn)+JPf4KeN_Co$C+HhRWpG_c4Sw3x8G+^faJhDl6RX5Blbg~hbR1nmRbS} zquo|5r930AOGtwEhnGwabeQG{vs^!|`oOM&OFXd($|x z7YxepYvg*2k9{*IB{@Z$`7kZ2^NwCR65fE=+vnBqgoTfNQ_82~g9(Z~RwLq{{~+_B zH&%d`<~lyJPB=5vV*s6J9S3mIAJT@&XgYLA8w~0yp-c^!pXF+^Rik;bG%YzCL`K^O z#ninCeZ-IWOEc9!zy9(W$N3!;jM#CMk6Rp=xd{`RkoCNg8lUs-FV1bcb*}pA_dB(H z17Ev3e?DNpU4*{QR9PbAsS8c8Rr>AEUBP(&&J;s6PLb6tDCLYq<`SOxT5`BG zXZB5;SFdX4D2We&Y|1L2DxCkfv#u!Nf$&yKx@y|`K&*OgOI-5N=$9N`;+7nr+%TD* z>J3K%vX75IgI2@JbDTFl`lp8?Oa9;t-f06hrsM%fB?_^0f-1&~+)_KK$5cNVV{xndzi1(xGn<+;LX!W$B$vDd>LgU z#c#BjXP*&Rx2qui@MU28SEFX;4AUx}yAy%HQ{eG{Mz4;yP) zKkHo2M}(w3xld^&s9-Hp%2j%}KXa=*<`Vhi?J;=LOs2Y(ahkA|0s+pd`nUsBH)kP# z!A#KQRu^Nsm_yK|X-(emt_tl__d$Q>#-NhA$h*CT)1fCKao~YHR@NUrRQX1hBpd|@ z!YnKIn2rW^m?k+K)$7%P##?wAT=nsbmUuydgWN+Q*^rTX#x$Umq z{-^}wiMIRe)*hfflds~-l|;qWJV~RX6bJd@3W+U)@Ebf! z9J{)Mr{MRAjLVDc_!Oy0(H}T^A;Q=TsI4D);GkP}nWq69?OIY)k>i0_kzEpWy1#T| z+?$*rmRohmp)(NbXSysJMbK}DIi>-Zk7_m_`m?i^8euWa(?JUrlaW=MrAU__y{^0L6Tul4Ep1vB1nF0xJX(=UkH zv*Gn6Ry}JvW)zsXimaGVCq@>KP`;G4(AO;)X$LHe6y3jy1<X@GLe4*Lib0+Hf}4T$0XU3&nq9yySxp|hM(yN z67BN2ryNLyjN49Zl(N;wOtbGkIkbBeBuDZ-&S=KQ^8Y!hD0KQCC+8POHQACW#kL?~CNSNI;4& z^tulO(@_j0bbQ*Uz;Y+7TPb@kg`0N5#^<&;4E~<6+f}=7Vpz^##qtx#ogfW+k`u1r zUoby#07UJ4veTkjtR8#pWi!b(eD_TUTLFZ{KoTMGR(rOrl ztWB(;26mIc8fnx!0093^n-$&IOG8i`5e#{m1w+NZ`;7k15exVbPrtbIBDr@yp*r#f z@X^dus}OeUHO+G1gv}~dzq^HI*di*t7BpcxdZBQFAHKXbGoleme3bDW7Ty;th7h}` z(6Hdyo(fGlsV8&pV4;2WuHd-RO4QGU``a{cs~KO7yX3^gYxyzlbUW@sj3N?>5(KHfygG!yHA$h{4b}GAq z!H>Svl2?qyb?DR~r$=zn9aLe+H&DiAxkzEFKsbkPgI`>P=se`wMji0Boj1HlpSaQX zaKPj+;^n3x9>?5!VuYX#Ik43OOO#C3om+OfX*~vH`_KoNRd*m+Q7m8ltoF7qr4pT} zBMUGKBYP;{$U;v(V5F6H7SP7)Q6Wvgr`-^r6_Jm(4>*mF_?FoXEQ*IEe)9y!!`NjO z6^J??Jz!hD55sg-&s`*BS?0!rRI|E+t~Zmq;9NFu2XBh?lBtwe_3xD%q0h=sbh&Ie zd{`UZ#-cDO6fi9o3Doz`k7qSE@3*_@ieLGfa#{I>a4aG?C~h6KEvn#hcnneR~wy}h@i|a7y zDsPSel6r=zY)Ao=40S&uBG|Nrl048jX3c^Qg(d3Rj6q`EREI%rAaREB$hmzMloNp{ z45!WyY-1x5Zu1FWx;hb5P@NVpye}NRsxAWs>Po~gyfBCpO$&{_-u3jr-oZFh=GvUr zzwqsPzo>kR{XIj`o{8YEBK2PuG$EFM5H!d?2wM2x@AE&-SbqF_@!tjQoZ_z^ahLdd zm-u>@_JJI_fWBIoJK2>DRe>eTCRK!?z*W$&%XFu5Wg9&y zFm+QF`r+fRjDw#*0)*WsL6u5Ijx5xiFM9Z|8fUlq^>?7mBmJZbQS!+ZoTOjaF*Qt@ zW^d*`rTCmnf3`S~!2g-#?2n{Y_tV3Y_aS?ii-;rKI>%=DE}eq#$K#f*;QN60>R3Em zho{SBz*jC?{q4TE?-`dIUv*$*}@SOSIg5kerIiwxk z5V<+5i?dWrs-J$aCe5wytIILfr+=0Hxs1)J^kSK*_E{(i+`AzS*;{u^qwo1DtvT?9 zgmR|aT{YlP)@JM5I^)dfjU%C7SOs&+o|6q#4{pSc{1$*^i;u<%^2u+6nAnFrNNiQ% z;>*2`bKG=_mqOHUlLh@(#N(+hB`;QG?>(YOrb^Fv-X~YI+?LjE6Q|l^r)1Ml@+tP9 znL=6?!*^UrM92RO|2>${PmIPs_+H_o7o#fY>=A_D@QeAMNEy6MP)kt7nh;~6c|_0I ztisy_z?}gQA?&fNUq7YU0^G}xNuZ{6e6Wx=05kc0pM>dozq-ehdBt07BFF`tllHGo z{=d0tH_80hGcx~?{SyCTzv(cAsUX&VA2Ew6Ykw^>s?8MxLvsV!)*os7O|@T5ShR%X zp4%6F%N-~-`u6^V$k9)&HLywTkc0Kxy0S;KP7}l}58AE*Y>u+lSFbS> zIIY0C=tuF76L{C{wb~XfRKprXEA)pAUJ8p*3`asTYS0h6{Lh^hLS#yA_^+OwswOg-Xeig^;2FfzyR1jux(H>^_Ne z2>v2^FKwSRE=UVz*K!&t1A8xGTx?o$7y&}eMrx6Dbv=r@_S+`!JJULr?Yy=|+=nNx zUcHE+t@nHX+6t8vPY2k0xmU2coq1mm@JcCw>?~{g z@m{qMuRHq2l%WHaZrmB0zUkABpO>2+;hJ+0Zn$p}94#;dGtb)I^pj?V%ad^16@KS$ zUh8W@2bC70T(HFe=LyyTBi^MFs^qJ9h9&N=6nWna(|>x$Y$Rv;tI2kCJy9h&oCDhP z^_#jqae09ZXMLR76HKig2$^^h+!>v9c-1_D3~8C^Inv*5A=*{r_#MG54`vTZk$}fs z)i4}BHLqp%MKGGDp8*yY76-14V!N{c`63vDCls7~^PqWfkg>|Dhyt$vE3UuS z4NB$2(Jed9eibP@;vL6vF=#)dAA}_D#|bXcm0H}&R&9%eabl05Yqti`kSKd_N1b?u zk_pk?&zDijnZH(E&da>(%zjaw^wqudi(1LClPso`NxiN7XCf-*Cjwf^s#h! zsj^OrLG2!4kVH^+8Cx_t{l`E^ewsJZb38EE(UZkvW}H}A6iANgmxdO{p8!m+Xo9~y zBcEw7=`PdbfE45kgSayhaYy@$(bZ`eRJs=YF}s>VA{K^epHYa(tuDV>3u%Ni^@k9+f z6cp!tvV{P!5pN1eeG!tja+XH01>snl08I&wA}f}r(MyPRD3vH1YK7EPrnR3%#PASg z*hLY|QXd38j1U7Dt+LMoXCq~drKwDAxS2Y`k14~u(fo_NO619PdJyg6IdsW$0W0OT zhYv^PDG&z3F`lLCFbgRJ>{Kob)!&N;m})Oa=N`MG2NvSM-r1y5a>n<<#>dRb z9B)~Gx}fuMn?`?Qp@p!TY+X@Dpv?)mO9z)#&q}!8G6!<;n$ZXEdUO$bLHo+DGjGgK zF|)_7V{+Z%kplC%iHacym$>@0QHTZK5y<6{Q7n0{-eX=M%w1N2SoH{d=UD= z733gAP`9Ht7m6#9QOb1b9)XS(0bl#kn;`r|q_zV=vvVQYPMI6I9vu_x21n)mL{d>^ z)D|m!`4P@oo-%Ef^h9(ug&`;|1|NoPEeIa9)dFifa_lXDPj#EkcO`SBHhJ1-3W-Ft zLh&t)hEZ}Kw3@ko;Ou#I;)aENgj{Fz0vcwFn=jzWXxc$MGr1$uotv!(3ftlMJG8!x zy4Lxm?q*uZWXBbxA}pv|&M**~Lr>7Hj*3Kov|I+{*05ZeUy9H7V5hZRGkH)u;knD{ zyjeGAfr@Ke%Rp^#mv{dUdv_HS*Sjo$KEYv-;10nZf;%LTgy4h(cXt@v2A2sQf`wp7 zun=qr?!ycO65KT~gFA!EAh*u>=f0ded)KWx`@ZqqFW;(KtNW{8b+7IXLey;vY{!gM z;mlNDKjgn$QweYmW6E9ofZsTwipV_!UWD}1N%46}fXpgL4DedqD0dPvgGFYZ{lMIJ z(vQ8f5OR91Ps!WBC3Kd_b9Gy8dNG!VV^|74HB{>AX6-pQJE4LK_ks`wOdjBZz7-@{ z0maM~?ar?SmH}}GhVJ7)O1teGSn>5eFm~ zbGyE0z?vtJfGcvL;cHQnP^B6nxw0w1qIf^1pQz zc{UWTO{WnBp8p8{lWdRTm9&}hsb^u>l%SKakijr_DI{{CCyuB@zeNn}hVE{(!Ww}q zQB)W8$D&O)_8bdR9fTd!UW`K-W|97N#~=Zk>^RdwIqVKAMqI^nLU7Fb4l*5w^qPGD zMNfKPBrwjDTRF ze~o~ThyM)%M*Ka`|B8Uwe}n%M0dLs;d5C)iyhp%$1iVMUdjz~kKp&}LO%~t4vfwWl zwVl`^e&++K9CgetT1v0A^qK4CFNJk=Yi$s$6df*Jb5G|)03SZL2p!Q;xcbsIrq<0F z|M={zeu&w35SN$#(s*nZ_w$i28qhay$oYzEaH?orCw1EeypUzqFPU1hx~;BrTk5)L z{~?Xy13^;e?T$`El_!kq!%eU|u~1dcUE1cn37+6K7_5d}^Tw^Ipu5(44e_c|EDA-PFG-gr z{C-zc*%Sdo4Wx`hb1h;X@yQ=tt#~%hcN7e7+<2?PE2}n>^IvrVZCNa(JK#c1Nlm0v z-ZY8QGs!uQ+0I1WSyBnnDHW*~Os6WwQ96+quNRU;U(va_J=+nUB9J=~-Z(V;R8JhY zHAPC;4`CIp6c6yO(DTjJOZ;L4%5gJ$J{rIm9C>>6d@$Xz7uNb*`N!99q`HtqDb#DU3^E9 zuVLXg`cJ%!OOmWZMnR)bM5kF1PFBSxpMI}m1xuJQd6ltfHBv_U){dy@*{)<|OJl_w z?yHEILC+nrzC96i3@ZHmEGdd?C5lcQ|2y=y(vV+ZL%)s5PRC~vxCtJiD>^goUD=8S5>R%GFy67b0U{^K3-|OYk5mk4v?jj zj=z{)i+pQMW7RI7dwKQV18g*?2>C>47q;Y(wNxuZSaU_lnf$C<^8FnnW<}8EC#8X# z%JG{DiI0=hEoW7en5|1l1=npjzqNtKA~eH%N~{i6lRrVQ=UIv?o5bMLTlg*h$aY^z zIFp4LP=lxbI+{@`f`O{~^ zY|c`h_eh$GEh6`r^u?`FQ=;wm>-fwGE(BGOPPL}vtG%Cy2V~#Yuozxo)DLzub?ffj z8Yb-o#9ujBit>(R<`-FWXtBg9w1jbl_(bTRB$WDZfie33?JG1L2xRCzRO2vPtV3%;oZGrP z7P+5lm?rtb51Gk3W3l%OEKi373+pyYVPklUz~2-NA6*~vwVcGfD4v2?wFtO&jy+Tm z^osdcvP7IuwMlrq<`8^_^fn9-6=&=0V`nxtsHJuhb)O!HZ^9!=?AE% zJ0GGAi>J*|naq`@j`nQK70mT~FP7Tj7cy}i7x8ltj07U_XXLo3CER5JDs&W3%pAck zvOr-5TRn^=6CioR{97D!NEj|LqwYhYCLL_P76Z81b8+D46UvIvH@NDJf4~4)CTO!3 z3DOSE)TNJeirPy%$rlP!u6kEuQtY!Rcai;>Wfgwyu^x&W@@x1ez za%V-z_Qv|!aH)~FqH{lFCP&I6I8y|D7(QQAKO*%snc zfBAg1>hR>JgHIrWz3w1WJ$TEz-9j#DFux**XWTJTY)p_Dd4L=kw-K`K$3QW~tjR=bJ4IG6KoTsKOf}r{SCme@lk; zh3ui~mFu5tKRUaGK6b{RDz)ca<94a9nOPYH(VnR|#HS&K;0wdIjrh}xih&o6l+MA< z)ibPa{&{a6;9eh*-Rh5_fA|F-)WEIEi^;8UlV}vu$VvQPmOxd;&bv~qQ=rs$GMH$> z7Q$ZtOxRM-9l^QWmsp3YQ799m08qc65w#twWw=#jQDK(C?#~ubm%+1OKFO#>yn`)C zeG=nKUx|p^xIsEdx*^%)jXJ910sc%=g0;UU&oaSK=aQW#VPJKj9_=z+u$4c zk4CjN|LH|v{2DZs;#GWTZo7^_5|Zk#ioQ9%L@(B8MI1}K?$~>^cjmFs30Axf!OOSu z!o8KQr)&U79FFWCj664K;#bE5dI@d ztJi3iC*E{s;}n0!7xr4pG#`8EB1Dm4?OV9Ypf)&4#2*&_eGh`Tp)z#q-KZJMLLW}` z?~L9qF!LdMamWHPCNZRj+yyIYkOymD1D_maG1?&AGR#qDiKM{bCIG0cko8S40mLg)l))ZUmw(4t^lkPRoFxItt<-G928NmM%VJ zenb(L_>}qQz^|JoKm&;J`+{PXub|En#Y{tf<5 zTQriox5fJr-TM*U`w`vy5#9R{-TM*U`w`v${D`ic>_2ymU;p}_b!~tDS?A`cugCBJ zXy9Jl{s>=PnN*;rlfL@uj)d@L!SZ)yv0{md|@M3?6lX3Ovzb%E^3 zQdPH;pEtdfmlEc6|#-Z&)GNZvqQ2K4wU_d zO2Pn->cdbTy9&0@Fx*4h(xyJ`ZsFdzJY@yGvUM7RSKdp#AC<9#w>V$0cLKhBjamwL z9zrlXK#TKk!biCE;?wB1VpM${3h?Gcom94|?@!PU_HUD`9n`XVMG!>f)JmEL{m( z4&e_C{jgFuHsHXp{-8ido6&Q?d2z*T(VDT`Nb9;i!SLxr?|{?`^JY193DP&&16WMU z&-QI7*i?Uw3*c;S7*vsOK(fj~{gS537-rqg3jJBRC3#Iay-vm1oOIFy&z5EO9GHV= zl`&62pm~)k!|UOT;m&AE&eib0ulWB(zqpnD`Aq)5EiZL?o36*u>-qlK8Hdi{)6Y*F z$KK(6b)`~5C>bV4mxw*0ApZ~%+59LK2Eot#7QsSD{`GTVk<{^rCHWHaLPI6;^yd6z}#c)P(P$qkTgi1 zfbn{qi`qsLMEbH;!10%IAjnIIKW~CW#k~cfuFeE20Nqj$^Gx3A*XE~$QbC7gu23I4 zNUv|-<1_gGWN0vP!1tiih_w5ahK!M)Liy`AK=OwvX2zD7IwarVWhG0)_A|zj@Q0$7 zE23J!^h!JhQepC`L0~MK|4^i?t|?+|c^1VcZ_rehUe)NYtiWBUJnz_LbJe`aP?vQk z(ixK75u6*UInTIve!Yf&kcf)O;E6!}giTv{exzAE8Yc)aydYlSjgPKZ`HCEyFf^Q` z#6>Tug)4uTgej}1S(YAYBi&L>kjG0NQA@Sjh03#*s|aoOd|4pp8Cu(sUJJk+Myhe=M3gmnj8Xs3`M8|jOIS)LROZhR4yV0{?dd=`8d9c4ul z^#VBi2OIUFeGxJqaLa@#*L+JcynH3$043h@wW+XFFQ#R9Ta0UvEZ-YyWevYsa~&sI zE%^?Bbo{^(r0@<))Ma?iB=p&?a;=Y=zdD@Df7CvKn1%ZLCS@84n_~K_&KV76(KpLM zTOwB({Bwn$h}%`E<-QbTGj-k6RycW>%)#PApB0?745J-<$L4UiemoCq=VFu{2m+aF z-LaRzZ*ALqH^$l}e8PBohlldDhBq$ew?{&Bhq5e&n4ZdOa*cSB1_)`q5 z4G%pzn(l*B^C7qn(xHsPUQ*Y%>k?zEtHgWFkjXd_1lnNN^0J9FH|0*=)+K*K%fbD8 z%I8YWhFKGrAPfFQUm6&Ff#*6hgG1fnPoFP1omU+gHX4DCg2yN|Jsza=!#j@YpO3Q2 z+9^kPJLv{!s$yo zDeILLMQxSW27qjQrD}Q>!Zh@02FpRJAR=RZ35H1|jxrri0~#NBHgRllUrSv*a<%q( z5c;VooL+lBs^|0)BEm(YuRR>o?=6Z5A2+dDI%S6A4_hN9z*fMC3`xY3FvS^FVQMW4 z1V#ekbKqe0I8sKv%0Q3!&3k~no8@t11!6TR6X+U83#x_Vb+C?r4bb=q!)z+o*JAOf z{_ty-i%aNZ(Dz-c3d3Mbg`H`ld1*iBX{G>Vp^db|(F}mwqSuwlmjO}nqcyD*j6LR} zg32GtA}7jcQHuz%8IuldD)EXKA{92oqNEbyyC?uzG2M=wVR4W$wIit>%)txGaC>kb zkYp9M|Em)l-LZh9&7|LT2=9RyrsE%YB}L~nHo;j0uYjILNm=W+H_k&YsJmh6<2eD; z-C|zx3zUB{31ZM4CNqfkpT_A@nc{-Z2Kzz9KU5>vgLw^Ui(=W9tKif6OEF15>bAwv zY>vX=2871YVWt@*_1 zX__5m+)rzQiQ3j8axqzFDx7dCt~}{-edZq~gG8{+3vB=!TSjojN_TUb65oCH7AAhX4w)lD#{-)om#~Qm$^NKRJpboH~u?8(4w}Z^Cus2n@2*?>e zBJRZ!h{D9VMywKfTaM2sqc(HW5SIk$Up5 zd)>R&y?foe*S&k)yVt#Y-MiO+-o2h^{d33Y`Pc5%^mlowiH3nM!vkOdB-_X681|{f z)aB)B!q3M!XOY>Jaj#A!pDn!dNhlHH0yrBd=sexSP-b+Z?$Y2gKb+F^6Y<3mFs&or z{u;qk=SEwz8mFbPR^{vMDv`Bry`FI`uO6yNLPpoU05 zx@sa@40|kKWs_jzGTD!~CQ7rSFfz-qPgH{|>Fquu=o!Q5_#nQq)7Mxpb6Y0SS2p~= zt~;J2TWfi~Cn+n=wO;?w6IJx&T8Y67!5;jr^h3|UGU@*McBIrcQpzMS%GzEyJC%@g z`CF9!;+I6z65&tCjl8bc4LYhUqJiPISH~-xCJHw4cB`qs0zNdIm@?$8J;*VFi+J@} zlNC1QQ>%pdc;)7a9Z8gPvve`!TN02rXW3Q_rW8I5k{T5DJAO!Sq)gkhnyQJDrfSD7 z>Am9k4&ZYrj=uPKUS>_Hu8I;HS9Or{KRjrYx=K?RIwS&LrVC6Q$?$PokplWU1+4f# zf7Jb5_BEd>dF@7jL`!!2;@^pp2FoK*=_+?mh zsF4z5uyn6Q;;45@YJdOR+9U~?ix~Q7CXySbpfKW?ipL9#r()wjRYN})xUf@~@o~P_ z;+$R8f$IMLRuoSp_9Kb0ZtUkqop(HOM=AJY!pZ0`hoETRqs|-c0IGG^Cy2x@elVQ2 z{rZ)pSuV>mUoxb?%(XNwXgeTb+EA58otwR&S*|C|Ryf0l$(prnL4|;=iNju!cAW%= z7U2-I^(9AZ=+W|@p)3ZrRm6kJU3)G85KP6jIBrmE>}lUpa9jUN2}pj+ymQjC3lFTj zho8?8<34|1@BfQ=k?Z~QiA4U}jxXPTI=*HDJEM{FG^7%YfJ+v7Lzig?uDQkq_)#KO}~-HNE?2#o*0UcwulI(rv8;l{XoLI`qT5 z=-8r=vaQ6+bZ>|*5NL?db{dERX!A$=)>FZ!7fcZg2shwfqme2UsdXacos znN5pm@zi@=!4BmyT`VqeE7{lV45Q6}Ded^!QjG;7F8jTRyt?x)g%3ACH+O!9875pb zC<&aFL2lV&E>n2=_()(DY`G*Jhw8XhMOBI!OD#V+vI(sVxDEjA_L#*61jtvf2IkwVHL3c1Le+BxLZEhDgYk9@}F*PDR6P1@^y|0|NajXneM zQT^{i@4?QaGI_4m`C9WSr6x+3m$S1B9#+H~z^3^+v&(SjN zxTt>r1)*ow{)j@sMx?>*Ddh4h2bicTzMx}*59nTltPJ%7-|DjPr_?ITF`8a z8_N;5eygK)@%^c-x37k!pQ=oaMJlumkC5LO$&5^rT_vWw#}yked>tg)q!d003A?Jp zH4`jJs^2nT%+*dw^h+NJS=kgyGF@tx-BKys+GgFKo{sV9Hrww!)|L63dOrL{R>n>Q zorWKv=uVQIa^odR4f_P2MEs&O@VqtsAQ&M}O|uNTIbbop1<|F;b{a0yo)5uzi#@Ek zdaO7c51fhT8=GOZ#JJFnigQ@!BnSNAfhe*tklGTEK`_&?LAAgzhap+i9`0tU0JW*T zjdWPNIQwyZP55@w68z;8P&G@Ujm3$kP2Y|^SJr^UyvY&6)$R$t0?=DTZh8#sjQAst z|AAOcr;IVQwWSBuHK`9leI#nTI&qy5o1q#S&&F+hKHp`xc8nCC1Rz>@mf-LnfK|C@ zof)qD4yAl$dj6)W_V<+yqq33EPYf1&Z-#oMV~;68%R!s()-A6W^=lEK%9Y6cWm*); z&rHbnOVNO!cX%B;VwATtE`-b{qR{}MZFt9YFHE}hW!Gqe4^mrP*^)y*;9>#Gw@Ld2 zcBsJ!iGCXB=edVUXCq{`t{0WF{!(gU1E;+a%P(#?O5ILGYUSb1AZeHCDr~@~$AN;A!`0!S8_UVqL|;P#rYlxCN9n;DE&RX{m^G z!qN1h&|}x=J@1Qm2O(12mBby_5W=%h0ZeD<_Au&#Tf%CeASmYpkawSOM$HUJYLRRer!xR zz2!M9H1lY>lyNe`M&c7RgKG~#Zy=9McMg;KBTr|ppYeb%NjvHd<`9%zZ5X~)Pz9yC zl0<$)aW*a1GA;^&h)9~yOj?e`{c5f6gV{SH&O-z7v$_?dTvU9aF-C5{A}fGv`Xu2- zifc6Z=i&Kialy`e+~5i5vmQOj_-BHE&yv%}uI|EK?fdG$_wUfDwZhbwlPj~R%PW4V z?G@F4t4FsArW_hC1b=A8vSqTv0{3wdx+yo10XIno$4&r~2S<#73|80j7ZXIu{0^eb z${f<3&*y4tNisb@5T#i)5SrQ`bFp-BZ^+b=_0f zJ$2nv*MFY6UfTR~$3Xq-@zIt49v`Jl4-ELP@zLy6kdjg63TgIlG8^x~_2VnXC65&E zG_cikcCXrAy;qrDV%|%l_U^)IqQV-_-Mxp!rSmnFMU3+mZVp33msW11J3EJ4&jnfZ zM*SNhUMY_n4PGs9MKeG8S{u!$67Ag^V_zC$@FRxPAlgPUdO$H63PO&M|LJ_RND|&} zhj8Y=DE`$UPAy%;zZfHP-}%0Bqiye$J&$T8M#j<)9h>8WBhhb)H>v+q5v8lQH_ zT#$U272w-aZ;CXCnF@(A}|7^Q~FsnM+EQCleQL@N?~xrjM(K zTWTq7gejy(K?RlQU?!tsd5r!`pKtr3bsfVH?t+iR3Twfa>?FrL(!aQ@GqqO<3dXh+ z0Ox2qsjXwV-i@anDQ{NEEv81K`+%}Dk0xeNO&L}?Ch%25<&}nYEg#P;|TogNc`ndpP4csDHI zKgg(fY?_Zh*}b$=576sR`jolVm07})xe%LK#F^QbnTa-BH&%Zu+y5syv)fSJP`f`y zA#)UyKLczm(Q9(;nVCQ?P!Q%4C^sm=`Ab)7n5?t==yA`OTm9MyPJioGX7paBdazHP z6D?@w$Kl7dbsqH?SM>!-bu@kEY;$J0zX0vI@7+`BtM;#Gm!J-lgI?b1slfiKB>~QU zFXNk2-6f$hey0R}OnbvQEr`$9bxG(~>H5ZjgtxMlLIQodwMA>g7<8{V7~TnNpAcp*6q zFS#m*AXl~HcLm#|U+#3uXi{>ln7AV4hNzp{+K}6(+loy?c4}YyXHo@oY|QAMH&axv zkm*iw6hf_fu)$%Wo>DDyU&b`R>V=HkTZ!pTD^C;_kl;o}?gL2MBZ)r|sSZdZ&Q~%% z<_}-jA}6t4F=7*SgrCV4ESzmKz}lcNU26o2_?c})uAJ=8u%v0AuVQ|JYDu>AX|)|a&#AFbX165 zLJ+=3H~yM+#<;2>U1iN&S-})Rxr?@8*nPW)|bP~JZHQP;G^moz!&Gv;_Q+3n2~SAKjX-P;vnOrav)^#&&5LN z-3ikw7p;g-Cgp;^w>Z1cAN_P$T)D!-M3;qCa@f8{DeYVZHa%fA|0Zm_*Gu5mNjBuT z=f+tkw5L2mQGaP3EUej=!_p@HMm!*Marm|3ar6|RZtBHc8i&%pu9fBwXa9KT6EzlT zy>D5Z6=s#8Q_k1Eu((sDwIt_G)#Izz;-R&WfCR{6vyWdrj*McR(Gp*DYLHxC;C{%4 zuXn^OD#*QwTV8jb@7uC6@m2AQ@pljAs?Gi4|7ODfi;9Xn|C3FV|E-Ef{GEdhHcj$p zfF81Od{PVcHC1c*0*LecF}7u^@=BIHp?P3RSJ2MoXG64U@{1`ohj`jNeJj1S<`Hf@UVC=B?g{6k$7^uaS+xS zJLUjP+ho-K)6{H2a~;$l+60jU2C0P`;wuJ)7;2JN+)3Xitt729672ikjtv zxlla4!H=^~H;ufAZveaY@}0sq@|6OCcd3fyo*`BSlx?nOb~AnrI8&l-;Y-}ra5&n% zD^%hfL9yaDQ?bpG%X!0ii)wX%?2Nk4NFPz|I!pritm`46FPK4f*F>P8OsKkl`!5lu z2MGyVI@wIi$$E7QL64VTGmroD3VO-lM)N|YZ}U~i+{<5Q({m#aTW9ZNeHjk8-4wT9 zI}cvjeu9L$O@^^5+PahQ>$XKxGlmfx^vNO_$@8IcU|B?dEE?$U&1ahLN6vJxNVufk zL2&-v1v#>ifGR?%&2%Olx9SgEX5V%>tx9V5M=BrKLT>?Y5JgQdmve=S)4Y3@ zsSn!?29EPN7jQ14D5g;ClQc7pzX^yZ5@V^&YNCZ&o`iu$xx1qnlPnLKByugxWJ$W% z)RtoJHM+_r}ZcF zN5mO0vlG*mUgF^pAuz^)UMt38*E7mH=MS<{NDkT4$PQ6i4u(XH;5HCuW9A&3#0N>xrt$5G%9X7tLRd_~XsCcS3)#$>!a|hFiKl^SF2rpl=ZeoF9GHuH-O6Y6G(4TU` zyZp$JAaa$ahS-Ax;cW3`(F`gSY5gNXDQUu6t4R}7QEzToupIWg;DX?|%el)N<)+Fl zPEgk?%#^C~a4y$jutk-AmrzGvq(^stc=c%s+;i-0K*cg12(t3%x=$9LDfI(h%47mq zb9yhzXqbhAt$0n?XX3{uQrozz<*>#jV z``{esA?O=1Vc>^)`nI2CO|Qb4?X5PX>Qe4NhF;>$aL)@NC}+WoN*ba+Q~C!rxLyR#LTK;e@oSWSV( zZv7h}UH*HX|5Zq@{s#Z2keYkn3+cU(-V5oyklqXFy^!7u>AjHt=Y>?l|DQX?f34CW zQnw4#w{rEhd+F+7xK?4-D9g zqi+u{S3(x$hYvcc(YGw->aJWcQ@@ut4#l=QJaWE% zCyjqZJD`ystRwt#|HYu;rH8Bfhr$nQ=dXpe_Is-+0$~A{40F0=9GbUuZse=0K9{n) zeeaL=(}W6T-{j|TEJ?gph*($k(v{e-(M~q~#JBXGt21FOZO!WPXv2}`{R&4xk7&$M z9c!RY4T#R{&1wsow8M7>;iMK|Pz$K&ZKzdjn_bDm6Ls^qoLPgJfc`aAN-tv$2ZO^u z=(QQ#)lKQ6Z_OXUmxj>V7{h2>($!gOY1Dg$=IGt5-~Rk*@bb0yYe$qPlYL7Qzk9b= zCG~Z7;9fTJ8&&D#^qX#!mx%h8&gKFsE+2%f?%0kZ#X&BW*TlTjqquW9Yb-lkq;Qi} z2hVYwW+scr`>z8rgB~4!Y-5st=e8z2^fKo{AxRF%RF<>4cfn+ovzB*(oz~cw zcY)cH(jRekrOQi)`YAm+~lWzlTpRN-_C` zw?ru8i$Cuo4>GbWA17n=kwtm3#<#|cous6be8D%u>nS5W>UVs~61(Ee?vHa|MPmFq zN{zx2W0@5CgzyE{z7qS_)M);6OD6rVjKPO2L(6om(n8GjGf69(D&ceXUnp@siLFlF z$H#0!t#W&lPNZ?x9DkbULWgOdGyURLX7fWn(OMyMXKBTvV0lNi`|}wn@wh4R;VNSs z1)kowpE5oO>0LMrLyyA+LHj2B;DUS_$oOSIm{8K@G3-zgaM!yP^!K~|zjz;0=s&pu z{BON4=>PS;e->-R5oAX*G(YDlRP&0&8zzEUtX(v z3(51oRTHnU6X&wB*Uffwg}aC48EjM^gWAG2&e0&nrKJNjS|K?)I=Z|4)wHowpwneo z=k1-a_BBp&OSw5$esGp_7pIj4OvacNqKyiavbGV;{dh$qI4h3PIV09?etjj=bA;NY z)Vo-rV3hJ4)ty0q#$RBz$8?dAf{94xA!|kbVdT2zkZwK2i?3S`4c!kMAOo^UpvqhJ zw$Ak@yJJCEw-qeJp$ya{U=#MPDoq|ps}&tcjvF&HGY$XX_i$`j;!upuRDNvM`FfXP z03}pq8(`Hw%6j3FZEffgPaLQdDW~|ALgDhKQGg2f%^;C+(7W41j=d!EXV$|W$iGb1XPiNtEO*9`b!oP5Ur2mK=5BBpG^87vd?1`^c!V1ZE)5BEE9 z*ZEBWTzedhOzX9PD!PT>TkI5POtmZBK7P+c_&INC1a2m05hZU%1`8tSv~4eK^prd7 zyiN>SJhoRX(yFm|SiI|?kA>drj6NRC`E^Nmbt_y&EpdTIB@qVDKKB5l(Fa`#MElVC zDM@7Ar6l5e=1arT2Bsl${VsDON>nUFBmk^XF#VCW%0F+o7TA`@K0V(Wg5Rg8nG_>H zS%_HQejH%11O{q0%YqE802Oj}M8Q-7QA<-JF&=<=L@h?paSV2!-e5g)!ue`Wq@%#w zdsDJhsQaM3-Km%EDs_UDp}H+D|IyeXkx%~vGv40A>XE|sO2=B?lbBPV9L7Az2d2Qv zrB2Ns`4!;0Zy()dp32gVb=>Su!`{kF#4p~xJ3ib9HQo>!au{ZrvyMEETIBM%v{_UX zDBt?5p*i4i^ByPHRqc+lC>gX114*ry(V0pmES{A-xGYy5kk8#<8UFSWU$R7@C)79j z1u>{ei~iOlO`xNIF@+ZL=$vEak-BGR`7B<4k~XY9$XI{5H|%{IL5C}nIP4oOVQIbs zfxoN+v|xjxORI(&N#sp$MN+OW^>&#hcV`^a;y9RCF-I6jh4PhQLW+=pDxJasJHX$k z{bBzn-YzEd@2DHIZD9Bi#!Q(z%Wic$*1q>Rm|kuvvN$mde$HGKP9&KF{TXME>c;>` z89HJo@EdeZ8Mq?aq+Kk{$W1Qd@)`N*zB01zrV4GAuB^*G9v&;X`5ADXIPUXs*WWPs_FqSeGF9LV~Sg!4}9 zd4?}EUZfGh+t?3@cf&T70pXkhhoh>e*P#F^2iVzHu_h6AY$ghJn0!`BS9V7Y%C(qg zrb3!bf`$Yvd4=1hDRhIJc;60O+da4HGSa^IUQ2KKWD7&`ty?rl6eHrPEWP2&9tL+B z;mDXJTBw3R3q+l5N$AV~yKm5AIOeoqAU31d0m?=^aWe-nISxEw| zmJo%FYdhV;(+h()@BPqft1n`bA+0;IsP+61U^@9-So$1U!Zl*wwn?4`K-EkM>-?Pw zCvoLP4n&=h-w>>x{@Jj!85apS(&cFzgV5~r+se!TzU=$MrrlMJTZ@bq$VQd?@R52d zLz%zTb=#ND^_YZ75vO&IDaQM23}olj@!~iRFCbrAs$z-^>#ofAQI#z8(y#pJ#o}cG zb(_*K*eyZ73w~)2eBMHOty1)GcfSxoJ>%HLc!Uwq^oEp4 zGc^i5r4Ap(Obb|?$V`Iv`k!}w?K`ksTh+g)jOK%czQV46v_GQ4A4BFg7)o6_Jz9_$ zBo7t0184`=(PYMF#gtaG)|eBOr$hZ2+7P=rU!4z6RX{gr+=eW@M~;7M)PETIiqrlz z^dWZs4fOT@JG6TjMBg~iwSA$qEguzY%~ezgUfhr#mL5LOT{_Nf9L7~z zVf|7))~567H&shJ*Qx_S^Ko>8_k@JWg>TDT2?3lF|Fjz4>_f~qVWrDsSPv358^BW9 zdAl#LurHXq#b4Awo%|dic?ZaKBc_nRv97|gpTzyWjX?>^ zzWGS7yctPAOV~QC*k zKUS-7P%#>Cd0`i61U#5}RMEA!Q%OQ1|@cN4mk*HCullS^w@@ zrckYbkb|LhsR>h#WA-Q4%e5E%w+{TJU_+dfdefv@(;a8kU0bJsnK7D51p)rOeL5U5 z`m-gG84JR5ahhZ^iG|=_h|nh!1(I#PLy!EY9)&*>MtL+|td2mvvHXPrc z->f2UCK%x55ya~ryx6QbLPP&9L=NZ;>8L4s8uX(hPZHCkjXXd`RwtLa&y>E241Xf~ z>9u=E6fUM{3f9%OY#vZy1YHU(i+wug5uqE>k9+spn4p-%(c&GcRyTpRKe_!0*^dH> z5*MLO(dSaqZ)pxIbPgl;X$5kb`B2{>0g-3fJg^c9YU}0!aEYeS6^L0HdRTAQ%!xA;lw=0u5tCskc^a|0grY*x;rH%mQl$*BY9G$ z5hlk)5&VT4&-?kiyXQ^c`7hoE=ZILBLX>99KJV)5^Q@$|It%F<^NCJ6WL;TIO9`Yq zCe2nH?j%C=hv^C(6byNCb&2feW6HieAoRZ^Ik$eNbK#9vn=~=4^3~mQqK`=@g4qt* zsgKME7(H&EyNZtV4 zq!Sr8>igJUmrn@A>WT-`seG{*KyQrV9^Xc>s`Ht*074Mt$ zRJF)4i><woRy(w8* zzwO?wxZ?3NNO3rDDKLMdZ6o(w6eHp(WN|gSJwG*nw6yvz%>8Ah*GR+dpq$j=9gFFf z75^mDQXv#)@iYw}$7jj18)PM5`konIu|_qz=gk?sEOr*M_7l|Ps6yIiA5V}EETUub zI+AhS^QQJwIL9NFL1X9(ID_3%K+)|BK6Z0Azb}gc3}y>Np&_tGp`;6#i~M2{lt`tS ztq(kHTbX$IpkE9_cn2h01OkXfdR&kVZvXEueO%y_=u?upnSm&BfxjdQRcxv5Z zN%*Hc`FuQ2o6A<1*$(^I%;a~_cN?SX-?29+4XaM;eMrIa{OkdMM2dMbJGWZ-MykNB zEcbxcS%D;BnC7!ZFAfbn$2h1f^GE?WU1kqlbDClc?7wozh7`P%nQBsaWrx`tloDP# znHa5&uL2KCro-$tNsf|bn(MlO^#I@GV4bB(Ll5(HXFN&>-6>^Yh3O~ZU&tQ`87b%N zejQ}n+Sxy;qizd>p4auNu1^QVT&7gohMb{yQ!QFC(WIXlQUXed(LBr|RGz&N7G1Q% zu2vb>>QemyQoGyo6j}+ZK>~9>PfIVRFjiFBH-h5v_Y(qM+IdLTCG8Y1@l~a0u3ga- zFnk7-(~Hei=aJ1>!hdq1K5*uf_{F=t<5DP(#ivDJVfsSMgb-h=6^yI;SofNp#KY=#rxk%Z_DtgI zfel4^kA}pR!fqdjhwY{BFO!Z7=}$M|!Lum>_I27A=#@+3@Sv>b(QRSoLxr_a4NLC0s~yd(rAlCAEtI!&=O z+Lx7Dk20_E3q>x`!aZwBfcD|o*I9jZ`#*fycT?qwhg9FgLVmVFWl1z*2H&~^Z%3t3 zk<#Xn*EN#Y(;*g8#a`G95I=FbR>4ON(|;b!i+Mz%`;`%fgZff3!i32a3E^;gHsr_! zx6}o~Z^nX@2wm|mLLR3Z_5m~pdd0Bp)>XI7&1j*ft@xsINvl-VNtGz9b08*j-|iO7 zYiQ9cFm-pjRB*}_bu%xSax)k(aLXk$7kg!r6%8Y$mV}cqd*8kgcOj*&JO(o_7~*@3 z@`F8=ObGl_jPd;C@&VMeflzXDt*FBDCYY)-?RDX0KvTj`D)W39isaFnXiVG$%gZz- zR6c*mMNJbXx_>os185dV&X6|!fMmD~{0BV&6Y#Er{k{=Lb(My}96CC%8tpQ>07*me zK}Bk4wnsW}B6bDk{!Gv`^&>V3eJU|uIWd$k@&nRIf*?Q(E+{4Fjl1yU(?*Z|2445x zl}AjkziT+P`6<{15XiK)5zH3aX{oS#*C;Dj9YT;R7sSfH$Q{wyB1g9<$cQ7GdyA33 zZ%bTIDINi5BSaKxPx~oj81{mb#zSzRR1>z7|=1Xqzzd-kPZFub-oi6wNVT5Zh~^bGP<7+9ezHOn)W}_`RFI z;#h}@NJE)RN5k9sF1=qhd6mHD%FpFPA80(?86?%(C_X5;bCgS(rn$i&xiKR@bSl{? z8_;T03&Go5gZS9}8~g&LDiba^#biI-v@q(RgSxePgml`4@b)S1b=t@)+~)O8Q_AlA ztV{Y?pP}9}7k4}zqtZ6Z$Fa@BtlYAFX0AJLS*%epSANlTUvy9244*r^!k#T}B~ROt zZ`13y+?We-QW`3&lw}r}w5bZ(7k_t8GOzvFXhE2dqu{q@8|y0vist{A(eC5tunkeE z>&7@2=P*MiNF{n2cCvez6=7=-op0GG|K9z?4{dc4&fZDccD-Eo>+eFFmOW&z9YDWZ zO?xukD}KGyGyK2nrT<+o{qK6|f7eU@yI%U=_0s>Y zm;QIXwCS&x8bk_@F)q?4Mjrb!F>=N$C*wDD6C=k=GF`vxLLcWa%d?-)AN$mvGxpIh z)s-flhjrZ@z-g_^IlFgvOS?l0dORPmvv#2F#Dn&Qo6K#m*+(agwz}T$Q%9?ld6qXS z^$%-!e|wu)yS7)w@8YUh*L8h9?Ws_#{TMN2tU^!s4vEJ<yhWa z$G$n=7yYu0&amvAHY{5vY^6h(?&U*O>S0pD_Go0E&Rv<(;TLyD%-5;Wm(4D&o2G6) z=;4LklP~OZJF_Px=jrL(4=L_PN0(M#e`Ts6r8mSkaDLijqoQ9M0=?xgX+2pxH=l26{osH?uF~8SEvzm}>qIH2 zWDmS8=(g@#-%9sh``z1&-z~LB)6iWiXtCUbMN0i`I~?Z(YOASsemo_55`S!a|CF50 z6&v{F{rf7FFIEfsI3{DWZFS;;ntK}BTh_ELeDc6{)f|sOZ9jIa9NyCH`H9|VPA`pn z5vT2Z>gdvfq6G(L9PL@KR_AVseOrZt4^=agohNCYc%D?GpSMP5o0mmKv}6>(MUly+bGGcZrzp>%O(st6xF5M zKtug2q1(+TF6xpnT*hvGn+-BCTAe#@o}{}wG)VE$eWj$tmU73tpBy;3-@apQ{dHd1 zNxwPP`C0nrXXyd*t&6LB+{l>`6L=(jM|qS&)$^UQD;TM7?Panxck&8&!&iOO)=$hY zFw~l9{iDsLw8HGMd|&>LmGOb7kN+Z3J#JlTeyN8+e_;SlYrDkBRTDYcJt4qbv?Qd?qW81ak*e`o42I#&mz24*g zFIUIcepeMf^Ojb3TJ~Ox|D}Id?erz;=k49vsLWr`ZdS^b;GANeM1^$=vM1jkl6`FL zx$KLY!>xOKY#%q;XPEA;SebpVs}cnxwyZliC9J-l!83*v4U zNZYRp+FVnpT9r~6kmDwkQ@uAhZEpXhs zX&%#Zr<;erfo^{5_iu*u)(%hk{rAnh4Lz2+$IVKsu#Hg;+u(j+d;Y;wkIQO?Z~w(V^4NRr zm2JP~_LecM{pDGp;iA=hgG;LmH-a)pY;jFq;+xq@sdiWYBj3ZzY)l^i&|8>L^6k-v zJde~td1c?NHrYnVzj=x!0G77xK>XOW~~i& zeqQrpaOTk&*JEtX%}Yw%aMQN!7tImUt^-p8^NW_p&yFn=WZHJCcs(X|z*>d2-(qzK z76e(fadF@HtJ|%Z=q~zWPIA_KdFsEo+BExVR;iEAsKQOR&c5ofQ1fDo>AulB%c~cz z?C@ozU90Kaeb1SB8w{zuo$WmOfr7gC){5=#;}XXAo#0;LI@a3fmP)Msi;g-;8`^pH z`WjFq`@z3z?mPbL(*C#J=M45<_tWUsh#MVxbqV8baI{JMUEIb!`}9Hg+b)BhZMsS2 z$Al)#+@@z6$loLg@S5QDi2rNs{j$PQw>$M5bUI;3+4pSUZQT2{Sr%y@BMUCu^i}Hi zRrS1o-=MH?j_inFo6K*1m)w4Hes0Z@(r_8u_WhAF0SblK* z%XfMY&ams}_u*?^;_htiilwthTmKGx*X4dqo4!Az)}E2m*E!H~viCvR_cD7ELS~KP zr3JYqX3g)!)6=L4un9UdY+m@$zk|k{zxIsNE9ppktuNsnORin>pK(>0e|+8iiXUCH zypG)Kx-+)8)x+&=crAV(wmXq{%>BrN^-*`G%Xud|Na@3udKJ4lSXxP zO{^{*d^_ogj5+scPkY~+WuK>+j&s+@_so$`JMnXC(dg8_21KlgQy=4Qpye_>ab0oT zr?t0?z8dPD+nN8ia$~;UvGC15)k|mb1%V^9eRO-&yjj#UV;M)L+)x`Xl&cd zn|iFq{j~eAp~)+P-@lvBd+w4P^?SUI`7B@k^L>X04m)XhYoV2_zSYV0le_=T8}W8z z#;gIJ(us=WV^Z#Y>~&9P>+Ni}+a>YA4&OHD%D>%O;kiT0?#J4!_!rihH(kc9-t3m7 zFB_74F(AZdT&v(%pAI*)1_qtJ?%T%clk%q5i5+eIwH0n$c@}UtX@u>;#|ta=+7H%^ z8mjp7!VEu^!g~qBReYJE9l`PQq;4kc&h?MFvQ@+S)#n!LGdS_34hq_9dA-JHUhxlU zYsGtTy}zJ^Q}603ixx2scjaSjCMaJlG6_1D_`pPV)Gz6Tli9NT(3i^YDcg&pzHYKi zA9lG@gyMpBcO2w+2~|?I=R(%R=arh9mrre%p-?1!r|>qf=9qlc+x|Z3<$F7L$8P>% zk)U<`OiGYXDgPU9ikHtP-CNgADgIdM>DH(4b#2;J*`Y&BO8Q&Bx@2}fSl`Q2+1gx5 z_Hf3`p!qJd0tRf{;%<>VK=4jqvHITNw#hp(WbSk`iucW2uX52uI&ksO3EAB~+L{|^ zx2w?`%*3h`N!@%Lll^nqtcvVA#e#};opsaf$13%)?y!IRINqThYXlD!-$d;`+AsW) zp47sZ%UTvq>Y3Qru&>t{GiHcX0dL!}LM;t#;{<7*Dw|G5v$Dm#W0a zT9qWUdTGi3Ib=r^*Rtb&gJHqbZyfa-T@{irY~fgeSGK;kr&@dY={FN2q^J4<{F>WwfB#+j`|r}l^5@duuvhDiU$5@|aD_+fcX|5`Z@@_gi(~vObHQHqJb6Rw(~e{mj)@_sze@ zXAZ6P`l_UzUtXmjmr|xX;CABH00HCByLG;-h2Fr)UE~*anW=njD<^nr!Sb8CSLjr} z^9oU1remwO?db)x{;uPFcJR?a;I$^|>2dpG_=Y zYJDfoa+7H{GqopAF6`2KGh$TnjsA;%sh>NRbi2hiPs=-N%zgJ-mM@;LW%af6Lw@Of z&P9eEx@l#%StIIao>g4#?2%nOE}T+w^6F`!+V^nAmGhs?zYS9KS+v7prOI6A>oqm$ zTPNAKU7C|SEIiEhgTKq+3%>e&hJ(F@F!y)fW;x&L*!RwY(WoPfJMFSM!9d-f!; zWhb{N%g}%++Y>MUShBUd@dM8ii<4gMuez(h{yX9DfxxFl1?}JT?lSZ8PTP?Yycrc^ z4xYc<`k3~SiM3HJvu{Pc`Flc_yv3`euWq`q`MzBBclCp+Ez0c*l+Sfl+me%00KI)&%83O_GStX)6< z`ILP#-gH|s+Un*F^D0iSNcAMw+#bgIwkH?2yL7{1fM(p0td6afmt1wQqk%@wi|CR%Ow%Z@JJG$V$YVt>InG^CSr#u|I{YW=|&FbmWOH+3)QtK<@ zv0`M+@tD{m)bI9w)h$?K4rb5C#%hi+EjY-+c$ zuUzl${Y%QU19J)thx|ODWb|m#xEG-tUr*r;@#_3Es`ad#LHATEZ`U$?ilg5-pnm&s#|WzwLhD zwBnb;71FxvFAvFB`$9@zu3Kx_4RNj1H>Y=e|FoaG(O0{4LDC9sFS~K!p88U;X>%C^ z?^P`>8mI>j>A%oF#5K0XwywoI)0XG5_a_!*Z(pz@>e3h4bneeit|7~V+zMkhru3p&o5A_{BBJ$s2jietlQ;9%lnfFaS=QBD?~U9{g~RdDU6Zog=YMX|br?rB zeTt6qv8#JN2Ohh&uZ>>bxUBiEQ_oGh9H-%NAZ4F--umJGKOU`gxNEI)H6nk3MTyiP zrI4OsN|#*9wIc?{t%&*H`^kHAv4PBwJ_ZxF-s$;?W1cM(ygQL8XsHvCwjgBLib#!j z)4P3d@y+ty0;d8?4}*KFPb}Lr&2q*Moolm3o*tdC%xSouPu~yMBQmcZ+MpY3)^kFf z+oIYIBbQluR=TT{X@tF4y5n=|$n*KCy_NSq`u4~Vne%Y z%li7vdgU9itXqb|rxqnDxiU^a&->{W?n~5}sUCQ;2<8MA+DDs=DM8(5gDCpVcpY(~&8UE#LN#pP!w$^6RCroMf3BQ8DhyL$~h; ztU5YllXOOM;?$zSc1J^GvyDf$@&5cbZ&I|uvu-`2%H@^Q&4FEqQ^OFzAP>zh+1*xr2JIV$Pv zQtheT+oycl5^%1AXX3W-6WIwL?+SEwn0rOeQ_3jh$kr}8#GG4|YUtSKnKovmMu>$S#uOc(XXX#u~dz2cABBb#pXN+&uieMyX= zcjPTa^)UTS^X5eRMt>Tm8nMv2Rr$Htj#4)>H)cuiN?h*{me~K}qFY8!e$QKI1p(|0&IbztgHRYF*&qa98WG zR=;$M9YX@E@;@ioWE%Xvb)@>B+L{v?inUTbrq4{6pl`5Iuf%cRz*_x}m1^c)il&78 z*fb&GX5ygH?FB)D2ZhfImDUMXh%XzkAh6>!C)*1bX4!7J)@|mj&p{8J&2|mSPun+1 zC+_QnsunML-Kt2Cs(8njNl&bjR@(Kx?W{R58}Aw)O{}c(P3XB(H|WSET|bY*J^4$n zTY44T%Cb}5qvKwfbl82@b)|)l^IA+k^wf6x-EHnsd1KRW|DLb?bEbOCm|4M-~-yMR^X+5LL ziVSaQsdbC}KD1Yjl~U{VT1lIVfux`FBGaM{C!{IEFbpTAZn~au>twRh&E0ydC3HR?h2EE87-zS|PE%bSoLAesF1DX< z@3?f?Di0`wceD(ip$tX|Gm!t20raV+tr>I0N6En9Uh{Q=&VBYGL}g1-1oiur6nfup`XaP>z+ME~ca11Q1ucUj zltFWJ0uN+h$8qrq-5a!u=zT{=n;D-2qZd0 z)qX@tVaTJVFM{l2_9D1vHlheEA5${;fih^0PI!Vcp>+Z`OOj5wOG_c@anl!J?~{Ki zLQx}%5d4Hvgmq7vuM=iHW$y&{=aLk`@F^vQ(NCMc2#QJUMbJ!cL=ieAQ8K7S88k;H zyh54KI>GOwBt>{gOW}4>(-$G)8G8{@QyNi(UC$^**!ZmZI>92Dy%QLTt{oXCQ&KQU zZu%nhO<^yBEw2$pkWZmx&_1R4ijavip>=}blO&z+oR-2pltNQpz&n%5UIb2bBZ_c1 zl~RPAsm)h}#n0J0K{H;GBA7j=q%ie)(|5wK7wkpgzGy@dR9{ds==!4hico+up>+c9 zsU$^sPfH;grO=d}aOEX?5jYPTQG}B(DMdK&viXYO^6FnY;k_h9uzf{I!Sq$rcY@Yy z_9EEkH=+oGUsEzre%*XUC`FmjIzh8Qk|N~NQbse+k8dvf5+Yle0-euKiy+q^^TIl(sxbY3De)R z7a{6)BZ{E^o|3`v_sv&?wi)b2@Vg^PC;XzN@CBvNl%0@@LZ{u-VG5Jfz&)x~4 zZyT{Ya>%D-V3FT^ouFR8UIZpXk|OjjprjyI(DX&9K%vt*fl+=VoXadpClt{#$V3@5 zM<-nU%w7cB?~)YZ)MrW&4t{R>BKQ=tcYt?()2|L{>om2 z)W+E4*y%RK*Bq_q^VoC}Fi<`a(ol4k?z*TKTC)Cn1C`B1GM<+Z) znb10cBPU4_ZkJGsaG|8>i?B<;UIf*eMjRb&6i_no6f|Ea7=L5$1iq9cMKJhANnymd zrZ0kgDSHu^pN%L&`%+2<)hL7J=!EAe6KW?^N^*2`kCwvC(xxxM;WG9jL{&AS2s_It zMer|czD_Xv&fW>OGLm${)bErObiX%!5mbM$7lGTg5x)ste^4@L`=j}a@E&DC>x5L? z)Bn>UYBDW_c$7j@UdlfClf4M4-x|>g2YynDuRVqN~}9;8)U!BAl_vzyZ$uGp)KZFYwzm0- zuz_jIv|<=)5h6QF(g`b=w&bxHA`ci@!nAGj2aHTcfy?3?47{Jp-a*UMy)9sXt!>@B1pGkFG5s1Np?p}8%hdgD21l% zgftX7trMcUHKG%q&@#B&rumAnyDfVWOazj2!lt&AB6ziJ`cANxV($bFz5pyqC(M$f zWMC-Od__=b$6f>hz5w$-?T$LMqonW~rO=d}kc~p8b%J|EBaV(<(K2}0uK9`(-k!Y( z?p-9=9fh=~6d|B}(|3YH2lh?~Wg4+Nvgkm`z_>&66`^-W_9Ccul%xo99VsbDb!_?~ z6rs>*o!}?mh$3XtGI)+MXpTeFQ=Qn0p!q|R--LsmC`H)bsp*U0F3sKvywXPOjuuN( zGBA^FzE0REBg~}k#|wHIq)7)foHz`_%!Qtx=qW=9n~@QQJwW*U#JW?$CEn(yb@a^D zE{p6})_YvyME=oSDKmjj+-OK-K@lz9x%6g@?{w~RNMuP7F^u)BK|#ag$XR8B?SL%1 zCjz{8sPn`W@?@JV#S=MM2|N)7CNP)^iD;f+(FRCF_oQwU7zoACcAmrTNoW}w@pYce zfjl|Np?EToBY`LKhxs=rJsike0EuXx{2te{cXWAc?rum#^W?lg_uVupIUeMOaN~7m z_k`E!-+Je2XNo7foh9&u;pUENzq@bT3P?or_YLxq>Ch;{MiHsn;;R*6D+z7iD;f+k?=3H6?A3yM6+eRaRTqsEmUNZClay!j-j}=e;~s=WG*3?J4o<1LQfrV5iD;g1j&I(aZq%8jcdF&sJ>mYU zH%`Fcof0{UCth+Ac)~DD>XFcc`WGM(&6Ctez4u*^R^xtzL^Mwrh8Z{Zg+Lz~A;OI# z&+Z8y&vK#u?zEDpc(T2lWS;!_HHe2qG*5&n2n>EgA{I~n<#$I-f!z~9_kZgh1qF&H zk@6CF@~~w2uc7bm8@z@@G*9BX1-KPFZprPS0DKe8ljbCgWjQ|4?#}K>sB}F~ zz}^|so#M$gC{o%n8zVU9@I7d*!DmQB^MpHb$i=)fy}7-*OW+CPSJkyVcNNP%)>x6< z6BC7co`AnQ28t9<9zl^(J^8Z<41Pl*nkQH^LQxV=&^HPHLYr+5c25|5UzmE#X4-?| zNd^=t&6DrHrN7LX+>zV42aq1klaVHy-PD(~;!c7@wBCs^xcvNN=x3JRS=E!>6V>|r z6R>xd_M~_sfFh-N!Y~8UXZKY!=+{#MPqa((CoWXh;95c=nkUTWi)vH%#j%W&%}VT^ zxVQPY-dV3i@uam9kRIKWx=mm(7823MiE!Wx3|t`*)f4nh!oScKuFUR9XpefHfX8eh z$`nt!D@)*s(~*fIb{r^=n*oVvp2+w;@!PAEWe@;~Xr4HZQkrr5$rTn)qI$7=VmrE? zCt&ZK=tc2lXfFvoxhTCLcS&Iy6`cORa?jw;Wb(_H8G9;pTg4-Yu5>Y)t-z5ACZE|Yto(PQVc>?y1lp4j8(7qCQ zlH_w_vvTE3?tMr^^JLtJ-Rq6IcH&h+BAO=^PR`QOe~siqZV0!5{n$OxG^yta*gHM@ zQ9SueO#)At@0UJyy>!puEhM6OGGf0=+0#Y3T$z5rH_<#{{6aT8=9saJ6W#voo-niP zc>?y1Mt_PYx1dP>?U?N=B%*mDEUUnvPk%`~`LnV8?wAZ<_atg+Jx{>inJ|FjNfHz( z%@YTskc_3OBe*RF0O`>@NwPa|Uu{W|!5BzH8z)}_)rO9|HHW2lmJDR~#BW+XPr%-p zKak=HABvRb3B&m12PoF+cN-{yCqda;rS44`%bf;^Xr3_XPt?`>FJ<}N@fyVL2}h@% zCt&Y54WfAR9g39hN!=ze7&J%%PjDM7ghW(N&^HPHLfiJi?4GFp>+g>5V2UU01_SBQ zJhA<2#O6~6MsxKb5v_OrdZzJV&MRZ?N=QWWB=md5)@xtJv-D2nkbm){U%hbx_RgLm z6i<|fNZ^TaO|9?r&z*R)ArZ|JPIaws$}BZ*5G0~`!adT`@2oG|`OdYW?4G0!uICBZ zJEwJ(4R z)g|ymSRvKBJ0KCwlZ4vZth@SsxCxMm=85o|4DX^r0c-*dc27+7>v;n9PL2k}6K4&H zJrNijgG4k>g!u>z-asODPuPyxS`TOUgg2v}Ct&ZCYf?P%)0DuIR+qB(zLTBBy$*?J zp46=FI>s|thF1uQXr5$F`+MNiD=IAaM!Sz-_r!K!Jx{>i={SPo$==}-c*4B-yeogi zy|~Aah~~-M_otl7Y<0Ockcj39!y6y@;gpwJp%dF? zG>{(6lZwZEM{JuimOBm-v5gbIfkiC8JIltfdm^ZR91H&LSdF20@(GHR&6B$G9mO#c zcp@D50)v^5h|QC_Z-Tl;xOr=_d!jk0-Z%k!$4!gkNd*)s&6Bm(N5d4I2k?ezN#M!s zD{DjY+{W`3K_Z$bD(TM4_N*Mk(mSEr?4GFp>ow{?ZHgzIw1M}m!GJi(& zJV-?Igs~Bdwn8GBCnIh8>r_AJ*5l62TT(VS4v6YzH@PKV;j6degXVK#5O@oLR< z10P64^JLWfv5M74jks4J5zP~ZbE4)-|Gg~xSiUa1Cy{gNc>?y%OI?a5*1D2-@@Eqm z?1DrzPq63#B%*qPzDf8O+P>?td&2zdFHC$dcB%*n;U2#pi zYT!7o{CEjGxvI2OyYt^#EXQmU4cR?0QLE<(*gIN=6i;|iq%=?ZoD}r>=-!L>0}|0Z zS+@G6o$Vt<-e5xsJc&&BqDc0=p-nqw0AA_RjPP6i;43k?BDL#z0`|_~$rMl2CQIN+$?M>DyM|ctEFclhle{#0 zjiCwyxjP{d%@d2Ob_pgKY;vR=YG*A3)Z;{&n?KaCeNuA2>iTl`k;{@!T#HkcdjHgQC$)8PN;17vt zo?y`pNJR4li-don?b9@NPq^dic>?xM+BAwMw$mi=r2Nj^bGa!$;=&*i%@d6k2BsFL zyYQYsBAO@r*))mGW%KFs5=0 z!x-9m*#G&@!u7O&{`qIow8*AqEc`e%;NzHV^l_aThOt|+e6`0a@y{A;O!4>K^tOx? z!!YB8>$mHkBsRg#*=?n1JN&OXlMUZw~9bLwGIN3YfuX1y>ajr9-X))2!!`<0#t4OjqwL4%n%k&6vLyy zn8Oz?gVYBxTwQ|MgIMZk;fIiq-40@W^j!qI3Sz2v#XjvFh?(SwVJ&7tnex#KqsW&I z1TkK$*r&|`F#&q>5&5(=AjbV7_Gw2zOz=buy9Z*Cg<@C{jHQZUU1mXsL_HM4#==;( z7-kD%w(rESU=WLXC5BxDvB(c%*lQ3Ih>wtJ5OdEI`?S6$kRjYGF>D%$xfh9HD`4!o z7?nxgmmm`C0f^xj4ifAuh~c;S z5lqeuG6cUlk6=0=hF?oZuthM2-nm4uEg**9uST#a7(?$eBUl=Yp%;Y_tOmsJOSuTv zZ$4xQe&ZFvj6n>)U5a2HAckMvM6g33hF_CJuy_!|?;s*r0f^!E{SZvn9Lf~GOow1& zKn%aQhF}Xo48IkIU>iXUzk!8d=Rgd<-h^N;Kn%Z1gkZlw48Ny?V5%07A^4pb1e*+E z_=OV$a|JQ{atDHiff#;s0>NTH48Ns-U^yU$Ujaa{4wg`+_;LFL8xCUlS@r}o2QmEI zc!K$Y7=9=_!A^k~egHbbo`D#Cx;VkUgBX62H^F*ZL5ASRWE0E~#PB1j3FZi5_<7F+ z3k5O!Y-NJo1Tp;JVuEFY7=B1F!P;0unc^q#5^N}pp{Lyv%oN1%qhtxT4#YU!7Xr&JPb35ek*LK18nh~dXA66^|y z;YS-1>@A4l=LQmtSqNo{AEigI0U(B-E=RDLAch~fMzGZ&hMz%3uy7E=kL4m*B8cH9 zRS~QZ#PGwL2-evKGz2|=gkahrh9B`mFdGoVPrV^n5QyOi!4T{Mh~a0W5bPC*;m3s# ztO~^N6Eq0c#}+aKKU9KXQ$Y+rXMteuAch}3K(PHFhF9YgEEdG@0(FArf*4-2O|VXO zP^NepGr>lJ7+%>+FiQ}_i(Luk4`O)zC&A8u7+w-duoMu(s{{%56UNYlV}dC!f(*fH z$p|(P#PISef;oX0UU5XQ-5`b+;Seku#PGTlg7HBNFV!HJ)M7AGw0ePH>M({ThY@TZ zh~YWz1oH+lJnfrcCqN9(geKS%5W|y$3HA-d@O)W>7yS>1YId4`O(R7QtHDLz&`9O9UGPVt5`8!Aw95Pi-NXCy3$M9t4X3 zF+2f+VD~``&j}#d7ZAg@$qClg0Wt*NIVRXR5W_c931$ak`2HfnHiH<)Rd{=d+@QGx zVvHiXeS`1gya6$e6Z$mF{{}I4b9^%heXQD2$Pm9hC;!~KBA+%L#G)>WVL?mVGIcl7 zhSj?RW%AE~8U9jJS%zVZ7dxxYU1{g)A-o9}i==}^q~s`!Nb7Es)k*PVyCID4$iCXT^HNWw|88+Y?VjYGRW}M$*6p|Krt}(+fH~d4`byh8d1Z^K`F){ z!!;a*4u~2~jzEc2+;9h^6E&P1;1Zpf;YX27)NpcVkH{Jro`r;>hLd}JL`XBd?Q+QQ z(8b7bZ0Rr%P9*Lx)hLfXjA{9404e3M;CkOXLCuTUu2^!(# z<|mOgFx&(QMGYsnLy3@PxTh0jc45j2%GHi0+`sX&uHO!&8w|)NpbRN2KD0OSuXS z5H*~fA`+dL;ansWGaTQLC$a{H`yrvI;p7%Q5z-7l?Ft#5x(pePElmco$dBk30b@Tv zEOjTU3&zylpuGc`Fo3a!*}5X3Xtrbu0TI%&4ReFC<;+0Y;(U_9`2LxKfYNRlpNu;+ z{QsGhfQ7X9M!Q4tg)TtxVIy79*NBc5GN}P$4dc5A#z&?(5FstT*I;~{@hCpLW2^=- z&HH$_iT0mbD}-)|wkNp&f-$H)-H=qYJ;~J$A{B4XQ%EP;p5$T*(TTNZ7Lth?PUd|O zS%daeSqTjYG82RdX@*Z)2@MF&G-Noo)CI)+?C|~&Ie!L4BWgIg_=7RXa6XcX8cweC z5UIG~3LZiOL=7hwl88>sa1$gGHJnV1A+iRBha#cq9)e7kAwrtrH$5Q3Q?cRL(o7KJ zTt$XsOmP)7!pVg%j6sIaMp9A3$yF{Q6*qh{(uo>QE}{{gnBnnACTcjDJw#*;3~#X- z8sTI<5fRc1AGjJaJk%MDaBS%;5L1mohGT3Eh(&peVMjoWZ~LYFp941hY4<>k<1L02 zftYP~F|7X@XfTiqlK4xZ!LSfXMF#`9`bebWgCPv*L%cS&Q5rbV*&xRJjncr_RuqkB8f3~K#u}#a1WbcWA|ygu8sEV9 zIQA$F9O&Tn&}b%;5HZ#;zU4?LI-1F}L?Wccw`)CQGiM@-5AXbMftY)5v@^%pH!uw{ z`w?Re(-`gzjTSN=k_c&On0te1n4mOppuQj`a71Zf>=uefbhMCZml$i9Mg^D#nTSb* zv@}$FpfpnPnHUb#+y@#hWFjZV8pd}32}MT>nc7K&wD{t{_)HceoAEI~9*A+<;-7wW zsGza|N`uTG#aP2MY>-ei4Kk;c2x(~qZGdbJH9~3NKreup>L!#1#`3^4$kbJgHB6(w zFEr@MWL6@ir7^=7O2fn)rGWztLSG{~n#p8Xj5Un!0T>^d9!rF@_`bsN%|r3wLqRz| zFb!E`Gsb54L8FDt!o^s_Go>-`~{Q}Hhm4)hurADK{$v4-(|2je4CjERsIU(Wz2J`)#Y zGrn$Y2x6%lkY#GJS#Q#7-;v z1wsRY%(*7A2B#JFNGLiW$SiCkq#3?F5H#Ev8ICQz3S#^n$Z(7mqi948C(|u31{vOe zqtF3S!^zwVA{94$0n&*YPNr@UotWYKkW6%cNT#I|Sp&o0Afc$?WTH9|(hUE-5i&e< zCNdmbsZ4G8|*?;WY4y4~#WTqvsZ3{-SA+ zH6TPtOT%yrltwC>4 z(g<}x)xd!oZiPk*S-gU=hVca;p{UJdISUceY(5LdXR;KcTn@!_3+4T!n_LQRP= ztsT&4AuEqC)-VlEBorMjWGxaA($a|70ok02cab>I`ydu6heiv=YQQwek|&HcOhbPs zG+M|aC?ce#VZRefBh(UA0|y#`zD9Jk{IiG(<4ng&@&MufC9_Jl&!FmXp|;6RhW_{c&uj5Um}(=KQ zW0t$2(L$EqVXR>qhmcTow2;MkL`X{`9*i#)@9A-%m0)~iF(1Yn#y4&cG+M~=J|d*W zXSWCPkArWr;aS9+K};|n*^IG76piRfJ(=W>G3d0S3Q0vzE69v~A{9Ta7_nDqfaqxj zSuj9!Vy6{ONG3Y2$$Cd3Yj9d|4hcmE1X%$|gfzon?1cQNzh%38E7-JOjx@4JS)NiL8O)O8cM@P8Nw0 zA!F1H^V;bfr* z(TN#81Ia`UC#zkWh4llXbL2NHhG}e#r3DKs3U!rC-7L{#l2MoNpN4umjM5 z_-AD<7SiIIdjO1Y6^ak9h*%F|d~Gx!Fm?k)BQ_w=19S-n4TxeS6&(;{l@0!e1_Pqs zL1;jbMLa|&HXs%vndpEZOO=VN!GMTBLeT+17B3Sa&G7pNA;US?aBS%p5aZoMhGT5N zAz}8ShLc4{7=sMAK~hn}$qFMP74N`(NGH0>BMX>_PR#HWBoj59tmY=N28PQXhDJD9 z-%W%x!^a$k3^(yWBOF`00K`&x$Z(7uK+%XAP8M8Y3^F_wNkt7OtE-4q+;FLIXoQo+ zTSO;jI2Xx84JQlUiL8O)en==f!pRbNBBU99Ivg@QH3AuqE#-spktOsPYZ#yE5okb= zMfF5Ti*ND~C_cQk8ryb&_51JVBZgkl8XF?xdoo`zA+~_6V7AHa6_6oxB z!Y_oIzXEa9(=cw)DngjEXfWKvFm5>l#QE0{ju%DYVC+DgcLc^QLP6Xw3dSwtK-@M0 z;dsFi4yG8ynX@o%p?nl{CKkpmjX~V@0>bg~7aYub5RW_x;}(B|IPW-&TfPNxek8*2 z(hwX>yGSTiel(0*Xn}a-UodXz0OCA6BJo6c984I9tDZ-nE{0p&192V&w=4tkNHPfU zt8|6UXWr)+dF&o5rmtow}55)a$BOFhl#=%?yaRvt?hFfI9_;dKvEv1h` zsq!-rjwkTqV01y;HVeiroIsrS3dSuD!T5cI$slg~8htvx$bp0T4db6+++yfS$Qgbbj9XfP zI5!XB_yPb9W-EyE@emWkEuul(?<4%_mIWZre}-^;a*TsfI0dE3djjJYlVJQUj9adT zaUPBxzt{oof&T(=)f5=FcnRW>?_u1sFmUZTz2WhvNYv*L|G3-oRrtY!dbqD!U z6IQQWY45t~&%?*-{;#U0=I|HwfYx>YQRM%wK>xSy(dX?ZIXc_Vv~#ilbAnQb+GuJH zS6^l4bnr}Drtaa~T^NRGZ|t_%&Uvn*i#>Thx3OQ|YP%4IVeZ%Cr03W>*srX6jsVR5 yk6UHTMcEgRpWENqP~*?}G1LRgHY(wN{r}%8EVnPu{PA|fm(QJYR)-Ag`2PU#(BLZo literal 0 HcmV?d00001 diff --git a/interface/resources/avatar/animations/sitting_turn_right.fbx b/interface/resources/avatar/animations/sitting_turn_right.fbx new file mode 100644 index 0000000000000000000000000000000000000000..4bd24040a2f17e89626e29c73b74fe6f4c099599 GIT binary patch literal 436624 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 KFXJs$V+=M(nUlm#9J>Il(8=A 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

KTrYh4C2ZO0wP{0I{qk1SAm@CFK2XykKF#_~ z#gKVY1AN(3*G^sA>HLVEL?DWDT9HFXkEDb`IWoOXo1&mqRBgSVfD>5=){j!R7JJFSxA)K=QsL?@IkY4EZwB>K3>+h#3ae&YM^ zUi<_!(i`heqdEqqgB>j9wgEv)N*0N!KV(hp#Kbv(9Ab z=bM2(vy7bIKV<*#sn9szbpOhTMMPbO36E6rY?sl|%-V4s?!(O#U`AaKG!%D@7~T=e zw=|0S*u*;){QGqW2i`9cz7LK%-_%ZCA%^gNS;~I9D3EU0jd(dIv)UmtHVcxAM9n9= zHy<;$`~7M8YK1{z34i~AF5++;x2%k7EyQ>)?zdNhQbW#?oUwb=lT;uYvD^A2_rYIB z@P7{i|IaO02J+WCVE@sAkN&pc0O4dCs;=|IudZ2iY;-k>4DM^|KQlx+9=8;Ga%3^8M_tNI5k==7C}%Spz#OC$r8VD{k)(n-qa z+>0gB2;L=BpR5V##myZ#ANe5mRbqyq@vNIxtiemjtFXY8_a z;x|*R_smp27MAJIry&m|J)4bBK2ytsO>Jgt(Z2MsyAk>JXHsc5YI^wJe-L9r^B( z@CvHxoXevDv-a#36SS3$j1$(e{mr{wX!D+)PoN`J1x>~0IDz{fE*uhG`&| z%WXg1;z=Xbq97;!yd>?5~al|a~V=ojMi;i|KV@G z8U`P${t()~aBo=qR5PwN^^|X-d$mDKfSKtp-;1haWZFvCNaqCdAqFZ<;&Hh)1j$@^ zfSV_M0!t;1zd8F(q`F+y(L-s`B!ghfr(ppk?jW_bHcD5kBURxNTjH$myBMYmGZD;t zw0#h1aawDe&K}^Lk?Z-(iT$+>M`&7Q08}M{vsA?09vTeR4tq<2FHtcj$&RI z?Z6sT41?>#s-HkkA~ClinH7z{rZ8Ns23f9{Cv4^?WlQ4_Zely!Vnw0ysVQApB~n2G zi5$B<52;-H@Na^G$gWWp?$G>5d+7HRirWu^R!w4jSb>&g&%NQXp{WAd?>m$hP`Z*I zH5OlS;$Gt~aF-5KU1x*8;U33%vl7quUc|69y^5IRE~%Q}AT$Bpr*pS)CZ7NL-G-2t zMO~ic@^~w`^^k3EMONkcWbQL0lm&V$_UM~a9fp?n(sqYr>2zaGGD6!a**CvF%(+|^ zd|WK^<}xy|NA{0f2xgxTa+l=(*G(mKl(?$ffrXvs>|48u%^ll;Zf}9DMIt8#yIxa+VQ-jeb@7L;fQ3`P<-Q91uqG6f2GRzefm^JmOhkg zqY+%eD+26^m@H9OBwi+kAv}{Bj23g9Y+i{^W^Q|mxudv3W_(?uFWi0fW&y(WQLu%{ zz3T}G$>!Ztd8(N#=j344cZa@}lFA4PzZkRgTRh!L4#HR|$x8f`V)89`%kASAm;Dch zdWdLNhtq3Q z%cD|~INqZSWwjI{{(;oNun(d?+9vuEZ#pZq$f6E#ewX=Df)buSPzrvrEe53@#}aP) zeEj-{KhFTdfOVrW;|d-~c`L`bZ2zkh+rDU~3OKZ1R`B||spF^-*Qei5=G)}12K%B+ z#J%C|31g%X6U*jm)(2r{9i9{7O{DS)&rPDL#3ARwX7y^HK)Gu&z!L@KZAbYRH96pL zizSeos1XK0+Sn-EaP7dWZ+Mk^eq8qrG5&tOmKpxKl9tLFLsbi&)N! z&^$%LDUM*i)_yIC=y-u!ZX4olDfRid4n2S9Tx5`6%?H`!i$*mn`nC>DTTk~L2qv=I-UZS>Q7U3K-8U~At z@d%Hzec0S_0O?(~i&gOK!e?l|OM|2!%E2mjh1GEojA(E0&Ya8f=otZ^!<5s&n4_+# z1C~Sb2!Vi|74!+}6aJow|1uo>kJ0*H!@=*;Y|)!NS;CG>4I^|U$zrO0-%{mbBa10QCY64o!e$t>Y zY9jw-m%19{ms1WQ({MZNrWwNK@O|N_z4g&sgKAS7iJVl-;p6B}y(8(bY?^gbXWLR~ zDs~gzRUtjY0x?rwTr(CNWqZ&@Y3Zdw|0&UqVGvcBXm%&-B%qZ)Ab53Exnj7XH z2>t`Xe<1h|1pk5HKM?$X1A^(E{<>qN{(A`i`ZomIek2Ni9`+`mxCILdGk@sU=sM{j z4F?DGIeWfzH~Z%ECXUT-6v1S>8qpM5-;}<+`})HE^rTeVp^stj0{!|xwdm6i^@4d; zIT;0Fs*=wJ98&9T2*}AJTYSRLZ~o(7?H7A!3evk(kqyo1^mzENvvnf2=yC9Xb6NK$ z!~Chiw)Ae|zjnrandl$<$xl1nit9#P*)^*D5)%dj*dAhkG_U7_!(@~q-$vN9#@f4I z8?BWO-l<7A%J_*-95x%3$$RPze&OLL4*R!)xt59waFghrsK6|97ozBS1FbKt2TpgmVz2>Xsmwv5}i(LD+JQ4w^C8H zI}Lh@M9iS-FZ%1gd71FV`4W?NHTB%fR+Q90ozqAZ^z1Z86;HaME7Pqyp%C~Dj&i`fnlb=dqak}uVSzp1>+qEV1 zS+t&8;g5rJF?R0)(}v!rNAHg34e=AuEcT0E6Y!b7Dwa?kdz6Z_#Z2b$`53H3I+Bzt zgWpsrjAo^WOnfWHw#1_uRwUbB$gSPjQv`~l47 z+Ue-mZulwU_!~3?@pRaEBjoSExNnry6slh+l{GPLziSNcQq#&Ro8qDS{l-mMEyhN8 zWrprkdE8Fz_KT+#fTcwXMjRJm{em);8V^`-?!#Kfhf1x8%R>3MNeXI7Q+teqDUDyo z5r$r5#>{k)MvjG(WMRh(Z_wlVE_`@$B0#FIRI}g19Bb3hh*AtE3GxD~gVaj+ zKjs+5Jt|XkR>9l^t+|tr?aRul@^-suUIeyg!q~iBdv(SqerF%xo^)+gXRlmqufp31 z_Osk(Su@X@)!%j1&=u%)Dgb*hIj*o^-!O~MlLF8`ZdPn!k2Rj;&XVn*?QsRZjATKme$&H zDg2?B?Alv8vCrpZAcFm|Li^P?$2eg8<2c&JWO1!ir_c=r_m&z4>kR=NT<+~1EvgoX z?fc%>XWOS3Z7-`~q|eVuQH5`?^qK;LPm#VZVE6>S@8WF!)|dHiHO}`O&?+P|ak#U3 zp2xi!7bG=q#^0M;*QZ~%Y*P!5dd2UD@403^pINk{;*ewZVOS?3{8H-hcC^E#coc`D zj2GZ5^;JcU1Ka7#9%%j(3CIDw{=mXDmv;MWV_6ty~!{u>tUi}R!A$Qi=+OerRtCR16N)^MEKx(64%(N=8( zHb4G0n8vtxSjM0L8&QFxAVf#QQR^3?B{<#-byQLvYW7xo0FqpXU0#Ya`)e~kXHJRk zcZb#9bowWPciT{kAeGk&rBM!Pxy#jv!GX9n!GUW*od!n0#fN&2DrxTg+QnoR(GrODYL_F^L@pm&y5LeeVV8>>)QVLSmquv-0 zpwV7IBS<&=k>{6VgOhc*yQI$-C_^uQj{OXkDOl(oUnjWTpbOidbc$yUYe46W;1*f` zJQu~l20l0Ox^szz2T+-scwl%n`4Qz%CZkDZ{S0aq zTAZTA9f~^?D5aDF#c6Rb9^4b0;!p|{FQr&J{gT%Nxz&RIi!`5rJOCp3Ni3) z+i+PSuM}#0mcy2vqcTi3O_Ii-hYfA0Wr>kV!ZXlqB}C@Nga$u8!iygD^eOfnP~Rqs-bL0Ug0}AE#3QZ&Yil-L@;}P zTfnzS^71qLAh=XJ`aQ279^W33csZs|F=4;ohYv9ib6;*N&$_Kk8yaOZ!{e2Z-fFjK zA{SFr*!R6hDk|RL@zVazPw#~XC9!Y062k!Xa%9WR?ZhW-T6j4xKVnkYnuPXV)kVzw zc*Kg-W+{b6`aLl`&cbh@StN)bTfuV{+(u~43De%za$Z9TcRdG&>GiuE#W4W!#?rfd z!A1V;n>9F#Y^q=+z==ct;kdNOy+AZM(84@>$dVw&pxjC6*ecDn;CUNNYz4 z4e#OZJw#eP+TWE_wxX2<^R_7X3NS@0{BXu&&^U0%Fx$^vg6bK^7YL7V2vr};iyydY zO^q{%*y8IMi2$|QJ_S3@M<04kk7C^ly774*$N1mWJWvBJDz-E#{D*MF%uaR1^5WpB zx8mhqKf@6}PD?v)%WZ5r8B{R41DpW?x(IS3wj(7M*)>lA9UQlcpD5nQ1NIvYAfp58 z(o;hC=TPC9W!csQ`%+?Hwr?I$=DH^#bgg>2D?i#KsP_sD1GM;p1_`Gv(9fy$X7j#& zf$mTW2r;lYTF;dwG<^^_HuiqCK|o>bs0faP8nklhF=RR`)@Et$Spl&teMgCIA`uGS z%6Vn)ydVA4-pzY_M#)SYh335`A zgZ2E83_KpXw%_d=Id@_HMk%E7vBS>zl>6#Q)=QAHJ&K|0Cv1cGjf+F~c)YD>Sj!7O9j8XnD_oOScdV4Fl{7UXh+5+G)ZZ2BT^|J;IUrDo&Ku@ zv>%v|K%*DjJjUquf?6BzcSLTi9b__-j4?1rBvAO8e4jZjdtyEM?#hS(DYGm-uf71yt7;zhcHnjIwLXw=kFI0{J zZ)R*@w=YlBwQ;o)a`fqO?m;wY5KnWuT>Wq<_8CHv_P)oL^*RiM9!Xu~L`SkNzvE0iGGyJJ z&}kDWOb5b~StB9vla)q*?-N5)FVBERmbTcEzr?#Xp^#t6NiQF(vB@eOCY1nr5t!U` z&U4Xka5fN0lwE5Lbo0BMVLnZ$V34tptrF1Utt?Ib><1Pp*}*v~pcnsIM9m3T!W`Z% zkkj6m`~2(aSmGT~>s9VQc+0eAo;bzz`F63}V`^<;=QXv2&f;SN)XKMhqc zo$8=&-tCaB*aWKjw}tbXgaVgthiPx_16;EJZG~~z5eATguG@1}z&`!j*57jjCyidC(4^rm3z# z)wOX9^BS3nD64${vSyof^SJ?}HJR+zfemlwje(SEKyge0o&K%}-61o$(L%{Z7I{1u;nE66lQ!4Jck zE)wSYfDyNmhb@xA$X}J&WE`5M5h|Eq@UWd=B0a*ImzxIZ>;)uf>i9bk|I2m5F*N^P zi%oO>gBCMk{FTrDQi~=3Ui@b*&LQ~gOMkTZj}}`Q|JrO+65ejE6YNha*sK}+F!oO1 z)tCl-1@Pc?uHU{`3kp_pB+A`E>k1!+jzHKS!|*S}ey#GuxxXF7-k_v~(CGOl zHB0wVv0Ibk=e!m;Hy3$zT&N+M`&p0LM!*&cu%no^?9a#@AHzi2G>O61DVOY~`SWK;T7%Pt$I;qsqQZ|;b5EKG8yHInAklq25%RL6^KEHDb zz}U$mya6(^HEoLt$xtl);GVEAmL05j*Oph1@BM+IdB<%F^M zK*(k_q&e9ix&P~CqCX&kXz3Dj`i~a>(c(W^{6~xbXz~9QEnX!3YsO%}KtaJ*vGUP1 zbMUZwkTHhPMd znL|7*Mf*JtoECX`lm~U|8GQ!Sw#}Yx%-4!JULe|K85(Hu%m&=preY%Gg$A}(=uJSK zT%~H^wh%fC*uD~F^M^>IEkb~e>T_N^vb^|pI^HtgR}%&PrMhqV8TF!&aj8GK-$o^8 z{WMhr?+!icR3Vo01wgQ_jl#59jlf)%opnj+CFm-6$F#+~c7p$!F zILEs=&e2EP)Igt?OhO{-*}hRa$FYjaHod=dHeyrDAM6>C&0@1V<2|22sC9axFmQ`=v-wE>^1c>>v0+F~UjHrmC8v%Evms?GQ**W^#GM0Wz}Io%sf|gxP#_* z279;uzyKe;9NOq93$Rq_u!Q76<(ykaLvt|XW&F550*B$Pm`sS5X6*{{Q36%)B4iZb*I_50v4W_}UHx33f*etizv z3u0y0n(fZ8qvOpi4sEYcG1YS-c(`j2dX~l)DxcphHYiXB(}6yK`~h%bW;(X3qZ25ElK*T{_(d!$5k%cV|^^qYQ4PM(787 zb63Q_-)fNel@4{lBbi>bQQma$i)gDIZuUDDg;CQsI zLNM&p4IO}{>z&n!zPq6(+=l&5;&|8)PQ7)k2CVLM6RmPS^Ugr?Yridcj_htE$l;*b z^z>sFD|FMz94u^FZnR-6)KGGR+XRd4H?m<0GLA89TJRS2d|OJ8;Azp-ZokO;59J9>_H2v-q6{{my7&U)>wdaFvAGvmpM}9eK!k8?V7x)iA^=qtW{d zvccfP`;|yTj@BjGky+h$aX>b@MY&^K<=p05dZ>3CaRj7qP{;G@h##1Z0#Wztt~72~N5pUZ zF9@E2OO_%phlrWdicDpMZUnDR?Rqm-)0?g|***?^%PGAaJ+d$T?*pYJvwRp6L-czZv}% z!~NwRt^_DR&iAY(BYKvycs9$fKHX5{s9uN@#u806nD&)&-Ibm9VOGR#%n#*!P)Z2Q zbe1@{fm&D^qZ8C>eJkMn(0RR%?TlZZ{=KKNO=bQ;JKi^~v_Q|>!Y;cyuKrWTlm)1? z5Osq5awv!Vl8KsO<)$p*jqx+hlavG;W_c<%rMIa$`r{+SZl5T@aT1SC?<>|msWxN^ z|2VyO--D%D;i;x8=nM#1XXo@F94+*BWTL2tg+Ko;ktaDuDZus{-;5;YQp(^T)riAh zlnBL%!Xb+=10l{p+h>wobYy=;$N$Eyg=zl!jl2Ko*2n)yAftI7!*9Lx9cSpjbWQoU zA0ykpJbA5P+V<66Sjs|6@0pxX;)iJy!$F2(tfC)b_RY#g9iM#6(&ceJ*T48wUKzz( zU&L;M$?+!qt^4}v&EYLK=nNQOlbv=uHgYji`j(k^CBsvA-q4))_7sdnW<1OruwK5} zd*_`hLrd43jaTyPVqL|W$qc?>GoIazC#eqyI3`pgOh{8;(G);J(!Qk2pf9KDG6aPj z#{Cz0Bkkb)euOTUYD9z z^u|);<*O^F9_KNA{57Lvj6z+z2@@`Q@nsnyy!vF%7be*KYF#8M*Im?-1YM}k+2M1s z(zt8I+rBRcWdd*7Ph|ozw_}{?+_2Al*f2LR=laZ~QW8(Qsi}w8zqPa8EENI0i?cY+ zZMDpv(2FfapZ7W+ZcL83-jsn#)*XT3m95sot%o@9Ie&Wk9%%~ku7f99-ikL&+idPYSQZJ4?u$I(?>0LRwOIL-O!@Vd3v-mrJ)EInVu~yi43fGyUNP zjgv{YvGlU2E<3mCFISOmXkqv8$WQRtacAaxyU<5o$WxJWdQoqp(~@AWceQ#>6(M9T zbX~=oyU6!bSeGVsUr#IQJt`Pwert#72yfoI@ax2+N}u7t2jp#eX;UEq=;(B z%&Ow3%SvFxi4C3AN<8@?l?zk7@Ywq6K* zl=z(tNb+R!XFb4b6)t?@Gyy_I&gTVJw9#T`*iu)5VlHw>tf;w1a+dnuitS7pHgZZ} zUXRy2cuu_RiCq$Ot{%r)IxMA$^xskH@5FuGvfh<-Z%W9qWe=|gIydkPAp=z6u4C^h zSp8zIsPsw0&*ty^vEogBhJ!(cq~*fmXbn6SVN)u=pgDt&gQ2&BWa8a?HvFsKCu8n< z6*nr+Zdx~MsWvXk@RJg9627UzMq~*)*>Dcm*%c}LB`0fjZyu&cMJi|K(8q}VI*5eZ zVV&WoV*8&d4UZGCGHiA_v&k_{XF}X6PX(p9WmcaaUP3lBlNVSvZhVbJ!ulUqBF?Xa z90A=!)Bqn?vg7NZA1*qwgX0f`EhI-LA>d3FOjtOGb6#!WBR;sCOV%EbSM9j z3$3-6t8h>CcMA7jOTw_RHE*D9!04@1E=*2_twk-!f;b;WkM0CG<5AJqnUA~P$@$h< z2dVE;ndJ$#Q4|Etox)n%b_knU;AGPjaJAsMX-H_iYTDC6=J1Y#>sMlzn6fu=aa=SU zn?6Q!6A`z#1MS!#OBd8~FTRkH5?r&a84)o{2#(lWX|h#|O%!PRX98!iGj<`JON2rS z*Sh5KEnv)WRdkBNlQFv?=J3Ln>q1YLP3f_=#(YBomw5dl{_8qUi?`Ul9cgQ^Kiv^u z22R9pZ<9J2*Y!#%KAYBBs@TVB%tow?dH$;z0oDnct0jP`wf9=h-Ea|E}=`2(y&SfH0yk ztV7aOy#1pbPRyFvn&{jS7Wu9PNRj%eCH8PstLwhd4R_AQBo6c3Zx6Co1AOq7;@f?pj(=U(eUIgA^6!HnyPoWN7_@_wfFgN$Q9 z&<=3^R_proW<%=>MVlX`$Qjh9u}~Jzg#sURO1g`bt#5%BgZ_@i|1w`w3jTY(uGB22 z@_K@TqJ@isf`WqjKUbmuaSK}Oe?D&hy`O){*LQy}{xe@2v;5)fKTXJgnvnlAA^&MY z{?ml~rwRE_6Y_t*2|1DLuNmX{zvpYbzxn#sVAPfx1(q`9I(C~vUO1}B@Cm|^W@#+} zK^PWo=nT*a;Ju-W6%Y2y_!eX#n115&|zU#HZRN}cTi@2u(#9CVDXoc)ZR4lnPIh^RN8-qYJ_ z;h`FK>M`qCm-D~$BlZ<7T<=^yt@=F2@je@bq1SA=nJ_2ru;hgb_R;zRW+vbAh!DV& z0X=Oo)-~TtvKujozw!NqPjFJy-6($5xB+}x-y@u>GtGB%q9AxJw%R|M5?{$(_7q8i z;A(HXq>*O3v`{#BF}oM@;&{qD`gKJ3;?;eL^_=`Y$8`Sw(lkA4C{dVd5_y_0OiBOb2a0|Fwev?{q>ockcLy!ktamRxlcj- zwpLga(c^9kGJVIRosQkIrZ&?YQd+JwAKwxi8$XYSxl-(IhnddW;GVU%5qJBNHu}}+ z*4`IsSPBaC7Ck-e(Tcm_ZYlp>t%=MB_TLq&@tlYga2MA`JMqkv7%6uMCIta1}WUxo8k z#u*8gyf97tOrR29SCp#ohud5NQaII*iycTp%?X{*tt<+pR;2RcB=~Iz-IvqDF!v)& z@Jz@{8Vplj>F$feHt2ajB z&kale9E8kdf=$h#J_n@V%wjn(E9WABI^@kkk-Zfc-eaodXTX-rCX`Sb?%Ihn7N{QeI8O>Aujh)ZM1uRfnpaL6`bUTSxHIxNxr zCF{$T75~z&w`?0$b=SW`3;=+F3)hQd9{qUo}@)#pKQL{SQ-6Lcq zPCYQ6$89vTs~z`yAI3Wy{u&oA5&zC;G7cH@6)O7KgPrbakY5#@wCJwp=D=oyK}}dL z>roiH*&KaL3GO3eiyrmMHT}%rk@3G_>rR2cVh8dc*}Cg5wqEcPoAE;FcTp{7jeiZ* z_l12v{Kl?SsOs3yGMbm%^m-tF_iJ&!_mKS2NHP2CJk9qmY7{>5VLVY&irhok%BmCw z@O;}EcZ2_VvTxMH7y|Wchp)jO{P*|v_6(gh=Hg#cn!!#hkVtv-5OlLw$gf#<<&-esP@ zf>bTX0PV0~x2w(e$l2AB>fDlxrM2fRs=ZYv;miQ@HYN`^+&-nh6T{l1vs`C*1DA}b za*=_Uye%@A3{hfwT8h?K$wx+@;nvF8T{hrXJ-IP2FxD@D-7gBf*ZijU{t>NybobHY zC4I*uSx-{_# zRC;D4$9Xyayt+dH(0WGX4c&b=&zcSC4+`oYa3fY(=V@6$`iJ0cZwAnSSBA+3gr(&w zk#g$uJ`vPX1#8dafb0>n-qO_V^G=xdv_3%Tlyt^;9@?jcR%ib2nrt@70BHwCk zpVO~Y-gZe;bhL0m45{HeG*{w}DIbQaMD2CZ#3?0Bgq{D!)!Tq9HE)~) z$Kv0}XVA3AoZCAIcdpnhAPciS29S5Rm^a!U`2Mzmx@|UuHhu4d2*2b5CPNe}?QEYcFXxBCg&f0s zv8gwP)eP2QMl6+8yg3ozboZ<hiS2ot@Q_c3A+b||PRCVk3u)1yuR>-q3p%07}O)1m7w zqL@2jID@S#GK*wAk;nX|EC-v$LYDl|ZIM#{@FkUTav|niba*$!dB5W$Psn$O$jaKf z!lP{Wf^)hV_%yzoE{d^n-4H`cl8J715HGweuBF@A(p8^YmW0mpCP3`hIAwhjA{M%I z!47e|(9VW5-AVB=@wu;GOy0(ur4BNUufE}{UwdvD-l}Dd?VKZmo$Z!JpsUY->|Uhd z^<@msx7u3wt9nyu&+8U1STMk)y6`yfsJZPdn~fRGtzb&cGS^V;M{;iOC`IV3>!2h9 zi>WsrI!C>-WzP}JyfPWmV?+x0FfHd=wR`vypMMJ*-k=_J0)TO$Z2Sh8P0YL8*GhJ0 zbdCIibOiR9PrbxrLoIOZXv3fx6&h#{sz#}X-w6ZgYqQ%of4vmdn_fro42FL8W!@Yf!ac>VW;@astv*g7AkTw^xk)-rtbSWHONbJU4 zx6!F~_-CeNqODCxK8bKT2}L-!hZ>2-Okv%#4dpy(;P3&vUxvw^Ph~~I@)sR$<|OY; zEv&>#Ym373d~LgnaJCcmZs6BNNAlZC#OJ0u>I5{>3F!C2u*bZQ*-=tQ!yd4u$(J_; z5F6O$zTn2wee%j!S8f`IdtO7U?)#4B7S;ieGPX`f&3X#y0N!(ZH*b1&JNTPySxyw7 z70DAeDH9Bcdt6`+U1acZw_caoo&9b!>Wnn;_!WRpC$Uxsr2ZTt;kyiy2+vY zgbg}Fq^(RV{bk|=8!5MQW*gZR8wUFZxym)t6rne;L+{d#;RJhR@ob?O(nD|QGJ9^g z)*)^P%40l<@AqisBgr^>9Brzhh9Kj0Wjk0h+)V9TZUGUkw9tw13(g{)&U$5XXkp=s20*G!GHSeT|RExvp;SQTNJw%-u3t zKh))OfT%OsKKtb9#^VoRrl|LVL~QxqBC#OXDBCJMeB;@bvPcwA)H@wq!N0QZziiP3 z%KzS?KdAi&i+1{ZKmXFA!~b6VXNx|N{A1C7Ec%Z{|FP&l7X8Pf|5)@Ni~jFhG@krl zGX~bbx9I!7iZ^BuvNK-vn1IPQUJ{#vHv7JE>`$U zB1@>><KjiIOuM0?!NFf~plRz3Yz{?eN7|pHSo}^o+O$ zk)zyNv1)P>|JAO|ze>hHHy2VT3T^dY5x4ywEXmK1EV$;McroO(^?LYmcU&kfN6HRj zLfmv-5VG1zka6=a^h~Mn%>{!W!NrzQ+y$%5$JQy6u-5%F9H94;{&*ML?NQB>vuG;% zi(ZZH)({wvbDbTxlo;+jxq43r4XTsFGsYPZr(`(l`uqDd~f?RJ>m3P!pWB zxZ>S$0vdp9*_Ut3ca;2Gei(%1fs0+7RvFMBk^RSr!32-Ob$U70$!N7L-xGMFfx#E1 zAc@!8$sMiR+^(9#KO(sz7SB431PIXel1`*h9o<^A9 ze7gH-j|8JOjNbdXaoDKNx3=fjLvtrtC;Q|TJbW~{8 z{@c{T4X$Br?sEz3n*RO-Ge6QWP>({UC#6^Dr}xU*TjNOW1ih2+^H*p?-3sdzG;cTNkn&c`O_J=#!g z@P3TcB8NQpguQ3qoI^`>eNI4ys7bGzj68cf`NN!$TwE|bD`lrTUL7`~IyH#)5mf0~ zhu*97No$*l$PqV3X)D8M4{l9};|2R!fXlV7TSAx&hA}{OO4wPCNQga%5wM`pxT}__ z@Fu5iR(<*Yl$P<-_UIzJyzjve6ytdGZ08ALlj~DW)Ax2F!Z!Y|c!cX~?YybdplZ2Q zxS`s-{_$d0ewV&U!m+ig`OUfe+5iXEvcVd*d{bUB!%QUxUw%jZwos9B_>V6P>QsJ^ z2;F646Y0j7@5!>5hG>WcSQBR!v$Eoe{+qB4)Du!ycg@5IbsMz1g8kWp3j@)6$A@7MG;=bph9woEV1O-^xf=X)9F2_jJ{Y1{k^ zEDookwkW>(nl4ip!(gT%RHj?R&Z((vmF34_SQlaZC2tRs{nk$Jq{LlKNg}1!A26 z7wD{sh-tqMV^RBTp(tsfuZb}7{819-q3U3f=y5#4-JBG5=T#MYL8!0VrI5mMVlBIL zS;_a?Z+>c#ZuhPzW6+-dC7dPeNHu`#a1Y#jU2klI$|qj`^M>*8T6TDmaJR;-rdt2Q zqVn#u*9`(Q&08ShQ3P`X}E-#vU3B)Hlsn^IMUZE?*Q2y+EG~-E}Ws zxHR35f+ppsu{~jy1(WTAXFs_{m@_s#tTUd({zx3I^6N>SzI2(x2fMi=Maw_IxKfEc zb1vwdHVpYh0DcZWygK@wwq)YVG3DM)@BvS?w9~GDRHq>Xm3C2u17LFQ<7m-Btu^#K z5$45`ADjKvQz5kH%|qF*0-lfNj%l1t7i;v$CzWH&`5*pHi2n^et1JJNGMoRAo@f3+ z&jItchOr+}`p>w^aYR39=W&xgudYj_ZlH=aAJUb#>=Vj+&!3WxZWVd*I{FO>Lr)Bg z%2dHXn=n;AD>0E(`e%_(j&p zPh4|r^&1jjy{bqb&z`wZ@3JloUiUyx0YvSHiHSI2x6a;+wd%}boI2+OUypH`;PcJX z;o4`u4a?c5i*P%bG@T1&7L#1pZM|Mr+CltPtU7D zot0ujAORLnDrAMx=-N-v4@fXq!&vI))*Y4gHuxhIVYPK+fY>9VBjbK3weT?Y@y9g} zA`$Qzv1c^x31=qZf@1+}njUXm?IT4weKW(;F^BqaS%S5YYm8lPFQVB(8IUj+#F%Us z{mQJ;_m*K6*a%Xpdh+OSp*6ob=P3p^<8wGH4!Z6~i`uZvLk0Zacp>J(1XZaxHr#dz zGU?#@3GXx`iZDZ(^_x=HwGKtjt@+kt?-Zi>bhHunb+Kv2u8R|{g-@N{b$#9SzS*}! zr%CF)ooVz%+l5?k+RwM_(cW065S9vh5E)K_WJ)y-u~YY&y2w4%VDFlwOBr%w*X9}4 zCVL;W8wAglsWfjiyM^XgY`I%m2Ps!y1|FWumx-SPc?36bnPxj04v5VJYiJtzPGnk# z%ARIR>mIQhI^Uj!Y<$!q)~~U9b~H0^NDtnNXq{;#yt-O?r?)+MV$7$p`ub;Z1F2}2 zuJsHcAOJg4JBiQ+%_x+9MF!j1I0MhCd=1q`^*W+(q%JVNjH}zXv3Zc@KKkxa$AL!= zryuM=2+lbjq-O+8yWnPn#i$81jzj2|^`EwUuLxFAdI=%GS7`TJe4{^2N?>ny8hZF- z(zMs}Q3f_ps^~<8;99P$#sCVOOFhUX@s-MCdouE*0i?*(Bu!6)3eBREMAs(+z@5Ld zW#&6S;X>|X(|8?nL~)$BzT@>LLjrAPM}oGLTtO{nf`qrDIE4D?(zFD78;@3J_;7=q zGZA)YZy(O(GRW;w!p{(?fh+z#i%^C&y+OSj84ZvO7i5+_6auBSk<1@Y4MCVqG0Tcc zFXG4qz?7EN+hh>yA4S64stp*xw>vKD?(JqK6w{mCUUw|6; ze>^i}mb<*vFx2ndzsUB^)DX$3LegH^e;sO#_p06d8^)2r9Tg&)7XCzcM!36V(Yrlm z5{`BojsSNgI{JgZaNPo3F4yk|4iRpR#<^|uai@7RoHYheIY~nz0yOQ@^Pbf^??;eKAiMQEyG_&w zBMf529?xrKw%c%h=!yeEFZPQtF9539Id4e}T)>`CUvKS8S}|K=G6$(g5eIrVLYcXd zYtYibod9>!qjgG68)k5m@wLBY;O!$24dTr07Ly3w2S^(aQO7M8xeAqDaX@nF*WBcd z13(zd)iKZjnNDX02=|6>RQ$$ci43@c5BU_z4;+f;Uppwb=@_+&-ym1d=A&usyE5I` zw7=u;zpT-QCjVZeVOsw|qaXg>&%e}Y(szGl z^*?L0x8@&>{-e=X_chRtf7d|!0kmgm`%%MC z$iwx{#CI5i*zx5T-{831$*uB6F~!5MSc9Szv8Ys-e}n}mJa^!KRiuk*66sP9`!$d< zmg;FI8vF6dYKtGd-IK!ebhXXPtwxJZSw&vqlpdVsHukV9nzIJ?143y|qCf1u@$m}% z*p8Jt%#?Y@95Yjtq@Oz_pj~L66W);1mq@}{rpVbJt>bIrZc!B_q?7L$^e)=(8c;0X zr=3>7#83^Q-mFR!*jFMWsL=SpMLL90Jik^X<*J`2WK#HPs!3X8dxgaMUD8;A zw1kD7$D6FVg>e%owkW8Z3rAEo<<`Hx%iwF*0tJ~hU4ktQg}G`>rxtx8jlGpIeonEfW%25r-qHcGJL;sum*)@Anq9 z1yx+RRgMK}eJv7-)nkXq332_M*(zZ*nF<#pJzM<}&6N^>bV21=dRL5La*3o)`+)A5 zbRq0w_SwapN~`GLPS%UFXdto4u$=EuNNqgf`QrGCJP`4(TQ!t;q8At4C`=S+-e6E5 z7gSL#fctzxH<3&foz7eFhwt}}-}DG=nhU|kWrz*v>>?5Z(U^$8Zp(30zjs;mFO@y8 zI5eggwvuT!hMmpj%WT#J`1AMo_pRLw=(NUgTuru44hLNsTLTaBeY4}Eg@L)iSc{C@>}{aIZ9kw@={W5IrK>Vrl)}RXC#{fj0H_ z_vBTTp7jYmX*rEvk-heOtAg3vxULpH4sCaKJh5U;z0#_MD-YdIdBr+;2ad5p@WUgW zWxpJ<0s+4FeNz&Wyd_`g*+b#Omsz+($WL7cRO?krXfZ|ch+dgpN4S=clIdb9V@q65W#*Yoy+D6vMg}dwQ-u8TfP+plDP^3C3lPaPao1n&3 zqET41w;Cg3Pa;EwBZD4Z@Lg71@dPJh37SOOW+&hmHQ0#Fsxp_>`r>=(nEIsp`>%9P zXT$mAEU3{LT#k2Cj;^E`-fg2_8XR>!7D@S(U4ZYS!m3s6OGd*IR8`p(XJ1D^+6b~G z2?D|hq~|ofb@jO=Q`gVds4uBa0duJs(KBd$=t*+I%8$}3KMT9eb1Ypp!+R4GdcTn4 zu6>MV_}LrE8(mDeaFp#>V-q=gf8txW)@4^MRx@W6Fg)XxsI2uSct}3Pe8F_G8O`}b zZTw@(dUquD*s6$F?F+d^&d!@4)_u|UbatXm!Y`E>otmA~2G{sl^{>2xr&&YFCd5Eg z_Ag!AI)~6PrdX-CqkCgp%(^_wNDPyLwX^onv{GV{JC+|4sh%10sy8s5pHm%8{Q#5p_4trCQ{F+v6` zif81BceOVAcApbp-N-z2p2;4u0^UNRvFLkz`1?%$Km9l6@5kWjQ2ysJ_^r2=rt6fw zd1f!uG2Tpde5RsQeTp`Tg7P8xrz70>uX8=>U;6J$43vNLKnMKgzu*0|V?R|?^jwe3)%CA30LJ4>rBnJsuYQDqxwAbHD3!`iYb}dQgx9EQ>JpK zlJqN=E063{Adc#GFH&vVPVbja@0aeE*7gMj1O$8w?)Se%hDG+uA`z!1sT@rqNTfK%`C8yD0|Lg*`F# zbYf8&rWb;rYF^~dT_3zw1V6+snbV0j)R``Td7Y_A5mU7$xnxlLGlr)Q1|=B7cUlCs zol>sL>b(~Q<&hD_8NsopP3>#3A8y=OTxrGnM=-eO^rRf~i@-PeBnQxB+9&p9oYkd7F5cb4M0a?0SPtB2;+wCAQ1lpt9-dkI#Uy zSyWRWnY9H3zq~UAN8oMh=CKpxsR$_2N zLArKvK3Ji4QW%*WJ**PwdklFnNd*N!a=5Pr(N-!vco9kivH0kp7P zw!Yf$)1Dc@qu6>BkGj5>bZu%xv*x^1oz1i=lyWNQSF-YDt{oc%5-pfP>EztD3KXEv zKkK&84cxga!Hm^0Z<}es0W_#YOZDDN4f}OwWyyDl;16r?RoG}*gkMn0I0){R@H=!$ zS;>ifStC&H_pb(yV1-1?pFYpQ-|LszQimB)(B6#QVVb6{_pf6e)52`~r79cDm>NI( ziir8G1pv;=PGG0WQ*QxNM1nAQ`w(3DChE;iYW08-(_NzX01@|ns?S8=qrkCiN54GR zdWGR>dn7!F2EzLT6hyQ?&gbl-qJg}zt}{oj61wF=r^curS912BWP>l6&TUM-pbjJa z)HV<-{jn_`!N7UkgLn>Cy=gDnq~Bz46`dyPR;Q<+__Vt0xW-hgXY;MSij@jF!!38q@ltQ# z2R~$*zR;J`qt?g14@6c2KOvvO4&hC$>cOIO40McbvKRKdjOA|JPa3EYB5o*{T7txvVFNpR^G-LfyCVpwm%w)@UZQI* zn?5@mk~bx>fvCIaCh1YS+Jp;!ly#pKy4*r8aRNRKSpvqwR@d#JToa(KaoTmo{(z42 zJKe|LDCn>#3+`GHIj__q!(G~HFWwyoUwX)t5;>!ZG5Din(VOYvBT-7j%35jfPdm_0 z{K%;)eL&x=qbX*IxT#M-&6Mxu{nkX5sW?~>NcNDv1`@eTx>%!s7ry#EMCx>EZuzzU z_OU!*kaK5kZVPhUeODmU_Z@B>!ZBY`fY~?@3ol$o7W?i%?>&E`0(*K06l6VmA5A}+ z=(P`OEkiQD;I1o9sRx47$7#3^0~+cnW^orOaLa`@;A5J&ggsVmdKX`{%|WgYd*^IL z6*BK-;h-h85^bb{OVH1DqZOmQ`z){UYzr?hSoFe!%o*Ubz`<22_;tIC*mJ3U4OVY& zBgRHMMRmX?hfGejEZZeDX%4bA28mp~5bbiP*-$t6E2gASP*4a}tbF9$-CZ@UtQDL+ zoZSDvwB!3n+F4kdnwrw|YGXfT<&0nwxu}esV0_%OBIH??vD^KeO{e;FTK(w{0aTRj z#(#Re@7n#}t8Ieze^A@%zjya9)pqFb#eY^?-p_y3_K({BQQJRi`$uj6sO=xM{iC-3 zeYG`p{AzP>%iRzs(5BNvua&h^ z_??VVssyL5gtfEBgXiMeyWaq>a=!0x+cW(ZGNBIs_*oW=J&k( zeivKa5BSum+*G|TLFbe9Zj5XREU#}R>=j3{sf6{^Ep#I*EP_ugUCoQRM^cRxefc{r zK!WXu@7q`Ag@K>D13~3vFUtx7RU%Ox?=c+GiC^02bgb~leHDq@bm(Uant2KIqVsZy zBcW?n&|i`tXjR%1(50+VZnSH}SJjHbZ}A_7$QHk+%BLYb8ta2p`n+58AGTM0dY^0& zu2RyRo%6}hY4H443~ZU`jC<)YvPtmQZ>0gfj|@;cEM;5LNp@b#11t4-da0RV>E!(E z<&W9>7E;}JezTWn-z?NIC){U`F90OI zvbWxqSe(--oy2?EL@)8YL2Ta~R_3Xdewfy5%+3Aax-c=k>hbXyuoK6pE>5TVtXY(z zewNI*%4624q;8eS|MWX>wd!X(z%44lrpZ2kOILEqvVO~aI#FcR<;9>JB~0J7V}uLc z@;=a>2k#;~PB=WE>^iP8#R4%HsB{0swI1ESP4va8Sgep|reJpYd~^Gm=g)wS{L4Tm z;)DiX)8mCedScqOUt)2Kt6{n}N;=fGdPmSvf8o z$3#du6(zrgxP-e^vz68COD_r9)MLllZcXA8N4u5Z6(x365FvR)bmz8d~|wV-mHtd%g8PCV~Hbg z9PWMtheZpQi-IaOA6L~bwZW(j@rZN14yO;2GqO0lD^-e((3{*7mm`ZTT|KOa2j`;} zX*D<2emjF@fX>^)?^x(%j5P1!0nh=gd@G_MJ4VZ2ulF;^cg{xGkM9lWNLkJn*n5-m z@UAuL_5JBy`&es!!|u*&m1TZ+;jpyC{O&dd%c5WLOPgqy>J_8A3~}{+T>`H%1Id~I zl3!*B%6{c%aEd+Diqk!R(j?stSUuVM4*i^QxF=BOa;dpjH#>#MAEV1hoeAE>Y@Ji@D)5P|)@9o%(cHhIrA`rR zUW9MSei5%0{`L2X`G1;f^#8A^dQYOD^ppKW`|AGJsXOs6O_lp^Q|C%Hr~eOocNG=o-u?|7rKD9#T0y$IK|$$|?k7kpU8%DYrLKu305r$!adDrvqz2Eh&=h^%DpZpI!ob@}okFM`;eeUmEcN+WD z*MW~!5nOq4`0`BYRar%^>TJ`#uZs%2eM81HB9Vdfh1P_6{Col4301qDgWjCnt_1=&|FgOU_dyUBYgxUd-Hd}DS$!% zohfwfzCn)D7qp}v=9d0##in4vlB`qoy=z>%&%HL#;SE6iQ#07xLz{PHeG&P+?M|GQ zw@ny}q4hkuZ}RSuJdncWmF=LXfWjlvtK}pLX7Kod)@wM6OJj5taBRb5Emio$SSy~z zCz`k4&dQMs4-r5Jp$Q>-3{BE%HH(hmR1Qso3_aT0>1}ZBI<@O=G-`k$bG>2cT zBU)&-HVa~UC-qm+;i<^r4{(5CX52;bu27GNMu^ZfQs#gf(*iJZ%~FEPXl@E8MrIt= zgx5O-cGn!iH)CW@hAA^Vu#)21v4gOG_5|I~T6)})d-RzWAChkS(ai7_$T~}J9KLiI zT|R_(+|ox0$!vvC(av~NulvfIu)9EHhwk6;fT^35_V10g!$aBBykFl8(9pE>ZB{%% zo4c8`R2NfS#C^7jypv2w-7GNH*#rl~TMD+yp2uC}TcwAcY*row;sdhBRqZAQ$$>NyF-cxR6Vm3D?Foj-k~50y4eYX zewjvbT*8uEL?8O)%u&Jd5)FFbpx8(fP%aTo8*v2O_<*nATG(JCZmD@go0Q-eiAOfE zqF++P;R@qMij5u6zZ2gjx>f0rd(cj?$Q?v+MQ@B_fE!!Z zq7?*BWUJ`Ge4(9FMuta#qaLH57PoiAQr3a@xGs5J#A0qb*F}1EiI0;3{Rz;To77GZ z>C2&9t0d?PCWs{ zv@hxpeb!|m?J6DFk|paK`gpf_RrWE(%8Fjeb^z+>*wDq>G0q6}JVeh5Q->u#Xs3>_ zKOOYrFyrbeJzD`5qHPi$XnKRu?@-MlC!GY^4&~pRrRt}fFYN)1Vp@6J-Lub}okr;; zP?l*Hg<9WqSV>=N(zoa{P53n;38e%J$xbewV^hFIS;76VA^0rQ6E~+=s_S;U%b0=S z2mynJcKS|Odl6a~Db`Z0j~9=0Blkp~Yz@P(57vWaegz|C4BUQxPn)knr}b|t_i)2W9_XgdGEQ>W* z6CJ!ZrX-2sjUovn*9u0DltBZ){n^lV=9o#Fj#R4R)73NQn#MzcE#8_v%bOqs@3rQw1NY&T<+QX29c(?t<9IZhr96Ka0GL8 z>^y}mz+guS{!Sbqk{J6l#IwNl*Oj8B;@DlCGK5Vua0+ltOFo`U-`sRyK-o}FsmfI+ zb6sJ9!g6ThjJ3ZpISibSAIe)ncuR+L^L`LjAtWVB{LA$H4bBHl_k)2{prbt7s!xaH zdHf**CX8#J!fAwqq|DxGbK1=E_EB>@w zskAi>*RG=U0!KTZ);rocQU6iri$#^688Z0nzWS{L1!7^;EPo75XT zw}7zIcONn29_zkPlP2bnr>aWLCvICRnii03d?4KzVJyBjieoJ)tx;ShPNf4N7X6XOMt1QMo|{yr3X@ra|{v85|>sSkij#U{r>< zF0rZ+NT)|2X4tVxR7Ws4KpIluB}_dTQnl@dej@_hqgt*m+KIF# zrFoxMd=r+I3UXqYI`YV~bxR5Ouba2+NhtDn)#{g4_T`j)^{-vc*ae;$*qS#FgDW~) z+|38z$}(zu@EwBo+km%f>MK;-tiSHv=ow%rMqmbT34Nr5VlFmJ6|McK>-ko4E^Wag z8c<)UG~h#SURn7V>E8b7L_%EHm3`)dpao<@fmX|r3k8!cSCsHOT^-C2_P+_mk)ak|VA9l|C|b>afBa9$CKG2eE-wMH;& zpw0cx#{dh}n<(|@$w0Gb(Oa>HuLBgxYMxlP6kAb6lvwX4@z?%*Em&X9CDhrO8@ggp z_fDO$Dl_%Fs?h+QgZ>%xctnc5@q7zX8LWOzONq9!Ti2{g3vT`lq0#ped7fRJ{k&R~ zrB+4BR%;AjBB|fYt2L^ECkq+U7)Rh$dsECD9rQ#wXS};)L4FC9^R$T&$35s65JJ4e%lvzh(3>o8x-K25{@Dcsy7%~Z0`wxZB>%i?F{1VxsY z+#rE{m|`^^VcTG zwm@`0p4!3Xm4uWi4Yv8^&tYEt+=3LiYu+b@;&`=H#`7v;<~$$#E}d_M^{SJ8W45N9 z0gn{Z!0yZd9HKIv?`(82+}n63Tpry!!I6QBQxIE4$9bmb_Cy<5E)OkM8D2GdJ#;a~ zHEySSJIe5~DByl`7rp$c2xaI4s+Wpzn{T(i_)SjQt`g-NGYhXoC}MxDv($Mt4|66m z<^*=`eK)AxS0y)F;^_LhP8cYJ?kiHiWjoqeK%+?9 z-IPh%2pGC0fdoO2y%$k;JZ-d9->aPlU?|s3*%~3HB^9BV`!S<#FA`jOM2nmG+c)V) zAvcdsu4CRVuOw&JKFjqKpUOpBV9|Mh)fP!0U!e6j+I;Ub^ibCz=IjtcWYa5@;FBu< z7WPCA?bmnp>h6i$JlihIkh^RUKBU~CR?(Zu7)iz}oh@$^9%&)09KdK%=#(B#)&6Qe z7ruL_4WRhu_~a}uChxU$QM+8gt_GIuk$}MFw-kO^er;A!&%PJWNfH%2-g;8GW%O$q zxNh|u3l{NaiwnE$N>WkC9M`(@NayE;oqe0=?Tg`d4xa0E6Ohh}ZE{yn%Z4!|Y!j3l z1_nKutfy)vc+@fTaL`9Ske+awFQ8Ravy41=Tk~-~=%+$u5G`(obkBSYrjoW#k!T~P z?4XY|KUBs%e@{+%LVoqviTvv%xnPY9Z8Nf;_+|EFUf}AaJ5dDHI6Q?PWO9Hr~dT0Vz+W$B-XMSJ|3o#3b4<_IaiU1AAu(O4HX)bYYb9-{C$GDD{DYXu%*Me*l3Xgux_b@KOMc?l}{E-nCf9uFne>(Es|8wL-N80YQ1Se$`rBW6h{x3g2 zP^YH^`BbDTd`}v&jT?DWdhsn))al|9QX&;Wi!-BT|N{FPt z--MFkPOviPaECXZj?*zVl~t@^6cOcH?X9xi}LBP2 z1Z>dva*1=p$biXGeVO`7(?{%x%JU(8$Qy!{p}kGKfC=Cn&90ZyxpwS@@}cJC?#0G- zdJG&S??ZD*(mWjp5Ba5l$C~^rQjns(kFtP2KW{&*MdSsJC?rWSRB-0Z$2!zex~5wF zRi_s!ntfo~MmT4aS(9Lc>w?%{cO?iY5D9OjJyz%{Wx){(txu<=Ki#=GEfEgt2E6oE_n_8o?LdFvB5_U!W+5X9@6C!t5ljhvk;so)`> zp?vF*IDM6)l#{SFpmF}w{deHmx2?n*P_v!H9c>)_ggY4~A# zK#N8~vt)AE?ae`hwW);p{JYp2RiC3~a3`x_viHre{>qn7-kSrgb@a7UQ&GM!bLgIQK$uctOQtn!Ah)zWC0%v3QX4K8 zG!j^R2}K!Tp5i-EanS*K?1?8GVq>0}T8TLSxT%N{V(Y&%{0WPhz@+G_mnn#X^TXo% zfDStJwCnVkoF8_8$Af35Yrnh=b0Md{9r_Njd5N z5N83U9yxTh5vpTV`{-=aDLB+gn~O5`(8&2Mrs@J{WF+{bO_ND zCL21e*e#S*4jYX1OV6;DDKH4yCwa^z8Qf1JSO-5feNPy^fGoVN$FubJ!)Tu>Ewso<&>Wl@W33dJf z-#)#;*sbx~y^va3ee40t)&J#}>qy+OS4Wd;+jD#S$>`};KGeq2F{JeJm*p*Zdc7Nz zJJq*ar|aK6ifcZ%SMd<#qcjM$dIL2requp?eUG+$4WD<>mo{T;WphKDDnA+E{1bj| z3nJZ;jnWM3oGk(R%@T~m9?j#7nITci5UoL3H-<2zMvHsM^qqmY-uBHCzfm7+z^V%J z)}*TbMF%&OXRroj@czoJEYR>XWNz7jeOK~KgF`BC*Vs^^3%p6V+YI|2&F~u9t5{tb zwh|4F9OB-D$w%Moi3N!r;8W^-?yVJOanJh<0X@PD2DIr7!SozM4CpA?2kxG~J`Lg? z3Y6Tc;6h6KThl@^@BD$Zh@pZKN)NOY)qb2m;FivipXol5covQt*BpY)dEtu>svZ*j zq6-hbXuEV82xK5XN6FKoNg}Qgb}I3IBqHD6S@U1P%JlzR^Z)(ROSB%fC3Pa$io77A zDgmdM7X#Y;Z@^qy_|L%n=D#g$sQUAX{uY=A{yhA5U}jJI4a~oR`8P2C2Ik+u{2Q2m z1M_cS{@({?hU`D?7^_$q7(}Xe0s2dkG0OehlA)b0{} z3I|=(*hLkZEm$=B^U}vIWS@3@6mzqbujr0P)ffi_KnE2UGdaRpn>aL#<%Iv8jmmIzIoVJ+SJx{IrEPXNy zkz+j!V?INAJ*s2jJzn95HW9xzw;C-@Tg0-T^8`8q6wiLSV0xUsI5o~G^fEq;;}iKs zm|-6qWEFyZ2Mki-14n$>4lmOrK*epe)Axi=z8q!hc^!gKB{6@)bx7|GFzgs300|K_ zacBnSZM+vU)s;7#W>qwv;CakN#+pNrd%X2-Rl}hhs!=0<9wjy^#;Z{+>C*^uJKoT} zeX1j|`~6bV7>m^eJLog+1-b%c|3;l&OrK3-z^O6VA+p8v?Ur|f9PLT4f^mXx=$no* zB`Ws3Xz>t%ZxdeA{^hB>(lko#Zishighrff-k~Tq=70x!>*avzaTiwobigVm4g zl|Ee`aj8Mum863wY5`Uq^Y$tQKGRMyI>Ghc`A4S8ejGCUYB_ripC%Ddu}r-Mi)1lX zojj`#UTe9;%Q`B;6hw3Ex#0^@na~Ex^{<#3K66@S9W6DKw%+MrMcjcB93rm>k^1m- z!P(TMmnRK{DoKIL@ca8MjBu&{Ty6Fg4nxCrz zh5@>emvfRKpRQ(%r==V&tf84vlb(rq=i6kCBF70cM;$uG5)?rLRKh>9*Lnlm>rTwy zN`Z!2+E&>l77SemXQ2rcMF}OYTv-m^cBo)n!sqkU7Eqd~_QcOYiL-QrO^JiJCf=7` zMR#~Mhg1_JGl{&%wSG?dq_j(9k`qc(&SY0x`_raqOQz`L-ge9Rf?ii(YN8XB zf<{|yOX^g0)s%^N`<&q8Nc4vEU}E&3=0rly3YA&g+v-kbO{(LeCx>;3c`)k3X1r~K zq5vX?XsM5E1tM7+M+Tsp?41r)*(CI=xRh58DS&WcO#X3k2HW<=+p4*^ubdc-3 zHLmRa?)m=O_hUi>+fuQ{Z#L-G1NO~Tv0d-$!8l=!>TAY|Dqw{K$U?YFi!Q3Pf5gM4 zn}2&c)aK4$5GOHrR+{(8t;(Tv`9@l&>Q&Va0kYx6-D*1QTN!V3d1+0#CQ6EWocc?% zxZro!z?eIli;SQ9l14IWsiJ7?4El~-n?I-Cf3oXeO{9NbiSSo__hsQ9le6b<+4Zmb zZo?n!x)5MEVf3W?%!EmGW%0wueyO?d4N7lYM9HQeax5t(7~dO1vakwq&o>|Mm609R2%M0N zU2LfrY1O#-%>zt+yuX5WXDm=^w>rj(0brIz6i|!0XBZbdchSbLtz~&or9DL*8Qq?D z^cIqhi^;TzskhG{2d{;sj;@RiCzClX-d|UILi7RX#-n1qiK3y;I|ie;o>IcqKjhpSJDf>4Ic7Y8^nzhAA5Og2wAm$i>={;B;4Hzj zzKrKPNc!N*A^*;!B#zpy&J`gsrFv?SI^xKkYgr2T?d|mT%P)qq11O#&zH-779S`#P zyaglf-Jl7-7?Pdj@R%B#8z9uPpU7vSPYVU@rab;-6%fKNPO4`u+o*bVXRfr1fXeN; zCit0W6Kj&J-owRliMC-q4HEtl!nNgd`*kBZ#ldP}mcH5=)P%eQc3OxgWG=KL9s_up z?}lcrrF~B6#kv6^rZ%lOp^mv2r3|!~3&-WX@Jy8QS%v-wcrvWG=rNt|@x3i}@`cTc zE|{fa=F^{&fDO1~V<^WKy&LUEUIb+WLhH*SIEzH8=6FrPvXhri%F?Vz251WD43gSy zh9^c%RL!`{3?uEBRDKjVcJS=dd>cT$XkpzpNtSvYnt4OmatlNPw^l>0zPM_RXF|qd z(9w_cu?uS!*fBSCBqHBEB6cqF0SIMwndIzz0==&gW;lYjX#wX9|9Ak%Axm*-#{Z;i zp&1Kqm-VghwJ77}c1(1yC)!@TgCWnuQ!oBD2WKKOq)KO_E_}w_6Y1k`1C?kAJ#x7U z2xOF!*s=K{2CxSTav{*8yk7_4Z%r>EXRM_$lhY^;rLXUvUyd%)PiTKF<; zd4{SPZU4x~hm9mWXndks(=dqQ6Jw)wJw1zn&%f(9$F=Do^?nZ!lBiFuJAhsia}Pn`s^SR@L%(P}6NF{?-yr zhh=MiKt1kdJ-ZqnCE^eRGVzWm#>b$Wzc?DG=!Ur%;8A8Ae3xIJy1}uQe#)IF!i4~s zH_9{5*Sncx$cAbq+`8hwi-dAFbo&o*3K|*}V~@ex{g=xIkURdjaM7$9c>w_6um~xg z0x#uRj=qK^68CK*PCE=?oirX35Gfe1$qpkuAQ^g_79jelpmoEqC7|tb2I^Rvi}bLu zwfkbuF!@a!%Fe5puClb5A}K3~D1T*jRBv1sW=m+%u|QG1*ocGl1d)yg$O_e-YQlFjob7f@$M2bzrMZ18mE_vU=n><;tbcTZ^-?D$g1&;eU;+i;j- zB^bCExpjOUR0O~+#c8=p`Jyroc|1+9Zu<^1+1D!!K)iV?(d$XG6%`|}S=2Y@KH4oNbw#ivM^agh99^yY`7HUDRJQX_>l1a1@Z5}>Gt+K(HauZ~>?j}kE zk*$&pc;^9Nn#`h%lc}3}tU)*zo~HwQYSAo2ngJ!5RvrkD=5=~NyRrEG!ug5x6I8(V z7t#*tmoypBcHK~nTd~V#IkcnCIxwV`TMF3q2ze)(-2KSaX2XvD1|@J_DY=dw{HP?h zP(+)7s_7^xeOxe%EBtXSg0#X^;PmZzpbTdy870Ar>B05=U`{p1Fw+m(~^`e z%8##=*%FqZtqER>J-c8A_2>tJPf?kOB1`9c>zRuqV|<}8Q_trknKN z5$azd`7dAntFHTETf4@6$vS9ksDiGU&U;2{tOh+mgBE9nVToeR8g2~fgC0z_;1zvcP$2X>%;oHf1} zYA6@cpf-6VJG<4PtZLtpK@?|9Z_x13ct&j|!G1nLR4b?s4-CsWRdQB<=Vr*uHhRpA zy?*BPA(YAzzvB zWgBA;{l$+dt)XpX00V zCfq@f@mJ1lALDkhv68t;IK9|4Ah`Tz1`qB6oPbIqz(;b z?aa3lHlV{7@ZJ_}`;{@7f9=y?M`Ly*G+*H;L;csLv-#7UQrvnm;DwMVrp8 bpOV z@z!C=B(Bc1A+^URo)Ns8prmc_K-%qJsj+JN{gL^-Z%0Z{2UPdb;|>|X*u_L<(}zk_ zN+6}l5>6%01NV`Z!H9u{skzk`tCi2@D#CPD} z|M`PY(7BUgO1Iwb(m4g68t}=tCIsLyi858eO@xyq!j-!;ozYHx_7Ujagn^y*|$P|W5f4GUfnvyHg2(L{U5ANnF!bk9zQxSc?cq4HIzm?;Y=(WKh)f4EuW= zRNX=C2|uR6z|nhnR|tRoq~oE>J-&I1q%C_5hl31fo|=dCh0X8d zil7e=TqT0VY0IMm*23hp$|?LVdct0VPHgeI?h^GB`%4lcvbs~+rpfFt0N@T#9(A>Vmt+TPr_GRvUTK0VeSRgD1)ZU#|+Nti1&9+Ng-6XLqY z0~4TpmmgyHVi=kCJ){D4F~qAO_^ib9Qwr07zZ?I#2;x3 za^8g6*u@ncT9`i*QdY1trxF~E$7^}>>YKqcK@d;jS`miLhsf`5@a{D}Zc3tf2=h#; zoM7(Q<6tiD#2+ZlEKAlpMUG4G;LovLnmWKlh!mA1`o_r-I{868H8o3pXlC~Dp|_(LlwSrs8rO9j7(&7KTxq=yz5;LO zKVmIP&0^GbaJlh6h}sMnZ0LVZ4eO!Xd_OX= zCyO%SU;X?wyfjfYoN|}7_gpf?JyV0!%Hy`eA>Af~%ZAx=^JZ3_aI@ml;w-p-svY<; zS|s010zz=9eG%n%MI2eW4~}k>Z|XaA&5d5TY{3c&mBmt}&FtkTb>2LxWF3|*WP3=l zaA@TuI63n*#tR;GVN6DkSux|+GsxoTK5~ec^AKZsXdQ(GC9Q}ZRwIAMQ(z}d{?8M+ApNsjiubV3_En- zE0{+5WNEq}>8~~@nL9lEuvULG5Xrc;(Nn;ZyD%rtqfl1K9uH_iLzooJAk&oaJ6;+u zX{p|1Ci;2-N|e^Bh2*|`ZcSE`pH-D$+wjn`BboC?D!vn}A_j9T$I?ztc(uk?(z$RK zDd3Z&5WF-S><`d*maFA)f6_B4!r{a(rT|CCvTG!Ii08qAqA4#FY9l=FHKK)gP1@|1 zCn8r;hW^%62_-Qx1XCakhS6`c@Ll;1NaBZ@D?}CVI0pgV^J(DgXQqG=LclLseqW5$ za~u5Kf_+*NTvTV|nndDjR0(<9>57}%=D5fpc5kqa-%@ubF zPz-W9)ZsSCW0n|Ppzjh5V=n3T@yqXXjWBdm1@q0eCv(E&d55x|(p#@S(x=|NN054Y>;4jMNC43hN{WFC^037hPNZ;vwBdZvF{xp~%0w#`LWT+*0gtimRo<^P#Cv z3HQ<7D0smDfP8jBxp&Wj8Xjsme~58TTH{xP7mV&~`bhQwZUFI&0E1UBXtL=en`NZ% z7?6epygFxHC!j;Dt&tC3fUl;od5#_Kfy8qONSgV3Le?uyg2XoXhrBvBqb?r@FwH}N zEjZ?;lQ8*r$*ynR+6#~qE59&~VWy{H1BaU?#Y~j*Xy4C7!N%{fA)(VazNW^^q)i2= zF9ch)W#*?r5X{qbk{~OO(9VRLk06`RcwC{OBl}FlLyAa>I~~Z2Z4_Gw1_Hf+EyX}u zu=Ca#y@Gdp-%9#?Hqd={%Q+G0_Ps%|D;~U9BqLtBWtE&!e+oGlSbP_Xw<>c*YkI+k z=c{Id2hBd0xiPd$@SkO3HwE-kO@@d*X=-&P8k27Y)w#4Yow!Ut@-@7myV&naJ=CeK zp~>eZu#>@UzJ9u%C4tW~vwa)f!z=%&V1DDiX4}BERKVbMEW*J>PGVlx=z>1~WB|fD zxpPha0FgQ$^WbXtpc9zlNh;N3mpF*Bf$arR0~k_G*P_8i#3VRH=no2#izW*gzOm4| zh4s~YXYpsj=pc&}#*<@yyr$1&4-idfVTz?=8)q*uH$86Kd(Fl;wa~cvCYEQ{%!-QJ zH$w+lBaw$*>OC;|^6&cnaD7i%=44Yg$|gOHin*W--Pt$wL6|g~E z+o(Qf7UHwL>R(G`MzIFs1>w?O$lE3Nbb?*ZYKVy@^MT3HB+Aq@$GE>jl#L+rq862l z4FD5|dsWi>2yJ5mB+GD%M_+Y~tjZEYd5S=o_2rwgt_IyqtmNH12t6RQgU#Q5+VCpt zNZ=fg<0c$lQq+Q(xmOS|aKU}L$}w33 z3`Jwi7MySP{+WFOe@DiDMJV(CN5+4xn#aI%d>@C^ShO>C%4zfRj06K}`EO3#Gycy` zj6wcioS3=!k39ZcCzk&6@ZX*I3+T5K|90ZvPW;=6e>?GSC;sikzn%Dh--&4l{NCGQVbpzEoK&LWDu0+Vr;?{#0W<+q0!M(?xU?_g^8(Q71AG1%!Er>x0N-h?_#j%RyK!o0dbg7Mh6 z3}l9>Se(UtEH~#G#SUYC?yUXRNskX;z(!YD zXOpFZv`v@zQYWiCuvW~sX&x0#8h&9HUMYUxG5RSl%c(uVbUvlp5|80&YT;2}6cK=+ z$(P`<6Lx-U_-EkL_80D|@s^bq&%AY?nHaR1mU>Q@QA<}*lgJbbo=8L_$wb^{&~PsG z)rQH;TByy>;sWJfRxdf84Xi)Z5sgCn*+hB_Xt5w|Rw0jzx)=uwQ}|C-$e9(B1vX40 z!_OaVYCYmHh}u^osQ>=Fe^ey?^71J|XUa$w7)z<@9IjjtSKI&7BXi`ygJot$9Y<5p zF?i`)X^-vY>r~Ow>#6+nBHgQ2o8*E<$dx1LS$A&E{al$7=umd3D|*q^>+{G0Qbt=O zs7z+-3zX!0Y|IzTRnv}le6}BZTps0>-p#VDS5DP9N%<++<(AY{$bGQ`hP#5VrgVG2 z!UDylc9%!q0#bd-Xee>V7+pus;R|KIkBEX-D>890(`>Wbh zdv@E_yL|jx?D(c!_Cc{gHnV`LdFE1=sr{>BHIziQv!s3w6TAmMdqs0BxD5XwlOVso zRp}i?7L0&n;lbyO2T8o-vvYXWzZOICNgFI4bv!9`NBHM}sqp2?$tPLLD|xj%G^Vny z(iKw5yh_v@z&Lqd9|wgFNI+G6)(>Wl7HU$-9r&KEKP@&Z{fUD2`~p5#n;(|)QrgJLD#rC2S=i+@-%3ZY&wPYOX$2ql716olr za-j!{ZkLMHlP(6rpXcA^D$VWX*3@kk_KsxrNdsHWqocdJ%Y zEuC0Z>)9K@M=vgW`?e^^rw%sJQ5SIv=lh!#1!NB*Rejez^FD{+80^xFp9p^};z^?O ztz}!7xDzs5A`0O37t7zXbBfBOFmX$xlA$-*-Hs6re$M^NWBJm7`ASTG-!2psGe<=q zN)CL!u6_)~X`8TGFings=D-wPY+R`XK{!(3-$-rpBT88%7PB_G3pNX_zC`qs&^;H= zt!xO|H)b{zdef6$3T#$+7Ob-Qy$T!KQ6lD?C?B%*wQ(fTi-{|^Uw%lLL>%qU)-j^m zYsedOaz5=+K;W#Ab95z7?rT=iikIg#W#x6dc|U?q(YwpQC%3@S@Lr%2`TIp1FQ_HWCH;=&zxF+;ObKLbya(L*7qFNt z>P?Of77PS{yt|?cECgLuT9~+v4t-k}vpmA7cu-lX0_e648IC_g2w)}(+Np0TL-$;Bb1(z=;bDk6 z^RNTdh~G-oO~>#9pB-MG;>Hn@T zp<9A>k9!{5DXSpj-RRgM89IELc8!RY54{_&>Elk9xKZXYBQRw%{B2;(?WX==5RltLsB0 z!&TX}9qe<;V&B0VXujL))zLm;3h3dT2KM%nxnqAo5{&C_^*Xy(33k8UIvY^I}F8v?@W;I_sPYI&PA3p*CZbl2o(@XBGPScw*u8+ zn?A-ZG9EXxQE4@o1N|8+}D@{-^?)!z6(VFE}gxAmve~r>enj zvoOuqQa+(vwE3=>vYD=Z{#zFY1(h;PrXVp_=OKh=ygvE)aa|TB`1`L{(*4K=+Uwz{ zZSst_ea4R@?Rx#^ij{$Nrj!&=!1^eP#a9=5*C7S*D75Y+&BeR7PwvYeg0DqJ5RB`5 zyOfL5&#^Sh&%+F^+qzW_`3zm2Kn$7<2A=Wwc}1{NUc5&bf3ptRPW@%+(WyoV8;iVX znj1+Y2vP8S;F~|(qQHi}!=7w>fx;%ezZqdOy+H>R?G@&{qUZAF>AC5LgPp4TuJ6kR zC`H1Xf$EW7w<;U$eOGtfCtsrx=ZSJ&{?`<^i=xNU=X$SDy$5(rK!-?CQ)ppQu+cn$ z6;s6s5Wz(558t-^3FoDGAj*n}viNo$YS@y9m`MBR-T=NCMlFemQ(jQO6g9>Xo>sST zGbBCO=y8&NdIsidc^QeU=?G%}Dl=G0v`7S1#~fLsAubJyV`gIHk094|Gf9w7*TM~Lh37CJY0Gz zD-Oxxw+)5a8FBBD9?Tc(ishSi%5)s1(N~t#-~}Cc$tI|!`V%J2%3 zD4>{YW&7w1YNFR_+IqHbLqcHelg$FXri`l~=`;Ao(Rn9up)1}!XN&4c_WON`WYDfL z!6b@MQ8>4`aDFE?9>qC6&j>)py6(iV$-Obu*h3nSC?r#YmZn`8_wV)pMJBa1TOcP*v>(zB0>KBv134Ig2NX-Ebk=Azra zv!U8hk4|T`F)dBXK6}HqUSr0}%q|Wvs+n3squ0N?Tf3oVVIv^kc|ZKBfD_rJd6@nF z%70>VxQ5mN%WY~OvpMwOe#}s(Tvu27Ref8-n?x=DRAdoFRyH@2#a-9tR@aa9dRM-cg=X-;-gTf@4520wEUwus(H zl!dHPByKA>LdTD~uPX5dV7~M+RCX!w=QVoW4UMrdd>7R4XA=Hvb?<+Ca_z4`efBr% z`^N`HpMSf@QfQ2ESom+^JH7SK;`^TRzlbm8#D5WA-ailjU3^pLev9vK@%=5nzs2{r z`2H5(-{SjQeE;{w_wmXfcMQ9K7GJ|Z#n= zcx23wxGZ&G06)eaNY?Xdc2=cS8&~mMr8ljltcZ<6AwXT{hps@Q?r?+hl*(%^ZhS^( zv_GH{hT6?(T)(I^>NFs@2~n^#Dk)e@z_63W#dA<<5a)q!9X|xDYCk!zQd#0i+^3Q# zB8-r2qB)|s{d5(joJdn*<(#ED)0-A_aBiE`Yr{g&iE=3=`YK2`EfEN7-anf1Hm(yg zuhc_^d>v)dN?#?#7dMw5$qMY->=Wt-O{Mkm7_Pu8D4%@Vs==~r5qs0i^NBxm( zn7gk>PG^M#Mv;RL$gv-7Z833~oOm{kSQ(c06^4ieO6DY{a(!xwM1Gt88Cd@^$2y|U zk5Gi1n)af@(6eu2{zd9^Ba4lV)u;GAsp%29MOUlK#sI6b2_Sw>1#EdZ!bKs}Y3fVO zK==(`uS9B_3yylRL^FrbDo1*M0om>iwe?<(0B(s=i}GVTO%7O^eUXn)esp)g!)7^l;^z2NFPp;wP#HwkE7x zKU*nuy!#3hZt;7~TCA{rP|8vCiM-7sJ>V+gm3_o;c^D&<7iZ}w|J^6epVl9gR)`pp z#f;ohj21i(mq3O;@6;Jz&oS1lk!COHS%*JAdr>vKT>H4#z*hTJVvn?1bqLum!hrik z#CTi-A=c_3*fneg4vksxlXNzRxldPk)IseEOk)BrM7Z%pI9E(&*ZEsb9f95@lVLK{ z1ul9@c`P%03P06c-qYpX7wf$LbCL+SRrWMlhU1eiueKSN#~F9_Nx-vR2R5>VH~SAu zYY#&b<@xgl@$;O=ERP~^CX{j7qp9f^aGW~e7fe3WB=2l5W@C5Cf=@geE+w-8bgh^+z1Y4tAuYc_k)HAWpZI*F z)m^!!mYVg7eKO@#Nz(5m^;C58oKQp!MJ!38L+~-~$r>P@otTgz4<3QpfkxZxlSi&4 zifpU2o7N$b+b%_wi3&#UQgT9qy~mt9JB~bF<#hJUlD6r~xx~w~RIXZ5!sBiMEXPAM zx`|V*k{a^aHPf!`a+A>y7d&kz%_;YhY9EbKZ-o@Fmi3WW9%0Gz&+hjKhknSw_78gf z(T^nd8&5{;yz2NKi`OD+{SF@QI_dNJ5%Ajn{Q`e!mG8g!T{>Q?Bd_0ujvGhOvkQIN6Uq1)tFL_U;oaINYc1mw#yl?x4v>I+Kb!2ySSmediA$+I`qCR8T3NErGq`jtpekIwq# zqivf(vAz#jl#5Mne8JxhaV(TtBJM~hCc8U_lKTexI5$mm7_SD#y;}~ZC9WEOVfd#E zU@WR@9dqv@AdInH<;hi~F73N!iF*~*XQxNZV^)%-XYQ>POdSmq1R4dOu!dNUBLGXa zr22q{`*-V$q+PzJ>Q`Co^e3oQqR95@emf48lMq4@EWw>5xOQ--LlPjky9IZ5>kc8fg%Dgi1b27$pp82;5?mT+ng$x0 zU2A>ctom!NIp@E3)!Jt{9`(L8j-LCetFF3-@nI~|`AP97+>Pk(8wjZ_Wf$Fk8eQiG z8s%tR!n-92%2+=PT1vjT}=+%cENI)&^6<5m7@o>b-Y~2%#*&Cjl)(znR3ou6j zDuDcOx4^}&X=0bXwigYtU`E(OmO&@w7+e8nZ226Tz_&0TOZ~k{YlY&sqI6+RdjH=enfR zwM3TkpWi&nAph~#Iz z4B~F4Q%wFJ2Lcbl$;+Pt+6-B`CjDsnIZntBCg$eZB$=-6k23=M@Gu21V{yPyNBQg{ zL|c6T8RuL`mq2l<%MsV?@GC)r)0rM!2)?9rIEOz58+g)z6PCf(byY9v^Vk7%DIpB{ ziZ9-kumj(cusa9(i317c4{9b(NXO_CLdmB2UfX_EH;n7vAFu%&!S`5mbjrO8Pl?6v zR&zc?&vg_(Y>(F`P#75IJq+0L;UWa}-;m}^2KENL%7=WZ`0f;@62l*&mDRTkH`Aub z*l4^D${IrKhg48+Oa>$|Pftf7+`Ya0EJ4{jICi}kD(R?h(5cXxC!1T@yySTXQ)`Z) z8?1SeLGmP;;ZTS4DYXz|&;3oZ?wJ~qcK*Bd7&TqEw^fm91(J?@Z6d*!evgp;&CPjj zLZu7{xBU8CP<(@JGxRM85||1JzR>BIe}Inr^@$4yftmj}5pr`}S{(vsVcxv`Iyn}=uX@e$*|FE(+)_mKtIz7%j??i;qDTt+t!8FcATM4G8PGHO)OHMLY?;s z6%I0qy^OfZO=iNMQ%xkQYc8uBoc%Tb6t~4xbqQW{5TM6M8T!HWoa5PTyIh&=L=e zPYheHDbeYKKf({*DY%WiDvKNq$-B}lCNJu{GX8Zk9_}>meg{N15}Yz{_^;&&wnF*h zP7!Zs&)4;zWSc(~oaG5Im`gC{*UeZeXE_*HDr4l#Ele9#d%LOjll z^_RB)SA~WL(>4HixdW*-XdfS&G6B%-E6T^CFOs*KYpF8d?)5zc_H4m+3I)xP8pEDhCVuqx*>>|?V z7|BRlPC>s-&(OwMxAU?a3&Y=kU!6X@VJ*J>g_W!}cXh(=>)STo)6EkxhU5l~hx1=Z zb?M`2G-eh2+LZjlP+*@==q-GRq;HPO!ZEy%gO7NFz8?F z;nma_UN9{BxCbArv^&9V&q6Q_1517`x|7ZIQjyV?SX#ZM)!{qvJu_vPyAVLci3+$n zH@rZXhSbk+rPSF88r$bDF7(<+F`SW*I?D*X27Qp5e#KOjkT@b)Y!OwObykEg{88aXNa}Wl+(gU*GpQKht_~y^V;xZ-K7=fiaOJ%GD|}`LxKXe%XtsXIyy^ zD1C;`JS_J7=Ds`_zH2do^D3g}6(OMB{daiOO&d{%?()rcaaaojom(QE)p<)iHj^Zg zp$~&+7~lKrWU;}U=VZO2zV^up_)PJ}4cXEpALb9%!oq{AX9UZ4^h{$yQXopv+7v~S zjxV;p1aVgc)$%i#d&jVzDTSX}T_mTAP&#JsWrQH)w9hJujBVak&4!A@`f;zkergd^ z7i05UclO;qwR!aLIPob7p6F#jNHDd47q8B|T;PndR8}TFf@Z$|NyZU*qsGIU2GJr1 z(uvmHpPVYMoZG|F79@u*E+dxcURf&PsI4m3R#!wEqeE4GHZPnS3;E8hXeN4VG_|D5 zHMEHQfJ<@1Ep0&n26cc6;f1>4%J6MsTWu`zBsoFCN4~<{&XpX0;6d;A<_~aUpQ>Ln zr|)rDHk4X<3R(8sljPGw&DRCZoNC>CYC|O2>@23HEfPzbP6|U%@VfXbe_F9`c!zep zRVJoe@~xc%&!-5rFCS;&uK6*&|0($EGUonq;C{{tn@}AriiZ55af>~ZcUXkUT`tRx z0T;%VD*wo4Yc0a6e^Rq_xY$~y{96xLUHvSdXo;Pv{V5Y*;d}4!!Ii%vRsliL?((=I z3gI|nQnIu4h>x03*k|Wmd^&H$d3Zvbvya}z=X4F(#VgnH1iY9x`}jEN?lgw#qA7ej zALZjaM|@Z??~axi7@yZSSDAR52h1sHLEcX~MGP!4#%{}#kjW`Fz35VU;+c`&_%dP; zhjHJk(M2n~bkKu{JBC8>%bnH}MxzD>^qBlkI3*IBco9r}dML=NX<;Ee*gKnPwHV5& z`^bS2LPDXptn3pN7KyyC+)670V(D$)dHdVqO76mM{>C7pZ0psTX^<>24c_@Yg@=L2 z>(L?JxR8;DxCJ_?z8ENTJGvzPoD-{o>fBIqdTMtnTfcm>RXNJLJ&7<);FmgofSBAn zkLu6?Bvn3q+RZOGcHaB^hO3%brJRb5mERrIIn)iparb;xjCP`1J|i}uwL(>h7WyBs zFA;jac2}}kt$lVueP6zJIGP##YyQyEHYAKGo>NfTsWZRewz1_iqjSe+R}GxRAP(_5 z#*x!KP(GdlE8S=Dp8oUu#65eDK-W33DG~Z_5BQgFRjA`WI|fiz@s_;n$$CgDHb?y- z(}r1MsJ}=DTQn|Q+$mnT0Lgo71RSmo<~(}J^O9x6{`xfx@VJHx_`WCd8DtFa^co;V z5`T9Jc6+#Z6Z!Xq{-4bFA7aygV8(x&!UdOqP5FEOk{SQQ6h{2bj01IJtZ6z=OLaJ! zsbtk?9nZd{@v{HU$eI30B`4^|P?7g5e%>$LLUT?AP+BcL@2ThT_Dk#-8%Os%t3lW^ zo!O+;+M;2FQDaPV2bBJ1%l-Cvrybk@a|c4*A$WLrcvj-q2BzYjKAjzRw|6j#JNY~t z1ernN?yt3?lRf9Q_3en*%F(`^lnT=$fy-am(X3gT)&1RkiU4gn>&GxBD^mAvNfhZoxsiO0CD4m@k{u^l^PYFq51044_r# zCXLBUAhF(4&aw_AfNz#RH(TFzSp#|3HN6kGd+T{PIq8aQ$3QG1H19yHZdvAzKCB}o zV8Ngo;UIr&S#(-Lj#&g5#uS{+qFHTkS#MS#?}O!*V~f$!aL1^k`3 zQao;hjXH_hUGCMRk@0N0JE&6K#^w25D=gcc>p5h4A?zTt4OuDu6iVC^+yr@G(72jF zjdE>!B}`10Ac)ug-8v+IV9BEMX$Sx1p#{0_VjO3lSFvt~_@vIuX11&QhJszjZ2gY@ zzLM?@o2a|qVpcVHD=qqvVdNUv=2jRyXTomu+!3z+f z^Yy`V6=!$|F~64&j43T9Olf~L2(^#X>15u_W71Ik0F-YP2<<2T0i49(W7=Vtm9^7#EGD4~HebTMbSWS!ciu+J=WL@d^F;ABp@YQhBj58X zYr(YMzI4u9w&RgV^3mg9F%9%y@8w2^(wdGt%|{#s=gapf=EjM<$4-&A58Hv}&p1ar z%7uxLG0PW3+=Qp<5m!zhP{AEDCjp1`uO6P}ZhW}>cSfY zek=&U-|i@$f9kIn)?LF+XAUkMa}KScVm52tPRDks#zsw%pYnu@d4+Zs6CFc{;_P*y zfM_VRJ_*#gTCzvlPo8xU1i0(&K=plbxl@2cJz3gKoGnjoRxEDYwOfI%vBT>-d_rBv zP12Pn=1hhfHza~4L-12Ny|2oK@LO8D#;RcWPJ7;sF^e%>&Mt#L6A`qm;KyVmjMRcG#$qH@cq=s)Xb=`nAzJ;*W^qk>($cEofByf53Ow_ zo=AXynov?51LIsSHley4nYwV(RK9>27b4EM9pBgPcOJdSb>ov=MwZ5tUvGTomA9t^ zxu2s-%5JIl<7d;!O(QUzksFA%>~ZqjW-+8ldxg`WNTu){urmT{@bvF+{9l%bg9)(i zVcom;-|0;7U&XfhE1YhL{aR_yTi;XkwD@%vc!?%%t2PxbM= zdpHV~zM8g4kZ-#& zxGSpb(xkRYX!b{hS6FM`F!XTi%TT=h1i3_@&Y32@k~BW-r@ z2Q6pcC%>(8Z}7RCZ`$b;*@e9AUsf0h&ByZ>Sjzv{m^n0g>D?ns$TE38SLdjj^$kq# zCQAMY?`6zECT{lO)ymG-%)+!`Mts^~g>3$=ORG4B6+R($^7&$Qux_y7LOl4`&xR*^DZ!T&3__3mr!D(;ra?Axy~ z$GK6tB=u$AmDs=Ky_&4`h3s766DKe$lGOEYDYE~}#miA1oNtS6CU z=?!AQ)q@O)eoElrl}nntUJ#!{y}MZuaY=?Wy+~sE@1?`iA`iC?kI+MxW-YO}#|@ey zzWOSY^U4PaFwwXpH>#sqjB^ILr01h#k&ZFX`u5*66B5qRZjT6Dj0flF+A4nkP`fkF zais`@^B4~aZPTjY6)OI2&16kUumMU`xfpJ2t3_nLBk~O<5(p+PgUdTmr|Moqdm|$v z2mp*uX~~TNO&5U~6m<*}1sdX|AmgVFY(W)_E& z%UHC_Sn8Ssl3;%n_9haQ zjpXg$BTO)`5T6vxku8X>H{#Xy8WS!Cg58|@U-UT^K5b?Nw|H(>@^npOqy}!*w)?v@ z3bYcataC5LecIfSX2{VFt&)MvpQdBe=^5L%nQj?UI>qFoBC-I_i&}T(l2ydr;ct{z zKGGGWG4hLU%;BnjOBCyZT0xROHUfA>NP$LE&a_2Sf6!h z_C)q>SHC~~_FlrZ*+*uhnPnP_FcQW(N&Q9!Toq=dq zk!v05ovn7|J(q&J_d8-+`IWtF23$&CB|S)zsp*p1yi|1zSN*GeZU)x2jyI5rQc&Zr zIVxGh?6fDe*AI1I6d8>SHn*rBu!OF%jVl`0tu_BH7uVKn#1Blel$NEcfgy(xU8_1( zhUUn@@Mn#Zt-Ci8l~RGP!0nAbWx{Udjg#_*XyY9&8fyL~ft1sNAO23SE#eTDIFm2- zmM^P{N8jwJTklyg?4;4h#27@k%*-XMY97na%tcxH8z2Pwcc13;q58j=M0+ALJ-ISF ziZAT75JavP6FFnSL!{NOR+a^E~7K!vY?o=ByL{4+Thcqrd{4< z-&dd%>MUSfHtqX17!VCwBGquLom|2>jK>^l-AJ0(orqbHZIa?%>T z-@in%Dt?GDBVajI_cN$k_f zPgO35Qe!)|>Mu5?pq{~=F)Q(R+G7rlay9ppM4W_-cp9;6CKZT;TE(dN(vdeasRe#GNhl-GEll zyJD)fhQ_`M%qd?{` zNCgZgiJjMa95>a1b3o96RguKHzWOEl#^!juv}X-i7&GZs;uE*}y*Zn&kTQq?wR)t)i2<*$@rg)=U|& zZxI2K_D{_wFpiu%CY4UO8`j`t-oeCDNm0iq!hg~0g%QRL@m%fEmf?9w#A0I+t zJ)tw<4J#SAEz$AagM#nYE>}Zcpf_D7P<uWChCj~+Fy?K= zzvJyaN*xWe_TUK6za~58U4G9*(}8Ix4Y-7#Ru0(;FZ%{coQ-}^`GjBayHjO|eciq% zt83@zxU0vCHf-tJ@<&&R*6#(m-N=VCf$wh@-=14^H#XiKbtV0x-v&}DE4&U%b~?n3 z!yJ%i(Yu0fX#(|RH;gwVMw!(5l7C$nyCI75_hZ0188>sF}kK~McA7BEf z@PWqj>w3M!0hKpCU=d|Cohl4yZRAO(> z9Jk?_h3Cw@9G~4xT_rW%F^vsZEM8Cmb-SmkwthQ7_XjhrW50B+%wg09MVQb*l9r03ggmGiS|)rgumO^@s2cmegR+{e}cB( zv3U@M-sy++g1+c9o8I){Re2uE9$NS0lp7HJQ5zfBL`@ zZ^(i!32}1PT(w%`h7&>I9b?r&!JkLgCE?Vnab*yl&W&p=zxMaHeWwBu2lNN&B( zaLpkBp*;DPt5ae2h#O-cNE|EACxZu+gdet1-7|?WRA&hng>wah<+6*3>o-(o=cd#+ zF*{IkSzFiJkaVA672?(OmU+1&j$U4T1+l6Uo(=7J|L|G zE4-mwEXlfi$O70#-!=JjZ3B!U=SGaPz`Z`{M*USKCc_G+3ZwHk0s&{taIlPD%X0{W zcNi^;ZPyqj)>_GP`}L^=Sa z@Sh>97Wp3t`$yRQBkcYWcK-;we}vsX!tNho_kUm5U8DJH$8i1k5Z2=F1_xhNEo_o7 zd_E9#lb`*{4i(3@bK`9V+CguZ&g;k*YYxQ-oiA$+eQ?!u88wi04vyb_ z%?ANntRq*nkH0Ua6gKePe(L=CDn3{=LRyH)ZD9DO^-X_Kf~^FryHm(Wt0hrV(JKV% zadeZ;n-zzhc~@$Ldl?PI$86D6MbqX8YX+I5081n zQu9=Dt$dIH6NhOLzava%b2FeAH)YzakHMiMN&%`^%m9hd#H5FCks^7Inr#-sxU05W zp<-R$8%7GOXcz6xWy;^s#%EhO?;PX_dCc<#!-B;Z)RkhW*5Vw1Z6J-oNFSSyqqoWX z7OHJ;lgq}v)HW6>q!nd?(gK1&4cHicz$8K>qE-2c$g8QtFL3~lX+|+NRyQ8Tv3H?k z!dMCrxpg z);iy^B@r|Ckm{S|2<6kvZ^W6aqsRDk89apX@pQivxXnyilI3YeR`V;@jctaA^!!#r zMf+vCJ*Xi}OM}ad&x8yZMc=;S(O~AnkvZ4aO)aW4uj)Rb37NWMQ#pCbHj;Tk8k=+xa<4h|8ActIZS}Ty4YNY&fJ&Y0zlWdGjDt2x0TB zDWN4F^kd7D0}cacpjr3tt4}^Sr=k96)^LwB;f4gD>Dw|N^GsuYlC9b?Eptpy`%#uq z%~>Fy$kIse@@sdm#zaJvL%_=L*b>LldEA1nzu_B<=8G1^wKIlS20P)=9SpB`ae_Rf zn7Gefc=BGp_uhN>1e%f0hotej@#k*e7h%CPdOPN$hB#LVN4o+-v0mEGshrok%ou>iwa+?C z-XwFI-|3kyTCtQQH`)5jTkbgmHE@FsISJjnsIpxwzSALc7;TUvzgY)qpZjG!o)RF+ z6&C2+>SMQB7AJM93`iLvxApo?Kf>9p+Bc|Wc|ORo?xz2Q(p_O!TUB`=%F4LW-g=H- zSbLKZT^gpAbJL1=FF*(_*|5IU=GLBlNYo?ioyLC-9QZ{>W-Llq^!CVP+Qc z;cZsZ)|2=(G|?$l&(7Ief&{^=kw*=Xpc&|lTXD?#$U<8!JDX-d!J~t?a5xQ- zkr_jCjR-N}fU&;YmDWq7|kM&$ln?3L+Db8#3H({@5d&Ydo1t2yAb{v5O5wnC3 z%fU8zSCP*(%&_fo_KWDsSZtfJ^4Am3eHXh!rC*&U@XO}=T#A)`yUC0r>XX%K8_H&I ziqwn{avNFp&HLsgJN#kBZm!EMpS$AK9vxo}+5GEKq9#Ac$ToW2j$2s%<0kMm>SYKW zA$tJv=cxt@i+x2FSvC3`$;5-y}zGXxU)4IO0dC` z)I5r!;XrotGG%CEzPh%}-6nWt^jwCK_TNF@|MzVU`iy`5gYsXRx<$z{B}3fhTa@ zR##JtqSN)U;=?*#^>=InPo9PFlSihcnsJhGC@H?tcw?@hm%*PjiAO^8kW@_ zJu-x4KXdbC<-)%1`dbylXs%ObD(R=MuIx{rsb_?|ofI0#YZknJ-Tk zn=q9nD3bZR0rhE}n-&%a)KHm*S(`mIclVv3bhNYWwHC7|V3V(DcYv_;Q?fW8UAZcC zkCP+A`niOfi~iyLdHYr6#y%*ua%%qptsCb4l^_HV!ooHBsqF&0DH8eNpkl#3%tub; zfa6XGlqYMJNZ~9hqRrwrnGWa-?BYH_j<^VOieYEH_QO5Y9NO7&2w>l6z>{|QAxrIW z=uk|KFc2)IKE)pusD$B3!Xnk=!l{4zuP5mXEPoumbrJU#+2EPW`b-{TodZGfWqry+ z9n3=uT)`N;s>CRyuW-p)@w~)Id{d%JJxcmg7G6?0m5Mk??$V!cEW4*X%o!RyMiUJ6 zWa$*Z*77mVL#CCrdxcc0M3Sjlapz`lu2$O zwB5d;&_fD6JfPT2wzK5ff@nLb+bVqGEwezaB;0ii*jt~spYPLMZa=yyLqlD{66lPH zOM~L-bXj{3#C8X|CvRj;7K5%w2EOd|UUA0|%!5mgRe~jUQaa~0Lwl^Q;yRTwv2}qJ z)(<&HE08k+g%vjD)+*M*u}*ZhuD8dvF)t-1y;0PARq>1t}a5w}ji`#cjaO$-R{ zgBq#UbuXfF9Xd}kZe-QK<#^f4%HgIDKIPZsBgq%ucd88S)&gYMyj2}aDj*!l>~uHn z=Kk73v6##J&pbC*iFZB5!fkgiZccn8TVG_tfpPwz@HtdL*F`pIr5Yb>PR&Ux{LZ%- z|4JTBeCNP_49}s(7p=;w{82UU44reo8wm>hW1^eiSHb{1y9JlCjiiGDnw7h7~R6T({tJak2E!9H)+t$e<1x}N|t=Ozdf-!Zge z8sO`zMJ1+arm!k{GgAGsl(<^Diq6|Y)X<`yo9oTk%d86icw$ns*7*R+fS-K#K?nVU zjq5eou%<-S<)zLE;m&z&byqABD7ljD69vHQDfW0x#CTEtS;=`@|BV zmikwWxnqH*YbeZk@$;uV7^gmq%L#nJN;Hd?%iK~$Pr4}98k!ty{elhNdMIhKTN6h3UdHjpg2u6A^a$zG-nP)o~R{=WtVV}-pgS!IxLOFT^&NdqFI7*bBH*^el6mTien6<^r0(#nU z6<-5Ado1Rsete441V0qAm;97>i(G(z*{P^XhHaMYXZlsOU$ofi?zP}(+Y^7R(2y5) zIk{A)_co(qSBy}$*JizXDZA1m(4bBuuW|K<7!)^T$#>Po zV;ya`NTbsx+<}Z05f^2mN7A`&_-6M9(C@=*j2^-+bUG(*G-?XO6;rYGLH!*BKBj4S;+HUA|w{zv%!pVataitV#T)7M{m3aKB- z`q9LMP54kKVKq+OD{Osq@8H=#QDZOBe@~4+lKh972STR5()?diW0t=U|Ct&`asBnt zA9Xj==z~=Tv_Ta$Z}({AUS_@Z4?!O)adOBSjyC+_hvo! z=y;8{FqRke>9bgvcJnuFQ$;S#6{;=K&%b5s9X};)YY1h#fm(&4ejDu^hFW#u@@evG zg+?{0LBn|5Rfv$S!|Cb+vF8RLx;(zx?5Xv!B$aF~EGASa!j@GjfrMC&Z;XfWs(s+C)vb}C; zK|OjvZ>0F9^FgrG^!?!XFUWqeGO>RhBb?S?XzO6yLtx0EYo_WdwTaxdx+fe*VW6kmg z2)J#og=FruT~2KTE5JjC3{QPFx|(Kh=v0x(v+f%z#tmUm1K0FA)Hvo+YsO@Aa%m)G zsJHXdi01?ZC^z{@iFgj04JQ`h+ma{tTPGUi4K4X6?ml4Jw@1SjEpLSLu2i?;eVB@} z)zJXce!KOyiMI!_Z%2&YPO8bC$;eK;lI<9b%`vA@W1wLP6HTHlZ~r|nvdF_bs)mWk zaY6H8Sk zmD~arp&56_G?slnXue36WrBoruJ3HyQIWvx6n7uuds~YKR8XwuHOzh6T1EJ%h>kR6 zR{TU4);YKNz>@F54(|hB1+0N;tPqX|-rCsJ+K;>_owl&`1Ifbycp1y&;es?vw3qcS zDnUvwX3g4v;qjySD_!N+9OOTCpL9;V4Ekn`WuEoKg85N7)5H2Dci5*lF;JUtcEVx ze-?0hQ#Z~B4z=E9RJnVSl`dFtu_=yNJ$I?`L{r=JCuDv=bl$kKN1Ukw^2m%dr-9aJhNiN zSGvd^)!yy(`k?h|i_-2lE{{uH)+|;|UnLun_l^Fa#%+I$1LPX7lU%H_RKKybx~Ud| z^>!UkDSN(~>hLNGV}YL` zw+*zg?|P0v5due-k)bL-{B#}BMKX#olo%0Il-K_8Tnt>xaqP-IB$~Rrvt53Kk!cHS zD|>HfgJkRTDc=Ogf#LzXVuRqEhGa8WEiXt=b(e}3 zTa==>7na#az5B*Ua0kiY15fKd&*&Qn`>viJRhr)sdI=dgT3zLPdNtr2Hg&a6Ipkw0 z3$vG}mz7r*m2LSh*0T4V+s1Z^rd!5W-sV2DrmEjH$#&Ap8&MtgD61Jg9?s97i(}u* z_rAMdXQ{1m_Vx@*my2x??E1fzze9 zrR%0+S0*)1!x#q3QpoY~(y?MpZlZ-psavUGQKDD0a#;8DSNS3S+cYzQ2$~}974PEB z^8|d9#Y6~I&AxhufpXfx;f;Ga6oJM8`x;ijcM!f{&@zmE(1KU*muhptvY``Z0DO0+ zQd`ZS!Lc}0g(nGjp@Vuh8?uuf%V8E?3^vSLg`8Og@Il#Y<<-cVy>0 znhktjMCv~G!@g1_J3@J+1)p!7RA)7$1?&~JwT)}K<0K@^=uS;jb@s6JV0H zlwo}c;<&COgG_<%l3m$D;lIz`m%4W8C-Ju6h3Fw}wh=&o( zc9$p%b;pj10~Ss<;}v%3*9?P@wpo5po#fN+RXCHb0PRGNa^KR>|w@lkiEJ$toFiJ~{Ysv2NrZKKWG{Px3@SAMx ztazS>E&Sux??iqfFP>g*R;o?6VAdRc5{BrL#!$spSp~u!vg=naY8~AK1F zh1OVPu;|S^qcIn~CnN!;PP*8cL;O%Kg}0^XQ2sm5(>3ciNYoWas9>80|h6(Ih;?VG3S0Xt#>k<;x^Sdf)cY2yt&Y{v-Itc2#wZ! zCa)cld>&?P>2W*VSIU`{U`bfPos%cEFIe#CAQ0yYtUlj9&_vzjDaYV2+lP3jTTgz4 z+{SmwTE^v;%fN^8ru5i{HQk+-jn2cNcPp_7fKf-eK>&!RdIR3Z&;EGFd}>Qg*L6;X ztNc#Dq+R8Z4;CW67!9A=Pn3;^Htjrg-WQHI%|!yLC3A=ez;sIw$#qV|f8hu+K(l%g zHGP)iXO=nERauj#1r#mWk}%&r7mQ9TSjX`UOCpNiIP+*}V+tqCj9&>ZqV%Bn-L zja7iY!U~F2Bs|RSBplf<$0b03L~YI13$&-_m}}xZL}Som#QPl)1fm1EVgP@vqgVFp zh0BR40nVb;uZUb*V}MFu68m!+CC6m%SCrShZJR{wz1%@h=6Nc3Z20)kLc08LLUg*Y zhfLNVs$ee?=8JT5j9mE_dv79sosCBAs<_t>8T+l=0~(6c-U3?S_m&Pb2w_~mFOzzv zzIx|X2Y$kV0W9N^H?I-1n3HHr!wv*~{jY(FsT|CDL06>*xV;plz;rA-x$NlTt3}n? z#r=Rl=p+ynX#_a4qt>aL@2F;=#Q16P(45?dK#!dTUeN0dqGxiOEGbk(J9^s!?%GLC zo0Lnf-#&KEG9y3=F+8t&T_Giu9axU_kI7KZBZ8cq!lI8_kw&5)uC&Sm2CTWLW=w= z-}fIu%lUu!zV}A>?|Bh?0pgTo=Bxu>?|~}w!_>TE@^Q?j?iC*1ySGR4Pw-Y#_20wW z&WX{Wf7`n-^7qyLCA|Ipk7U1h@7^N?OJ8kEH@PChd-p!P`vY(PD8GM{-#^OlALaLt z^7}{m{iFQ;?<>FAAO6}gfd3xe^8UB-%arKv0kxzV$nzjx$+4^#v8j8%)U8&m^L8uk zgF-$Do9ATn2v=>byj>qtZ>#htAfclQ1 z#GyMEt+0xMTb<{&^s*$|vKbH>*Y$yyeZg;)1^jpwB;ew^lrw`<9@DN<$+45zv0Y8E zbV9<+_3jy>&{Lh7EfkOo%RuC~byiJy;&f7ez>=EQ!L?OwD@7IlI@yQ!_#^;0Hf0-W z{l4A$loJXF$;zzo;f5UPp-Zh-7_tUreVr1Q^;CSREZ~^atZvDy9!GHoY8v;lcSr7u z*S+yP8g3S17d{GCHA(K(TpH>vi=9vofKPWv5@pmcKI1gflHuyz~({Gag1I zSANaRR6iq_>>tr8Fwvx0D5mh$j8D#XbsN*P=XN%? zq4}8dN&r~3RB2wDXC1NyCmMF$Q=sRgIkNYuQBMFWCXlc)$Lbi)yqjP=-LYf`eGR~s zC&4P~1!~lIe6kwnR&uIeAL9vSBBWrpreeOyY0}x}Hp!9m*GG(%rPZ$p2$=v5=q9J| z(~N0zn}=8DG@#{K(FG#ivzO z-0^b;5s6RFW-M7~qdXUY3Ab_%+AddD3YlWmr`P9QnxdBV zYRAx85{32=mvOgYBrkNn%~!^$eELl|Y_@l=R&1;?RJiJ5 z1`k}B78+^Seq_|sNN?w}eftS;M#^sQ`EuBWGfj>Et%Rux$(0!eGh3a1mRrur6w0spq;BDaqT`ikLE@D z#lcYB5&fko$T{A;`9-RI{o=YEHf#Nf&u z5r0dk`W7JbtJzs1huk+QE6Kh4y8?k;Ka`BnyN2;WPm#x!l}!?@ssn_@kNAj`oYm^+ zo9DM}h-=!V;KZO~sCOTAI;j2-y>c4S3$}FrrPW=X5cRH^-=C^R9Q;_w%`EoSdS8JN z4dA;z=Fn!alvk6C;v1cyI15IMQF25+TzSq`o$QIw`zX)uI5B;SSrosb--v2+Z>1nV zja>bA#X6coa;_Lp@#{8oGzGMS2YS4j6(t%PkV))z5%!XlT$(eJx=K<)YU=zUvVk!i z620q|S2^e7bo0x#OMdt_ZD^p}#)RnTGS|j>rg~ImzE^Z!or`CuK^FJUmubie-c@H! z$pTM(1%r`Cp!T=CUytGM2mF&MwK>V1xOn-=qhf^~>%4krg)>}Lz=iPEzc$_%MlcOX zaEaqaiC?k3Oh^vP_^NMB_P(?*V*cEy_j_~r)YkL1s8@oVv8-Q(%-?YSY-^>zyWid? zrLgt)VEv!S_a6??f2h{Yy?^flnp1eA^4D;_{+F!{{}6bO{u}uk&HIbb_)>MA)(kZ= zg;?0-L>01n#2b!H^nD!W4`$QIw+-{8;)MCkb^dk!-7V@4oE8Ky zwFHZlHf&R6So+^z)jt(z9du+loTbAtnWuSd0L&ybf$$J3-=>|Os|)pl_o)f&Loc)< zkw?Yq-S2p`PwvuQ#5x=JDY0G8`#Z5uZ1vH18qmN#^+d{i#FR=|&-YePv?D6iQoxE4OMiJV!U5H#GKIT7rsC7)1AQtb&ag;;Nw5d(54Zb0_fq*4yalq}E7OU* z#djRnh~TDMCm>(o3Trqf2wK|yf7rXLptjp~UErm((Bck7i#rr|Xwl+@;!g46Qk74fB*qP$ez95zB6mS^?u(vS^KQV&rIf@lly+=H`iQG7q$5zb`1|nWSqq z-ezbvZ8sFr(8rnWxgPqAr6vn9MVPF!anEgcw_ffjxpw}ZIS{%1{yMDZv1n&8O+vyl z_UMh;2~7zB%>8=Pq;U`H?J9o!p)&#MeTW40mx>VeyIanIOP5`PHNf-TWM?n1DmCvA zF>rs-A6==~3gn&xvq&6Mq5$0lth#pa&oQ`Y1yXluyMDX`2+?8&$UF63Z+1ezbx8yV z*O-747q?g6bt?GVs7yh?6d{%BPP*>`HKVYu%GWR3oY$=S&3{hslo!$8t1QPOi=-$+ zukV4kJ+!eK>-DW@H73x4)E5_=KhELrYjcXq7_N(osID}o`Y!$9P^@cxIkQ~vk@gqB z?d-?}8NJJAfe_v&CsiCDmp#Ef9zjxR)L-67!MG1B2X2@-_)a`FC8;ZB;Dnp&)yHdg zw-at(lS#AMFQw<+W^n{3Z_f94+~dKJ?q&gW3Hq@&M^f#0_qDU=(p!~sK(gy||D`Tw z;xm1r-F4>GAh&Ih<2qwiPfZr^9Xhy~+I88R`o={(t(@@C_}Ca1(q2dGGT}0KSKGvC zG2XB2R*(gPfFh`8*$(*Fj69`g?W+l@m3|4Px zA#Rdf5XLzU$*Z^RiB4qglbMz81=s{wZV#)UvVld`@uUQ{IN?K_uS&@f?wmW%?{4bc zT3ozYClc#8F?0AoJdjQ@54ox2W}$Qk#ZY0?0BnT@M{icupGAWO_!;P2xE%YCFLSDw z31aWIt^qa?Dq~Q?KJM$0g!$9kW|F<;4^ZrW?6eGeX#!ESlT{bIWdvoP9b-{Xe(F+R zOoR4O8tD)s+r(T=zCp2q_s0?VbW>8~+IEAOKu zQL{Ks57-nr`%VVnT^8wxz5v!L?VHpD7gK{eZUuK(o$kn_pCRcMPSL3<<{jSSfxwWtyQgr=fa0q$l9lxXm`}_eq^+1? z6lVaiSWS37{&F!1Y45U+h{wC?Nurx7G?dh&@;R0CS7^5Y7*=34nI&NWTh^IYsw+b? zS0dLtxC5u+TUH>FnVLV}fymM*);pw@voQk9MuU@e_G=0gAiM6y*T_oLH$p@!jp>uo zn{eB?HUAS%lP$&_i6Cb@$)BI_sKQSH%++*2cf2c9Un#BcYV>{ycp1ncX_-q;4SXAa zBg3_JgIc(hFoAkVH#zY60@5~vDm5qZiz}fe{eZD4n?8Nn^L22AZ&#vd8ojhFA4H@f z2tjmq9wIVnUau54ujFMB=p96Sry!GSezNK#Yf=UOCD%Sxz4f3AoIF&W(}aecQeDNT z>Tm1YxPv@c&VPif^yaU%$oo&u`}cNb_%F^okZ<`S14D79+n$m_*x_UJp!-vPx(D0c z|DwD6w*Ovt*B1YS?w0-jpnufe-rtA+s=F+Pe{}bc?*7r;Kf3!zcmL?_AKm?#p1HLWh7ix{qmxXl5E#Uen-`zI}7Bap^%waB?Vl5{bR)32udFc~)oO zB~+iOt4`z})yi{_w8k(|{V;MgGCawV=@I~? zLtFtcB)|>;$@Od-D?a1@0C}y}$>0vfjNSyK=f(4*)V`E*rPSCdTgQL$WmV4OR^ONn zCYr5eScNeNv?*}7Mn~Z*2YSfn+1HQddGcFj+Tcl8x7`uBrzx1Rk%$Rstp$J*-?Sy7 z@z9~{&)hFcx`{whtIs`nS!(w`_bcu5BQ$?hc=diRqQ+2d{UZ5wh>_egIzS?g{md`W zojGwpF65^fUL6Yh>VPxUD~qv#Y2u>ktv+#wFh%)&K1_KNpcwHtWRMrRD^noqUZfR=v-=6EjoZZ2unH~V+j}|BmXuEJ85g?WrRr{^9>UT5_HCo(SXD4Aa+)^@#M*i9ef5?pLw><9eZYV=PYQdKKU zd}eYm_w2rHVhW39+bVn7SiCYCLryoeT94{z(RR|r*$oi?3Lp~-&6zWlklig^eR4kj zB)yr@$uaH)A7d|-kC6D_`xVM+ty87=*Mei}z_2hW!UGA$JGO%gnUc3;LN%!6HPgru zc-{zoqOyL($gAQJ_Vz-t#f`7l9xdZ*%>x*bw-j;G`2sF+uY$sRlJG(=5Nc*^jxU-Q zznOpTi3=A`H_HzDrg6rVz50*_p7ErfHEh3R%9p>4PeiM4xl&tbzBinJ$~)YkkwL!4 zioU9u%?bEw-A{epBCmJ1kHouL-~KgDZH>76HJkvGNN49OhiaS7j-gSbHO&w)OA@zM z!oa{+A@&~`<~aVjLVGoLoQT2m`Ez48g%Mwt7|+^~TrRVK!HCl1e2+H$btm)3wO&~B zkvnJUtmMn#4~nVK<9ubh?>f;u-aou>eR2wFdN5M_kgE*4=EK{M4d`M=m8sWtBYiFR zJY5L!*d)Y?$@|N7t;c4$j5Skj^`=3cUr<|?s)>>1eVuBbJ53HxYi5pnntzSw@VOjG z@iduv)#m>gf91Gy>k%A@@p|Q6+xh?}=`rKuhlw{WUpB1FA`%(o)&|H3QC?3q3*~n+ zi9mszTEZ*ft^fd~3t}I+sA(h-=g%9-Z7Aj>zHZmcpA-`;-M~Z_TR}bC;EfdO89MSb zJE^$jzt-hd59s{4?YGZZ zX=eu#?$=g5ks3vpKGWG>RA6|RQm$eK@T5@3O1zy5)k1celr+s^{)S2AqmJYRC)Vn~ z!?h7w3Al`8aIOja9Xu=E-9}j2{Qc(srSO+NVJw;Y_4jpCx{jN}@2T!RsGc=DqxvVt&!Y=2lohHyKiBvYk?R!*6o}F^a%I0!7uUtNo)qOuHvT?h^0uzTS1_|I zXfaS|ctC)Vy#Bpu|E8_;=g8<7^2%YQGoIkKLI!r;Xp#l1CHp;DCQ=qwbbmMY*$}}9L66#f(JU<|E=wQ>%;&w08uwD#e zz=l4NJS+bw{*npUFl@e|aH~PQC^Yi}_JO}#M@D1`Nv#_83ym!cmm6kz%q6372)v`i z5!9DQGyiKW|92byJEipRZTRmv@T|>WztQ}UHvD%Sxa_Yu@K;Bjcn6XpPqD}fBc|j6 zmMt~@ z%@7Q|IlU@{EH$H65q`Pwto-8Q;Kw9x{hqbwPeg@xv%) zLO;|zl@|j_SAsZ8*F(1!&}1ikFnXhJWX&`|^agSyjJ#0>Shj*0eiODrYx0togbp`hip}Yi~I6QRmyvDiHWJ(W(x5{9E z-PINDvcl84s|xun3?a8lEaFy#rKoyzs}l=ht&dwn`gyE@5w=&&33>=MGW7IY@cgnLEh(19=K4DaRH)vUo8CEs;l zP^G)g8mhqD%>+Nhbav7Ci84VFA(9V=OzDCHF?ej&779Q;9(QpGVhcm#eC>koWFD8| z_Yep9<&qbF?KOMv{HRNEgpk^q7*DuN`QdVyf5}i1 z&gp_*mxUp?VrE?9oy=_4`+-|Bz%iCQN(at5Oh<5pSH)Kmx~e$z&dnr;=8h5134^t1 z(#)Hl{LEaftUI#l4E9Rh(Q0d^+$k6}_Cxm6Nu&$1B z!Xohz>TM8l4m>QuW=%pP-J%urnNOhBd~uci9sj|A|7QWkppQXQznJ!N9gEvIPQc(A ztgF*w)ou@DmGG`o>>2rNP`6TG4(9=WyomfgP3YB2*TbWk7}(h?t@fBqx4+O8@z;8M z$#Gk%g)$}AQ?%U5Nk%vwpJ6-ziu2?VM8yOvb@Q^J0?rl&)^vBF8dFLz&k&kW&H@=O z>Wpm;;9>v7Z#StXL@pP=Zp3B0=r+ikW6|e_PGM*8?c5~IIg#yn>)uM9wkC9Ti!8A+0u~0k)}#ZxjI?r1AWfbmw`aao7zu65=&+vm(u%3_Eo}$j^ z>s%}_xoIIQ)t2O}1qSZPUDE}8!ZVXuraMZrzz}Zcdw}4|z|;`hfWx}puJ(2LsAKM> zZ`watZLA@?FV{Oq46n95xBy)XLLmp>)*4nxgUCRK=9r%I8$YKZ$YGa6kRI!a=OSh2 z!z850P7iH!IDGuX#;9@+>INp|nuh@ANfBws=6?OVu{YKMHJCtG?gJkRq~a20@b>kv z&)ME?;ik7jr_lQ7_vZ3#@|rA^rx*W$%w4U}Rqh^~=xX^=sYl|+ukJH5g#~!DT2A7c zz(9=ufukQN)*ppNIoGVrZ2Q+v6Z|LG{d+aC{sZhj2zU4xEsM&sF6 z^@H?KYJLCYHmN~MHd_+hTzUTUcfv1^i?u|)+v`)=@jIa0-jn~d9?JYaIq@`IcBu&@ ziZ$!XX)gE5c8P&*dWp&aP4`)6EIX`(9f$4QOWTV*qGD*-`Jn>!VUFv+c( za@B_sT6-1uAdKy7{A&OcYwMP%pfvgNH?AqiQkjt^FCAGq*@15lv~Rg=XsjzQUBhl! zf1S*{RyG;e8y2)%4Q)#aMC}(`PYnfqB3!<}{Q0MN;ZO0xpW=l-#S4Fm7yiE#FQ|F_ zb;scO_qt2}|8$q;i=UIOE2CgbOJg^v6#DNLb3e_>KT6%7B|=JNumN1)Jj zQp%QS^MLkU40C%@p#qy4RYj{1F`g42i3T6eu_MJ-TVLcexe@U`{2|4RcwB#1Dwh^}y(sBgMGYKQBN+*Qq}RJZxQTU1WERGnVEuyoP196RoP z*9cvD%3Fk0I~s9QjLWG(=>gy?xVJG_)V7y?ZQpLtQlv+bX{$U1P{igco-m5Akw{SY zxiH^bAn|lclsGZoS~#oPjL;r3hl=_0dOH~&uvNNwN$!Y3e!+IRG@UYwkIcbzNJi}) z`IQ>Bjoy$bmvF)xe0iNhdBN2q2f-0fb#m|yaYCF>!l0`J05GA2jM}_f72gEho;=T< zeQ>!eiseb8lrvdhny`O+U$K|~Hus3rH-DdD6=u*CFg$%?IJ!idy1XR%!&X$B%RR8Z zr?w0Qnbpd=?kUXYq}$|7V!koTRHZT|{@5Pw_IM9gd#Y1_Y^L}()pvr#5A2Aops z3rnQ>r*`a@>e3r(uN>UJ0E z=9bsYa)+8Y&IqbhI(#uvzO6Yj`sVDXPs-4}ot{LEV<-B;7}_>k-_?RBoHsaJ}c-Z$faU+ZmDMM7Z&Sz7z zdIz5U>L3eY*nSHWrzZE1(WB9QLX3~?M;=}tz-FGzCAM8wOgXFRsHB_92v-@ZFDpgj z8%-}6OaEwKim&a^;tuq#bUXH!8|^;r5F&BR_DrB0gfLua(Rc-E87%5jT$S%kz8dz^ zW&1@xCeB!3FMX^@p#pjl*t%3>b~A3w!Q@KRRzZ}p-^@89+BnO%z6uXlhn4`VKTXYQ zmuFaf*_KsRMPgZ^bk-9jE&CtL1{=vjs{OSMzE)q=)tr2Kvog+Koj8|d`7G0^RExWl zU(UDSr9mq53Pic_ve}X~0vwB*CnX&qUf@7bC&X#JG4N4O;$cn`8cGdUG=u8RwAi8ja*Ymr;AT7GhtaWR#?D>G)g;#TvX_WGgufa4mo%{pH+h$7zSO;}s4n}MylAmh zfRPnY{RzHf9EKExBWig=+LNSS!&yw@x_! z358QD$5RBE_G`v7bj?cDsld;GKjV8tKK-7f|D9w1ekA5UaP02~)_?(j&En~QeI;578g}G znK3E1fAv#Rh@CghCVJS$)1h7k=5*qHa~L>5mk8=Ghj@1F27>=@NLP}b1Z!ZNmVQDi z-k%bQfS^#vC@v~I^S4ijXfwW%EH9^2gjGwzKH7<7_O!J@lU!?JsZ6YZkGrb9 zY}YmV7*5x=e0QVPLQaT&;si)m%$ekbu|)JGvY9PUpGsaoI$_?n2MtKl6I1B3Myuo` z_zpGiJr?=vaPO$fFiJ+vJG|OZp@-v`R`eGu@dO*r$M|}+^_SSh*RjRuYlq(LTHqHS z910B*A$!@Ut4{~*>6$n(0TP=`T-ET|7(6>Z;H#W)?S|vd($jBrgT1jlo~Z4LbwHa* zGukl~HP#yJJE@zu97~|1iD1Xd9YK~?IT}x_4M4{9;RY=4^V+AR($j>&7cFUz50mFL zH_3|$=gXPIaB^&I@Sry(kHCzV3v8n6FZroGi*Xa^JRa~k8KJfB9IQEx-%|ie4T?e!H*#oy%?dn=F!oznDa#p3WHNFaB%~jP0>+dP{oqS-X(9B6(G&Jr{mh1`x z<}^OOiWLrTZyKKrxTkLBE+;y~evws1NRwKJ!GmB%%b_B~rmKAtvMgcOm+j78QwFy* z_$5Jmzdj`G7NQbCtCZRIdKqru+F(U=J`1OdJUcQWvV_#Iv=ohz z!_-$Ah&9e^kpiJ<4AQ)w#4AcvxH7K0H|+CNInXt(IpWeygk<--1noHR;ust_bzt4^ zXys@2)y_$=qurU$WZD{AgliwaIBT!>j%R?Z*F%aCyVxpdyQN79fm2H>R<%kMv+H-e zF+Xg#xQI21EH@Rg0F>V)_Bi(;zIW}DzjVLudWHo39GR68TtS|V5@Y1DZ_a#g$|mC_k53j zUt%}8txLEM?oLpH?Pscu)wIerA1vp!G>5L5r9}8s$9CU-k+SP9JHH)z+8OPq&2-LT zV#T6OF`ccbF z6Pml0Dq!ORz~=0n|ZvvZ|~Uv|U-K!Uw4@;<^UAtSW5>_KfcC(NwogEo+VO z!Xfix2(Z3x(3@PaYelnWQvK?ghPtw>WW{@QYAWJ~K#FvHnIBS^c4N)`xBi9|VaM2V z>#XfNy=^R-zGLMRH666yZ4^}8JI7S7r4KSX3DOV&JaZ_ddQF2jAqL3b zNW(-J%kU-6+~GSeXmbj2+V|BPA#_VIkOOa*rpF4G%rm4bd?JFkwG)37d036ABsnw( zY2gAlj1Rd6x9{OYs|xpekuMEgAn8L07i7q*VUPnLa~1Kbrkxa6xn{2WkAd`8cijpYK|?O}uHQfi;|}~B%7LqSTaF}XwQI<_CEs0_ zgU}r^0L=IJn479@{du3%X^47mx0OpqUvRtn+7+>!C4M5IoBH!Zb{CgdNL%iJ^-qa0 zYf$yYE|Z=cYN!RlTU8eGv2o@xAT9i&y#SyFdef=b=J?(Hk zHnbJ;(AaM^Gf3jmvFl~lBarbhB=N+ZqaWY@JSZzr>d~2;O#(lTkjDQ7%kO0;pJa8U<Fb9tWS$>j(*A8|_-Z;(4OlYKgC?$f>Q zesh{K{ODz!S;=tWaC1x5yV^Il>kGsADZU~cL%==;2H z#2-A^`1CJWi}m^6W9@^9|A4hZfq(7cf5ck#--rK-wY6b?u=YGWa<}oJZ-5Gl;i!*+BdnD

$0@`KlbBNj$@9!nZ=K6*M23&Fnb^_tO%YP5X#? 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 1.0f) { blend = 1.0f; } @@ -3533,22 +3528,15 @@ void MyAvatar::updateOrientation(float deltaTime) { if (fabsf(_seatedBodyYawDelta) >= fabsf(seatedTargetSpeed)) { _seatedBodyYawDelta = seatedTargetSpeed; } else { - //_seatedInterpTime += blend; - //_seatedBodyYawDelta = _seatedInterpTime * _seatedInterpTime * direction / blend; _seatedBodyYawDelta += blend * direction; } } else { - _seatedInterpTime = blend; _seatedBodyYawDelta = blend * direction; } - float totalSeatedBodyYaw = _seatedBodyYawDelta * deltaTime; - //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalSeatedBodyYaw, 0.0f)))); setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); } else if (_seatedBodyYawDelta != 0.0f) { - //qDebug() << "start _seatedBodyYawDelta: " << _seatedBodyYawDelta; - // decelerate const float ROTATION_DECAY_TIMESCALE = 0.25f; float attenuation = 1.0f - deltaTime / ROTATION_DECAY_TIMESCALE; if (attenuation < 0.0f) { @@ -3561,12 +3549,9 @@ void MyAvatar::updateOrientation(float deltaTime) { _seatedBodyYawDelta = 0.0f; } - //float totalSeatedBodyYaw = _seatedBodyYawDelta * deltaTime; - //setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, totalSeatedBodyYaw, 0.0f)))); setWorldOrientation(getWorldOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, _seatedBodyYawDelta, 0.0f)))); } else { _seatedBodyYawDelta = 0.0f; - _seatedInterpTime = 0.0f; } } @@ -3628,10 +3613,10 @@ void MyAvatar::updateOrientation(float deltaTime) { const float TRIGGER_REORIENT_ANGLE = 135.0f; const float FIRST_PERSON_TRIGGER_REORIENT_ANGLE = 65.0f; glm::vec3 ajustedYawVector = cameraYawVector; - float triggerAngle = glm::sin(glm::radians(90.0f - TRIGGER_REORIENT_ANGLE)); + float triggerAngle = glm::cos(glm::radians(TRIGGER_REORIENT_ANGLE)); float limitAngle = triggerAngle; if (mode == CAMERA_MODE_FIRST_PERSON_LOOK_AT) { - limitAngle = glm::sin(glm::radians(90.0f - FIRST_PERSON_TRIGGER_REORIENT_ANGLE)); + limitAngle = glm::cos(glm::radians(FIRST_PERSON_TRIGGER_REORIENT_ANGLE)); triggerAngle = limitAngle; } float reorientAngle = mode == CAMERA_MODE_FIRST_PERSON_LOOK_AT ? FIRST_PERSON_REORIENT_ANGLE : DEFAULT_REORIENT_ANGLE; diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index d6f35ae3d2..06fe558964 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -1423,12 +1423,12 @@ void Rig::computeMotionAnimationState(float deltaTime, const glm::vec3& worldPos _animVars.set("isSeatedTurningRight", false); _animVars.set("isSeatedTurningLeft", false); _animVars.set("isSeatedNotTurning", true); - } else if (turningSpeed > 0.1f) { + } else if (_previousControllerParameters.inputX > 0.0f) { // seated turning right _animVars.set("isSeatedTurningRight", true); _animVars.set("isSeatedTurningLeft", false); _animVars.set("isSeatedNotTurning", false); - } else if (turningSpeed < -0.1f) { + } else { // seated turning left _animVars.set("isSeatedTurningRight", false); _animVars.set("isSeatedTurningLeft", true); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 505ffa71dd..e262bda526 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -662,8 +662,7 @@ protected: std::vector> _attachmentsToDelete; float _bodyYawDelta { 0.0f }; // degrees/sec - float _seatedBodyYawDelta{ 0.0f }; //degrees/sec - float _seatedInterpTime{ 0.0f }; //used to transition rot while seated. + float _seatedBodyYawDelta{ 0.0f }; // degrees/renderframe // These position histories and derivatives are in the world-frame. // The derivatives are the MEASURED results of all external and internal forces From 65089494a8d7d528db8613827b54682c4016af17 Mon Sep 17 00:00:00 2001 From: milad Date: Thu, 14 Nov 2019 15:09:23 -0800 Subject: [PATCH 233/547] updated cmake --- .../scripting/ScreenshareScriptingInterface.cpp | 2 +- screenshare/CMakeLists.txt | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index 0ac18769f7..1dbd2eac2b 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -44,7 +44,7 @@ static const uint8_t LOCAL_SCREENSHARE_WEB_ENTITY_FPS = 30; static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_LOCAL_POSITION(0.0f, -0.0862f, 0.0711f); static const glm::vec3 LOCAL_SCREENSHARE_WEB_ENTITY_DIMENSIONS(4.0419f, 2.2735f, 0.0100f); static const QString LOCAL_SCREENSHARE_WEB_ENTITY_URL = - "https://hifi-content.s3.amazonaws.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; + "https://content.highfidelity.com/Experiences/Releases/usefulUtilities/smartBoard/screenshareViewer/screenshareClient.html"; static const QString LOCAL_SCREENSHARE_WEB_ENTITY_HOST_TYPE ="local"; void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, diff --git a/screenshare/CMakeLists.txt b/screenshare/CMakeLists.txt index debe8a5fe6..1e675c09a4 100644 --- a/screenshare/CMakeLists.txt +++ b/screenshare/CMakeLists.txt @@ -32,14 +32,7 @@ elseif (APPLE) ) endif() -if (PR_BUILD) - # DO build the Screenshare Electron app when building the `ALL_BUILD` target. - # DO build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. - set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) - set_target_properties(${TARGET_NAME}-npm-install PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) -else () - # DO NOT build the Screenshare Electron app when building the `ALL_BUILD` target. - # DO NOT build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. - set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) - set_target_properties(${TARGET_NAME}-npm-install PROPERTIES EXCLUDE_FROM_ALL TRUE EXCLUDE_FROM_DEFAULT_BUILD TRUE) -endif () +# DO build the Screenshare Electron app when building the `ALL_BUILD` target. +# DO build the Screenshare Electron app when a user selects "Build Solution" from within Visual Studio. +set_target_properties(${TARGET_NAME} PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) +set_target_properties(${TARGET_NAME}-npm-install PROPERTIES EXCLUDE_FROM_ALL FALSE EXCLUDE_FROM_DEFAULT_BUILD FALSE) From 7fbc9f5c5ce15fcde1ae92eedaf9321c1ea2d2c5 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 15 Nov 2019 12:11:15 +1300 Subject: [PATCH 234/547] emove the "acceleration" entity property from the Create app --- .../system/create/assets/data/createAppTooltips.json | 3 --- .../entityProperties/html/js/entityProperties.js | 10 ---------- 2 files changed, 13 deletions(-) diff --git a/scripts/system/create/assets/data/createAppTooltips.json b/scripts/system/create/assets/data/createAppTooltips.json index 24f443f901..8b160e0630 100644 --- a/scripts/system/create/assets/data/createAppTooltips.json +++ b/scripts/system/create/assets/data/createAppTooltips.json @@ -558,9 +558,6 @@ "gravity": { "tooltip": "The acceleration due to gravity that the entity should move with, in world space." }, - "acceleration": { - "tooltip": "A acceleration that the entity should move with, in world space." - }, "renderLayer": { "tooltip": "The layer on which this entity is rendered." }, diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index e581fbd194..b5a9b77bf4 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -1545,16 +1545,6 @@ const GROUPS = [ unit: "m/s2", propertyID: "gravity", }, - { - label: "Acceleration", - type: "vec3", - vec3Type: "xyz", - subLabels: [ "x", "y", "z" ], - step: 0.1, - decimals: 4, - unit: "m/s2", - propertyID: "acceleration", - }, ] }, ]; From 5229b0c0f3bc97dcd1239198f60620fab67486bb Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Thu, 14 Nov 2019 15:45:52 -0800 Subject: [PATCH 235/547] Various cleanup and CR --- interface/src/Application.cpp | 4 --- .../scripting/ScreenshareScriptingInterface.h | 4 +-- screenshare/src/screenshareApp.html | 15 --------- screenshare/src/screenshareApp.js | 33 ++++++++++--------- screenshare/src/screenshareMainProcess.js | 10 +++--- screenshare/src/styles.css | 4 --- 6 files changed, 24 insertions(+), 46 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f62196323d..28e3368b30 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -889,10 +889,6 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) { DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); - -#ifdef HAVE_DDE - DependencyManager::set(); -#endif DependencyManager::set(); DependencyManager::set(); DependencyManager::set(); diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index d64daa6c6b..432f730e28 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -22,10 +22,10 @@ class ScreenshareScriptingInterface : public QObject, public Dependency { Q_OBJECT public: - ScreenshareScriptingInterface(); + ScreenshareScriptingInterface(); ~ScreenshareScriptingInterface(); - Q_INVOKABLE void startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter = false); + Q_INVOKABLE void startScreenshare(const QUuid& screenshareZoneID, const QUuid& smartboardEntityID, const bool& isPresenter = false); Q_INVOKABLE void stopScreenshare(); signals: diff --git a/screenshare/src/screenshareApp.html b/screenshare/src/screenshareApp.html index ed722f7fde..c647bd58a3 100644 --- a/screenshare/src/screenshareApp.html +++ b/screenshare/src/screenshareApp.html @@ -1,5 +1,4 @@ @@ -23,26 +21,13 @@ See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.

v-McJqA^@sDTv)w*r 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 z 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 b@z?+L?UuJ@?ui?9OIurdoLRhXaQA-z$;BRg literal 396864 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 X#qjEHA|wY%yAP4zo0uJ@lm&jpSpp zb65DZW@7YGkB+lwhw%oEoWoJH34`_Ay|!De!%q1R+?Q6O%qy)|%Iy!#Yb)^Rfbc}6LB-vKj~@8y9^P?3XrAv1z11V1Rx{>GQ_bEmc(Z_I$8@B=EYG=3>uuI1FPpWv18WUB zx+gyvGV8m_y_rb=+L1WeJO4_e^xl?cugAsA;&GnzFPz(5Ox_At*nIm+q#r2{9mg1- z>EGOwi}&0Wu3lt{CM@rA%>S~ZEJ?+ZRQzs*|DUohzmbY^wv|jPn3$M&nV6W^e?By! z?_g$Q{a+_1&N6*^9{7hxD(rux&F@OZ)gObumI}XREB|XLm!x7zDwd?;ZzL5?E59fH zUq}TEA`$$yB%)QFM05fYAs|R18hJ^C!e$b&xRykmn-e8!21NGBrJrE>h1_X(tJB5g220{ckO^9$^FHGEz6egktM2OFH5hDGV zD4|~@?31ni+H8LR^LM8%y$b^9nYbcDCM3kk#4dg^p}dSte0@tIWQ$0|)<rsX`*| z^O1;W-$aSlr=rC0Em6YKPn0OL6(z)NMG4$Pl<>YLN(7{f66{%`gmSJZQCloZ%s^3M z(_2wu-Lxptzl}tcOOS{!$|OSClthSlk%%)1B;r{yiCFQ9L~sm~h>2xn;_6y5A+VNA ztXx4RRHsQq-zO4L@sdQel#z&&IV3_gi$r+dBN55@B*G<+L^Pz5h@>DAp~w6^Rg zE>-z|UgiJ0uMb@JJ<^Z;?sFfE<==0qC4MM{$ItKjpnrYMb3DO1Nx>vuNb}A{*V7;F z9l_1w#Jig|>@W<*pHt2~EzXU)DfVss)te83KO3a%wmKehvG97$&7snBsnT=f9*YaM zUh_J$?y{Z3eY4XGo>Bq=0s^(u*G@h{^QT6qhD|t9nbOB5e2B66?V{KvRn7_ncmBbb zYV3R$9>NbFg=rriOHGg?LIc0>JfiX6+dOfSM0i$yu}xYy*nVx0drz7`d(Y}*1;6fP zHq3Ba$ck>_x`TzN$L)qq(+84;wO)y>ljWM^otNc)v}tt4&CFm?{GDvfr)%>P-NQ!X zBagimse5CZL&nedys_0dC+(iKhedqfsNUqQcQn}srX5Z}aL29_#5=WZ?JedgCJ_5{ zB(|>OV&P(@=sJeXKx0>lM}mGq&pOF|C)wOcRoFOPzS7K2j{NQfz0uvUQ)A36C!5#$ zV4k;Cw+5{tN4Z6HqVR+?=71@+c^o#VD9C3Om%zNwq`#p*(_HOB^;%%Hd)zV9z2TP8 z>J~h_ zrBl+*D)8PjP`=sIzupgSXnBn6@)h(rTJ05ne3u_)8uAw)&YD~(#37%IKP7avn z+G0dpe<|OsGHWLJsFJ%Q_nyzZ-!|udqxsf*hEImMQ&yOm65Y|RH>Y@S_Z5eK@NiLZ z)Z_JBNYLvOVv`2PI+-%MmecLt+v$yF)8MxaUF%9zctj*#2 zn4wdK6-?}@G%=gQ$4-oK^(pIlh%QPnscP)YXZvL<`3+J0ojPg$Ps;G0OWyyS|@9K{4aS47~q%L$ynfxzGN z6L{@f2F@(Vz^hakxR@IQXJj()Z!a0RB~uk{BU**`8CKzVd=)$fnP=#c;9{o-o(kklU6bC=xGAKGfLp=M+uy7jKFt} z5_rfEfxCYq@a`T0PwOP`luiPF)J@Dk{c#As&e;UldS>qUZ;td9V=^g_=QpCV-mNM}C#|+#NGH_i61DC62 z;3ujX_+5g5b3JC@dc_Re5D`**V)U!w;g2Q3UUm5k1hj0G>-BghCZw0jlt;f>pR0XB93##lWMR z82DlV1CQ}%;GGv3xHUfmU;mN7?`9CVs{w(tA0%+U1stzz!SOd`I6j|=4Sq?<8M8E!p>@?VrG_rK39lcR}>nkd~*B6eJ9VUtQIQn zE$Ew{&6qFYO79%?NE>$UoqTeM)LI={{@m%b)Q9wfMOob$XZX1IeD~o5FjPIrY|i_en#ops@O*9!>hP!JrP@x>IAxn}nr;}dc`Ze-C%o$} zy?1>?KSxgM^I^V9XA)}@yFAV*-_t#{kZSv`=iSH?re-$@Pavmwq*$-NLi(AYd12@C z45xFqQe{`eCe@lQ$&w8nckF|=GX>AGfCX?wnex!tLmQ%CiN zf9J%L?!i05k~S2IfMuJFuUOR^+kvoGw87@1rMMmk$6?K#Rjw!dbk&DKr#Zyb@B+by zdVW1CwMauQEsLMCp0q0%SyU!z;zW2q;LruCL+k&;q7S4rjoZXhRtNVfp7qx8R za`~3=;Zlw6g0%-yvTEE8rQGS7r44jyPUnRHa7Ie6{H{bhE&w{6#0=%|r0f2rHN zfVMPlW?3vf%D!-0M0)e0aHDIP+>7k0ic8%RlG9c1_laUrpIAG+7T6oG>$ig({f>`} z?`i1%aAt+FQvNevj+FPa`zfiR?k``Mms<20NJ`j9ANu0;SfNy7uz~+B+t5Uj*@nxH zBPRRX#gBZeQoTrz{3b*Tq!xHE3aC>_NpFAzvtMJODws>l1u!JTq1AJ_r(7T zmxv1}gQ_Lv(0#Z93U9203A2^ZGXjHedNDY0fDYHh(BVl=2)Cz07_5LpM;QXT#WCO^ z>1z1yOAQ<{dI~j?pFtyfEe!0hgA<49;kwWU$TRi=_L?+8^^dP0;qwMoZ*GRHiY-vH zqXj0Fw7?_t&9J;Vy*XR=Mz~ z%w4$s_HB5!;wJ2RnGS0hY48n88kFWvg{}F?@aWbg*zh0`e(O(w8nX#-{%#_C?|mJ< zT%QCH@g#UyI0>HJo&>|TB*E0JN$~5IB&bhLf(4ODuvH@&`d&_fJ)x=4Q6&vtzL5rR z-${dO6VqT-RvI*zPJ@x==`gn{9S*!shk04)@S|ZmbQn*A2T!I!Zt+wY(wqzrIVHgX zt?N+XdLrC8lK^qc1gOyw4~G=uAwMGyI!VVtr=nO`!WRoK1joRF$!NI7H5#sDi-w%} zQ4r`v!8d$S(68$nyqb9p;<49Y|Ep_o*|jLRJ3AVdy^Mjn6|oQ+#lhgOaq#2Wc(~Rm z9-iMG4_|r3!Myrd_*E_znhwW6`?45ltTG8-XMhuic6bHEuCP1Ok>rm`NGW^__ z3b$NHhwtNWzy!COu(IbSJRWotjzrvmjaSm)zPdCxRFDQ`+SB0fpVFc1nRMuRBpsTt zrNg5luJI{@k^8=f{L|mKM8OZ2 zs917|rP}}hNA3TA^>?}tevfdm-!+M!qx1Etl@TU#1u%S=s;5 z%q2~CgY?Z?EKPSYB2Sa&oLs93TYG2fGOxS$0_B>-@wa!RMpB9n(yBsdWwzd-w0nAq z9~v%Wb-NHtSK1zCTlisbO0P2WM!NU#4TA z8Zdvzefu(#NEUzf2bb_=d@X$AT20A~*L~g17Q?rA&3P()bV;uA+`Cn~TQb@H{h0xy z_`B*My$5y5@y5BXFQRv|QuRWobtG!&#h+F5Cu8?bo#~b=wehRe(Ta5Nd?mqA*XjId zi;h#>O5M|%E6)rZXY-#88Ff`8(-p8>P6O!-6*f%+C1RP}RlNc!lm0NP5w{P^U5*c5 zl6-rDo$qA}J+#Tr<0dbO!NvU2>{M=_Rhs`??rO~z!&h5p&g~lr9Gx4`PwopC>3-rc z)%VV&l)8;YLNR6enTDK`a;6&_G8_&!9y)5!XII+!nQ3lsHJ2LOQM&A#hI5^LuZ^i? zX;mIP)M53!VpOYP#^3~ehGgr@Z(FJT{Z=k);=xn@F z?CgKj%j&W!?eL=eqEt$PV=I}ORB*6s-c^*mb(Y1lccGa%ol>#Oe>k#Qxl)+*CC4={ zgJBQq8$;g&fv=ApgeJv%;_hvC(X~AyeXD$3U%0mau8qZd4{v7BoXifn=ZLX7J?Uhc zec(@=Ke$V;uoGKW_(t2RTIiQO<2MHJ&)deoYyJ5@x$d7&_5aztB_sIr_4%{4`&WK)+w9p5;ZtDYq7JZPyY5;c28-RO32H@f|15m(W2o6&XfpMlGU>`CBaOWi;e)tkF z{OJ;SHe?7|(+q*Sh#^qPG61zJ41fyI2X0h7fQadW*L~VR?zR?SPtXJv^oyW&%|&p* zP6LF`Q9)-36+Dll0>qCB9vM-=c~L6(XHsdMg4HZk zV8KcSXIQ9!jg<;aSgAmgg$nMoQ^5uvDmWlZ1%sAUFq%vSu8*nU+%qbuc}4{SPpF`# zmI?;jsbI%A6|7vV0Z42bKxBmmI6X=QhuWzip@IrJBdK7A1{Eakqyp-MI#~Zk9o&AX z4i2TLgD2kVfZs?R@SRo%^}^}^*`f}N=GB1A2Q@JHTn*fRs0Lzhs)6!QHBjxW1`JKq z01H(Ow4YJ~PN*8VBCiH&bk#s>pc>#TR0F<^YQXuk8qir#1FS6S;5?f;XjxPPJs;En z>8TpfELH<5*=m40Qw_XGR|8?uYGBk!4QQ#T0S#d_fNoU-$?MgC)kZZ?xlIkwcB+AO zht$BFgc^7wuLj1n)Bto;1LDzYVE+R(ko`doT;Hz_Y&_M0z#DZy=b?fLbt+K3N(K7) zRB-b#72L_8f@m))kW{9E7BUq)5upP9qg2p)k_tAeQ9-;W6_n~wftnc=Yzv@*OC?kQ z$Ed(tP6IrT(g5DW8laAP5qL2!g4g>s0e^@lc>GZlumLR~9jyiMb}caYlQy90Xag)( z8;C+}fWOxUCsyfzGy8PFE+rk{>!brXj{I^j`QIB%{PT_E|JB-Z>AIF|lVP zx;-DgDi>xM1p@(Gr<1!3RF77ev~8q{>lCaXhn($W8oWz-VU*wB*fv4wVn9v zYa6{c$3%1G7TvOS?Yz`eL)EX2DmM)VMe-!VD+KM4LeG`?xnZqW?-xVeoU{0KpK*KX z?n**m^UW)>?6|&#U|!u!cRs_t;O6m0FyWlnr*gpw=b$5WsOm2JY0}NKulGb@Crf$m z{ac;FEZzsX`f%gx+o#^YU~#c5*&Y#G=U4ESFL0NiD(&p^nHW)@;Nis4pk8AS{n^bn z)LkFu-;O+6@%7zN32JlEI-&5({%t`UClI9fAT^y7jeJ<$CFKA5BH2 z`3eT)<8BFVJl(aB#w}UBXQk7bSeWLPb*=O5ex@cYjnU9_v2bBhSUU37`IJe4QQ=Pw zS&FNe-)XH(I9Sx>XTRh1`PVi0am_~kKB(LxR~Ds}mWeI&z)0;<5$2?;Q-%WS&`;-gvrRah%=1 z?}VW3Jj-ceSgoHr;(m+2PvBvopXXD(0j(qMx0|?xlE-~aDAL_I53EP>cbmAp-`{ZA zfU)jtuhQ<3UYj{gtmxj3`42&N^>_5{Y^j&q#@>;#QfjXWF81)7{#R+Q74!b8j}_&9 z**pIB4)G6P_{ZOWR5Sn8_#e$%`utz-7r$|cMWsJ>2+;p04pI0cReskYp8gp8wL{>P z@AKJbNJ*eq_#t(L@fUrRBgJS`HN0mJ98OTzJ>kU7TTkUdci%kd6P5=zd*s0k z`#iWcG!GWN$%DCa`S49~KAhn$fZII_U~y*wtU64Cr)+6(QwR+%3#P#}ZZybbON0Bh zX>gw$4OR)#pdmto=fY_)gQ*Z+^C*O8KNi9ei6ZFdRRrIb6+!8bMbLGk2!0(Yf`S7@ zFngv5_J|b2^Pa_!rKT7v4i`g>&&BZ7lVW%vxfnLu6~jXLVtA0N7|snB!LIHiXt7WP z?@1QJH2Y#`98nC-|vX%xVnA^C8fNgk|J z&xLGQ4z#V!fwCYMKJChdj&^y_qazPSoyvz}HTiI*O#zJ7put?nLU=Z=2=ZJlhBeCf zVdBDlxan#Me9>P5-}60yw}c4?n;d`_rziSfzXmok_A1x#fz5cm{#6j&nmxR=wN*^Bs zN)OWBJr#-(?7viAa=hsd^ZYq`nS9kxSM*L_$mdkF$i60I5<-v!`l(_{oafEWa^);F z3||qtos+{HlL^h0>BD{9v-2HMPcM;2;d0ONP}9i|akRs-v-P4!7CQ2l32c~nsC|UmmG>A z4t~vI7_so&Bp+H~sb6*+nys;dq?AKpOQK3<-2mev{Q+43N7Q`${I zKV2>pLZJCm*Spn~HPOi)TfTannl1ixS_E^LfAK2&iQGiU_{WRnLf(#>KAF??&%