GeometryPipeline

几何的内容管道功能。
See:

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:
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:
Example:
Cesium.GeometryPipeline.computeTangentAndBiTangent(geometry);

static Cesium.GeometryPipeline.createAttributeLocations (geometry) Object

创建一个将属性名称映射到唯一位置(索引)的对象,以匹配顶点属性和着色器程序。
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

创建一个新的 Geometry ,其中 LINES 表示所提供几何图形的提供属性 ( attributeName )。这用于可视化矢量属性,如法线、切线和双切线。
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:
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:
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:
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);