# Dagor Simple CMP Editor ```{caution} 此工具目前正在开发中。 ``` ## 安装 [安装脚本](installation.md) 按照提供的说明进行作。 ```{important} - 此脚本需要 3ds Max 2021 或更高版本才能运行。 - 确保插件版本至少为 `1.8`。 - 这个简单的 CMP 编辑器需要 [Dagor Fast Editor User Properties](fast_editor_user_properties.md),它是工具箱的一部分。 ``` ## 访问 Simple CMP Editor 要开始使用,请确保您的工具箱是最新的。然后,将 `dagor_CMP_GeneratorSimple.ms` 拖放到 **Viewport** 中。 - 按 `Ctrl`+`Shift`打开浮动面板: Fast Editor User Properties - 按 **X** 关闭面板将完全禁用此编辑器。要返回切换行为,请从 **Gaijin Tools > Dagor Fast Properties...** 重新打开编辑器 Fast Editor User Properties - 要打开 Dagor CMP Exporter 的主窗口,请导航至 **Gaijin Tools > Dagor CMP Exporter...** {bdg-dark-line}`1`。 - 要验证脚本的版本 {bdg-dark-line}`2`,请前往 **Gaijin Tools > About**。**About**窗口将显示当前版本。定期检查以确保您的脚本是最新的,这一点很重要。 Simple CMP Editor ## 使用 Simple CMP Editor 所有节点属性都存储在 **Object Properties** 中。当对象的位置、旋转或缩放发生变化时,脚本会自动更新这些属性。下面是一个示例: Simple CMP Editor 始终使用 CMP 导出器来编辑属性。以下是当前支持的属性列表: ### 支持的属性
属性 示例 说明
place_type:i
place_type:i = 1
"No Collision Type"=0, "Place Pivot"=1, "Place Pivot and use Normal"=2, "Place 3-point (bbox)"=3, "Place Foundation (bbox)"=4, "Place on Water (flootable)"=5, "Place Pivot with Rendinst Collision"=6
rot_x:p2
rot_x:p2=90, 2 
将节点沿所选轴旋转 90°,然后应用介于 -2° 和 2° 之间的随机角度
rot_y:p2
rot_y:p2=0, 30 
在所选轴上在 -30° 和 30° 之间随机旋转节点
rot_z:p2
rot_z:p2=90, 2
将节点沿所选轴旋转 90°,然后应用介于 -2° 和 2° 之间的随机角度
offset_x:p2
offset_x:p2=1, 2
沿 x 轴将节点移动 1 个单位,然后在 +/-2 个单位之间随机移动
offset_y:p2
offset_y:p2=1, 2
沿 y 轴将节点移动 1 个单位,然后在 +/-2 个单位之间随机移动
offset_z:p2 
offset_z:p2=1, 2 
沿 z 轴将节点移动 1 个单位,然后在 +/-2 个单位之间随机移动
scale:p2
scale:p2=1.5, 0.1
将节点均匀缩放为 1.5,变化范围为 [-0.1 .. 0.1]
yScale:p2
yScale:p2=1, 0.1
将节点高度改变 [-0.1 .. 0.1] 范围内的值
tm:m
tm:m=[[1.0, 0.0, 0.0] [0.0, 1.0, 0.0] [0.0, 0.0, 1.0] [0.0, 0.0, 0.0]]
非随机位置、旋转和缩放
aboveHt:r
aboveHt:r=0.0
指定表面上方的固定高度

