From 029fb4dcff4b7574cf96d7ed7489cfccf8c2ee35 Mon Sep 17 00:00:00 2001 From: Sindharta Tanuwijaya Date: Fri, 28 Apr 2023 10:51:29 +0900 Subject: [PATCH 01/10] doc: remove Modo and Metasequoia sections (#374) --- Documentation~/index.md | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Documentation~/index.md b/Documentation~/index.md index 6f7e382b..907a6fae 100644 --- a/Documentation~/index.md +++ b/Documentation~/index.md @@ -6,17 +6,17 @@ This allows devs to immediately see how things will look in-game while modelling ## Features -| | Maya | 3ds Max | MotionBuilder | Blender | Modo | Metasequoia | -| --------------------| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -| Polygon mesh sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Camera sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Light sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Double-sided Mesh | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Negative Scale | :small_red_triangle: | :small_red_triangle: | :small_red_triangle: | :small_red_triangle: | :small_red_triangle: | | -| Multi UV | | :heavy_check_mark: | | :heavy_check_mark: | | | -| Scene Cache Export | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | :heavy_check_mark: | | -| Non-polygon shape | | | | | | | -| Bidirectional Sync | | | | :heavy_check_mark: | | | +| | Maya | 3ds Max | MotionBuilder | Blender | +| --------------------| -------------------- | -------------------- | -------------------- | -------------------- | +| Polygon mesh sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Camera sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Light sync | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Double-sided Mesh | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Negative Scale | :small_red_triangle: | :small_red_triangle: | :small_red_triangle: | :small_red_triangle: | +| Multi UV | | :heavy_check_mark: | | :heavy_check_mark: | +| Scene Cache Export | :heavy_check_mark: | :heavy_check_mark: | | :heavy_check_mark: | +| Non-polygon shape | | | | | +| Bidirectional Sync | | | | :heavy_check_mark: | ### Caveats @@ -75,6 +75,4 @@ Alternatively, [Manual Installation](Installation.md) is also available. 2. [3ds Max](3dsMax.md) 3. [MotionBuilder](MotionBuilder.md) 4. [Blender](Blender.md) -5. [Modo](Modo.md) -6. [Metasequoia](Metasequoia.md) From f017c51cadb37aae7d06964973314a40ca065b48 Mon Sep 17 00:00:00 2001 From: Sindharta Tanuwijaya Date: Fri, 28 Apr 2023 10:51:55 +0900 Subject: [PATCH 02/10] chore: use package-ci/win10:v4 image (#373) --- .yamato/MeshSyncDCCPlugins.metafile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.yamato/MeshSyncDCCPlugins.metafile b/.yamato/MeshSyncDCCPlugins.metafile index e412bb4a..c6425a07 100644 --- a/.yamato/MeshSyncDCCPlugins.metafile +++ b/.yamato/MeshSyncDCCPlugins.metafile @@ -4,7 +4,7 @@ platforms: - platform_type: &platform_win name: win type: Unity::VM - image: package-ci/win10:v1.20.1 + image: package-ci/win10:v4 flavor: b1.medium cmd_prefix: - platform_type: &platform_mac From bf036dd05e736ee26af2430e84e72aa2f5b3b467 Mon Sep 17 00:00:00 2001 From: schinkowski Date: Fri, 28 Apr 2023 02:53:53 +0100 Subject: [PATCH 03/10] blender-fix: fix for debug logs and uninitialized colorValue variable (#375) --- .../MeshSyncClientBlender/msblenMaterialsExportHelper.cpp | 2 +- Plugins~/Src/MeshSyncClientBlender/msblenModifiers.cpp | 4 ++-- Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenMaterialsExportHelper.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenMaterialsExportHelper.cpp index 76399b1e..fa061c23 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenMaterialsExportHelper.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenMaterialsExportHelper.cpp @@ -331,7 +331,7 @@ void msblenMaterialsExportHelper::handleSocketValue(bNodeSocket* socket, } if (setColorHandler) { - mu::float4 colorValue; + mu::float4 colorValue = { 0,0,0,0 }; switch (socket->type) { diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenModifiers.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenModifiers.cpp index 39467c50..bf754e82 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenModifiers.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenModifiers.cpp @@ -310,13 +310,13 @@ void msblenModifiers::importProperties(std::vector props) { // Apply returned properties: for (auto& receivedProp : props) { if (receivedProp.type == ms::PropertyInfo::Type::Int) - debug_log(Format("importing: %s: %d %d", receivedProp.name.c_str(), receivedProp.get(), receivedProp.sourceType)); + debug_log(mu::Format("importing: %s: %d %d", receivedProp.name.c_str(), receivedProp.get(), receivedProp.sourceType)); auto obj = msblenUtils::get_object_from_path(receivedProp.path); // Should never happen but just in case: if (!obj) { - debug_log(Format("cannot find object: %s", receivedProp.path.c_str())); + debug_log(mu::Format("cannot find object: %s", receivedProp.path.c_str())); continue; } diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp index 817908ce..be0c9145 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp @@ -4,6 +4,7 @@ #include "msblenUtils.h" #include "BlenderPyObjects/BlenderPyScene.h" +#include "MeshUtils/muLog.h" namespace bl = blender; namespace msblenUtils { @@ -181,14 +182,14 @@ bool is_mesh(const Object *obj) { return obj->type == OB_MESH; } bool is_camera(const Object *obj) { return obj->type == OB_CAMERA; } bool is_light(const Object *obj) { return obj->type == OB_LAMP; } bool is_armature(const Object *obj) { return obj->type == OB_ARMATURE; } - +} #ifdef BLENDER_DEBUG_LOGS void debug_log(std::string message) { try { py::gil_scoped_acquire acquire; - auto statement = Format("print('%s')", message.c_str()); + auto statement = mu::Format("print('%s')", message.c_str()); py::eval( statement.c_str()); @@ -200,5 +201,3 @@ void debug_log(std::string message) { } } #endif - -} From 46e97b3fc0f97eb6711a82fd827c7ab56c6d0f16 Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Tue, 23 May 2023 13:24:22 +0100 Subject: [PATCH 04/10] Fixes for instancing. --- .../MeshSyncClient/msInstancesManager.h | 3 +- .../Src/MeshSyncClient/msInstancesManager.cpp | 57 ++++++++++++++++--- .../MeshSyncClientBlender/msblenContext.cpp | 51 ++++++++++++++--- .../msblenContextGeometryNodes.cpp | 28 +++++++-- .../msblenGeometryNodesUtils.cpp | 38 ++++++------- .../Src/MeshSyncClientBlender/msblenUtils.cpp | 9 ++- 6 files changed, 143 insertions(+), 43 deletions(-) diff --git a/Plugins~/Src/MeshSyncClient/Include/MeshSyncClient/msInstancesManager.h b/Plugins~/Src/MeshSyncClient/Include/MeshSyncClient/msInstancesManager.h index 8cd351da..79f495c3 100644 --- a/Plugins~/Src/MeshSyncClient/Include/MeshSyncClient/msInstancesManager.h +++ b/Plugins~/Src/MeshSyncClient/Include/MeshSyncClient/msInstancesManager.h @@ -15,9 +15,10 @@ struct InstancesManagerRecord { bool dirtyInstances = false; bool dirtyMesh = false; - InstanceInfoPtr instances = nullptr; TransformPtr entity = nullptr; bool updated = false; + std::map updatedParents; + std::map> instancesPerParent; }; /// diff --git a/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp b/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp index 06dff7a9..6c816734 100644 --- a/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp +++ b/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp @@ -15,13 +15,17 @@ namespace ms { } return ret; } + vector InstancesManager::getDirtyInstances() { vector ret; for (auto& p : m_records) { InstancesManagerRecord& r = p.second; if (r.dirtyInstances) { - ret.push_back(r.instances); + for (auto& instances : r.instancesPerParent) + { + ret.insert(ret.end(), instances.second.begin(), instances.second.end()); + } } } return ret; @@ -38,6 +42,7 @@ namespace ms { r.dirtyInstances = false; r.dirtyMesh = false; r.updated = false; + r.updatedParents.clear(); } m_deleted.clear(); @@ -61,12 +66,29 @@ namespace ms { { auto& rec = lockAndGet(info->path); - if (m_always_mark_dirty || rec.instances == nullptr) { + bool existed = false; + + for (int i = 0; i < rec.instancesPerParent[info->parent_path].size(); ++i) + { + const auto& instance = rec.instancesPerParent[info->parent_path][i]; + + if (instance->parent_path == info->parent_path) + { + existed = true; + + // Remove instance from the list, the new one will be added below: + rec.instancesPerParent[info->parent_path].erase(rec.instancesPerParent[info->parent_path].begin() + i); + + break; + } + } + + if (m_always_mark_dirty || !existed) { rec.dirtyInstances = true; } - rec.updated = true; - rec.instances = info; + rec.instancesPerParent[info->parent_path].push_back(info); + rec.updatedParents[info->parent_path] = true; } void InstancesManager::clear() @@ -85,13 +107,34 @@ namespace ms { { for (auto it = m_records.begin(); it != m_records.end(); ) { if (!it->second.updated) { - if (it->second.instances) { - m_deleted.push_back(it->second.instances->getIdentifier()); - } m_records.erase(it++); } else + { + // Remove records to parents that were not updated: + auto& parentMap = it->second.instancesPerParent; + auto& updatedParents = it->second.updatedParents; + + for (auto parentMap_it = parentMap.cbegin(), nextParentMap_it = parentMap_it; + parentMap_it != parentMap.cend(); + parentMap_it = nextParentMap_it) + { + ++nextParentMap_it; + + auto& instances = parentMap_it->second; + + for (auto& instance : instances) + { + auto& parentPath = instance->parent_path; + if (!updatedParents[parentPath]) + { + parentMap.erase(parentPath); + } + } + } + ++it; + } } } } diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp index 1fdd0a35..21820f07 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp @@ -1796,6 +1796,22 @@ void msblenContext::flushPendingList(msblenContextState& state, msblenContextPat } } +void removeExistingByPath(std::vector& listToFilter, std::vector sceneList) +{ + for (size_t i = 0; i < listToFilter.size(); i++) + { + for (size_t j = 0; j < sceneList.size(); j++) + { + if (listToFilter[i]->path == sceneList[j]->path) + { + listToFilter.erase(listToFilter.begin() + i); + i--; + break; + } + } + } +} + void msblenContext::WaitAndKickAsyncExport() { m_asyncTasksController.Wait(); @@ -1841,7 +1857,14 @@ void msblenContext::WaitAndKickAsyncExport() t.instanceInfos = m_instances_manager.getDirtyInstances(); t.instanceMeshes.clear(); - deduplicateGeometry(m_instances_manager.getDirtyMeshes(), t.instanceMeshes, t.transforms); + + auto instanceMeshes = m_instances_manager.getDirtyMeshes(); + + // Remove instance meshes that already exist in scene meshes: + removeExistingByPath(instanceMeshes, t.geometries); + removeExistingByPath(instanceMeshes, t.transforms); + + deduplicateGeometry(instanceMeshes, t.instanceMeshes, t.transforms); t.propertyInfos = m_property_manager.getAllProperties(); t.animations = m_animations; @@ -1897,12 +1920,26 @@ void msblenContext::deduplicateGeometry(const std::vector& inp auto checksum = geometry->checksumGeom(); auto entry = cache[checksum]; if (entry.length() > 0) { - // Create a new pointer to avoid issues with change checks - // in auto sync - auto ptr = ms::Transform::create(); - *ptr = *geometry; - ptr->reference = entry; - transforms.push_back(ptr); + bool found = false; + // If the transform is already in the list, update it: + for (auto& t : transforms) + { + if (t->path == geometry->path) + { + t->reference = entry; + found = true; + break; + } + } + + if (!found) { + // Create a new pointer to avoid issues with change checks + // in auto sync + auto ptr = ms::Transform::create(); + *ptr = *geometry; + ptr->reference = entry; + transforms.push_back(ptr); + } } else { cache[checksum] = geometry->path; diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp index 23d1afef..bfa68b82 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp @@ -28,12 +28,13 @@ void msblenContext::exportInstances() { blender::BlenderPyScene scene = blender::BlenderPyScene(blender::BlenderPyContext::get().scene()); std::unordered_set scene_objects; + scene.each_objects([this, &scene_objects](Object* obj) { if (obj == nullptr || obj->data == nullptr) return; - auto id = (ID*)obj->data; + auto id = static_cast(obj->data); scene_objects.insert(id->name + 2); }); @@ -45,29 +46,45 @@ void msblenContext::exportInstances() { m_geometryNodeUtils.each_instanced_object( [this, &scene_objects, &exportedTransforms](blender::GeometryNodesUtils::Record& rec) { auto obj = rec.obj; + if (!rec.from_file) { auto settings = m_settings; settings.BakeModifiers = false; settings.multithreaded = false; auto transform = exportObject(*m_instances_state, m_intermediate_paths, settings, rec.obj, false, true); + + // Objects that aren't in the file should always be hidden: + transform->visibility = { false, false, false }; + transform->reset(); exportedTransforms[rec.id] = transform; } - else if (scene_objects.find(rec.name) == scene_objects.end()) { + else if (scene_objects.find(static_cast(obj->data)->name + 2) == scene_objects.end()) { auto settings = m_settings; settings.multithreaded = false; settings.BakeModifiers = false; exportedTransforms[rec.id] = exportObject(*m_instances_state, m_default_paths, settings, rec.obj, false, true); } else { - exportedTransforms[rec.id] = exportObject(*m_entities_state, m_default_paths, m_settings, rec.obj, true, true); + // The object was already synced as part of the scene + auto& sceneTransform = exportObject(*m_entities_state, m_default_paths, m_settings, rec.obj, true, true); + + if (sceneTransform) { + m_instances_state->manager.add(sceneTransform); + exportedTransforms[rec.id] = sceneTransform; + } } }, [this, &exportedTransforms](blender::GeometryNodesUtils::Record& rec) { + auto& transform = exportedTransforms[rec.id]; + + // If this transform was not exported (happens when the sync setting for lights, etc. is not enabled), skip it: + if(!transform) + return; + auto world_matrix = msblenEntityHandler::getWorldMatrix(rec.parent); auto inverse = mu::invert(world_matrix); - auto& transform = exportedTransforms[rec.id]; //parent is always part of the scene const auto& parent = exportObject(*m_entities_state, m_default_paths, m_settings, rec.parent, false); @@ -77,8 +94,7 @@ void msblenContext::exportInstances() { } else { exportInstances(transform, parent, std::move(rec.matrices), inverse, m_intermediate_paths); - } - + } }); m_geometryNodeUtils.setInstancesDirty(false); diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp index c615d02b..903af47f 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp @@ -110,8 +110,9 @@ namespace blender { //Some objects, i.e. lights, do not use a session uuid. bool useName = id->session_uuid == 0; - // An object might be sharing data with other objects, need to use the object name in keys - auto& rec = useName? records_by_name[std::string(id->name + 2) + obj->id.name] : records_by_session_id[std::to_string(id->session_uuid) + obj->id.name]; + // An object might be sharing data with other objects, need to use the object name in keys + auto& rec = useName ? records_by_name[std::string(parent->id.name) + "_" + std::string(id->name + 2) + std::string(obj->id.name + 2)] + : records_by_session_id[std::string(parent->id.name + 2) + "_" + std::to_string(id->session_uuid) + std::string(obj->id.name + 2)]; if (!rec.handled_object) { @@ -119,34 +120,33 @@ namespace blender { rec.name = std::string(id->name + 2) + std::string(obj->id.name); rec.obj = obj; rec.parent = parent; - + rec.from_file = file_objects.find(get_path(obj)) != file_objects.end(); - rec.id = rec.name +"_" + std::to_string(id->session_uuid); + rec.id = std::string(parent->id.name) + "_" + rec.name + "_" + std::to_string(id->session_uuid); obj_handler(rec); } - + rec.matrices.push_back(matrix); }); - // Export transforms - for (auto& rec : records_by_session_id) { - if (rec.second.handled_matrices) - continue; - - rec.second.handled_matrices = true; - matrix_handler(rec.second); - } + // Export transforms + for (auto& rec : records_by_session_id) { + if (rec.second.handled_matrices) + continue; - for (auto& rec : records_by_name) { - if (rec.second.handled_matrices) - continue; + rec.second.handled_matrices = true; + matrix_handler(rec.second); + } - rec.second.handled_matrices = true; - matrix_handler(rec.second); - } + for (auto& rec : records_by_name) { + if (rec.second.handled_matrices) + continue; + rec.second.handled_matrices = true; + matrix_handler(rec.second); + } } void GeometryNodesUtils::each_instance(std::function handler) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp index be0c9145..2c98e782 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp @@ -88,10 +88,13 @@ bool visible_in_viewport(const Object *obj) } bool visible_in_collection(LayerCollection* lc, const Object* obj) { + std::string objName = get_name(obj); + // Check if the object is in the layer collection, if it is, check if the layer is excluded: - for (auto collectionObject : blender::list_range((CollectionObject*)lc->collection->gobject.first)) { - if (collectionObject->ob == obj) { - if ((!(lc->flag & LAYER_COLLECTION_EXCLUDE)) && + if (lc->collection) { + for (auto collectionObject : blender::list_range((CollectionObject*)lc->collection->gobject.first)) { + if(get_name(collectionObject->ob)== objName) { + if ((!(lc->flag & LAYER_COLLECTION_EXCLUDE)) && #if BLENDER_VERSION >= 300 (!(lc->collection->flag & COLLECTION_HIDE_RENDER)) #else From 20c3ce12d5b11a42adc8df3897f54e3324c91db4 Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Tue, 23 May 2023 16:40:56 +0100 Subject: [PATCH 05/10] Fix for nested instances, don't send duplicate instances. --- .../msblenGeometryNodesUtils.cpp | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp index 903af47f..7ffe09f3 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp @@ -111,19 +111,19 @@ namespace blender { bool useName = id->session_uuid == 0; // An object might be sharing data with other objects, need to use the object name in keys - auto& rec = useName ? records_by_name[std::string(parent->id.name) + "_" + std::string(id->name + 2) + std::string(obj->id.name + 2)] - : records_by_session_id[std::string(parent->id.name + 2) + "_" + std::to_string(id->session_uuid) + std::string(obj->id.name + 2)]; + auto& rec = useName ? records_by_name[std::string(parent->id.name) + "_" + std::string(id->name + 2) + "_" + std::string(obj->id.name + 2)] + : records_by_session_id[std::string(parent->id.name + 2) + "_" + std::to_string(id->session_uuid) + "_" + std::string(obj->id.name + 2)]; if (!rec.handled_object) { rec.handled_object = true; - rec.name = std::string(id->name + 2) + std::string(obj->id.name); + rec.name = std::string(id->name + 2) + "_" + std::string(obj->id.name + 2); rec.obj = obj; rec.parent = parent; rec.from_file = file_objects.find(get_path(obj)) != file_objects.end(); - rec.id = std::string(parent->id.name) + "_" + rec.name + "_" + std::to_string(id->session_uuid); + rec.id = std::string(parent->id.name + 2) + "_" + rec.name + "_" + std::to_string(id->session_uuid); obj_handler(rec); } @@ -162,6 +162,10 @@ namespace blender { depsgraph.object_instances_begin(&it); + // Keep track of the names of the instances we've already processed for nested instance handling: + std::set instanceParentNames; + std::string ignoredParent; + for (; it.valid; depsgraph.object_instances_next(&it)) { // Get the instance as a Pointer RNA. @@ -191,6 +195,27 @@ namespace blender { auto parent = instance.parent(); + auto parentName = msblenUtils::get_name(parent); + auto objectName = msblenUtils::get_name(object); + + bool isParent = instanceParentNames.find(objectName) != instanceParentNames.end(); + + // If we're inside an ignored parent, skip all its child instances: + if (ignoredParent == parentName && !isParent) { + continue; + } + + // If this instance is a parent, still export it but mark ignoredParent so the children of the nested instance are not exported: + if (isParent) + { + ignoredParent = parentName; + } + else { + ignoredParent = ""; + } + + instanceParentNames.insert(parentName); + handler(object, parent, world_matrix); } From 4ef6bfa25a731e6a4e1b57af742d1787753d9d06 Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Wed, 24 May 2023 14:09:25 +0100 Subject: [PATCH 06/10] Fix for merge problem. Adding test file for instances. --- .../Src/MeshSyncClientBlender/msblenUtils.cpp | 11 ++++++----- .../Test scenes/nested_instances_test.blend | Bin 0 -> 1182505 bytes 2 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 Plugins~/TestAssets/Test scenes/nested_instances_test.blend diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp index 2c98e782..78bbbb0a 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenUtils.cpp @@ -93,15 +93,16 @@ bool visible_in_collection(LayerCollection* lc, const Object* obj) { // Check if the object is in the layer collection, if it is, check if the layer is excluded: if (lc->collection) { for (auto collectionObject : blender::list_range((CollectionObject*)lc->collection->gobject.first)) { - if(get_name(collectionObject->ob)== objName) { + if (get_name(collectionObject->ob) == objName) { if ((!(lc->flag & LAYER_COLLECTION_EXCLUDE)) && #if BLENDER_VERSION >= 300 - (!(lc->collection->flag & COLLECTION_HIDE_RENDER)) + (!(lc->collection->flag & COLLECTION_HIDE_RENDER)) #else - (!(lc->collection->flag & COLLECTION_RESTRICT_RENDER)) + (!(lc->collection->flag & COLLECTION_RESTRICT_RENDER)) #endif - ) { - return true; + ) { + return true; + } } } } diff --git a/Plugins~/TestAssets/Test scenes/nested_instances_test.blend b/Plugins~/TestAssets/Test scenes/nested_instances_test.blend new file mode 100644 index 0000000000000000000000000000000000000000..65397eb96218776f8ba88704b39445c870021900 GIT binary patch literal 1182505 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

Dp@=A{%Dt}ZxniHEZQcGk z?rUDz82HT20oVH`n;rM>?`8xtRqkkry_4?;3Jx*|7aB+dOH^B?#q2<~N<36|g{g}Z;y7c?(?O|My&M+<} z821Sd3@+FoNBRwei{`sxA6oAE3%9r!O(`xae;dXH=?vq7tzOyDai8FTxL{0A@Irsm z@lewAtcUAyU&-L2HOGCWnCtH44+OY?K1Vvk`dp21pXg`AgC}}gz<=#Z+Rl@vXMJ3c z`+6gIU^xf6oqvCT2j~@~vtB<@HSQA}5EtZ!CwQSh>9{Rvde+1BxG$GdTx81uF8ui+ zp)=f1RFC^O&f~bR^jcZ(lkuQ;j_94U#eT8ar)yice~$ak3B=Z*Ywz8Ezt#16UxP*a z(bWBRi*)=cUhn&EARm9+Cwyf)^v=@!jMhDA|C%&C>*IRd*VW?fuoQQ_@3uhB{=A&f zS+9St(&GdN1{ZUry$N0@4=vYL827ooKgVlvT#TI@bG`4qVO)^TFfJw-_X!RRF4!MO z`VE7Nl#Tnwui-pVy5nxKD6ETrj35c%eV(xGiaV)&u&S%k{po zC@vg)dmyOm)91>*JHQ3>Ino){=W2}mL_Z@QJkisllqA&)lBQ>UT#x%k4IY{~J;U0x zu3hVkz?6};|ZimHjA1V8D zO258rA-)G&$e;do>(pmX)rUvctz*d3WAEFy zKZ@9RvC*fz1o*ts6pw#R;139n9etGFP*^icX$o!eiqeZLWog)3J*eeG| z`jULf=+vEOzr5!8l_oQO;^X@K$~n!SUs<$Y_DzfheE0iN;a{|UMfu$%8=}cGNz*e! z*LrSmO7)q_+XFfK>l;F6BYG~{BikR_qxTxoYpCDMl=e5E@2&Rw#a^rJ)vxI*ZtSJh znzz6Isq7ZaXY>8*zb|9tIp>zI`sc}>Ri{1XR|elVw`-~Nn*B4M{iQ%oetQ(YvORj8 zwe`lN{7sskygHQojxUPd`>nro%6N_1bLG49t@^!|+zVpPTfQxjGw%5&on_^L-~XVT z4*(Ik0l<3Z$a@Q@We2u>&mzkSDlKV)3>4~KK5;*zL_aPa`X z#?tK1ODP`8Zwljqblye{K^V3E`akcx^G#|T#4oyu{0$zC7d!|~$X~SY1aNTHKe)!j z_~w+ZX#RB=52SNaJc#@a9*z?{2u_Fx_75=^xSjP6hi1m~jF}?^vTPK{l<5y|4Df&v z1L>?*AVuH?05b#t0t^B`I)u3Lch(`e2Eb@a0Z@5E7yzV`0O&Ap1QECaz;pqC0D}Nv z4-n&a5kCu88iMORabxC<(3)%4rI=@-%C8RqfH^(V*~pxpuQ>`13@(llTnJu>3+Wi* z!opd{;2IaBEsl#^+`W>29x&g2_4hOgoekqcaA0t8wBSPULR_%FXnuFH&cRiGp}zX! zYYe5QqHAo62KxtxS>1;1lEFo~G=}p33vl7@X%IR;AR~&eJ-T#04em!V?+=l`!NZY) z2f+y$EB!=VI5_JkT;riPrFh8yDU1iwIVm1Q{ss@8;6ZRgJg|Q_mjO-MuKI@~IOFj9 zX#cRfINUdIO_SBic*lFeO}{R3H#oRaa3J^~xzgU_!oXR3cZ~yYMeV)7 zr29a%E58ZjfOOWyfymw9;0D2g;DdZ%e=wH;P1>&dgQGa#_hhs`Q0oExszc}-9B8I$ z*_7g-{Od3dNar2(`U8=>!NCr}f#8EYmHr?u44m}`u5r+nQXJ%;4C8=w*2RIy-QZxm z;6U&}9I!ul83UTMUG)b?OMl?~D%u~cQHKP#4HufM*W8riAp5H@4oK&R>h%XAcY}kX z;6U&}wn~2x7Y5Gy1J^j{O(_m4zYODmbk@az$lc&zSa2ZtAP%HII5Y0yYghfjUvT{Y zi)eqKzJ^p7?rZi??v9k=p!|z44oK&n_4)&myTQSb;6U&}9O(WaHVmBg2d;5YN+}NV zkB4zUI_u&<w zfOOtouRjpE69*KpC-|UW`h&PIaMmBV#=%%haZveL7zd=YE)L`@IC0=ztKSQhKkb-T z)i8M`X?l~9>JRoEt9FsCiJnke(m&YK^mJk-XZDY^=KkY=?&e(O{|<2ApI{U^Cq1zy z@;7+s6+J<4!dmdIo;fjl23L5%2_+v7j!vv~r4$eO@h~1pXY_=UlJCxa>LN8W&n)sc zc-Sm>i1ZT%4>6CZxWdDs#Dk*~N)_{-NLT-m{b_&)r6OcVCl9CuM;1lk1^}A`00NAv z4k6}I1XloXed&ys(hi~W;{X6Sh(J0UK8PSVFu2$txDdQl;UebNb62>)#&f(VTpdIh zFYqX9x;lpPV*xIpIFL?mJf~b~n-_)1-{4`nY%~#^Fur+F#N2Y|3J=(D=qnDcHlBY$ zTOFvs zXue+1-f&3K)U+$ViEKm@xf(fNC2|(|GZQ1{m|Kus$r&4vAZJ$_(ZoX&bk|rMD7L$R|*aUALNR`LCmcuu5f^jC%)e2XamwyDaAqgKf*X5opm>!h};bh z@`3}wM->iYZaHv;18g_|4qR8f)%Dd|2??fehJI3S&MHynuE4G!dzSx@jmKCnNC zyVUFo2UuwK-~Wy_9L!BA4zfQ8;NWRqNWcQ4uOB#CXwIb+ z2bJ%IaX>n2EihtYnU^;IK^CI@n~&Bj4{xdFt<|M%a*Mp&Chx707s!7O>65EJ6njkD z`cmB4bK%n%`Y=R6TY%xdaE>_*&t~ry>vKf zde+1Bt<@#dFkABmnbL_dZ>|3KpkbonkxI2y|sGGEZwwb4-nAZoGV)i0Dz?% z(mCm#50SsY!&1S6;DoinUNE}j*h$j|WxB<~XiD)=`ED2wq;pa{i2My6E)hHkPACW2 zBN|r$b9O7O>syLTDaAwiJ7GMK&gdSXs#~i?{ss>@!Gqw0c+h)AW5dDOUQyS0=uIge z^8Xsf1L>R;4Iu0FX`sAh@+!1a1J(EdUT;5CH4}V(tla)&sb{ zoj7OS2(7vKt8{YAIfQQp0Kld|(%JB)K*52*#h+!)PVhopNXHNt7S1{b*SP3vaa?#Y zagqN<7#F0oVO$6f3@-j8xDdP$7wj)$?iF>`U%0-d*fY3Dna1$-02i2XAf4PS${VX; zhi9)+JL?~u-&T5$)}KgcTI}*y13dVfhlS4e=HawRxJ^f!1IamH)~2Q3H}8R^a)?CU z4=hRag1D~%XL^D2_rP80d=KQm5_t~@o$dDk5#6@i9B6aEya%M;H}8Q<WJTvC3KX83pvG>Z_d%{Wgfof;> zgmFMR>mC{txf>k(OmHChARnYZhzkQ}{ef#7WK)WR%C0aDNM~Ifh};bh#svq058{CR zLCmv*&iVt_w-x77ii7f(!Z;wEbq^1U+zk$XA~+Cy5C_s9#D#&g{=hX3$|=P`<-*`= z=$;ZH>8y(bk-NdcV}b+02XP?%LEJN>&iVt_w-x78ii7gJFb+s(-9w}zcY}lf5*!FV zhy&dp#D;;h{=hX3dQ*yn`~_hgkj}a|5V;#1@Jy)SgE(M+5c4dtv;M&KZN;N0#X!Ehi>Pu%F-C8|n_K&sZ{^Nk|=3M2u0S^2Vj6&z6C)Py%1`q!(dV=7D zwcuqFanC5Z!h`Eut4C9chx|*!cp#n86G}?H;ajUk{ss>f!9%2zT;Ezf zX5JI&>L0S_1$e*-CDO?QD#5MQB5(tM?+O3}7*!oY%%cdd0O0!8>QYKOgvvPq0B}Hs zbT)htL2zJj@vnjl!Alh`Vs1Tmg$viWR`;e97v-}9TtIOko!od%xzaWpO+@|%4>{Rr zA~<1u^P-5k<QBOB2~u13yZ7deaknVXSw%q>W+WUc{lG1e8 zl{2jOy&{Qp*4=<4ayK}5RB#~pAXf|yVs1Tgg#*{OR_E(nN=dp8RJ%Moj04hHcjJl3 z-QeIWf&;+^`CxDmbIXA%9Js!(aMjqqV>d!putGhCpqZg_9_wLB! z*xny~?0NHPkV*C|%{MbZ6aGaTX0*U2*$_>hNt&J+x}MO_rFG)=g+ar_gg)tPWI}(v zYN>30Y>%a3xkX-XlczjrdwZlkzF1FuzG8TA+fb+9f*7SKd*DlN*pBvycIf97Gb=B5 z>-@viV%-rZJ2e;?kR7NFN(BB;Un9lw@W{dR^MmGx|nZCl^OfFXui$* zkIXFApZREi=4(RM<-3CR=(pkNdE&?|IxIh39Y492VF_%kK1ro~L zh^9jTFxLI^1?W)GF|QunxTR2xS3*}xU%Zu50|4N~OFF|Z-ktunZMeEEv*3hBlv!dF zGQokt#rc8@!3zbVaS?ObRAsWdI9wRGrr68;;@i?OINE~er4$$CQvzK0SNaK^;VpPI z@F4Oxc$h1A5S&nM8V@m-PgEw$`Zo0!wio)DUwqpw9>zEFO22fyDDo$V@jyDmc*s=u z4-#8l+ams zhF#=taBz;`K=46nX&l7dhp94IKG-)>=v*{7IJ~KEpr=?EVa83`9fAW_`omaC`-Mtp zfCK0cq%*8P1kB&J@8*5V+-&p*!GXcWS%M3}3sY)b#9V$;nXKN}(_fIk%rl;L2<>)cg~cXqaPM+wJ=zmr^`bo)^Xg=_DQk?nmAiB7fq6@jSr^{p;2hb`%Q( zo7Syk$kSu*+b4K<{IZ3Sd8xkP;732uWVmlm*!`*`tfE}gItoPXHFfNJ!%=QLoG>1-@oxn z=xXu)HW&9(E`J%cFMr-w=xli0CO9y-I8EA{;Dz$IoQ{}w()2;GZa)_48C<06(;eAt zfD3=#SLmGdJuLD!csNDy5a}=UI6RO_v#zA+gYp*p{e-J=+xUjop7$-CRQtUW@T0b? za(oyMq%(qt1y$pCk-x#iOu>WTgry}NhbK+XdMJ(GDIUgJ91ppecql(Rj0e&g!Go}M zC>Y0!{0$zcrwL9dhos~1r0H1?;=$E8eze8$;Kjs4{V_b;f&NWSmqVc{~6Ywg`0cK&u6y8Zf~USjPC~vgg^bN1&Y6H zl~~tVuNpMxb2-0T8k7zEvXS3=u8bd#6MIJ3UR@}5CONcm>cd|zPU{FCs8M+~o#mYE zU-jpA&u#KRjhf$GJZt+$x~F^t|MMgByTVt#XT7ZEYal7@O1c3*X?oTN8~8E5TRKQK z@O!i3>EZcfgZHezfnVfm#oHT@ zjTPKrF8kJts z_K`F_>vOOv-lez`;Lix!m#=t>T#cNMmi8m^Cx4SF&Pmg=9tEofi9f>+9<}o1 zE9fGBgNJF-?gS^~&Z@%5VE?v;=arbu*h$lyjMPV@{0Xp2qj>O7m|??H&%nmUdxcU; z@lfsv%zDo zowaeXbAHu0PV}-UE~4~6x5}uiI-}u@`je(-IcS*${OV4CB%=+~HnL_s>n!NCHvX;jYPQCh17M?Uc^FP?8(7l*5YuVQZ zEzj4`rM*zj-gb=x@|AYdc9b+d>v5zSv0-oc!Lmn*bT?~Pu8+uBG(GF#`f}&4h=#>-4s^S`BapMdMMdbOh83l+O2ZNy5EqOe?FW|i#Cm-)yG+vb z%*Zt^yp-Z1|C%r^NM|FsSdST0(X*&`mHK1`Rc2DXVbQbt#lBYTUTy0e0XmoU6noXq zh34-jz4zO5)xLlGP6(YNG9(rnv7b0!-wA=)Mrf9e{_d!JVE^b{9hzTe#!UFi_UH}i z=h1q{yKy1NC24x*g!YITGgo&)jIZa4W^1lom0l2UD`9qfxIL22dhN05E?~id!Nq{I zH^B?#q2;=6PTbG0w<<2iS{xT+F>z5ThH*hU8^(p;z~F-YairfcxQKcEr#oEe8Fp9w z#b}G;g6*!ChN;=e~+o%t=L6c_p702f$^ zBb{7%(fm|r#G-e}i+)Btc%r8T{MW9e?L29E*2lG;-VIq$w%^v?BSUoG}k+Scu#+JM?1e_vL}09s2Wgll0G3?`^?>!Nmq? zZ-N)fL(8=l#(i$}d#}ZDLH;*u=eLG&K|1Tbx2td=I54!WTZ@b!CV^Ft}cL%A=&1N4efp|f5;Ve9$6z9~2$F35jR@Irsm zaa+>#tOxE0ba^LSDW$l`_XfD|=ZA#Oa6eH!?&CO*P3cFsha=-Y;Un9jm#;nUlW%TB z#n7ZEA2<*&pfr9Tj3+W(%(9|Bj`SJQVIJ#)AOqo z0y$%U0qNvX<=`lc2;2Z*jQ}9h;57hR;Um8q0In3VUh~3D7XZqe0s#0E@HG`NUfNef zK^GhtT&xmY2wvD!G%lLoNW=8*KJx2U5zD0%7x|3=F8m4jnu=HrJc#@a9##q-1SgcI z#zXTH>`d?OBfoC((3Mg=WH*HIKsqCedG*4r$lu^$x!^%?LV0RDr0*lYqegKcrRlIM z>jOOCBfq4x?niz_?gj@-1qXr;az*1H=4`LZ#N9`J_c)!%@lx6^l-C6~fc`)_8=lA! z92i_&BDfH|gmE#K-llCm;p<}B*X{da{Aw-)q)V^NUmf5A`UB~Vye}41eH=*SZ}5;4 zJP1xGc->F5!bg7H;$bYMc*wpwj0e&g!Gnm``pB=y-{4`1;6ZQ_#zQN7whj1q;A5dj^334t?G1k%{;qHM2kGxo2kC1a5h~RgFP^r2 z)1K3}&)hxbS7L36Ebs_l*}l97HDAep+6(E3X(vq|6zle5jlHJ7ttG9X)Thfec4Eu} zUHPDWK|d#*eE%AHq8sr={ss?Uly)XKVY+TQV%ka52gNRMdN3o`;&=$?Zq8L%8^#0a zoD>fte}jkn1rL#aV&S@rm#=BAN}<@U`iH}LP{+}gd0i>RL;12W9!RHsWu6FV=RUPN z#~c6_`5QdkCwLH?P^jGr@!+a|aE%8qrFh7%3FCouPKpPSzrn-j1rLG~;$h*swHGal zzi%Mps(-)+KBou5U(NZw*3=)!|7Pv%>HrUz_Z=5H8=m(S92i`DPH-W3VSTz2;=)xw z;TjiXDaA$Qm0?_v&W3RzI54=lM{pr{AublKTeM;+Juz%o{e}9>uisy|`nc<8N^wzM z8Q=or4bnN$$6fu6XCi-thr0z2f)k3qJ0Tui^%Jh~P)aEt@+-o4Af1!qLF8}n@F~HA z;DmTsxNh~DRrJKLUG)z~aJ=#R=*OScjwW@nW3yHBZm)eMd9(SnTKw$t01uv;8zY^6 z+tJ*`N3BLzyFP6Wv^n6817@B<`hD{r_@ulC2C>~6Fai~vnZR=0)jkl!fS)W6Bae$+PtYx#mC|&DOl~)9KP*X-3 z(iu9)ijS9YgH?8#o>&4KpiJOsL2j1bO!FR@bn?Wn9{E2{K73w!t=uX%L%s*sHN5ID zm7n_W|Ck@sGrzIZbp9;ID@s26p!yzBUY@J-jpoPn%&#Q*v7FMd+&NuWZ|qdz zAM<0q-Y@y}N`9Ma=g0KSuO#`g98dBo-6V3kO7iQjogdRPzntX9a=Z`fdX;uaeoG|3 z8MX6cdgkXzekI!Eo8;@QlKhs|&X4Jt-`FX_zsd5;>HMPdWqRgUlKfas>2{F=>$g(s zx4d?KOwassk{`=4e0!bnZ?oXd%1;g%*I|&t{qLk~6=!HonH@e=qsh(ZzXJ_f5sE zS!<;$F9`-$zMMs_M$UIiI}rJ^_FB&IcXciw9NyZ~-+4x7!s{6i6*=b|4Wf6LK{P2% zhn>GDkTV9+q%$;#_5mOQHvqUp01#>L8UU?u8b!% z;oX}P+y*5$Fu3@j;6m`iax^Yl;Wj9@v#sM-akn=qO^03S4shY$<{)&2XIpFB1|{-0 zc=&+eL2yFuXgsvSZBTCUFqTq0loy8aKsv*C$W-43CGt0TC<`70Ct*Ca#%)kg5OYsP z6~sk@{rv_1BrxmTh~1k~#i8hut3Gk{ZP-d%usGjR7QUovo-U>)g*VTB)PvR`Wt!PtK7}xuzU>>(TR(p z8omswkvjfUGZkqhLluX$MP=6v7vgV(eNCx*dhVlN@(Ox`L213VbFwfs_I$lyeTXV^ zS_5_Sezw);zp=-~FE+C{?Adf_JG&{kwQ9ZM7wf~@!b%%;y_m{-yXXyX)i%Rv>(9aH zUV>rG*ryJ4zN}jz$b1eaW>%%ex6b!Bay3)9A2%l(){j>9Sa;LO>m>Nm$DTKz22rxF z4*2em--NI1f4w^VmHs#O`*8YU0B+)U z`o{Zq{qCEyRUbOV{pi|AKPr4>`|{pY`#se-2Wk_YG(B@Y*!oc~=B5Y5_2)3dyTt)X)OL;4%Fv!4k7;5T%UtC91cfBj{zRA0!}))0{+~{t?yOml?4aH z1zG6{Ug%HyC8MP2Sr6i3><_hZk-y?fMs3I*ODQh0pA6%IbP^ZO_qh}7tgOO?jI5)$ zh%%M^f7~hPr0H27D2nZs4RWKtUHL?Si}jefmKhe#xNt_DGcnPeyx)l)@f&ShA2N?d zZOFg(≪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%0Ag$$7yNar?T?ttuJ{6(C* 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 Date: Wed, 24 May 2023 13:08:07 +0100 Subject: [PATCH 07/10] Fix to mark external file objects correctly. --- .../msblenGeometryNodesUtils.cpp | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp index c2d9da13..a331753e 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp @@ -83,9 +83,7 @@ namespace blender { std::unordered_map records_by_session_id; std::unordered_map records_by_name; - // Collect object names in the file - auto ctx = blender::BlenderPyContext::get(); - auto objects = ctx.data()->objects; + // Collect object names in the scene std::unordered_set file_objects; auto get_path = [](Object* obj) { @@ -93,15 +91,14 @@ namespace blender { return string(data->name) + string(obj->id.name); }; - LISTBASE_FOREACH(Object*, obj, &objects) { - + BlenderPyScene scene = BlenderPyScene(BlenderPyContext::get().scene()); + scene.each_objects([&](Object* obj) { if (obj->data == nullptr) - continue; + return; auto path = get_path(obj); - file_objects.insert(path); - } + }); each_instance([&](Object* obj, Object* parent, float4x4 matrix) { From 60fee41a907d1e9c77328ec1580efdc7f52c58db Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Thu, 25 May 2023 10:02:10 +0100 Subject: [PATCH 08/10] Mark instance meshes as deleted if they are changed to be references to scene objects. --- .../Src/MeshSyncClientBlender/msblenContext.cpp | 13 +++++++++++-- Plugins~/Src/MeshSyncClientBlender/msblenContext.h | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp index 21820f07..e3fda4fc 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenContext.cpp @@ -1863,8 +1863,10 @@ void msblenContext::WaitAndKickAsyncExport() // Remove instance meshes that already exist in scene meshes: removeExistingByPath(instanceMeshes, t.geometries); removeExistingByPath(instanceMeshes, t.transforms); + + std::vector duplicates; - deduplicateGeometry(instanceMeshes, t.instanceMeshes, t.transforms); + deduplicateGeometry(instanceMeshes, t.instanceMeshes, t.transforms, duplicates); t.propertyInfos = m_property_manager.getAllProperties(); t.animations = m_animations; @@ -1872,6 +1874,9 @@ void msblenContext::WaitAndKickAsyncExport() t.deleted_entities = m_entity_manager.getDeleted(); t.deleted_instances = m_instances_manager.getDeleted(); + // Any instanced meshes that were duplicates are now in t.transforms and no longer in t.instanceMeshes so we need to mark them as deleted from instances: + t.deleted_instances.insert(t.deleted_instances.end(), duplicates.begin(), duplicates.end()); + if (scale_factor != 1.0f) { ms::ScaleConverter cv(scale_factor); for (std::vector>::value_type& obj : t.transforms) { cv.convert(*obj); } @@ -1913,7 +1918,10 @@ void msblenContext::WaitAndKickAsyncExport() exporter->kick(); } -void msblenContext::deduplicateGeometry(const std::vector& input, std::vector& geometries, std::vector& transforms) +void msblenContext::deduplicateGeometry(const std::vector& input, + std::vector& geometries, + std::vector& transforms, + std::vector& duplicates) { std::unordered_map cache; for (auto& geometry : input) { @@ -1939,6 +1947,7 @@ void msblenContext::deduplicateGeometry(const std::vector& inp *ptr = *geometry; ptr->reference = entry; transforms.push_back(ptr); + duplicates.push_back(geometry->getIdentifier()); } } else { diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenContext.h b/Plugins~/Src/MeshSyncClientBlender/msblenContext.h index 59d3f310..9272ccc9 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenContext.h +++ b/Plugins~/Src/MeshSyncClientBlender/msblenContext.h @@ -164,7 +164,7 @@ class msblenContext { void DoExportSceneCache(const std::vector& nodes); void WaitAndKickAsyncExport(); - void deduplicateGeometry(const std::vector& input, std::vector& geometries, std::vector& references); + void deduplicateGeometry(const std::vector& input, std::vector& geometries, std::vector& references, std::vector& duplicates); void deduplicateGeometry(const std::vector>& input, std::vector& geometries, std::vector& references); From 04fc16e0e6c3ea257a4295511144e8d70a801697 Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Tue, 30 May 2023 15:05:49 +0100 Subject: [PATCH 09/10] Fix to handle nested instances correctly. (cherry picked from commit 930e0e92ed488d4f2fdddcd6d31f31d22b398302) --- .../msblenGeometryNodesUtils.cpp | 94 +++++++++++++++---- 1 file changed, 74 insertions(+), 20 deletions(-) diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp index a331753e..ef4add6e 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenGeometryNodesUtils.cpp @@ -159,9 +159,37 @@ namespace blender { depsgraph.object_instances_begin(&it); - // Keep track of the names of the instances we've already processed for nested instance handling: - std::set instanceParentNames; - std::string ignoredParent; + // Blender returns the instances in a flattened list, which causes duplicate instances when we have nested instances. + // For example in an instance hierarchy like this: + // A + // |-B + // |-C + // |-D + // Blender would return the instances in this order: + // C on parent B + // D on parent B + // B on parent A + // C on parent A (Duplicate!) + // D on parent A (Duplicate!) + // To get around this, build a map of child instances to their parents and if we find a parent, we can skip the children of that instance. + + // Parent we're currently under: + std::string currentParent = ""; + + // Parents and their direct children: + std::map> instanceParentsToChildren; + + // Iterator to the current position of child instances: + vector::iterator currentObjectChildIterator; + + // currentObjectChildIterator cannot be null, this keeps track whether we have an iterator or not: + bool hasIterator = false; + + // Parent of the object for currentObjectChildIterator + std::string currentObjectChildIteratorParent = ""; + + // Keeps track of the parents we built a child hierarchy for. Once the parent changes, the previous parent's hierarchy is complete. + std::vector processedInstanceParents; for (; it.valid; depsgraph.object_instances_next(&it)) { @@ -183,36 +211,62 @@ namespace blender { auto object = instance.object(); // Don't instance empties, they have no data we can use to get a session id: - if (object->type == OB_EMPTY) { + if (object->type == OB_EMPTY) continue; - } auto world_matrix = float4x4(); instance.world_matrix(&world_matrix); - + auto parent = instance.parent(); auto parentName = msblenUtils::get_name(parent); auto objectName = msblenUtils::get_name(object); + + if (currentParent != parentName || + objectName == currentObjectChildIteratorParent) + { + currentParent = parentName; - bool isParent = instanceParentNames.find(objectName) != instanceParentNames.end(); - - // If we're inside an ignored parent, skip all its child instances: - if (ignoredParent == parentName && !isParent) { - continue; + if (instanceParentsToChildren.find(objectName) != instanceParentsToChildren.end()) { + hasIterator = true; + currentObjectChildIterator = instanceParentsToChildren[objectName].begin(); + currentObjectChildIteratorParent = objectName; + } + else + { + hasIterator = false; + } } - - // If this instance is a parent, still export it but mark ignoredParent so the children of the nested instance are not exported: - if (isParent) - { - ignoredParent = parentName; - } - else { - ignoredParent = ""; + + // build parentToChildren mapping: + if (std::find(processedInstanceParents.begin(), processedInstanceParents.end(), parentName) == processedInstanceParents.end()) { + processedInstanceParents.push_back(parentName); } - instanceParentNames.insert(parentName); + // If this is the current instance parent, add any instances to it as children + if (processedInstanceParents[processedInstanceParents.size() - 1] == parentName) { + instanceParentsToChildren[parentName].push_back(objectName); + } + // If we're currently iterating over the children of an instance parent, skip this child: + if (objectName != currentObjectChildIteratorParent) { + if (hasIterator && + currentObjectChildIterator != instanceParentsToChildren[currentObjectChildIteratorParent].end()) { + if (*currentObjectChildIterator == objectName) + { + currentObjectChildIterator++; + continue; + } + + hasIterator = false; + currentObjectChildIteratorParent = ""; + } + else { + hasIterator = false; + currentParent = ""; + } + } + handler(object, parent, world_matrix); } From f943b79ca64f07919613fe7b566ef782d1a752e7 Mon Sep 17 00:00:00 2001 From: Christian Schinkoethe Date: Thu, 1 Jun 2023 09:35:09 +0100 Subject: [PATCH 10/10] Don't mark instance meshes dirty every update. We can use the hash to only send them when needed and only send instance infos every udpate. (cherry picked from commit a84a4a63fbdb6254e5411d7d4fcab5a60520b0b4) --- Plugins~/Src/MeshSyncClient/msInstancesManager.cpp | 11 +++-------- .../msblenContextGeometryNodes.cpp | 5 +---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp b/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp index 6c816734..a4abfa05 100644 --- a/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp +++ b/Plugins~/Src/MeshSyncClient/msInstancesManager.cpp @@ -65,17 +65,13 @@ namespace ms { void InstancesManager::add(InstanceInfoPtr info) { auto& rec = lockAndGet(info->path); - - bool existed = false; - + for (int i = 0; i < rec.instancesPerParent[info->parent_path].size(); ++i) { const auto& instance = rec.instancesPerParent[info->parent_path][i]; if (instance->parent_path == info->parent_path) { - existed = true; - // Remove instance from the list, the new one will be added below: rec.instancesPerParent[info->parent_path].erase(rec.instancesPerParent[info->parent_path].begin() + i); @@ -83,9 +79,8 @@ namespace ms { } } - if (m_always_mark_dirty || !existed) { - rec.dirtyInstances = true; - } + // instanceInfos need to be sent every update because it's how the server knows which instances are still alive: + rec.dirtyInstances = true; rec.instancesPerParent[info->parent_path].push_back(info); rec.updatedParents[info->parent_path] = true; diff --git a/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp b/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp index bfa68b82..8f81f7ee 100644 --- a/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp +++ b/Plugins~/Src/MeshSyncClientBlender/msblenContextGeometryNodes.cpp @@ -37,10 +37,7 @@ void msblenContext::exportInstances() { auto id = static_cast(obj->data); scene_objects.insert(id->name + 2); }); - - // Assume everything is now dirty - m_instances_state->manager.setAlwaysMarkDirty(true); - + std::unordered_map exportedTransforms; m_geometryNodeUtils.each_instanced_object(