[Bf-blender-cvs] [363aff2ad0a] universal-scene-description: USD export: fix apply_subdiv option.

Michael Kowalski noreply at git.blender.org
Mon Feb 6 17:38:40 CET 2023


Commit: 363aff2ad0a29da67f2ae57927ba83226d2f125a
Author: Michael Kowalski
Date:   Mon Feb 6 11:37:22 2023 -0500
Branches: universal-scene-description
https://developer.blender.org/rB363aff2ad0a29da67f2ae57927ba83226d2f125a

USD export: fix apply_subdiv option.

Fixed logic to disable applying subdivision modifiers
on mesh export when the apply_subdiv USD export
option is disabled.

===================================================================

M	source/blender/io/usd/intern/usd_writer_mesh.cc

===================================================================

diff --git a/source/blender/io/usd/intern/usd_writer_mesh.cc b/source/blender/io/usd/intern/usd_writer_mesh.cc
index f7965514bff..ceaa3e96a64 100644
--- a/source/blender/io/usd/intern/usd_writer_mesh.cc
+++ b/source/blender/io/usd/intern/usd_writer_mesh.cc
@@ -51,12 +51,12 @@ static const pxr::TfToken blenderDataNS("data:", pxr::TfToken::Immortal);
 
 /* check if the mesh is a subsurf, ignoring disabled modifiers and
  * displace if it's after subsurf. */
-static ModifierData *get_subsurf_modifier(Scene *scene, Object *ob)
+static ModifierData *get_subsurf_modifier(Object *ob, ModifierMode mode)
 {
   ModifierData *md = static_cast<ModifierData *>(ob->modifiers.last);
 
   for (; md; md = md->prev) {
-    if (BKE_modifier_is_enabled(scene, md, eModifierMode_Render)) {
+    if (!BKE_modifier_is_enabled(nullptr, md, mode)) {
       continue;
     }
 
@@ -120,10 +120,15 @@ void USDGenericMeshWriter::do_write(HierarchyContext &context)
 {
   Object *object_eval = context.object;
 
-  m_subsurf_mod = get_subsurf_modifier(DEG_get_evaluated_scene(usd_export_context_.depsgraph),
-                                       context.object);
+  const ModifierMode mode = usd_export_context_.export_params.evaluation_mode ==
+                                    DAG_EVAL_VIEWPORT ?
+                                eModifierMode_Realtime :
+                                eModifierMode_Render;
 
-  if (m_subsurf_mod && !usd_export_context_.export_params.apply_subdiv) {
+  m_subsurf_mod = get_subsurf_modifier(context.object, mode);
+  const bool should_disable_temporary = m_subsurf_mod && !usd_export_context_.export_params.apply_subdiv;
+
+  if (should_disable_temporary) {
     m_subsurf_mod->mode |= eModifierMode_DisableTemporary;
   }
 
@@ -178,7 +183,7 @@ void USDGenericMeshWriter::do_write(HierarchyContext &context)
   if (usd_export_context_.export_params.export_custom_properties && mesh)
     write_id_properties(prim, mesh->id, get_export_time_code());
 
-  if (m_subsurf_mod && !usd_export_context_.export_params.apply_subdiv) {
+  if (should_disable_temporary) {
     m_subsurf_mod->mode &= ~eModifierMode_DisableTemporary;
   }
 }



More information about the Bf-blender-cvs mailing list