该脚本不会影响上面未列出的手动输入的属性。下面的动画显示,当您更改参数时,碰撞对象的不受支持的属性保持不变,例如: ```{eval-rst} .. video:: _images/simple_cmp_preserving_unsup_prop.webm :width: 90% ``` ```{important} 一次只能编辑一个选定的对象。如果您选择多个对象,CMP Exporter 界面将灰显且无法进行参数编辑。这是有意为之,以防止损坏或擦除不同对象的属性。 ``` 但是,可以在选定的组中移动、旋转或缩放对象。当脚本运行时,它会自动更新 user custom 中的所有参数 属性。如果在编辑期间未运行脚本,则当您按下 **Export CMP** 按钮时,参数将自动更新。 或者,运行脚本并选择一个对象以自动更新其参数。 ```{important} 如果对象尚不具有任何 CMP 属性,则将自动分配默认属性,例如 `Matrix3` 和 `Place type`。请注意,只有“可编辑网格”或“可编辑多边形”对象可以具有 CMP 设置。对于不可编辑的对象,界面将灰显且无法编辑。 ``` 例如,创建一个框,并在脚本窗口打开时选择它。整个界面将是灰色的,因为它不是 Editable Mesh 或 Editable Poly。 它看起来像这样(只有 node name 和 Matrix3): ```text node{ name:t="ancient_statue_c_dmg_056_dmg:rendInst" tm:m=[[0.606621, 0.0, 0.0105886] [0.000184797, 0.606621, -0.010587] [-0.010587, 0.0105886, 0.606528] [-0.211369, 3.01566, 0.255796]] } ``` ```{important} 场景中的所有对象在所有轴上必须具有相同的缩放。 ``` 如果对象未沿所有轴均匀缩放,则会显示一条警告,建议进行更正: Simple CMP Editor 该脚本不会更正此错误;它把决定权留给你。但是,每次在脚本运行时选择此类对象时,都会显示警告。 ### CMP 编辑器界面 我们来考虑一下脚本接口的功能: Simple CMP Editor - **Output Path** {bdg-dark-line}`1`: 指定导出后保存 `.composit.blk` 文件的路径。按钮 {bdg-dark-line}`2` 允许您选择自定义路径。首次使用时,这将默认为 3ds Max 导出路径。 - **Default Node Type** {bdg-dark-line}`3`: 设置默认节点类型。如果名称包含一些严重错误(如无效字符),则脚本将指示以下形式的错误: Simple CMP Editor - **Remove numeric suffixes if exist** {bdg-dark-line}`4`: 如果启用,则在导出期间删除对象名称中的最后三位数字。例如,`ancient_statue_c_dmg_087` 将导出为 `ancient_statue_c_dmg_`。这很有用,因为 3ds Max 中的对象通常包含最终合成文件中不需要的数字。 - **Export CMP** {bdg-dark-line}`5`: 将对象导出到指定目录。 将导出当前活动图层中的所有对象。回想一下,现用图层是由蓝色文件夹突出显示的图层 Simple CMP Editor 例如,将图层 Simple CMP Editor 导出到指定路径的 `ancient_statue_c_dmg_cmp.composit.blk`。 确保活动图层的命名正确;否则,将出现警告: Simple CMP Editor 接下来是从 3ds Max 导出到 Dagor 的参数: - **Transfor Matrix3 Enabled** {bdg-dark-line}`6`: 将转换矩阵(位置、旋转、缩放)导出为 Dagor 的格式。 ```{seealso} 有关更多信息,请参阅 [变换矩阵](https://en.wikipedia.org/wiki/Transformation_matrix#Examples_in_3D_computer_graphics). ``` - **place_type Enabled** {bdg-dark-line}`7`: 在 Dagor 中启用对象放置类型。有七种不同的安置方法,您的导师可以详细解释。 - **Parameter block** {bdg-dark-line}`8`: 负责沿 X、Y、Z 轴随机化节点旋转。 **示例:** ```{eval-rst} .. video:: _images/simple_cmp_ed_prop_edit_rot_02.webm :width: 90% ``` ```{important} - 如果启用了`rot_x`、`rot_y`、`rot_z`、`offset_x`、`offset_y`、`offset_z`、`scale` 或 `yScale` 的任何复选框,则 `Matrix3` 参数将不可用。 - 此限制是有意为之,并符合 Dagor Engine 要求。 ``` - **Parameter block** {bdg-dark-line}`9`: 负责沿 x、y、z 轴相对于当前位置随机化节点偏移。 - **Scale Enabled** {bdg-dark-line}`10`: 在指定范围内,从 Base Scale 值随机化节点缩放。 - **yScale Enabled** {bdg-dark-line}`11`: 启用沿 Y 轴(在 3ds Max 中为 Z 轴,在 Dagor中为 up)缩放的随机化。 - **aboveHit Enabled** {bdg-dark-line}`12`: 通过 `aboveHt` 参数中的指定值启用表面上方的固定节点定位。 随着 Dagor 引擎的发展,可能会添加新参数或修改现有参数。请始终参考更新的参数表。 ```{note} 此脚本很复杂,用作 3ds Max 编辑器中的编辑器。它可能包含 bug 或错误。如果您遇到任何奇怪的行为或问题,请不要尝试自行解决。立即向开发人员报告这些问题,以节省时间并促进快速修复。 ``` - **Open Local Documentation** {bdg-dark-line}`13`: 指向此文档的链接。 - **Contact with Developer** {bdg-dark-line}`14`: 如果需要帮助,请为开发人员提供联系信息。