# Dagor Max 工具 ## 概述 3ds Max 包含几个 Dagor 工具,这些工具对我们的工作流程特别有用。 - **Dagor Scene Export:** 用于导出资源、动画等的工具。 - **Dagor Utility:** 用于程序模型调整的工具。 Overview ## 连接工具 这些工具位于以下位置: `.../tools/dagor_cdk/windows-x86_64/plugins-3dsMax`. 连接它们的过程类似于 3ds Max 中的其他第三方插件: 1. 转到 **Customize > Configure User and System Paths**. Connecting the tools 2. 选择 **3rd Party Plugins** 选项卡,然后使用 **Add** 按钮添加工具的路径。 Connecting the tools Let's take a closer look at these tools. ## Dagor 场景导出 Dagor 场景导出工具用于导出资产,特别是用于将场景保存为 `.dag` 文件。这是感兴趣的主要功能。 Dagor scene export ### Dagor 场景导出器 Dagor Scene Exporter 界面中的按钮具有以下功能: - **Export DAG:** 将场景导出到`.dag`文件中。 - **Export Parameter Buttons:** - **hid:** 导出场景中的隐藏对象(如果未启用 **sel** 按钮)。 - **sel:** 仅导出 **Viewport** 中的选定资源。 - **mesh:** 导出几何体。 - **lt:** 导出光源。 - **cam:** 导出摄像机。 - **hlp:** 导出辅助函数。 - **no vnorm:** 在导出期间重置顶点法线。这不会改变模型本身,但会在导出时重置法线。 建议直接在模型上调整法线,以避免将来出现问题。有关更多详细信息,请参阅 [无VNorm和优化](#no-vnorm-and-optimization) 部分。 - **mat:** 导出材质。 - **mopt:** 在导出过程中优化材质(删除未分配给任何几何体的材质)。 - **spl:** 导出样条曲线。 ```{note} 这些参数现在附带工具提示,可提供其他说明。 ``` 在典型的资源工作流程中,以下按钮最常用: - **sel:** 请谨慎使用,因为它可以准确确定将导出的内容。 - **mesh:** 在导出几何体时始终使用。 - **mat:** 在导出包含材质的几何体时始终使用。 - **mopt:** 始终用于优化材质。 ### Export Mode **Export Mode** 部分内容广泛,值得详细解释。上述描述适用于标准导出模式,但其他模式也可用于批量导出。“标准”以外的模式用于一次导出多个文件。您无需指定文件路径,而是指定目录路径,文件名是从场景中派生的。 - **Objects as dags:** 顾名思义,此模式将每个对象导出为单独的`.dag`文件。文件名取自对象的名称,轴是本地的 - 取自对象,而不是场景中心。这意味着即使对象在场景中偏移或缩放,它也将以其原始状态导出,就像`rotation=location=[0,0,0]` 和 `scale=[1,1,1]`一样。 要在此模式下将多个对象导出到单个`.dag`文件中,请将对象分组。该组将被视为单个对象。 ```{important} 创建组时,3ds Max 会自动将其轴位置设置为组边界框的中心。这可能会导致枢轴偏移,即使所有组件的枢轴都按预期对齐。为避免这种情况,您必须手动调整分组和导出之间的枢轴位置: Export mode ``` 此模式下的导出参数的功能与标准导出中的参数完全相同 - 您可以排除隐藏对象、导出所有内容或仅导出选定项目等。 - **Layers as dags:** 此模式将图层保存为单独的 '`.dag`' 文件。'`hid`' 和 '`sel`' 参数在这里的行为略有不同,因为它们应用于图层而不是单个对象。 **Export Rules:** - 将仅导出层次结构底部的图层(没有嵌套图层的图层)。如果图层不包含与导出参数匹配的对象,则不会创建空的 `.dag`文件。 - `default` 图层永远不会被导出,因为你不太可能需要一个`default.dag`。但是,`default`中的嵌套图层将被选中,如果它们满足指定条件,则将被导出。 - 如果`sel=True`,则仅检查当前图层(在 Scene Explorer 中由不同的图标颜色表示)及其嵌套图层。如果`sel=False`,则检查场景中的所有图层。 - 如果`hid=True`,则将导出隐藏的对象和图层。如果`hid=False`,则不会导出隐藏的图层,并且会排除隐藏的对象。 Export mode 例如,在上图中,当前图层为`asset_a.lods`。如果`sel=True` ,则仅检查此图层及其子图层,而`asset_b.lods` 和 `asset_c.lods`及其内容将被忽略。 - 当前图层包含子图层,因此不会被导出。 - 子图层`asset_a.lod00`没有进一步的嵌套图层,但它有两个可见节点。无论`hid`设置如何,它都会导出为 `asset_a.lod00.dag`。 - `asset_a.lod01` 图层没有嵌套图层,但有一个节点是隐藏的。如果`hid=True`,则 `asset_a.lod01.dag`将导出,其中两个节点都在里面;如果 `hid=False`,则只会导出 `axis.lod01`节点。 - 仅当 `hid=True`时,`asset_a.lod02`图层才会导出为`asset_a.lod02.dag`,因为它是隐藏的。 - `asset_a.lod03`图层将永远不会被导出,因为它不包含任何节点,因此可见性无关紧要。 当使用一组资源而不是单个资源时,此方法特别有用。例如,通过将图层`asset_[a,b,c].lods`分组到一个名为`assets`的通用图层中并使其激活(或者简单地激活上面所示的 `default` 图层,或设置 `sel=False`),你只需单击一下即可重新导出包含所有 LOD(细节级别)的整个包。 #### 无 VNorm 和优化 导出对象时,如果未分配自定义法线,则即使未启用 **no vnorm** 选项,导出对象时也将不包含自定义法线。 但是,与“.max”文件不同,“.dag”文件不能只存储对象顶点的一部分的自定义法线,而要根据平滑组计算其余部分。如果对象中的一个顶点具有自定义法线,则 '.dag' 文件将存储所有顶点的值。 示例 1:角色模型和具有加权法线的斜面立方体,其中立方体是一个单独的对象。 No VNorm and optimization - 导出时,仅保留立方体的自定义法线,因为角色模型没有分配自定义法线。 - 重新导入后,我们可以看到角色模型缺少自定义法线(法线在 **Edit Normals** 修改器中显示为蓝色)。 - “.dag”文件大小为 75 KB。 示例 2:在导出之前,角色模型和立方体已一起附加到单个对象中。 No VNorm and optimization - 在导出过程中,将为每个顶点保存自定义法线,而不仅仅是属于立方体的顶点。 - 重新导入后,角色模型上的所有矢量都显示为“绿化”,即使它们在导出前最初看起来与上一个图像相似。 - “.dag”文件大小为 166 KB。 因此,如果您需要使用自定义法线调整着色,建议在应用自定义法线之前 **分离** 模型的可编辑部分。这样,“.dag”文件在导出后的大小不会显著增加。请务必在导出后通过重新导入来检查是否出现任何不必要的法线。 指定自定义法线后,即使通过 Edit Normals 修改器重置它们或将对象附加到新法线也不会完全删除它们。唯一可靠的解决方法是将对象导出到 **no vnorm** 的 '.dag' 文件,删除原始文件,然后重新导入清理后的文件。这可确保删除对自定义法线的所有引用,并且导出行为将恢复正常。 重新导入后,应用 **Dagor Utilities > Materials > Collapse Materials** 以防止材料被拆分为两个具有相同名称的副本。 ### Export Log Export Log 记录每个导出作的结果。 Export log 如果您遇到任何导出错误,请不要忽略它们。检查日志以确定场景中的哪些对象导致了问题。常见错误包括: - 存在退化三角形。 - 存在未平滑的三角形。 - 几何体太大。 - 分配的非 Dagor 材料。 日志现在显示在一个单独的、可调整大小的窗口中,并且只有在检测到错误时才会在导出期间自动打开。如果没有警告,则会记录导出信息,但不会弹出日志窗口。因此,如果日志在导出后打开,请仔细阅读它并解决任何问题。要查看有关最近导出的信息,您可以通过单击 **(Re)open Log** 按钮手动打开日志。如果日志窗口已经打开,单击该按钮会将其大小和位置重置为默认值,这在日志意外调整到屏幕之外或移出屏幕时非常有用。 ## Dagor 实用程序 Dagor Utility 工具专为模型的自动校正和优化而设计。以下是您可能会使用的主要功能: ```{important} 所有这些功能仅在 *Editable Mesh* 模式下工作。 ``` - **Remove degenerates**: 此功能可删除退化三角形,这些三角形是边位于同一平面上的三角形。如果在导出过程中遇到指示存在退化三角形的错误,请使用此工具。 ```{caution} 有时,此功能可能会破坏模型的着色。如果发生这种情况,请将所有内容转换回 Editable Poly 应该可以解决问题。 ``` Dagor utility - **Dagor -> Dagor New**: 将分配给模型的材质从 DagorMat1 转换为 DagorMat2。 - **Collapse materials**: 将具有相同名称和相同参数的材质合并为单个材质。当将同一对象的多个 LOD 导入到 3ds Max 中时,这非常有用。默认情况下,这些 LOD 具有重复的材质,因此在一个 LOD 上修改材质不会影响其他 LOD。此功能将复制的材质合并为一个。在对导入的材质进行任何修改之前,使用此功能至关重要。 - **Show maps on s.o. (selected objects)**: 强制纹理显示在具有 Dagor 材质的对象上。在某些情况下,纹理可能会因故障而无法正确显示 - 此按钮有助于解决此问题。 - **Hide**: 强制隐藏纹理。 - **StdMat -> DagorMat**: 将标准 3ds Max 材质转换为 DagorMat。 转换并不完美 - 它只传输漫反射纹理。 但是,它在某些情况下仍然很有用。 - **DagorMat -> StdMat**: 相反的过程,将 DagorMat 转换回标准材料。这个过程也不完美,但它可能会派上用场。 Dagor utility - **UV Utils**: 提供用于修改 UV 映射的工具: - **Copy**: 将 UV 映射到另一个通道。 - **Swap**: 在通道之间交换 UV 映射。 - **Move**: 将 UV 映射传输到另一个通道。 - **Kill**: 删除特定通道上的 UV 映射(即,在两个通道中指定相同的通道)。 - **CopyBuffer / PasteBuffer**: 理论上,这些允许将 UV 映射从一个模型复制到另一个模型。此功能尚未经过全面测试。 Dagor utility ```{seealso} 有关单独安装的其他可选工具的更多信息,请参见 [Dagor 2 Max Tools](../dagor2-3ds-max-tools/index.rst). ```