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;
   }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to