GeometryPipeline

几何图形的内容管道函数。
See:

Methods

(static) compressVertices(geometry) → {Geometry}
压缩并打包几何体“正常”属性值以保存内存。
Parameters:
geometry (Geometry) 要修改的几何图形。
Example
geometry = bmgl.GeometryPipeline.compressVertices(geometry);
(static) computeNormal(geometry) → {Geometry}
计算包含TRIANGLES的几何体的每个顶点法线,方法是平均与顶点关联的所有三角形的法线。结果是一个新的normal属性添加到几何图形中。这假定为逆时针缠绕顺序。
Parameters:
geometry (Geometry) 要修改的几何图形。
Example
bmgl.GeometryPipeline.computeNormal(geometry);
Throws
  • DeveloperError : geometry.indexs长度必须大于0且是3的倍数。
  • DeveloperError : geometry.primitiveType必须为PrimitiveType.TRIANGLES
(static) computeTangentAndBitangent(geometry) → {Geometry}
为包含TRIANGLES的几何体计算每个顶点切线和位切线。结果是添加到几何体的新tangentbitangent属性。这假定为逆时针缠绕顺序。

基于Eric Lengyel的计算任意网格的切线空间基向量。

Parameters:
geometry (Geometry) 要修改的几何图形。
Example
bmgl.GeometryPipeline.computeTangentAndBiTangent(geometry);
Throws
  • DeveloperError : geometry.indexs长度必须大于0且是3的倍数。
  • DeveloperError : geometry.primitiveType必须为PrimitiveType.TRIANGLES
(static) createAttributeLocations(geometry) → {Object}
创建将属性名称映射到唯一位置(索引)以匹配顶点属性和着色程序的对象。
Parameters:
geometry (Geometry) 未修改的几何图形,用于创建对象。
Example
var attributeLocations = bmgl.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
//   'position' : 0,
//   'normal' : 1
// }
(static) createLineSegmentsForVectors(geometry, attributeName, length) → {Geometry}
创建一个新的Geometry,其中LINES表示提供的几何图形的提供属性(attributeName)。这用于可视化向量属性,如法线、切线和位切线。
Parameters:
geometry (Geometry) 具有属性的Geometry实例。
attributeName (String) (default 'normal') 属性的名称。
length (Number) (default 10000.0) 每段线的长度,单位为米。这可以是负的,使向量指向相反的方向。
Example
var geometry = bmgl.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);
Throws
  • DeveloperError : geometry.attributes必须具有与attribute name参数同名的属性。
(static) encodeAttribute(geometry, attributeName, attributeHighName, attributeLowName) → {Geometry}
将浮点几何体属性值编码为两个单独的属性,以提高渲染精度。

这通常用于创建高精度位置顶点属性。

Parameters:
geometry (Geometry) 要修改的几何图形。
attributeName (String) 属性的名称。
attributeHighName (String) 编码高位的属性名称。
attributeLowName (String) 已编码低位的属性名称。
Example
geometry = bmgl.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
Throws
  • DeveloperError : 几何图形必须具有与attributeName参数匹配的属性。
  • DeveloperError : 属性componentdatatype必须是componentdatatype.double。
(static) fitToUnsignedShortIndices(geometry) → {Array.<Geometry>}
如有必要,将几何拆分为多个几何图形,以确保indices中的索引适合无符号的短裤。当不支持无符号int索引时,这用于满足WebGL的要求。

如果几何体没有任何indices,则此函数无效。

Parameters:
geometry (Geometry) 要拆分为多个几何图形的几何图形。
Example
var geometries = bmgl.GeometryPipeline.fitToUnsignedShortIndices(geometry);
Throws
  • DeveloperError : geometry.primitivetype必须等于primitivetype.triangles、primitivetype.lines或primitivetype.points
  • DeveloperError : 所有几何属性列表必须具有相同数量的属性。
(static) projectTo2D(geometry, attributeName, attributeName3D, attributeName2D, projection) → {Geometry}
将几何图形的3Dposition属性投影到二维,将position属性替换为单独的position3Dposition2D属性。

如果几何体没有position,则此函数无效。

Parameters:
geometry (Geometry) 要修改的几何图形。
attributeName (String) 属性的名称。
attributeName3D (String) 3D中属性的名称。
attributeName2D (String) 二维中属性的名称。
projection (Object) (default new GeographicProjection()) 要使用的投影。
Example
geometry = bmgl.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
Throws
(static) reorderForPostVertexCache(geometry, cacheCapacity) → {Geometry}
重新排序几何体的indices以通过使用tipsify算法从GPU的后顶点着色缓存获得更好的性能。如果几何图形primitiveType不是TRIANGLES或几何图形没有indices,则此功能无效。
Parameters:
geometry (Geometry) 要修改的几何图形。
cacheCapacity (Number) (default 24) 可保留在GPU顶点缓存中的顶点数。
Example
geometry = bmgl.GeometryPipeline.reorderForPostVertexCache(geometry);
Throws
See:
(static) reorderForPreVertexCache(geometry) → {Geometry}
重新排序几何体的属性和indices以从GPU的前顶点着色缓存获得更好的性能。
Parameters:
geometry (Geometry) 要修改的几何图形。
Example
geometry = bmgl.GeometryPipeline.reorderForPreVertexCache(geometry);
Throws
  • DeveloperError : geometry.attributes中的每个属性数组必须具有相同数量的属性。
See:
  • GeometryPipeline.reorderForPostVertexCache
(static) toWireframe(geometry) → {Geometry}
将几何图形的三角形索引转换为线条索引。如果几何图形有indices且其primitiveTypeTRIANGLESTRIANGLE_STRIPTRIANGLE_FAN,则将其转换为LINES;否则,不会更改几何图形。

这通常用于创建用于可视化调试的线框几何图形。

Parameters:
geometry (Geometry) 要修改的几何图形。
Example
geometry = bmgl.GeometryPipeline.toWireframe(geometry);
Throws
  • DeveloperError : geometry.primitivetype必须是三角形、三角形条带或三角形扇。
(static) transformToWorldCoordinates(instance) → {GeometryInstance}
将几何体实例转换为世界坐标。这会将实例的modelMatrix更改为Matrix4.IDENTITY,并转换以下属性(如果存在):positionnormaltangentbitangent
Parameters:
instance (GeometryInstance) 要修改的几何体实例。
Example
bmgl.GeometryPipeline.transformToWorldCoordinates(instance);