three.js TransformControls

2023-02-16 17:49 更新

該類(lèi)可提供一種類(lèi)似于在數(shù)字內(nèi)容創(chuàng)建工具(例如Blender)中對(duì)模型進(jìn)行交互的方式,來(lái)在3D空間中變換物體。 和其他控制器不同的是,變換控制器不傾向于對(duì)場(chǎng)景攝像機(jī)的變換進(jìn)行改變。

TransformControls 期望其所附加的3D對(duì)象是場(chǎng)景圖的一部分。

例子

misc / controls / transform

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

TransformControls( camera : Camera, domElement : HTMLDOMElement )

camera: 被控制的攝像機(jī)。

domElement: 用于事件監(jiān)聽(tīng)的HTML元素。

創(chuàng)建一個(gè)新的 TransformControls 實(shí)例。

事件

change

如果發(fā)生了任何類(lèi)型的改變(對(duì)象或?qū)傩缘母淖儯﹦t觸發(fā)該事件。 屬性改變是單獨(dú)的事件,你也可以為此添加單獨(dú)的事件監(jiān)聽(tīng);該事件類(lèi)型為"propertyname-changed"(“屬性名稱(chēng)-changed”)。

mouseDown

如果指針(鼠標(biāo)/觸摸)為活動(dòng)狀態(tài)則觸發(fā)該事件。

mouseUp

如果指針(鼠標(biāo)/觸摸)不再為活動(dòng)狀態(tài)則觸發(fā)該事件。

objectChange

如果被控制的3D對(duì)象發(fā)生改變則觸發(fā)該事件。

屬性

共有屬性請(qǐng)參見(jiàn)其基類(lèi)Object3D。

.axis : String

當(dāng)前變換軸。

.camera : Camera

渲染場(chǎng)景的攝像機(jī)。

.domElement : HTMLDOMElement

該 HTMLDOMElement 用于監(jiān)聽(tīng)鼠標(biāo)/觸摸事件,該屬性必須在構(gòu)造函數(shù)中傳入。在此處改變它將不會(huì)設(shè)置新的事件監(jiān)聽(tīng)。

.dragging : Boolean

當(dāng)前是否正在拖動(dòng)。只讀屬性。

.enabled : Boolean

是否啟用控制器。默認(rèn)為true。

.mode : String

當(dāng)前的變換模式??赡艿闹蛋?translate"、"rotate" 和 "scale"。默認(rèn)為translate。

.object : Object3D

正在被控制的3D對(duì)象。

.rotationSnap : Number

默認(rèn)情況下,3D對(duì)象是可以被連續(xù)旋轉(zhuǎn)的。如果你將該值設(shè)為一個(gè)數(shù)值(弧度),則你將可以定義每次旋轉(zhuǎn)3D對(duì)象時(shí)的步幅。 默認(rèn)為null。

.showX : Boolean

x軸手柄是否顯示。默認(rèn)為true。

.showY : Boolean

y軸手柄是否顯示。默認(rèn)為true。

.showZ : Boolean

z軸手柄是否顯示。默認(rèn)為true。

.size : Number

手柄UI(軸/平面)的大小。默認(rèn)為1。

.space : String

定義了在哪種坐標(biāo)空間中進(jìn)行變換??赡艿闹涤?world" 和 "local"。默認(rèn)為world。

.translationSnap : Number

默認(rèn)情況下,3D對(duì)象是可以被連續(xù)平移的。如果你將該值設(shè)為一個(gè)數(shù)值(世界單位),則你將可以定義每次平移3D對(duì)象時(shí)的步幅。 默認(rèn)為null。

方法

共有方法請(qǐng)參見(jiàn)其基類(lèi)Object3D。

.attach ( object : Object3D ) : TransformControls

object: 應(yīng)當(dāng)變換的3D對(duì)象。

設(shè)置應(yīng)當(dāng)變換的3D對(duì)象,并確保控制器UI是可見(jiàn)的。

.detach () : TransformControls

從控制器中移除當(dāng)前3D對(duì)象,并確??刂破鱑I是不可見(jiàn)的。

.dispose () : undefined

若不再需要該控制器,則應(yīng)當(dāng)調(diào)用此函數(shù)。

.getRaycaster () : Raycaster

返回用于用戶交互的 Raycaster 對(duì)象。 此對(duì)象在所有實(shí)例之間共享 變換控件。 如果您設(shè)置 TransformControls 的 .layers 屬性,您還需要 使用匹配值設(shè)置 Raycaster 上的 .layers 屬性,否則設(shè)置 TransformControls 不會(huì)按預(yù)期工作。

.getMode () : String

返回變換模式。

.setMode ( mode : String ) : undefined

mode: 變換模式。

設(shè)置變換模式。

.setRotationSnap ( rotationSnap : Number ) : undefined

rotationSnap: 旋轉(zhuǎn)捕捉步幅。

設(shè)置旋轉(zhuǎn)捕捉。

.setSize ( size : Number ) : undefined

size: 手柄UI的大小。

設(shè)置手柄UI的大小。

.setSpace ( space : String ) : undefined

space: 應(yīng)用變換的坐標(biāo)空間。

設(shè)置應(yīng)用變換的坐標(biāo)空間。

.setTranslationSnap ( translationSnap : Number ) : undefined

translationSnap: 平移捕捉步幅。

設(shè)置平移捕捉。

源代碼

examples/jsm/controls/TransformControls.js


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)