幾何圖形的內容管道函數。
See:
Methods
(static) compressVertices(geometry) → {Geometry}
壓縮并打包幾何體“正常”屬性值以保存內存。
Parameters:
計算包含
TRIANGLES
的幾何體的每個頂點法線,方法是平均與頂點關聯的所有三角形的法線。結果是一個新的normal
屬性添加到幾何圖形中。這假定為逆時針纏繞順序。
Parameters:
Throws
-
DeveloperError : geometry.indexs長度必須大于0且是3的倍數。
-
DeveloperError : geometry.primitiveType必須為
PrimitiveType.TRIANGLES
。
為包含
TRIANGLES
的幾何體計算每個頂點切線和位切線。結果是添加到幾何體的新tangent
和bitangent
屬性。這假定為逆時針纏繞順序。基于Eric Lengyel的計算任意網格的切線空間基向量。
Parameters:
Throws
-
DeveloperError : geometry.indexs長度必須大于0且是3的倍數。
-
DeveloperError : geometry.primitiveType必須為
PrimitiveType.TRIANGLES
。
創建將屬性名稱映射到唯一位置(索引)以匹配頂點屬性和著色程序的對象。
Parameters:
Example
var attributeLocations = bmgl.GeometryPipeline.createAttributeLocations(geometry);
// Example output
// {
// 'position' : 0,
// 'normal' : 1
// }
Parameters:
attributeName
(String)
(default 'normal'
)
屬性的名稱。
length
(Number)
(default 10000.0
)
每段線的長度,單位為米。這可以是負的,使向量指向相反的方向。
Example
var geometry = bmgl.GeometryPipeline.createLineSegmentsForVectors(instance.geometry, 'bitangent', 100000.0);
Throws
-
DeveloperError : geometry.attributes必須具有與attribute name參數同名的屬性。
將浮點幾何體屬性值編碼為兩個單獨的屬性,以提高渲染精度。
這通常用于創建高精度位置頂點屬性。
Parameters:
attributeName
(String)
屬性的名稱。
attributeHighName
(String)
編碼高位的屬性名稱。
attributeLowName
(String)
已編碼低位的屬性名稱。
Example
geometry = bmgl.GeometryPipeline.encodeAttribute(geometry, 'position3D', 'position3DHigh', 'position3DLow');
Throws
-
DeveloperError : 幾何圖形必須具有與attributeName參數匹配的屬性。
-
DeveloperError : 屬性componentdatatype必須是componentdatatype.double。
如有必要,將幾何拆分為多個幾何圖形,以確保
indices
中的索引適合無符號的短褲。當不支持無符號int索引時,這用于滿足WebGL的要求。如果幾何體沒有任何indices
,則此函數無效。
Parameters:
Throws
-
DeveloperError : geometry.primitivetype必須等于primitivetype.triangles、primitivetype.lines或primitivetype.points
-
DeveloperError : 所有幾何屬性列表必須具有相同數量的屬性。
將幾何圖形的3D
position
屬性投影到二維,將position
屬性替換為單獨的position3D
和position2D
屬性。如果幾何體沒有position
,則此函數無效。
Parameters:
attributeName
(String)
屬性的名稱。
attributeName3D
(String)
3D中屬性的名稱。
attributeName2D
(String)
二維中屬性的名稱。
projection
(Object)
(default new GeographicProjection()
)
要使用的投影。
Example
geometry = bmgl.GeometryPipeline.projectTo2D(geometry, 'position', 'position3D', 'position2D');
Throws
-
DeveloperError : 幾何圖形必須具有與attributeName參數匹配的屬性。
-
DeveloperError : 屬性componentdatatype必須是componentdatatype.double。
-
DeveloperError : 無法將點投影到二維。
重新排序幾何體的
indices
以通過使用tipsify算法從GPU的后頂點著色緩存獲得更好的性能。如果幾何圖形primitiveType
不是TRIANGLES
或幾何圖形沒有indices
,則此功能無效。
Parameters:
cacheCapacity
(Number)
(default 24
)
可保留在GPU頂點緩存中的頂點數。
Throws
-
DeveloperError : cacheCapacity必須大于2。
- GeometryPipeline.reorderForPreVertexCache
- Fast Triangle Reordering for Vertex Locality and Reduced Overdraw by Sander, Nehab, and Barczak
See:
重新排序幾何體的屬性和
indices
以從GPU的前頂點著色緩存獲得更好的性能。
Parameters:
Throws
-
DeveloperError : geometry.attributes中的每個屬性數組必須具有相同數量的屬性。
- GeometryPipeline.reorderForPostVertexCache
See:
將幾何圖形的三角形索引轉換為線條索引。如果幾何圖形有
indices
且其primitiveType
為TRIANGLES
、TRIANGLE_STRIP
、TRIANGLE_FAN
,則將其轉換為LINES
;否則,不會更改幾何圖形。這通常用于創建用于可視化調試的線框幾何圖形。
Parameters:
Throws
-
DeveloperError : geometry.primitivetype必須是三角形、三角形條帶或三角形扇。