There is no audience.

分类: Navmesh

【译】NMGen - 配置参数

原文:http://www.critterai.org/projects/nmgen_study/config.html

Unity官方文档中文版中,将“ledge”一词译为“窗台”,本文亦采用这种译法。
英文文档 中文文档

Recast Navigation文档中对ledge的定义:
A ledge is a span with one or more neighbors whose maximum is further away than walkableClimb from the current span's maximum. This method removes the impact of the overestimation of conservative voxelization so the resulting mesh will not have regions hanging in the air over ledges.
A span is a ledge if: rcAbs(currentSpan.smax - neighborSpan.smax) > walkableClimb

在进入网格生成每个阶段的细节之前,理解影响最终结果的各种配置参数是很重要的。这个页面提供了NMGen的类所使用的所有配置参数的功能描述,它们如何影响最终结果,以及它们之间如何相互影响。

cellSize

采样源几何图形时使用的宽度和深度分辨率。构成体素场的单元格列的宽度和深度。
单元格放置在体素场的宽度/深度平面上。 宽度与源几何体的 x 轴相关联,深度与 z 轴相关联。
较低的值使得生成的网格更接近源几何形状,但需要更高的处理和内存成本。

示例:cellSize与体素场的关系。

有时你可能会注意到障碍物的网格边界出乎意料地宽,或物体一侧与另一侧的边界的宽度不同。 这是网格生成过程的固有行为。 看一下上面体素场的可视化,最终网格中的顶点只能存在于体素的角上。 顶点被对齐到体素网格,体素尺寸越大,最终网格顶点的潜在 xz 平面偏移就越大,边界“错误”就越明显。

约束
> 0
使用者
NavmeshGenerator, SolidHeightFieldBuilder, SolidHeightField, OpenHeightField, ContourSet, PolyMeshField
描述

采样源几何图形时使用的宽度和深度分辨率。构成体素场的单元格列的宽度和深度。
单元格放置在体素场的宽度/深度平面上。 宽度与源几何体的 x 轴相关联,深度与 z 轴相关联。
较低的值使得生成的网格更接近源几何形状,但需要更高的处理和内存成本。

示例:cellSize与体素场的关系。

有时你可能会注意到障碍物的网格边界出乎意料地宽,或物体一侧与另一侧的边界的宽度不同。 这是网格生成过程的固有行为。 看一下上面体素场的可视化,最终网格中的顶点只能存在于体素的角上。 顶点被对齐到体素网格,体素尺寸越大,最终网格顶点的潜在 xz 平面偏移就越大,边界“错误”就越明显。

【译】NMGen - 处理过程概览

原文:http://www.critterai.org/projects/nmgen_study/overview.html

本页面描述了NMGen用于创建导航网格数据的过程概览。这个过程是由NavmeshGenerator类实现的。

如果你还没有这样做,我强烈建议你观看 AIGameDev.com 上的 Recast 演示视频

在演示中,Alex 提到 Recast 将在未来发布。 自录制视频以来,开源版本已经发布。 在撰写本页时,Recast 最高版本为 v1.4。

一般流程如下:

  1. 体素化:从源几何结构创建一个实体高度场
  2. 生成区域:检测实体高度场的顶部表面,并将其划分为由相邻span组成的区域。
  3. 生成轮廓:检测区域的轮廓,并将它们形成简单多边形
  4. 生成多边形网格:将轮廓细分为凸多边形。
  5. 生成详细网格:将多边形网格三角形化,并添加高度细节。
如何使用NMGen创建的数据超出了本研究的范围。但 Recast 的姊妹库 Detour 是如何使用这些数据结构进行寻路和空间推理的一个很好的例子,可以在Reast网站上找到它。

体素化(Voxelization)

SolidHeightfieldBuilder类实现。

在体素化过程中,源几何结构被抽象为一个表示障碍空间的高度场。 然后对不可行走的表面进行一些初始剔除。

源几何结构中的每个三角形都使用保守体素化的方式进行体素化并添加到高度场中。保守体素化是一种确保多边形表面完全被生成的体素包围的算法。

下面是使用保守体素化包围三角形的一个例子:

【译】NMGen - 高度场简介

原文:http://www.critterai.org/projects/nmgen_study/heightfields.html

为了理解 NMGen 生成导航网格的过程,首先了解如何使用高度场(heightfields)来表示体素(voxel )数据是很重要的。

高度场提供了良好的压缩和数据结构,这对于从几何图形中提取上表面信息特别有用。

基本的高度场结构

考虑欧几里得空间中任意位置的轴对齐的盒子,它的边界由最小和最大顶点定义。

现在将盒子切成宽度和深度相同的垂直列,这些列构成了一个网格。

Page 2 of 2

Powered by WordPress & Theme by Anders Norén

粤ICP备2021073162号-1