【译】NMGen – 配置参数

原文: 在进入网格生成每个阶段的细节之前,理解影响最终结果的各种配置参数是很重要的。这个页面提供了NMGen的类所使用的所有配置参数的功能描述,它们如何影响最终结果,以及它们之间如何相互影响。 cellSize 约束 > 0 使用者 NavmeshGenerator, SolidHeightFieldBuilder, SolidHeightField, OpenHeightField, ContourSet, PolyMeshField 描述 采样源几何图形时使用的宽度和深度分辨率。构成体素场的单元格列的宽度和深度。单元格放置在体素场的宽度/深度平面上。 宽度与源几何体的 x 轴相关联,深度与 z 轴相关联。较低的值使得生成的网格更接近源几何形状,但需要更高的处理和内存成本。 示例:cellSize与体素场的关系。...

【译】NMGen – 处理过程概览

原文: 本页面描述了NMGen用于创建导航网格数据的过程概览。这个过程是由NavmeshGenerator类实现的。 一般流程如下: 体素化:从源几何结构创建一个实体高度场。生成区域:检测实体高度场的顶部表面,并将其划分为由相邻span组成的区域。生成轮廓:检测区域的轮廓,并将它们形成简单多边形。生成多边形网格:将轮廓细分为凸多边形。生成详细网格:将多边形网格三角形化,并添加高度细节。 体素化(Voxelization) 由SolidHeightfieldBuilder类实现。 在体素化过程中,源几何结构被抽象为一个表示障碍空间的高度场。 然后对不可行走的表面进行一些初始剔除。 源几何结构中的每个三角形都使用保守体素化的方式进行体素化并添加到高度场中。保守体素化是一种确保多边形表面完全被生成的体素包围的算法。 下面是使用保守体素化包围三角形的一个例子:...

【译】NMGen – 高度场简介

原文: 为了理解 NMGen 生成导航网格的过程,首先了解如何使用高度场(heightfields)来表示体素(voxel )数据是很重要的。 高度场提供了良好的压缩和数据结构,这对于从几何图形中提取上表面信息特别有用。 基本的高度场结构 考虑欧几里得空间中任意位置的轴对齐的盒子,它的边界由最小和最大顶点定义。 现在将盒子切成宽度和深度相同的垂直列,这些列构成了一个网格。 现在沿高度轴(竖轴)以均匀的增量对列进行切片,将列分成与轴对齐的小盒子。 这种结构很好地表示了体素空间。 高度Span(Height Spans) 标准的Solid Span 考虑一列体素, 每个体素定义的区域要么是实体的(solid),代表有障碍的空间,要么是开放的(open),代表不包含任何障碍的空间。...

如何理解Netty中的Inbound和Outbound

错误的理解 ChannelInboundHandler、ChannelOutboundHandler,这里的inbound和outbound是什么意思呢?inbound对应IO输入,outbound对应IO输出?这是我看到这两个名字时的第一反应,但当我看到ChannelOutboundHandler接口中有read方法时,就开始疑惑了,应该是理解错了,如果outbound对应IO输出,为什么这个接口里会有明显表示IO输入的read方法呢? 正确的理解 直到看到了Stack Overflow上Netty作者Trustin Lee对inbound和outbound的解释,疑团终于解开:...

优化IncNet——可变长packet size

最近的工作中用到了WebSocket协议,研究了下它的数据帧格式,发现其payload length的表示方式很适合用来优化以前用到的网络库。 简单来说就是把固定4字节表示包大小的方式,改为用可变字节数表示包大小,大部分包的大小可以用1个字节表示,可表示的大小范围为0 ~ 253字节,稍微大点的包用1+2字节表示,大小范围为0 ~ 64KB,再大的包才用1+3字节表示,大小范围为0 ~ 16MB。对于游戏来说,16MB的包大小足够用了。如果不够,也是有对策的。 先来看下WebSocket的数据帧格式。 WebSocket数据帧格式 RFC 6455 给出了 WebSocket 协议的详细规范,其中第5.1节说到,在WebSocket协议中,数据是使用一系列frame来传输的,随后5.2节详细介绍了frame的格式: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3...

近期文章

最新评论

分类

标签

归档