three.js BufferGeometryUtils
一个包含 BufferGeometry 实例的实用方法的类。
方法
.computeMikkTSpaceTangents ( geometry : BufferGeometry, MikkTSpace : Object, negateSign : Boolean = true ) : Object
- geometry -- BufferGeometry 的实例。
- MikkTSpace -- examples/jsm/libs/mikktspace.module.js 或 mikktspace npm 包的实例。在使用前等待 MikkTSpace.ready。
- negateSign -- 是否取反每条切线的符号分量 (.w)。某些格式的法线贴图约定是必需的,包括 glTF。
使用 MikkTSpace 算法计算顶点切线。 MikkTSpace 始终生成相同的切线,并用于大多数建模工具和法线贴图面包师。将 MikkTSpace 用于具有法线贴图的材质,因为不一致的切线可能会导致法线贴图中出现细微的视觉问题,尤其是在镜像 UV 接缝周围。
与此方法相比,BufferGeometry.computeTangents(一种自定义算法)生成的切线可能与其他软件中的切线不匹配。自定义算法足以用于 ShaderMaterial 的一般使用,并且可能比 MikkTSpace 更快。
返回原始 BufferGeometry。索引几何将被取消索引。需要位置、法线和 uv 属性。
.computeMorphedAttributes ( [param:Mesh | Line | Points object] ) : Object
object -- 网格实例 |线 |积分。
返回几何为 BufferGeometry 的变形/蒙皮 Object3D 的当前属性(Position 和 Normal)以及原始属性:具有 4 个属性的对象:positionAttribute、normalAttribute、morphedPositionAttribute 和 morphedNormalAttribute。有助于光线追踪或贴花(即,应用到具有 BufferGeometry 的变形对象的 DecalGeometry 将使用原始 BufferGeometry,而不是变形/蒙皮的 BufferGeometry,从而生成不正确的结果。使用此函数创建阴影 Object3D 可以正确生成 DecalGeometry) .
.estimateBytesUsed ( geometry : BufferGeometry ) : Number
geometry -- 通过 BufferGeometry 的实例来估计内存使用情况。
返回所有用于表示几何体的属性所占用的字节数。
.interleaveAttributes ( attributes : Array ) : InterleavedBufferAttribute
attributes -- 由 BufferAttribute 实例组成的数组。
交叉存储一组属性并返回一个新的对应属性数组,这些属性共享一个 InterleavedBuffer 实例。所有属性都必须兼容的该类型。如果合并不成功,则该方法返回 null 。
.mergeBufferAttributes ( attributes : Array ) : BufferAttribute
attributes -- 由 BufferAttribute 实例组成的数组。
将一组属性合并为一个单一的实例。所有几何体都必须兼容该属性,不支持 InterleavedBufferAttributes 。 如果合并不成功,则该方法返回 null 。
.mergeBufferGeometries ( geometries : Array, useGroups : Boolean ) : BufferGeometry
geometries -- 由 BufferGeometry 实例的数组。
useGroups -- 是否要为了合并几何体而产生组。
将一组几何体合并到一个实例中。所有几何体都必须兼容该属性。 如果合并不成功,则该方法返回 null。
.mergeGroups ( geometry : BufferGeometry ) : BufferGeometry
geometry -- 要合并组的 BufferGeometry 实例。
合并给定几何体的组。
.mergeVertices ( geometry : BufferGeometry, tolerance : Number ) : BufferGeometry
geometry -- 用于合并顶点的 BufferGeometry 实例。
tolerance -- 要合并的顶点属性之间允许的最大差异。 默认为 1e-4。
返回一个新的 BufferGeometry ,其中包含将所有(在容差范围内的)具有相似属性的顶点合并而成的顶点。
.toCreasedNormals ( geometry : BufferGeometry, creaseAngle : Number ) : BufferGeometry
geometry -- 输入几何。
creaseAngle -- 折痕角度。
创建一个新的非索引几何体,除了以大于折痕角度的角度相交的面外,所有地方都具有平滑的法线。
.toTrianglesDrawMode ( geometry : BufferGeometry, drawMode : TrianglesDrawMode ) : BufferGeometry
geometry -- BufferGeometry 的实例。
drawMode -- 给定几何图形的绘制模式。有效输入为 THREE.TriangleStripDrawMode 和 THREE.TriangleFanDrawMode。
返回基于 THREE.TrianglesDrawMode 绘制模式的新索引几何。此模式对应于 gl.TRIANGLES WebGL 原语。
源码
examples/jsm/utils/BufferGeometryUtils.js
更多建议: