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