dag4blend
安装
转到 Blender 中的 Edit > Preferences > Add-ons。
单击右上角的小下拉列表,然后选择 Install from Disk…
导航到附加组件的
.zip文件。安装后,选中列表中附加组件旁边的框。
要正确使用附加组件,您需要执行一些初始配置,因此暂时不要关闭 Preferences 窗口:
现在可以手动设置 ObjProps presets: 和着色器列表 dagorShaders.cfg: 的路径。此功能可确保更新附加组件不会覆盖用户所做的任何更改。建议将预设存储在 add-on 目录之外。
在指定现有目录的路径之前,不会显示预设菜单。对于您处理的每个项目,您需要指定 assets/ 目录的路径。
Note
许多界面元素都有工具提示,当您将光标悬停在它们上面时,会显示这些工具提示。
配置项目
dag4blend 的一些作员需要有关当前游戏的其他信息才能正常工作。 要创建新的属性集,请按 + ADD Project。
新项目的每个未配置参数都标有 ERROR 图标。
name: 此项目在”Active Project”下拉列表中的显示方式。
path: 所有游戏资产的存储位置。DAG、纹理、合成、proxymat等。
Shading mode: 着色器在项目之间的行为略有不同。该插件旨在适应两个主要的着色器组:类似 daNetGame 和类似 War Thunder 的着色器。
Palettes:
默认情况下,全局调色板在任何地方使用,除非它被覆盖。
Local Palette 可以按关卡配置,并且可以在特定资产上代替 Global。
Note
默认情况下,全局和局部调色板将是简单的红色和绿色填充,直到您指定现有纹理的路径。
配置的项目应没有错误图标。设置参数后,使用 lock 按钮使其不可编辑。 它可以防止意外更改属性或删除项目。
您不必总是使用 Preferences 窗口来更改活动项目或编辑其参数。 可以在 Scene Properties 中找到完全相同的项目配置器:
Note
工程参数存储在 Add-on 首选项中,但有时它们不会在退出时自动保存。 为确保新参数不会丢失,您可以使用 Save Preferences 按钮,该按钮位于项目配置器中。请记住,它是一个 global 运算符,它保存了所有首选项,而不仅仅是 dag4blend 首选项。
实验性功能
此块包含用于新功能但有一些限制的新工具的切换。目前,它仅包含 合成编辑器:
日志和文本编辑器
文本对象在此工具集中起着重要作用,因此,如果您正在使用多个显示器,建议将文本字段添加到您的布局中,或者添加一个仅包含文本字段的新窗口。
import/export 函数(以及将来的函数)将执行信息写入文本 log 字段。
Note
log 不会自行清除,因此请记住在确保没有未检查的错误和警告后定期清除它。要清除它,您只需删除文本对象即可。下次需要时,工具集将创建一个新工具集。这种方法比选择所有行并使用 Backspace/Delete 删除它们更快。
要将对象属性、dagormat 或 proxymat 编辑为文本,该工具集将创建一个特殊的文本对象。对象的名称在工具提示中提供。
See also
有关更多信息,请参阅 Proxymats.
材质设置
对于 Dagor Engine 的设置材料,有单独的 dagormat 选项卡。它包含几个子选项卡,不需要时可以折叠这些子选项卡:
Main
在这里,您可以选择材质是否为双面材质,如果是,则选择其行为方式:
single_sided: 启用具有此材质的三角形的背面剔除。
two_sided: 每个三角形都从两侧呈现。着色器稍重,但几何体更轻。它主要用于较重的几何体,例如树冠。
real_two_sided: 在引擎中,使用单面材质,但使用此材质的每个三角形都将被复制和翻转,以便从另一侧可见。此着色器更轻,但它使网格权重加倍。它更适合用于更简单的网格。
以下是 传统 属性的列表: ambient、specular、diffuse、emissive 和 power。将鼠标悬停在它们上可查看描述每个属性的工具提示。
此选项卡还允许您从可用选项中选择着色器或手动输入值。如果已将新着色器添加到游戏中,但工具集尚未更新,则此功能非常有用。
着色器及其可能的参数列表取自 dagorShaders.cfg,默认情况下位于:
C:\Users\<username>\AppData\Roaming\Blender Foundation\Blender\<version number>\scripts\addons\dag4blend.
Textures
本部分列出了正在使用的纹理。索引(与存储在 .dag 文件中的索引匹配)在工具提示中可用。您可以从 Asset Viewer 或 Explorer 中复制和粘贴路径;引号将自动删除。
Optional
着色器参数的可视化编辑。您可以手动输入值或从列表中进行选择,类似于着色器选择的工作方式。
Tools
在这里,您可以编辑文本格式的活动材质。
如果没有文本编辑字段,则会在视区左侧添加一个文本编辑字段,否则,文本将在第一个可用的文本字段中打开。
搜索有两种模式:仅针对活动材质或针对场景中的所有材质。通过单击指示当前模式的文本来切换模式。
搜索需要正确指定的项目才能正常运行 – 在处理 daNetGame 资产时,请指定 daNetGame。
Find missing…: 查找所有纹理和所有 proxymat(如果它们存在于项目中)。纹理搜索仅影响视口显示,不会改变材质路径。
Rebuild materials: 重新构建视区的材质。 重用现有着色器节点组以节省时间和文件大小。
FORCE REBUILD: 相同,但还会从 Blend 文件中删除所有着色器节点组,并从库中加载新节点组,以帮助将旧场景更新到较新的附加组件版本。
Update texture paths: 查找不存在的路径并将其替换为当前路径。应在纹理搜索后使用。
Clear texture paths: 删除目录信息,只留下纹理名称。
Proxy
该插件现在支持 proxymats。
Proxymat 参数信息取自 .blk 文件,因此它们的所有设置都是隐藏的。相反,新选项卡允许您指定 proxymat 目录的路径。它仍然可以作为文本进行编辑,也可以暂时取消选中,因为 is proxymat 。
可以通过重新加载文件中的信息来还原更改,也可以将更改保存到 proxymat。任何常规材质也可以通过切换复选框并将其保存到所需的目录来转换为 proxymat。
Note
Blender 中的 Proxymats 使用文件名,而不是用户定义的文件名。导入时,如果名称不同,着色器将自动重命名。
See also
有关更多信息,请参阅 Proxymats.
Object Properties
它位于 Dagor 选项卡下的 N 面板中,显示活动对象的参数,如果没有活动对象,则隐藏。
Properties
可视化编辑允许您单独添加或删除参数并更改其值。
UI 格式由 value 字符串确定。如果出现错误的 UI 选项(例如,prop:r=0 提供整数切换,而变量应为浮点滑块),请在 name 字段中输入参数名称和正确的格式值(例如,浮点滑块的“0.0”而不是“0”)。使用:在名称中指定类型。
Presets
配置属性后,您可以将其保存为预设,以便快速应用于其他对象。
要存储活动对象的属性,请输入预设的名称,然后单击 Save preset as:。要应用现有预设,请从下拉列表中选择该预设,然后单击 Apply preset:。
由于预设是简单的文本文件,因此您可能希望在文本编辑器中编辑它们。open presets folder按钮可打开包含.txt格式的所有预设的目录,您可以在其中添加、删除或编辑它们。更改会立即应用。
如果未找到 presets 文件夹,则此块将替换为 path 参数。输入现有路径后,您仍然可以通过按 open presets folder 附近的 gears 按钮返回编辑它。
Tools
在 Blender 中以文本格式编辑,类似于材质编辑,需要通过单击 Open as text 打开工具提示中指定的文件。
Apply…: 应用文本中的更改。
Write example: 将示例写入文本(不应用它,因为您可能需要根据具体情况修改示例)。
Transfer Attr: 将属性从活动对象复制到所有选定的对象,从而节省手动复制的时间。
从 version 2.1.0 开始,如果内部文本编辑器打开,则文本对象 props_temp 会自动打开。
Note
broken properties 中的错误值将记录在新的 Object Properties 字段中;以 ;分隔,允许手动恢复。同样,使用 Apply from text 时,会记录不正确的值。
Export
与任何其他导入-导出插件一样,.dag 导出器可通过 File > Export获得。但是,为了在工作流中多次重新导出期间节省时间,N 面板中也提供了导出器。功能相同,因此请选择最适合您的选项。
Batch Export
一般参数:
vNormals: 保存自定义法线(如果已添加到对象)。 如果没有自定义法线,即使复选框处于活动状态,导出也将包括平滑组。
applyMods: 导出应用了可见修改器的几何体。
Optimize Materials: 仅保留每个对象的至少一个多边形上使用的材质。
Path: 保存文件的路径。
Cleanup Names: 导出时忽略索引(
.000+)。
Note
使用 Cleanup… 仅用于导出 3ds Max 的复合零件。这可能会导致问题。在游戏引擎的 .dag 文件中,不应有多个同名对象。
Name: 上下文相关字段,仅在导出为单个
.dag文件时显示。此字段在其他导出模式中处于隐藏状态。Collection: 也是上下文相关的字段。您无需从下拉列表中选择集合;您只需从 Outliner 中拖动所需的集合即可。
Limit by: 允许您选择 Export Mode。
示例
限制: 可见
导出物体: 将所有场景内容导出到
Path\<Name>.dag.示例输入:
示例输出:
C:\tmp\Filename.dag包含具有自定义法线的所有场景对象。限制: Sel.Joined
导出物体: 将选定对象导出到
Path\<Name>.dag.示例输入:
示例输出:
C:\tmp\Filename.dag仅包含选定的 Scene 对象。限制: Sel.Separated
导出物体: 将选定对象导出到单独的
.dag文件,其中选定对象的名称用作文件名。示例输入:
示例输出:
C:\tmp\cube.lod00.dag,C:\tmp\cube.lod01.dag.限制: Col.Separated
导出物体: 如果内部没有子集合,则从所选层次结构开始导出集合。exportOrphans 复选框允许导出位于子集合旁边的对象。
示例输入:
示例输出:
C:\tmp\cube.lod00.dag包含内部可见的几何体和遮挡物,C:\tmp\cube.lod01.dag包含内部可见的几何体和碰撞体、C:\tmp\cube.lod02.dag。C:\tmp\cube_temp.dag将不会被导出,因为 exportOrphans 复选框未启用。如果根本不指定集合,则在这种情况下,结果将是相同的,因为检查将以 SceneCollection 开头,并且它仅包含 cube 集合。限制: Col.Joined
导出物体: 将所选集合的所有内容导出到具有此集合名称的文件中。主要为从多个
.dag文件创建的资产的 资产查看器 创建。示例输入:
示例输出:
C:\tmp\soviet_town_building_5_floors_a_joined.lod00.dag包含与此建筑物相关的所有 null LOD(细节级别)。集合已链接(在 Outliner 中使用Ctrl传输),即 它们不是副本,而是相同的集合。其余的临时 LOD (Level of Detail) 可以以相同的方式准备。这比选择对象并手动键入名称要快得多。Note
由于它们是相同的集合而不是副本,因此请勿使用
Del删除它们,而是使用RMB> Unlink删除它们,这样您就不会覆盖它们。
Collection Properties
位于 N 面板中,类似于 Object Properties。它显示活动集合的属性。与 Object Properties 不同,这些属性仅存在于 Blender 中,并用于内部目的。
Override Name
允许您覆盖将集合导出到 Col.Separated 模式的名称。默认情况下,覆盖处于禁用状态。
当导入名称超过 63 个字符(Blender 限制)的 ‘.dag’ 文件时,名称将记录在此字段中以保留 “溢出” 字符。您也可以手动重命名它 – 启用复选框并输入新名称:
在给定的示例中,集合的内容将导出到 C:\tmp\cube.lod00.dag 而不是 C:\tmp\Collection.dag。但是,这并不是最有用的应用程序。
更实际的用途是当您需要将多个 .dag 文件保存在不同的子目录中时。在这里,您可以指定将附加到主导出路径的子路径。如果不需要重命名集合,只需以 * 结束子路径,在导出时,该子路径将替换为集合名称:
在此示例中,导出路径将为 C:\tmp\subfolder\yet_another_subfolder\cube.lod00.dag,这对于处理建筑物等复杂资产非常方便。例如,composit_parts\windows\*中的窗户、composit_parts\doors\* 中的门,等等。
此外,您可以完全覆盖路径 – 以驱动器号开始:
在这种情况下,此集合的 Path 字段将被忽略,并且文件将导出到 D:\daNetGame\develop\assets\rendinst_1lod\.
Type
由 合成编辑器 使用。导入时,它会记录节点类型,在导出过程中,它会确保唯一类型(以避免在存在资产名称时进行双重解释,通常在复合和 rendinst 中发现)。对于手动创建的用于复合导出的项目,请手动设置此项。
由于 DynModel 用于复合材料,因此 DynModel 在列表中,但实际上并未应用,因此不能通过复合材料进行排列。因此,复合导入器假定名称中包含 .lod**.dag 的所有资产都是 RendInst,而不是 DynModels。
Geometry Nodes
Note
目前,几何体节点不能与自定义法线合并,因为应用修改器会擦除它们。如果要使用几何节点放置实例,请不要忘记添加 Realize instances 节点;否则,几何体将在导出过程中丢失。从技术上讲,在此节点之前,它们类似于没有自己的几何体的 “empty”。
Smoothing Groups
在 Blender 的函数中发现一个错误,该函数用于计算使用平滑组的格式的平滑组。为了解决这个问题,我们添加了平滑组编辑器。当 Face selection (面孔选择) 模式处于活动状态时,它在 Edit (编辑) 模式下可用。
导入时,对象将保留原始文件中的平滑组。但是,新对象没有平滑组,因此您必须使用 Init 按钮创建它们:
当存在平滑时,界面的工作方式类似于 3ds Max,但没有实时显示。部分预览可通过 Convert to Sharp Edges 获得,它仅显示平滑组中的锐化边缘。
从version 2.1.0 开始,实时更新 函数在平滑组编辑期间重新计算硬边缘。这会降低重型几何体的性能,因此默认情况下它处于关闭状态。
在同一版本中,您还可以通过平滑组选择多边形。单击 Select by SG 子面板中的相应组按钮。
Note
按平滑组选择将添加到现有选择中,而不是替换现有选择。因此,例如,如果您只需要选择组 3,请先清除所选内容.
何时使用?
如果模型具有锐边未将表面完全划分为闭合区域的区域,则平滑组计算将不正确,需要手动调整。如果组已保存为属性,则在修改现有 .dag 文件后导入后,您可能还需要调整平滑组。
Import
与导出类似,有两种导入方法 - 通过 File > Import 的标准方法和通过 N 面板的批量导入。
导入和纹理
.dag 文件不仅包含纹理名称,还包含其路径。但是,在传输文件时,这些路径通常会变得无效。如果纹理路径 os 无效或仅提供了纹理名称,则它将被替换为 UV 棋盘格纹理。如果一个纹理在多个材质中使用,则更新一个材质中的路径将在所有材质中更新该贴图。
大多数常用的着色器都有一个专用的节点组,大致模拟游戏中的外观。
所有这些节点组都存储在 dag4blend\extras\library.blend 中,并自动链接。
没有自己的节点组的着色器显示为 rendinst_simple 不带参数。
如果启用了 Node Wrangler,则可以从基于节点的 Shader Editor 预览纹理。
在纹理上点击Shift+Ctrl+LMB显示它是简单的无光照着色器。
File > Import
参数:
Optimize material slots: 删除未使用的插槽并合并具有相同材质的插槽。
Import LODs: 导入所有 LOD,而不仅仅是选定的
.dag文件。Import dps: 导入所有 damage_parts (
_dp).Import dmgs: 导入所有 Damage 版本。
Replace existing: 如果场景中存在具有资产名称的集合,它会将其内容替换为
.dag文件中的内容,而不是创建带有.001+后缀的副本。用于快速还原多个更改。
Batch Import
要一次导入多个资源,最好使用 Batch Import 面板。此面板比基本导入功能更强大。标题页右侧的 ? 按钮启用带有活动导入模式简短描述的附加块。
批量导入面板有两个主要块:全局参数和模式。
参数
它包含处理每个 .dag 的所有参数,无论模式如何。
Search in subfolders: 检查所有子目录中的文件。请谨慎使用,因为如果找到太多匹配项,它可能会冻结 Blender。
Optimize material slots: 与常规导入相同。
Preserve Smoothing Groups: 将平滑组另存为属性,以确保它们在导出过程中不会更改。如果您计划在导入后修改几何图形,则不建议这样做。
Reimport existing: 选中后,如果找到 .dag 的相应集合,则 importer 会将其内容替换为新导入的数据。取消选中后,它将导入到新集合中,第一个未使用的索引
.001+可用。Preserve paths: 将
.dag文件的完整路径(包括文件名)保存在 Collection Property 中。当从多个目录导入文件并需要将它们导出回原始位置时,这很有用。
Simple Mode
此模式当前与 File/Import 的行为匹配,但如果相应的参数 iset 为 True,则可以在子文件夹中搜索变体。
如果 filepath 不存在,IMPORT 按钮将被禁用。
如果 filepath 的父目录不存在,则 open import directory 也将被禁用。
Wildcard Mode
此模式使用目录路径和规则来处理文件,而不是单个文件路径。 此模式使用 fnmatch 库进行筛选。
规则非常简单:
Pattern |
Meaning |
|---|---|
|
matches everything |
|
matches any single character |
|
matches any character in seq |
|
matches any character not in seq |
所有其他元件都按原样处理。
Includes: 用于选择
.dag文件的掩码集。如果 name 与至少一个 include 匹配,则将导入 file。 如果 filter 中没有 simbols,它将用ERROR图标标记并在导入时被忽略。Excludes: 语法与 includes 相同,但用于从导入中排除文件。
Note
此模式适用于精确匹配,因此即使 filename 包含 include,也可以跳过它。
使用 * 标记可以添加其他字符的位置。
唯一的例外是文件扩展名。每个过滤器都与 filename.dag 和 filename 进行比较,因此您不必每次都指定扩展名。
示例:
Includes: “asset_a.lod0[0,2]", "asset_b_dp*”; Excludes=“*_dmg*” 导入 asset_a.lod00.dag, asset_a.lod02.dag 以及所有 asset_b_dp 的所有 LOD,除了它们的 _dmg 版本。将跳过 other_asset_a.lod00.dag,因为 include 的开头不存在 *,因此不允许使用额外的符号。
Regex Mode
此模式与前一种模式非常相似,但使用了 正则表达式 的全部功能
它存在于极少数情况下,当 fnmatch 不足以进行某些 comlex 处理时。
如果您不熟悉 regex synthax,请坚持使用 Wildcard 模式。
Note
当您将文件路径从窗口资源管理器粘贴到 Simple 模式参数时," 会自动删除。
当你将 filepath 粘贴到 Wildcard 或 Regex 模式的 Dirpath 参数时,它被剪切为 dirpath,而 filename 代替 include(带有更正的 sythax)
Note
在导入完成之前,Blender 将无响应。要监控导入过程,请打开控制台 (Window > Toggle system console).
Additional Features
通常,您可能需要导入已在 Asset Viewer 或 Explorer 中打开的单个资产。您可以从 Asset Viewer 或 Explorer(RMB > Copy as path))中复制路径,并将其粘贴到批量导入面板的 Path 字段中,而不是通过 **File > Import **进行搜索。
此作会自动将文件名传输到 Masks,单击 IMPORT 将仅加载所需的资产。
如果只有资源的名称,则可以在 Masks 中输入它,然后使用 Apply as search path 按钮将整个项目目录和子目录设置为搜索路径。
如果路径未知,则导入速度会慢几秒钟(由于搜索文件),但这通常比手动搜索完整路径要快。
Tools
该面板正在不断改进。工具被分组为块,这些块在不使用时可以折叠,以避免界面混乱。
Optimize material slots: 合并相同的材质槽并删除未使用的材质槽。
Merge Duplicates: 合并具有不同索引的相同材质(例如,
Material和Material.001)。使用Ctrl+C/Ctrl+V复制对象时,经常会出现这些重复的材质,因为此作会将选择保存到外部.blend文件,然后将其连同其所有材质一起附加到活动场景中。Find missing textures: 在所选工程的目录中搜索没有有效路径的纹理。
Find missing proxymats: proxymat 的类似功能。
Save textures: 从选定对象中收集所有具有有效路径的纹理,并将它们保存在导出目录的
/textures/子目录中。Preserve Sharp Edges: 根据 Autosmooth Angle 标记锐边,并将角度设置为 180°,以确保场景中的模型与
.dag文件中的模型保持一致。在导出之前,此功能不是必需的,因为它将自动应用于导出的几何体(保持原始场景几何体不变)。Apply Modifiers: 将修改器应用于几何体。在导出之前不是必需的,因为导出器可以保留原始场景中的修改器。
Clear normals: 从选定对象中删除自定义法线。
sort collections: 按最长的匹配名称前缀递归地对场景集合进行分组。您可以在 Col.Joined 导出的屏幕截图上看到示例。
pack orphans: 搜索不在层次结构底部的对象,并为它们创建单独的集合。
Setup Destruction: 将要销毁的典型对象属性列表分配给所有选定的对象:
animated_node:b=yes
physObj:b=yes
collidable:b=no
massType:t=none
使用 gi_black 材质创建 边界框 (BBox) 对象,将它们设置为子对象,并分配碰撞器参数:
materialName:t=[value from the material field]
density:r=[value from the density field]
massType:t=box
collType:t=box
BBox 可能仍需要调整和缩放以更好地贴合轮廓。在某些情况下,可能还需要复制它们。但是,此过程仍可节省整体设置的时间。
Texture Baker
允许将纹理从复杂着色器烘焙到 rendinst_simple。 通常用于最终 LOD 或将资产移植到移动项目。
See also
有关更多信息,请参阅 Texture Baker tool.
Experimental Features
Composite Editor
See also
有关更多信息,请参阅 Composite Editor.
Blender 中附加工具的一般限制
名称中的字符数限制 – 长度超过 63 个字符的名称将被截断,并且在导入具有相同名称的对象时,会附加索引
.001,从而将最大名称长度再减少 4 个字符。从版本1.2.6开始,过长的名称将保存在 Collection Property 中。尚不支持动画。