Methods
static Cesium.GeometryPipeline.compressVertices (geometry) → Geometry
压缩和打包几何法线属性值以节省内存。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
Returns:
修改后的
geometry
参数,其法线被压缩和打包。
Example:
geometry = Cesium.GeometryPipeline.compressVertices(geometry);
static Cesium.GeometryPipeline.computeNormal (geometry) → Geometry
通过平均入射到顶点的所有三角形的法线,计算包含
TRIANGLES
的几何体的每个顶点法线。结果是向几何图形添加了一个新的
normal
属性。这假定逆时针缠绕顺序。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
Returns:
具有计算的
normal
属性的修改后的
geometry
参数。
Throws:
-
DeveloperError :geometry.indices 长度必须大于 0 并且是 3 的倍数。
-
DeveloperError :geometry.primitiveType 必须是
PrimitiveType.TRIANGLES
。
Example:
Cesium.GeometryPipeline.computeNormal(geometry);
static Cesium.GeometryPipeline.computeTangentAndBitangent (geometry) → Geometry
计算包含
TRIANGLES
的几何图形的每顶点切线和双切线。结果是向几何图形添加了新的
tangent
和
bitangent
属性。这假定逆时针缠绕顺序。
基于 Eric Lengyel 的计算任意网格的切线空间基向量 。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
Returns:
具有计算的
tangent
和
bitangent
属性的修改后的
geometry
参数。
Throws:
-
DeveloperError :geometry.indices 长度必须大于 0 并且是 3 的倍数。
-
DeveloperError :geometry.primitiveType 必须是
PrimitiveType.TRIANGLES
。
Example:
Cesium.GeometryPipeline.computeTangentAndBiTangent(geometry);
创建一个将属性名称映射到唯一位置(索引)的对象,以匹配顶点属性和着色器程序。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要为其创建对象的未修改的几何图形。 |
Returns:
具有属性名称/索引对的对象。
Example:
const attributeLocations = Cesium.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
// 'position' : 0,
// 'normal' : 1
// }
static Cesium.GeometryPipeline.createLineSegmentsForVectors (geometry, attributeName , length ) → Geometry
Name | Type | Default | Description |
---|---|---|---|
geometry
|
Geometry |
具有属性的
Geometry
实例。
|
|
attributeName
|
String |
'normal'
|
可选 属性的名称。 |
length
|
Number |
10000.0
|
可选 每条线段的长度,以米为单位。这可以是负的,以将矢量指向相反的方向。 |
Returns:
一个新的
Geometry
实例,其中包含向量的线段。
Throws:
-
DeveloperError : geometry.attributes 必须具有与 attributeName 参数同名的属性。
Example:
const geometry = Cesium.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);
static Cesium.GeometryPipeline.encodeAttribute (geometry, attributeName, attributeHighName, attributeLowName) → Geometry
将浮点几何属性值编码为两个单独的属性以提高渲染精度。
这通常用于创建高精度的位置顶点属性。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
attributeName
|
String | 属性的名称。 |
attributeHighName
|
String | 编码高位的属性名称。 |
attributeLowName
|
String | 编码低位的属性名称。 |
Returns:
修改后的
geometry
参数及其编码属性。
Throws:
-
DeveloperError : 几何必须具有与 attributeName 参数匹配的属性。
-
DeveloperError : 属性 componentDatatype 必须是 ComponentDatatype.DOUBLE。
Example:
geometry = Cesium.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
static Cesium.GeometryPipeline.fitToUnsignedShortIndices (geometry) → Array.< Geometry >
如有必要,将几何体拆分为多个几何体,以确保索引中的
indices
适合无符号短裤。当不支持 unsigned int 索引时,这用于满足 WebGL 要求。
如果几何没有任何
indices
,则此函数无效。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要拆分为多个几何的几何。 |
Returns:
一组几何,每个都有适合无符号短裤的索引。
Throws:
-
DeveloperError :geometry.primitiveType 必须等于 PrimitiveType.TRIANGLES、PrimitiveType.LINES 或 PrimitiveType.POINTS
-
DeveloperError :所有几何属性列表必须具有相同数量的属性。
Example:
const geometries = Cesium.GeometryPipeline.fitToUnsignedShortIndices(geometry);
static Cesium.GeometryPipeline.projectTo2D (geometry, attributeName, attributeName3D, attributeName2D, projection ) → Geometry
将几何的 3D
position
属性投影到 2D,用单独的
position3D
和
position2D
属性替换
position
属性。
如果几何图形没有
position
,则此功能无效。
Name | Type | Default | Description |
---|---|---|---|
geometry
|
Geometry | 要修改的几何图形。 | |
attributeName
|
String | 属性的名称。 | |
attributeName3D
|
String | 3D 属性的名称。 | |
attributeName2D
|
String | 二维属性的名称。 | |
projection
|
Object |
new GeographicProjection()
|
可选 要使用的投影。 |
Returns:
具有
position3D
和
position2D
属性的修改后的
geometry
参数。
Throws:
-
DeveloperError : 几何必须具有与 attributeName 参数匹配的属性。
-
DeveloperError : 属性 componentDatatype 必须是 ComponentDatatype.DOUBLE。
-
DeveloperError :无法将点投影到 2D。
Example:
geometry = Cesium.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
static Cesium.GeometryPipeline.reorderForPostVertexCache (geometry, cacheCapacity ) → Geometry
使用 Tipsify 算法重新排序几何体的
indices
以从 GPU 的后顶点着色器缓存中获得更好的性能。如果几何
primitiveType
类型不是
TRIANGLES
或几何体没有
indices
,则此函数无效。
Name | Type | Default | Description |
---|---|---|---|
geometry
|
Geometry | 要修改的几何图形。 | |
cacheCapacity
|
Number |
24
|
可选 GPU 顶点缓存中可以保存的顶点数。 |
Returns:
修改后的
geometry
参数,其索引为 post-vertex-shader 缓存重新排序。
Throws:
-
DeveloperError : cacheCapacity 必须大于 2。
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
Example:
geometry = Cesium.GeometryPipeline.reorderForPostVertexCache(geometry);
See:
static Cesium.GeometryPipeline.reorderForPreVertexCache (geometry) → Geometry
重新排序几何体的属性和
indices
,以从 GPU 的预顶点着色器缓存中获得更好的性能。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
Returns:
修改后的
geometry
参数,其属性和索引已针对 GPU 的 pre-vertex-shader 缓存重新排序。
Throws:
-
DeveloperError :geometry.attributes 中的每个属性数组必须具有相同数量的属性。
Example:
geometry = Cesium.GeometryPipeline.reorderForPreVertexCache(geometry);
See:
static Cesium.GeometryPipeline.toWireframe (geometry) → Geometry
将几何的三角形索引转换为线索引。如果几何有一个
indices
并且它的
primitiveType
是
TRIANGLES
,
TRIANGLE_STRIP
,
TRIANGLE_FAN
,它被转换成
LINES
;否则,几何形状不会改变。
这通常用于创建线框几何图形以进行可视化调试。
Name | Type | Description |
---|---|---|
geometry
|
Geometry | 要修改的几何图形。 |
Returns:
修改后的
geometry
参数,其三角形索引转换为线。
Throws:
-
DeveloperError :geometry.primitiveType 必须是 TRIANGLES、TRIANGLE_STRIP 或 TRIANGLE_FAN。
Example:
geometry = Cesium.GeometryPipeline.toWireframe(geometry);
static Cesium.GeometryPipeline.transformToWorldCoordinates (instance) → GeometryInstance
将几何实例转换为世界坐标。这会将实例的
modelMatrix
更改为
Matrix4.IDENTITY
并转换以下属性(如果存在):
position
、
normal
、
tangent
和
bitangent
。
Name | Type | Description |
---|---|---|
instance
|
GeometryInstance | 要修改的几何实例。 |
Returns:
修改后的
instance
参数及其属性转换为世界坐标。
Example:
Cesium.GeometryPipeline.transformToWorldCoordinates(instance);