three.js TransformControls

2023-02-16 17:49 更新

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

TransformControls 期望其所附加的3D對象是場景圖的一部分。

例子

misc / controls / transform

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

TransformControls( camera : Camera, domElement : HTMLDOMElement )

camera: 被控制的攝像機。

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

創(chuàng)建一個新的 TransformControls 實例。

事件

change

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

mouseDown

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

mouseUp

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

objectChange

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

屬性

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

.axis : String

當前變換軸。

.camera : Camera

渲染場景的攝像機。

.domElement : HTMLDOMElement

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

.dragging : Boolean

當前是否正在拖動。只讀屬性。

.enabled : Boolean

是否啟用控制器。默認為true。

.mode : String

當前的變換模式??赡艿闹蛋?translate"、"rotate" 和 "scale"。默認為translate。

.object : Object3D

正在被控制的3D對象。

.rotationSnap : Number

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

.showX : Boolean

x軸手柄是否顯示。默認為true。

.showY : Boolean

y軸手柄是否顯示。默認為true。

.showZ : Boolean

z軸手柄是否顯示。默認為true。

.size : Number

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

.space : String

定義了在哪種坐標空間中進行變換??赡艿闹涤?world" 和 "local"。默認為world。

.translationSnap : Number

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

方法

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

.attach ( object : Object3D ) : TransformControls

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

設(shè)置應(yīng)當變換的3D對象,并確??刂破鱑I是可見的。

.detach () : TransformControls

從控制器中移除當前3D對象,并確??刂破鱑I是不可見的。

.dispose () : undefined

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

.getRaycaster () : Raycaster

返回用于用戶交互的 Raycaster 對象。 此對象在所有實例之間共享 變換控件。 如果您設(shè)置 TransformControls 的 .layers 屬性,您還需要 使用匹配值設(shè)置 Raycaster 上的 .layers 屬性,否則設(shè)置 TransformControls 不會按預(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)用變換的坐標空間。

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

.setTranslationSnap ( translationSnap : Number ) : undefined

translationSnap: 平移捕捉步幅。

設(shè)置平移捕捉。

源代碼

examples/jsm/controls/TransformControls.js


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號