内置方法
压缩和打包几何法线属性值以节省内存。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
返回值:
修改后的
geometry
参数,其法线被压缩和打包。
示例:
geometry = Cesium.GeometryPipeline.compressVertices(geometry);
通过对所有与顶点相关的三角形的法线求平均值,计算包含
TRIANGLES
的几何图形的每个顶点法线
结果是一个新的normal
属性添加到几何图形中。
这假设是逆时针旋转的顺序。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
返回值:
修改后的
geometry
参数,其计算出的normal
属性。
异常情况:
-
DeveloperError : geometry.indices长度必须大于0并且是3的倍数。
-
DeveloperError : geometry.primitiveType 必须是
PrimitiveType.TRIANGLES
。
示例:
Cesium.GeometryPipeline.computeNormal(geometry);
计算包含
TRIANGLES
的几何图形的每个顶点切线和位切(bitangents)。
结果是新的tangent
和bitangent
属性添加到几何图形中。
这假设是逆时针旋转的顺序。
Based on Computing Tangent Space Basis Vectors for an Arbitrary Mesh by Eric Lengyel.
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
返回值:
修改后的
geometry
参数,计算出的tangent
和bitangent
属性。
异常情况:
-
DeveloperError : geometry.indices length must be greater than 0 and be a multiple of 3.
-
DeveloperError : geometry.primitiveType must be
PrimitiveType.TRIANGLES
.
示例:
Cesium.GeometryPipeline.computeTangentAndBiTangent(geometry);
staticCesium.GeometryPipeline.createAttributeLocations(geometry) → Object
创建一个对象,将属性名映射到唯一的位置(索引),以匹配顶点属性和着色程序。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 创建对象的几何图形(未修改)。 |
返回值:
具有属性名/索引对的对象。
示例:
var attributeLocations = Cesium.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
// 'position' : 0,
// 'normal' : 1
// }
staticCesium.GeometryPipeline.createLineSegmentsForVectors(geometry, attributeName, length) → Geometry
Name | Type | Default | Description |
---|---|---|---|
geometry |
Geometry |
带有属性的Geometry 实例。 |
|
attributeName |
String |
'normal'
|
optional 属性的名称。 |
length |
Number |
10000.0
|
optional 每条线段的长度,以米为单位。它可以是负的,指向相反的方向。 |
返回值:
一个新的
Geometry
实例,带有向量的线段。
异常情况:
-
DeveloperError : geometry.attributes 必须具有与attributeName参数同名的属性。
示例:
var geometry = Cesium.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);
staticCesium.GeometryPipeline.encodeAttribute(geometry, attributeName, attributeHighName, attributeLowName) → Geometry
将浮点几何属性值编码为两个独立的属性,以提高渲染精度。
这通常用于创建高精度的位置顶点属性。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
attributeName |
String | 属性的名称。 |
attributeHighName |
String | 已编码的高位的属性名。 |
attributeLowName |
String | 已编码的低位的属性名。 |
返回值:
修改后的
geometry
参数及其编码属性。
异常情况:
-
DeveloperError : geometry必须有与attributeName参数匹配的属性。
-
DeveloperError : 属性componentDatatype必须是ComponentDatatype.DOUBLE。
示例:
geometry = Cesium.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
如果需要,将一个几何图形分割成多个几何图形,以确保
indices
中的索引适合于无符号的short。
当不支持无符号整型索引时,它用于满足WebGL需求。
如果几何图形没有任何indices
,则此函数无效。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要分割成多个几何图形的几何图形。 |
返回值:
一组几何图形,每个几何图形的索引都适合无符号的shorts。
异常情况:
-
DeveloperError : geometry.primitiveType 必须等于 PrimitiveType.TRIANGLES, PrimitiveType.LINES, 或 PrimitiveType.POINTS。
-
DeveloperError : 所有几何属性列表必须具有相同数量的属性。
示例:
var geometries = Cesium.GeometryPipeline.fitToUnsignedShortIndices(geometry);
staticCesium.GeometryPipeline.projectTo2D(geometry, attributeName, attributeName3D, attributeName2D, projection) → Geometry
将几何图形的3D< code>position属性投影到2D,将
position
属性替换为单独的position3D
>和position2D
属性。
如果几何图形没有position
,则此函数无效。
Name | Type | Default | Description |
---|---|---|---|
geometry |
Geometry | 要修改的几何图形。 | |
attributeName |
String | 属性的名称。 | |
attributeName3D |
String | 3D中属性的名称。 | |
attributeName2D |
String | 2D中属性的名称。 | |
projection |
Object |
new GeographicProjection()
|
optional 要使用的投影。 |
返回值:
修改后的
geometry
参数具有position3D
和position2D
属性。
异常情况:
-
DeveloperError : 几何图形必须有与attributeName参数匹配的属性。
-
DeveloperError : 属性componentDatatype必须是ComponentDatatype.DOUBLE。
-
DeveloperError : 无法将点投射到2D。
示例:
geometry = Cesium.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
通过使用Tipsify算法,重新排序几何图形的
索引
,以获得更好的性能。
如果几何图形primitiveType
不是TRIANGLES
或者几何图形没有indices
,这个函数没有作用。
Name | Type | Default | Description |
---|---|---|---|
geometry |
Geometry | 要修改的几何图形。 | |
cacheCapacity |
Number |
24
|
optional 可以在GPU的顶点缓存中保存的顶点数。 |
返回值:
修改后的
geometry
参数,其索引为post-vertex-shader缓存重新排序。
异常情况:
-
DeveloperError : cacheCapacity必须大于2。
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
示例:
geometry = Cesium.GeometryPipeline.reorderForPostVertexCache(geometry);
参考:
重新排序几何图形的属性和
索引
,以从GPU的pre-vertex-shader缓存获得更好的性能。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
返回值:
修改后的
geometry
参数,其属性和索引为GPU的pre-vertex-shader缓存重新排序。
异常情况:
-
DeveloperError : geometry.attributes中的每个属性数组必须具有相同数量的属性。
示例:
geometry = Cesium.GeometryPipeline.reorderForPreVertexCache(geometry);
参考:
将几何图形的三角形索引转换为线索引。
如果几何图形有
indices
,且其primitiveType
是TRIANGLES
,
TRIANGLE_STRIP
, TRIANGLE_FAN
,则转换为LINES
;否则,几何图形不会改变。
这通常用于创建用于可视化调试的线框图几何。
Name | Type | Description |
---|---|---|
geometry |
Geometry | 要修改的几何图形。 |
返回值:
修改后的
geometry
参数,其三角形索引转换为线索引。
异常情况:
-
DeveloperError : geometry.primitiveType 必须为 TRIANGLES, TRIANGLE_STRIP, 或 TRIANGLE_FAN。
示例:
geometry = Cesium.GeometryPipeline.toWireframe(geometry);
将一个几何实例转换为世界坐标。
这将实例的AAA更改为BBB,并转换以下属性(如果存在的话):
position
, normal
,tangent
, bitangent
。
Name | Type | Description |
---|---|---|
instance |
GeometryInstance | 要修改的几何实例。 |
返回值:
修改后的
实例
参数,其属性转换为世界坐标。
示例:
Cesium.GeometryPipeline.transformToWorldCoordinates(instance);