Intersection-Aware 资产放置:计算几何与 ML

发布: (2025年12月12日 GMT+8 07:50)
4 min read
原文: Dev.to

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 引擎集成
  • 性能查找表
  • 边界情况行为分析

此工作旨在建立一种 可通用且系统化的方法论,用于交叉感知资产放置。

Back to Blog

相关文章

阅读更多 »