Intersection-Aware 资产放置:计算几何与 ML
Source: Dev.to
v_{rot} = v \cos \theta + (k \times v) \sin \theta + k (k \cdot v) (1 - \cos \theta)
大多数现有的引擎和 DCC 工具仍然缺乏对交叉感知资产放置的稳健支持,即使在现代 PCG 工作流中也是如此。手动放置并进行几何扰动既耗时又低效。为了解决这个问题,我们提出了一个将 计算几何 与 管线工程技术 相结合的系统,以支持大规模资产处理。
交叉分析与打包
我们的方法融合了 基于 UV 的通用打包策略,包括 泊松盘采样 和 尺度感知分类,使用计算几何而非传统的算法启发式来表达。
泊松盘采样约束:
[ d(x_i, x_j) \ge r, \quad \forall i \neq j ]
其中 (r) 是样本之间的最小距离。
尺度感知分类根据包围盒大小将资产分配到箱子中:
[ \text{bin}(i) = \left\lfloor \frac{\text{size}_i}{\Delta} \right\rfloor ]
其中 (\Delta) 为尺度区间。
方向感知放置
为了支持语义方向感知,我们使用 Rodrigues 旋转公式 将对象的主方向向量 (\mathbf{v}) 对齐到目标法线 (\mathbf{n}):
[ \mathbf{v}_{\text{rot}} = \mathbf{v} \cos \theta + (\mathbf{k} \times \mathbf{v}) \sin \theta + \mathbf{k} (\mathbf{k} \cdot \mathbf{v}) (1 - \cos \theta) ]
其中 (\mathbf{k}) 为单位旋转轴,(\theta) 为 (\mathbf{v}) 与 (\mathbf{n}) 之间的夹角。
或者,旋转也可以用 四元数 表示:
[ \mathbf{v}’ = \mathbf{q} \mathbf{v} \mathbf{q}^{-1}, \quad \mathbf{q} = w + xi + yj + zk ]
矩阵变换使用 矩阵求逆:
[ \mathbf{T}^{-1} = (\mathbf{R} \mathbf{S})^{-1} = \mathbf{S}^{-1} \mathbf{R}^{-1} ]
其中 (\mathbf{R}) 为旋转分量,(\mathbf{S}) 为缩放分量。
基于 ML 的管线自动化
我们集成了 MCP,一个基于机器学习的 API,用于自动化 缩放和方向感知初始化,形成 AI 辅助的几何管线。这降低了数据集创建过程中的人工干预,并确保在大规模资产中的放置保持一致。
用户抽象层
高级抽象层提供:
- 批量导入/导出
- 结构化目录输出
- 自动化 PBR 兼容纹理分配
- HLSL 着色器混合
- 处理不一致的命名约定
- ARM/AO 纹理链接
这些功能 在当前的引擎或 DCC 插件中不可用。
自动化资产检索
我们使用 FAB API 实现了自动化系统:
- 支持基于 UID 或关键字的令牌批量下载
- 通过命令行将资产保存到指定目录
- 为 3D 几何研究提供高效的数据集创建
注意:FAB 最近对未初始化用户限制了 API 访问,但已认证的工作流仍可正常使用。
未来工作
该工作的初步版本正作为研究论文进行开发。未来章节将包括:
- 多 DCC 引擎集成
- 性能查找表
- 边界情况行为分析
此工作旨在建立一种 可通用且系统化的方法论,用于交叉感知资产放置。