GeometryPipeline

GeometryPipeline()

几何体的内容流水线函数。
See:

Methods

staticSuperMap3D.GeometryPipeline.compressVertices(geometry)Geometry

压缩和打包几何法向属性值以节省内存。
Name Type Description
geometry Geometry 要修改的几何体。
Returns:
修改后的几何参数,其法线经过压缩和打包。
Example:
geometry = SuperMap3D.GeometryPipeline.compressVertices(geometry);

staticSuperMap3D.GeometryPipeline.computeNormal(geometry)Geometry

计算包含三角形的几何体的每个顶点的法线,方法是对所有与顶点相关的三角形的法线取平均值。结果是一个新的法线属性添加到几何体中。这假设了逆时针的上弦顺序。
Name Type Description
geometry Geometry 要修改的几何体。
Returns:
带有计算法线属性的修改后几何参数。
Throws:
Example:
SuperMap3D.GeometryPipeline.computeNormal(geometry);

staticSuperMap3D.GeometryPipeline.computeTangentAndBitangent(geometry)Geometry

为包含三角形的几何体计算每个顶点的切线和位角。结果是添加到几何体的新切线和位切线属性。 基于计算任意网格的切线空间基向量
Name Type Description
geometry Geometry 要修改的几何体。
Returns:
修改后的几何参数,具有计算的tangent和bitangent属性。
Throws:
  • DeveloperError : geometry.indices 长度必须大于0并且是3的倍数。
  • DeveloperError : geometry.primitiveType 必须是primitivetype.triangle
Example:
SuperMap3D.GeometryPipeline.computeTangentAndBiTangent(geometry);

staticSuperMap3D.GeometryPipeline.createAttributeLocations(geometry)Object

创建一个对象,将属性名称映射到匹配顶点属性和着色程序的唯一位置(索引)。
Name Type Description
geometry Geometry 要为其创建对象的未修改的几何体。
Returns:
包含属性名称/索引对的对象。
Example:
var attributeLocations = SuperMap3D.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
//   'position' : 0,
//   'normal' : 1
// }

staticSuperMap3D.GeometryPipeline.createLineSegmentsForVectors(geometry, attributeName, length)Geometry

创建一个新的Geometry,其中LINES表示提供的属性(attributeName)。 这用于可视化向量属性,如法线、切线和切线。
Name Type Default Description
geometry Geometry 具有该属性的Geometry实例。
attributeName String 'normal' optional 属性的名称。
length Number 10000.0 optional 每条线段的长度,以米为单位。这个可以是负的,指向相反的方向。
Returns:
一个新的Geometry实例,其中向量为线段。
Throws:
  • DeveloperError : geometry.attributes 必须有一个与attributeName参数同名的属性。
Example:
var geometry = SuperMap3D.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);

staticSuperMap3D.GeometryPipeline.encodeAttribute(options, geometry, attributeName, attributeHighName, attributeLowName)Geometry

将浮点几何属性值编码为两个独立的属性,以提高渲染精度。 这通常用于创建高精度位置顶点属性。
Name Type Description
options Object 具有以下属性的对象:
geometry Geometry 要修改的几何体。
attributeName String 属性名称。
attributeHighName String 高位编码的属性名称。
attributeLowName String 低位编码的属性名称。
Returns:
修改后的几何体参数及其编码属性。
Throws:
  • DeveloperError : 几何体必须具有与 attributeName 参数匹配的属性。
  • DeveloperError : 属性 componentDatatype 必须是 ComponentDatatype.DOUBLE。
Example:
geometry = SuperMap3D.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');

staticSuperMap3D.GeometryPipeline.fitToUnsignedShortIndices(geometry)Array.<Geometry>

将一个几何结构拆分为多个几何结构(如果需要),以确保索引适合unsigned short。当不支持unsigned int索引时,这是用来满足WebGL要求的。 如果几何体没有任何索引,则此函数不起作用。
Name Type Description
geometry Geometry 要分割成多个几何体的几何体。
Returns:
几何图形数组,每个几何图形的索引都是unsigned short。
Throws:
  • DeveloperError : geometry.primitiveType 必须等于 PrimitiveType.TRIANGLES、PrimitiveType.LINES 或 PrimitiveType.POINTS
  • DeveloperError : 所有几何属性列表的属性数量必须相同。
Example:
var geometries = SuperMap3D.GeometryPipeline.fitToUnsignedShortIndices(geometry);

staticSuperMap3D.GeometryPipeline.projectTo2D(options, geometry, attributeName, attributeName3D, attributeName2D, projection)Geometry

将几何体的三维位置属性投影为 二维,用单独的position3D和 position2D属性替换位置属性。 如果几何体没有位置,则此函数不起作用。
Name Type Default Description
options Object 具有以下属性的对象:
geometry Geometry 要修改的几何体。
attributeName String 属性名称。
attributeName3D String 3D中的属性名称。
attributeName2D String 2D中的属性名称。
projection Object new GeographicProjection() optional 要使用的投影。
Returns:
修改后的几何体参数,带有position3D和position2D属性。
Throws:
Example:
geometry = SuperMap3D.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');

staticSuperMap3D.GeometryPipeline.reorderForPostVertexCache(geometry, cacheCapacity)Geometry

重新排序几何的索引,通过使用Tipsify算法从GPU的后顶点着色器缓存中获得更好的性能。 如果几何primitiveType不是三角形或者几何没有索引,这个函数不起作用。
Name Type Default Description
geometry Geometry 要修改的几何体。
cacheCapacity Number 24 optional 可以在GPU顶点缓存中保存的顶点数量。
Returns:
修改后的geometry参数,其索引为后顶点着色器缓存重新排序。
Throws:
Example:
geometry = SuperMap3D.GeometryPipeline.reorderForPostVertexCache(geometry);
See:

staticSuperMap3D.GeometryPipeline.reorderForPreVertexCache(geometry)Geometry

重新排序几何体的属性和索引,以从GPU的预顶点着色器缓存中获得更好的性能。
Name Type Description
geometry Geometry 要修改的几何体。
Returns:
修改后的geometry参数,其属性和索引为GPU的预顶点着色器缓存重新排序。
Throws:
  • DeveloperError : 几何中的每个属性数组。属性必须具有相同数量的属性。
Example:
geometry = SuperMap3D.GeometryPipeline.reorderForPreVertexCache(geometry);
See:

staticSuperMap3D.GeometryPipeline.toWireframe(geometry)Geometry

将几何体的三角形指标转换为直线指标。 如果几何体有一个索引并且它的primitiveType triangle TRIANGLE_STRIPTRIANGLE_FAN,它被转换为LINES;否则,几何形状不会改变。

这通常被用来创建用于视觉调试的线框几何体。

Name Type Description
geometry Geometry 要修改的几何体。
Returns:
修改后的geometry参数,将其三角形索引转换为直线。
Throws:
  • DeveloperError : geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.
Example:
geometry = SuperMap3D.GeometryPipeline.toWireframe(geometry);

staticSuperMap3D.GeometryPipeline.transformToWorldCoordinates(instance)GeometryInstance

将一个几何实例转换为地理坐标。这会将实例的modelMatrix更改为normal tangent和bitangent。
Name Type Description
instance GeometryInstance 要修改的几何实例。
Returns:
修改后的实例参数及其属性转换为地理坐标。
Example:
SuperMap3D.GeometryPipeline.transformToWorldCoordinates(instance);