W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
是面片、線或點幾何體的有效表述。包括頂點位置,面片索引、法相量、顏色值、UV 坐標(biāo)和自定義緩存屬性值。使用 BufferGeometry 可以有效減少向 GPU 傳輸上述數(shù)據(jù)所需的開銷。
讀取或編輯 BufferGeometry 中的數(shù)據(jù),見 BufferAttribute 文檔。
const geometry = new THREE.BufferGeometry();
// 創(chuàng)建一個簡單的矩形. 在這里我們左上和右下頂點被復(fù)制了兩次。
// 因為在兩個三角面片里,這兩個頂點都需要被用到。
const vertices = new Float32Array( [
-1.0, -1.0, 1.0,
1.0, -1.0, 1.0,
1.0, 1.0, 1.0,
1.0, 1.0, 1.0,
-1.0, 1.0, 1.0,
-1.0, -1.0, 1.0
] );
// itemSize = 3 因為每個頂點都是一個三元組。
geometry.setAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
const material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
const mesh = new THREE.Mesh( geometry, material );
創(chuàng)建一個新的 BufferGeometry. 同時將預(yù)置屬性設(shè)置為默認值.
通過 hashmap 存儲該幾何體相關(guān)的屬性,hashmap 的 id 是當(dāng)前 attribute 的名稱,值是相應(yīng)的 buffer。 你可以通過 .setAttribute 和 .getAttribute 添加和訪問與當(dāng)前幾何體有關(guān)的 attribute。
當(dāng)前 bufferGeometry 的外邊界矩形??梢酝ㄟ^ .computeBoundingBox() 計算。默認值是 null。
當(dāng)前 bufferGeometry 的外邊界球形??梢酝ㄟ^ .computeBoundingSphere() 計算。默認值是 null。
用于判斷幾何體的哪個部分需要被渲染。該值不應(yīng)該直接被設(shè)置,而需要通過 .setDrawRange 進行設(shè)置。默認值為
{ start: 0, count: Infinity }
將當(dāng)前幾何體分割成組進行渲染,每個部分都會在單獨的 WebGL 的 draw call 中進行繪制。該方法可以讓當(dāng)前的 bufferGeometry 可以使用一個材質(zhì)隊列進行描述。分割后的每個部分都是一個如下的表單:
{ start: Integer, count: Integer, materialIndex: Integer }
start 表明當(dāng)前 draw call 中的沒有索引的幾何體的幾何體的第一個頂點;或者第一個三角面片的索引。 count 指明當(dāng)前分割包含多少頂點(或 indices)。 materialIndex 指出當(dāng)前用到的材質(zhì)隊列的索引。通過 .addGroup 來增加組,而不是直接更改當(dāng)前隊列。
當(dāng)前 bufferGeometry 的唯一編號。
允許頂點在多個三角面片間可以重用。這樣的頂點被稱為"已索引的三角面片(indexed triangles)。 每個三角面片都和三個頂點的索引相關(guān)。該 attribute 因此所存儲的是每個三角面片的三個頂點的索引。 如果該 attribute 沒有設(shè)置過,則 renderer 假設(shè)每三個連續(xù)的位置代表一個三角面片。 默認值是 null。
只讀標(biāo)志,用于檢查給定對象是否屬于 BufferGeometry 類型。
存儲 BufferAttribute 的 Hashmap,存儲了幾何體 morph targets 的細節(jié)信息。注意:渲染幾何體后,變形屬性數(shù)據(jù)無法更改。您將必須調(diào)用 .dispose(),并創(chuàng)建 BufferGeometry 的新實例。
用于控制變形目標(biāo)行為;當(dāng)設(shè)置為 true 時,變形目標(biāo)數(shù)據(jù)被視為相對偏移,而不是絕對位置/法線。默認為假。
當(dāng)前 bufferGeometry 實例的可選別名。默認值是空字符串。
存儲 BufferGeometry 的自定義數(shù)據(jù)的對象。為保持對象在克隆時完整,該對象不應(yīng)該包括任何函數(shù)的引用。
當(dāng)前對象實例的 UUID,該值會自動被分配,且不應(yīng)被修改。
EventDispatcher 在該類上可用的所有方法。
為當(dāng)前幾何體設(shè)置一個 attribute 屬性。在類的內(nèi)部,有一個存儲 .attributes 的 hashmap, 通過該 hashmap,遍歷 attributes 的速度會更快。而使用該方法,可以向 hashmap 內(nèi)部增加 attribute。 所以,你需要使用該方法來添加 attributes。
為當(dāng)前幾何體增加一個 group,詳見 groups 屬性。
用給定矩陣轉(zhuǎn)換幾何體的頂點坐標(biāo)。
根據(jù)邊界矩形將幾何體居中。
克隆當(dāng)前的 BufferGeometry。
將參數(shù)指定的 BufferGeometry 的值拷貝到當(dāng)前 BufferGeometry 中。
清空所有的 groups。
計算當(dāng)前幾何體的的邊界矩形,該操作會更新已有 [param:.boundingBox]。邊界矩形不會默認計算,需要調(diào)用該接口指定計算邊界矩形,否則保持默認值 null。
計算當(dāng)前幾何體的的邊界球形,該操作會更新已有 [param:.boundingSphere]。邊界球形不會默認計算,需要調(diào)用該接口指定計算邊界球形,否則保持默認值 null。
計算切線屬性并將其添加到此幾何體。僅索引幾何體支持計算,并且定義了位置、法線和 uv 屬性。使用切線空間法線貼圖時,請改用 BufferGeometryUtils.computeMikkTSpaceTangents 提供的 MikkTSpace 算法。
通過面片法向量的平均值計算每個頂點的法向量。
從內(nèi)存中銷毀對象。如果在運行是需要從內(nèi)存中刪除 BufferGeometry,則需要調(diào)用該函數(shù)。
返回指定名稱的 attribute。
返回緩存相關(guān)的 .index。
如果具有指定名稱的屬性存在,則返回 true。
vector - 幾何體所朝向的世界坐標(biāo)。旋轉(zhuǎn)幾何體朝向控件中的一點。該過程通常在一次處理中完成,不會循環(huán)處理。典型的用法是過通過調(diào)用 Object3D.lookAt 實時改變 mesh 朝向。
幾何體中的每個法向量長度將會為 1。這樣操作會更正光線在表面的效果。
刪除具有指定名稱的 attribute。
在 X 軸上旋轉(zhuǎn)幾何體。該操作一般在一次處理中完成,不會循環(huán)處理。典型的用法是通過調(diào)用 Object3D.rotation 實時旋轉(zhuǎn)幾何體。
在 Y 軸上旋轉(zhuǎn)幾何體。該操作一般在一次處理中完成,不會循環(huán)處理。典型的用法是通過調(diào)用 Object3D.rotation 實時旋轉(zhuǎn)幾何體。
在 Z 軸上旋轉(zhuǎn)幾何體。該操作一般在一次處理中完成,不會循環(huán)處理。典型的用法是通過調(diào)用 Object3D.rotation 實時旋轉(zhuǎn)幾何體。
縮放幾何體。該操作一般在一次處理中完成,不會循環(huán)處理。典型的用法是通過調(diào)用 Object3D.scale 實時旋轉(zhuǎn)幾何體。
設(shè)置緩存的 .index。
設(shè)置緩存的 .drawRange。詳見相關(guān)屬性說明。
通過點隊列設(shè)置該 BufferGeometry 的 attribute。
返回代表該 BufferGeometry 的 JSON 對象。
返回已索引的 BufferGeometry 的非索引版本。
移動幾何體。該操作一般在一次處理中完成,不會循環(huán)處理。典型的用法是通過調(diào)用 Object3D.rotation 實時旋轉(zhuǎn)幾何體。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: