MH4M 1.3.1 PoseEditor导出DNA功能中,导出选项不显示

Maya版本 2025.3;

MetaHuman For Maya版本 1.3.1;

使用PoseEditor时,不使用导入DNA功能,直接在一副骨架上,从零添加RBF、Pose等,此时点击导出DNA,是看不到导出选项的。

但当我使用导入DNA功能,导入任意DNA以后,导出DNA的导出选项就可见了。这种情况下,只要我不关闭Maya,我打开上面从零创建RBF的文件,点击导出DNA,也是可以看到导出选项的。

我觉得这是一个bug,似乎是dna_export_dialog的_serializer_picker,只能通过导入DNA刷新,默认为None。

请检查一下以上问题,是否可以修复,何时可以修复。

谢谢。

有导出选项.png(63 KB)
无导出选项.png(69.3 KB)

好的,感谢反馈,我和相关同事沟通一下。

如果方便的话,能提供一下操作时的log吗?​

和相关同事已经确认了该问题,他们会去评估一下修复计划,后续有更新再同步给你。

嗨,因为排期的原因,下个版本应该进不去了,后续啥时候进暂时无法确定。

这边开发者给了一些work around的方法,可以参考一下,希望能暂时减轻一些你们开发过程中遇到的痛苦。原文如下:

A few different workarounds for this:

  1. As you have already stated, they can import in a non face DNA file and then clear the scene which will preserve the export options.
  2. No options present doesn’t stop the user from hitting save, it will default to the Body DNA 2.X and use previously saved defaults.
  3. Export via Python with the above snippet (or something similar)
from pathlib import Path
 
from mh_pose_editor import api
 
pose_editor = api.PoseEditor()
 
# ----------------------------------------------------------------------------- #
# Pick which solvers go into the DNA.
#   pose_editor.rbf_solvers -> every UERBFSolverNode in the scene (this is also the
#   default if you pass solvers=None to serialize_to_file).
# ----------------------------------------------------------------------------- #
solvers = pose_editor.rbf_solvers
 
# ----------------------------------------------------------------------------- #
# All export options for body DNA (MHB.X), from BodyExportProperties /
# Serializer.serialize() in model/serializers/dna_serializer_2_5.py.
# Values below are the defaults.
# ----------------------------------------------------------------------------- #
export_settings = {
    # Write the mesh/geometry blocks into the DNA.
    # NOTE: even with this off, meshes in the scene are still inspected to work
    # out LOD settings for the skeleton and RBF layers.
    "export_geometry": True,
 
    # Only valid when export_geometry is True.
    # True  -> use the current selection's meshes
    # False -> use every mesh in the scene
    "export_selected_geometry": False,
 
    # Write the RBF solver layers (poses, drivers, driven joints).
    "export_rbf": True,
 
    # Write the SwingTwistEvaluatorNode setups.
    "export_swing_twist": True,
 
    # Optional: pre-built [solver.data(enum_values=False), ...] list. Leave it out
    # and the serializer builds it itself; supply it to avoid re-querying Maya if
    # you already have it.
    # "solver_data_cache": [s.data(enum_values=False) for s in solvers],
}
 
model = pose_editor.serialize_to_file(
    file_path=Path("D:/exports/my_character_body.dna"),
    solvers=solvers,
    # model=<pre-built MHDNAModel>,  # skips re-serializing the scene entirely
    **export_settings,
)
 
print(f"Exported {len(solvers)} solver(s): {model.descriptor.db_name}")

好的,谢谢~

太感谢啦,我将认真学习这条回复