three.js InstancedMesh

2023-02-16 17:47 更新

一種具有實例化渲染支持的特殊版本的Mesh。你可以使用 InstancedMesh 來渲染大量具有相同幾何體與材質(zhì)、但具有不同世界變換的物體。 使用 InstancedMesh 將幫助你減少 draw call 的數(shù)量,從而提升你應(yīng)用程序的整體渲染性能。

示例

WebGL / instancing / dynamic
WebGL / instancing / performance
WebGL / instancing / scatter
WebGL / instancing / raycast

構(gòu)造函數(shù)

InstancedMesh( geometry : BufferGeometry, material : Material, count : Integer )

geometry - 一個 BufferGeometry 的實例。material - 一個 Material 的實例。默認為一個新的 MeshBasicMaterial 。count - 實例的數(shù)量

屬性

請參閱基 Mesh 類以了解通用屬性。

.count : Integer

實例的數(shù)量。被傳入到構(gòu)造函數(shù)中的count表示mesh實例數(shù)量的最大值。 你可以在運行時改變這個數(shù)值到 [0, count] 區(qū)間的一個整數(shù)。

如果你需要比原先的數(shù)量更多的實例數(shù)量,你需要創(chuàng)建一個新的InstancedMesh。

.instanceColor : InstancedBufferAttribute

代表所有實例的顏色。默認情況下null。 如果通過.setColorAt()修改實例化數(shù)據(jù),則必須將它的needsUpdate標志設(shè)置為 true。

.instanceMatrix : InstancedBufferAttribute

表示所有實例的本地變換。 如果你要通過 .setMatrixAt() 來修改實例數(shù)據(jù),你必須將它的 needsUpdate 標識為 true 。

.isInstancedMesh : Boolean

用于檢查給定對象是否為 InstancedMesh 類型的只讀標志。

方法

常見方法見 Mesh 基類。

.dispose () : undefined

釋放此實例的內(nèi)部資源。

.getColorAt ( index : Integer, color : Color ) : undefined

index: 一個實例的索引。值必須在 [0, count] 范圍內(nèi)。

color: 此顏色對象將設(shè)置為已定義實例的顏色。

獲取定義實例的顏色。

.getMatrixAt ( index : Integer, matrix : Matrix4 ) : undefined

index: 實例的索引。值必須在 [0, count] 區(qū)間。

matrix: 該4x4矩陣將會被設(shè)為已定義實例的本地變換矩陣。

獲得已定義實例的本地變換矩陣。

.setColorAt ( index : Integer, color : Color ) : undefined

index: 一個實例的索引。值必須在 [0, count] 范圍內(nèi)。

color: 單個實例的顏色。

將給定顏色設(shè)置為定義的實例。確保在更新所有顏色后將 .instanceColor.needsUpdate 設(shè)置為 true。

.setMatrixAt ( index : Integer, matrix : Matrix4 ) : undefined

index: 實例的索引。值必須在 [0, count] 區(qū)間。

matrix: 一個4x4矩陣,表示單個實例本地變換。

設(shè)置給定的本地變換矩陣到已定義的實例。 請確保在更新所有矩陣后將 .instanceMatrix.needsUpdate 設(shè)置為true。

源代碼

src/objects/InstancedMesh.js


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號