几何体的内容流水线函数。
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:
-
DeveloperError : geometry.indices 长度必须大于0且是3的倍数。
-
DeveloperError : geometry.primitiveType 必须是
PrimitiveType.TRIANGLES
。
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);
-
-
创建一个对象,将属性名称映射到匹配顶点属性和着色程序的唯一位置(索引)。
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
-
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:
-
DeveloperError : 几何体必须具有与attributeName参数匹配的属性。
-
DeveloperError : 属性componentDatatype必须是ComponentDatatype.DOUBLE。
-
DeveloperError : 无法将点投影到2D上。
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:
-
DeveloperError : cache容量必须大于2。
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
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_STRIP
,TRIANGLE_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);