three.js BufferGeometryUtils

2023-02-16 17:51 更新

一個包含 BufferGeometry 實例的實用方法的類。

方法

.computeMikkTSpaceTangents ( geometry : BufferGeometry, MikkTSpace : Object, negateSign : Boolean = true ) : Object

  • geometry -- BufferGeometry 的實例。
  • MikkTSpace -- examples/jsm/libs/mikktspace.module.js 或 mikktspace npm 包的實例。在使用前等待 MikkTSpace.ready。
  • negateSign -- 是否取反每條切線的符號分量 (.w)。某些格式的法線貼圖約定是必需的,包括 glTF。

使用 MikkTSpace 算法計算頂點切線。 MikkTSpace 始終生成相同的切線,并用于大多數(shù)建模工具和法線貼圖面包師。將 MikkTSpace 用于具有法線貼圖的材質(zhì),因為不一致的切線可能會導(dǎo)致法線貼圖中出現(xiàn)細(xì)微的視覺問題,尤其是在鏡像 UV 接縫周圍。

與此方法相比,BufferGeometry.computeTangents(一種自定義算法)生成的切線可能與其他軟件中的切線不匹配。自定義算法足以用于 ShaderMaterial 的一般使用,并且可能比 MikkTSpace 更快。

返回原始 BufferGeometry。索引幾何將被取消索引。需要位置、法線和 uv 屬性。

.computeMorphedAttributes ( [param:Mesh | Line | Points object] ) : Object

object -- 網(wǎng)格實例 |線 |積分。

返回幾何為 BufferGeometry 的變形/蒙皮 Object3D 的當(dāng)前屬性(Position 和 Normal)以及原始屬性:具有 4 個屬性的對象:positionAttribute、normalAttribute、morphedPositionAttribute 和 morphedNormalAttribute。有助于光線追蹤或貼花(即,應(yīng)用到具有 BufferGeometry 的變形對象的 DecalGeometry 將使用原始 BufferGeometry,而不是變形/蒙皮的 BufferGeometry,從而生成不正確的結(jié)果。使用此函數(shù)創(chuàng)建陰影 Object3D 可以正確生成 DecalGeometry) .

.estimateBytesUsed ( geometry : BufferGeometry ) : Number

geometry -- 通過 BufferGeometry 的實例來估計內(nèi)存使用情況。

返回所有用于表示幾何體的屬性所占用的字節(jié)數(shù)。

.interleaveAttributes ( attributes : Array ) : InterleavedBufferAttribute

attributes -- 由 BufferAttribute 實例組成的數(shù)組。

交叉存儲一組屬性并返回一個新的對應(yīng)屬性數(shù)組,這些屬性共享一個 InterleavedBuffer 實例。所有屬性都必須兼容的該類型。如果合并不成功,則該方法返回 null 。

.mergeBufferAttributes ( attributes : Array ) : BufferAttribute

attributes -- 由 BufferAttribute 實例組成的數(shù)組。

將一組屬性合并為一個單一的實例。所有幾何體都必須兼容該屬性,不支持 InterleavedBufferAttributes 。 如果合并不成功,則該方法返回 null 。

.mergeBufferGeometries ( geometries : Array, useGroups : Boolean ) : BufferGeometry

geometries -- 由 BufferGeometry 實例的數(shù)組。
useGroups -- 是否要為了合并幾何體而產(chǎn)生組。

將一組幾何體合并到一個實例中。所有幾何體都必須兼容該屬性。 如果合并不成功,則該方法返回 null。

.mergeGroups ( geometry : BufferGeometry ) : BufferGeometry

geometry -- 要合并組的 BufferGeometry 實例。

合并給定幾何體的組。

.mergeVertices ( geometry : BufferGeometry, tolerance : Number ) : BufferGeometry

geometry -- 用于合并頂點的 BufferGeometry 實例。
tolerance -- 要合并的頂點屬性之間允許的最大差異。 默認(rèn)為 1e-4。

返回一個新的 BufferGeometry ,其中包含將所有(在容差范圍內(nèi)的)具有相似屬性的頂點合并而成的頂點。

.toCreasedNormals ( geometry : BufferGeometry, creaseAngle : Number ) : BufferGeometry

geometry -- 輸入幾何。

creaseAngle -- 折痕角度。

創(chuàng)建一個新的非索引幾何體,除了以大于折痕角度的角度相交的面外,所有地方都具有平滑的法線。

.toTrianglesDrawMode ( geometry : BufferGeometry, drawMode : TrianglesDrawMode ) : BufferGeometry

geometry -- BufferGeometry 的實例。

drawMode -- 給定幾何圖形的繪制模式。有效輸入為 THREE.TriangleStripDrawMode 和 THREE.TriangleFanDrawMode。

返回基于 THREE.TrianglesDrawMode 繪制模式的新索引幾何。此模式對應(yīng)于 gl.TRIANGLES WebGL 原語。

源碼

examples/jsm/utils/BufferGeometryUtils.js


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號