几何图形的内容管道函数。
See:
Methods
(static) compressVertices(geometry) → {Geometry}
压缩并打包几何体“正常”属性值以保存内存。
Parameters:
计算包含
TRIANGLES
的几何体的每个顶点法线,方法是平均与顶点关联的所有三角形的法线。结果是一个新的normal
属性添加到几何图形中。这假定为逆时针缠绕顺序。
Parameters:
Throws
-
DeveloperError : geometry.indexs长度必须大于0且是3的倍数。
-
DeveloperError : geometry.primitiveType必须为
PrimitiveType.TRIANGLES
。
为包含
TRIANGLES
的几何体计算每个顶点切线和位切线。结果是添加到几何体的新tangent
和bitangent
属性。这假定为逆时针缠绕顺序。基于Eric Lengyel的计算任意网格的切线空间基向量。
Parameters:
Throws
-
DeveloperError : geometry.indexs长度必须大于0且是3的倍数。
-
DeveloperError : geometry.primitiveType必须为
PrimitiveType.TRIANGLES
。
创建将属性名称映射到唯一位置(索引)以匹配顶点属性和着色程序的对象。
Parameters:
Example
var attributeLocations = bmgl.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
// 'position' : 0,
// 'normal' : 1
// }
Parameters:
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参数同名的属性。
将浮点几何体属性值编码为两个单独的属性,以提高渲染精度。
这通常用于创建高精度位置顶点属性。
Parameters:
attributeName
(String)
属性的名称。
attributeHighName
(String)
编码高位的属性名称。
attributeLowName
(String)
已编码低位的属性名称。
Example
geometry = bmgl.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
Throws
-
DeveloperError : 几何图形必须具有与attributeName参数匹配的属性。
-
DeveloperError : 属性componentdatatype必须是componentdatatype.double。
如有必要,将几何拆分为多个几何图形,以确保
indices
中的索引适合无符号的短裤。当不支持无符号int索引时,这用于满足WebGL的要求。如果几何体没有任何indices
,则此函数无效。
Parameters:
Throws
-
DeveloperError : geometry.primitivetype必须等于primitivetype.triangles、primitivetype.lines或primitivetype.points
-
DeveloperError : 所有几何属性列表必须具有相同数量的属性。
将几何图形的3D
position
属性投影到二维,将position
属性替换为单独的position3D
和position2D
属性。如果几何体没有position
,则此函数无效。
Parameters:
attributeName
(String)
属性的名称。
attributeName3D
(String)
3D中属性的名称。
attributeName2D
(String)
二维中属性的名称。
projection
(Object)
(default new GeographicProjection()
)
要使用的投影。
Example
geometry = bmgl.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
Throws
-
DeveloperError : 几何图形必须具有与attributeName参数匹配的属性。
-
DeveloperError : 属性componentdatatype必须是componentdatatype.double。
-
DeveloperError : 无法将点投影到二维。
重新排序几何体的
indices
以通过使用tipsify算法从GPU的后顶点着色缓存获得更好的性能。如果几何图形primitiveType
不是TRIANGLES
或几何图形没有indices
,则此功能无效。
Parameters:
cacheCapacity
(Number)
(default 24
)
可保留在GPU顶点缓存中的顶点数。
Throws
-
DeveloperError : cacheCapacity必须大于2。
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
See:
重新排序几何体的属性和
indices
以从GPU的前顶点着色缓存获得更好的性能。
Parameters:
Throws
-
DeveloperError : geometry.attributes中的每个属性数组必须具有相同数量的属性。
- GeometryPipeline.reorderForPostVertexCache
See:
将几何图形的三角形索引转换为线条索引。如果几何图形有
indices
且其primitiveType
为TRIANGLES
、TRIANGLE_STRIP
、TRIANGLE_FAN
,则将其转换为LINES
;否则,不会更改几何图形。这通常用于创建用于可视化调试的线框几何图形。
Parameters:
Throws
-
DeveloperError : geometry.primitivetype必须是三角形、三角形条带或三角形扇。