three.js LOD

2023-02-16 17:47 更新

多細(xì)節(jié)層次 —— 在顯示網(wǎng)格時,根據(jù)攝像機(jī)距離物體的距離,來使用更多或者更少的幾何體來對其進(jìn)行顯示。

每一個級別都和一個幾何體相關(guān)聯(lián),且在渲染時,可以根據(jù)給定的距離,來在這些級別對應(yīng)的幾何體之間進(jìn)行切換。 通常情況下,你會創(chuàng)建多個幾何體,比如說三個,一個距離很遠(yuǎn)(低細(xì)節(jié)),一個距離適中(中等細(xì)節(jié)),還有一個距離非常近(高質(zhì)量)。

代碼示例

const lod = new THREE.LOD();

//Create spheres with 3 levels of detail and create new LOD levels for them
for( let i = 0; i < 3; i++ ) {

	const geometry = new THREE.IcosahedronGeometry( 10, 3 - i )

	const mesh = new THREE.Mesh( geometry, material );

	lod.addLevel( mesh, i * 75 );

}

scene.add( lod );

例子

webgl / lod

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

LOD( )

創(chuàng)建一個新的 LOD.

屬性

共有屬性請參見其基類Object3D。

.autoUpdate : Boolean

LOD 對象是否由渲染器每幀自動更新。如果設(shè)置為 false,您必須自己在渲染循環(huán)中調(diào)用 LOD.update()。默認(rèn)為真。

.isLOD : Boolean

用于檢查給定對象是否為 LOD 類型的只讀標(biāo)志。

.levels : Array

一個包含有l(wèi)evel objects(各層次物體)的數(shù)組。

每一個層級都是一個對象,具有以下兩個屬性: object —— 在這個層次中將要顯示的Object3D。

distance —— 將顯示這一細(xì)節(jié)層次的距離。
hysteresis —— Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.

方法

共有方法請參見其基類Object3D。

.addLevel ( object : Object3D, distance : Float, hysteresis : Float ) : this

object —— 在這個層次中將要顯示的Object3D。
distance —— 將顯示這一細(xì)節(jié)層次的距離。
hysteresis —— Threshold used to avoid flickering at LOD boundaries, as a fraction of distance. Default 0.0.

添加在一定距離和更大范圍內(nèi)顯示的網(wǎng)格。通常來說,距離越遠(yuǎn),網(wǎng)格中的細(xì)節(jié)就越少。

.clone () : LOD

返回一個LOD對象及其所關(guān)聯(lián)的在特定距離中的物體。

.getCurrentLevel () : Integer

Get the currently active LOD level. As index of the levels array.

.getObjectForDistance ( distance : Float ) : Object3D

獲得第一個比distance大的Object3D(網(wǎng)格)的引用。

.raycast ( raycaster : Raycaster, intersects : Array ) : undefined

在一條投射出去的Ray(射線)和這個LOD之間獲得交互。 Raycaster.intersectObject將會調(diào)用這個方法。

.toJSON ( meta ) : Object

使用這個方法,為LOD對象中的每個細(xì)節(jié)層次創(chuàng)建一個JSON結(jié)構(gòu)。

.update ( camera : Camera ) : undefined

基于每個level中的object和camera(攝像機(jī))之間的距離,來設(shè)置其可見性。

源代碼

src/objects/LOD.js


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號