跳至主要內容

Object3D

大约 12 分钟

Object3D

这是Three.js中大部分对象的基类,继承自THREE.EventDispatcher,提供了一系列的属性和方法来对三维空间中的物体进行操纵,引擎对THREE.Object3D类做了方法扩展。

构造器

构造器中不带有参数。

new THREE.Object3D();

属性成员

isObject3D

  • 类型:{Boolean} 只读,是否为Object3D,是

id

  • 类型:Integer 只读 —— 表示该对象实例ID的唯一数字

animations

  • 类型:{Array<AnimationClip>} AnimationClip 集合

castShadow

  • 类型:{Boolean} 对象是否被渲染到阴影贴图中。默认值为false。

receiveShadow

  • 类型:{Boolean} 材质是否接收阴影。默认值为false。

renderOrder

  • 类型:{Number} 这个值将使得scene graph(场景图)中默认的的渲染顺序被覆盖, 即使不透明对象和透明对象保持独立顺序。 渲染顺序是由低到高来排序的,默认值为0。

children

  • 类型:{Array} 含有对象的子级的数组

frustumCulled

  • 类型:{Boolean} 是否在视锥体裁剪,默认为true

layers

  • 类型:{THREE.Layers} 物体层级关第

matrix

  • 类型:{THREE.Matrix} 局部变换矩阵

matrixAutoUpdate

  • 类型:{Boolean} 当这个属性设置了之后,它将计算每一帧的位移、旋转(四元变换)和缩放矩阵,并重新计算matrixWorld属性。默认值是true

matrixWorld

  • 类型:{THREE.Matrix} 世界变换矩阵

matrixWorldNeedsUpdate

  • 类型:{Boolean} 当这个属性设置了之后,它将计算每一帧的位移、旋转(四元变换)和缩放矩阵,并重新计算matrixWorld属性。默认值是true

modelViewMatrix

  • 类型:{THREE.Matrix} 这个值传递给着色器,用于计算物体的位置。

name

  • 类型:{String} 对象名称

normalMatrix

  • 类型:{THREE.Matrix3} 这个值传递给着色器,用于计算物体的光照。 它是物体的modelViewMatrix矩阵中,左上角3x3子矩阵的逆的转置矩阵。

onAfterRenderer

  • 类型:{Function} 渲染后调用

onBeforeRenderer

  • 类型:{Function} 渲染前调用

parent

  • 类型:{THREE.Object} 父物体

position

  • 类型:{THREE.Vector3} 局部位置

quaternion

  • 类型:{THREE.Quaternion} 局部旋转

rotation

  • 类型:{THREE.Euler} 物体的局部旋转,以弧度来表示

scale

  • 类型:{THREE.Vector3} 局部缩放,默认值 new THREE.Vector3(1,1,1)

up

  • 类型:{THREE.Vector3} 这个属性由lookAt方法所使用,例如,来决定结果的朝向,默认值 new THREE.Vector3(0,1,0)

userData

  • 类型:{Object} 一个用于存储Object3D自定义数据的对象。 它不应当包含对函数的引用,因为这些函数将不会被克隆。

uuid

  • 类型:{String} 该对象实例的UUID。 这是一个自动生成的值,不应当对其进行修改。

visible

  • 类型:{Boolean} 可见性。这个值为true时,物体将被渲染。默认值为true。

locked *

  • 类型:{Boolean} 是否锁定,扩展

properties *

  • 类型:{Object} 属性对象,扩展

方法

add

添加对象到这个对象的子级,可以添加任意数量的对象。 当前传入的对象中的父级将在这里被移除,因为一个对象仅能有一个父级。

  • add(object)
  • 类型:{Function}
  • 参数:
    • object THREE.Object3D 子对象
  • 返回:this

applyMatrix4

对当前物体应用这个变换矩阵,并更新物体的位置、旋转和缩放。

  • applyMatrix4(matrix)
  • 类型:{Function}
  • 参数:
    • matrix THREE.Matrix4 变换矩阵
  • 返回:无

applyQuaternion

对当前物体应用由四元数所表示的变换。

  • applyQuaternion(quaternion)
  • 类型:{Function}
  • 参数:
    • matrix THREE.Quaternion 四元数
  • 返回:无

attach

将object作为子级来添加到该对象中,同时保持该object的世界变换。

  • attach(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D}
  • 返回:{THREE.Object3D}

clone

返回对象前物体的克隆(以及可选的所有后代)。

  • copy(recursive )
  • 类型:{Function}
  • 参数:
    • recursive {Boolean} 如果值为true,则该物体的后代也会被克隆。默认值为true。
  • 返回:{THREE.Object3D}

copy

复制给定的对象到这个对象中

  • copy(object, recursive )
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 待复制对象
    • recursive {Boolean} 如果值为true,则该物体的后代也会被复制。默认值为true。
  • 返回:{THREE.Object3D}

getObjectById

从该对象开始,搜索一个对象及其子级,返回第一个带有匹配id的子对象。 请注意,id是按照时间顺序来分配的:1、2、3、……,每增加一个新的对象就自增1。

  • getObjectById(id)
  • 类型:{Function}
  • 参数:
    • id {Integer} ID
  • 返回:{THREE.Object3D}

getObjectByName

从该对象开始,搜索一个对象及其子级,返回第一个带有匹配name的子对象。 请注意,大多数的对象中name默认是一个空字符串,要使用这个方法,你将需要手动地设置name属性。

  • getObjectByName(name)
  • 类型:{Function}
  • 参数:
    • name {String} 属性名称
  • 返回:{THREE.Object3D}

getObjectByProerty

从该对象开始,搜索一个对象及其子级,返回第一个给定的属性中包含有匹配的值的子对象。

  • getObjectByProerty(name, value)
  • 类型:{Function}
  • 参数:
    • name {String} 属性名称
    • value {Any} 给定属性的值
  • 返回:{THREE.Object3D}

getWorldPosition

返回一个表示该物体在世界空间中位置的矢量。

  • getWorldPosition(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 {THREE.Vector3} 结果将被复制到这个Vector3中。
  • 返回:{THREE.Vector3}

getWorldQuaternion

返回一个表示该物体在世界空间中旋转的四元数。

  • getWorldQuaternion(quaternion)
  • 类型:{Function}
  • 参数:
    • quaternion {THREE.Quaternion} 四元数
  • 返回:{THREE.Quaternion}

getWorldScale

返回一个包含着该物体在世界空间中各个轴向上所应用的缩放因数的矢量。

  • getWorldScale(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 {THREE.Vector3} 结果将被复制到这个Vector3中。
  • 返回:{THREE.Vector3}

getWorldDirection

返回一个表示该物体在世界空间中Z轴正方向的矢量。

  • getWorldDirection(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 {THREE.Vector3} 结果将被复制到这个Vector3中。
  • 返回:{THREE.Vector3}

localToWorld

将该向量从物体的局部空间转换到世界空间。

  • localToWorld(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 {THREE.Vector3} 一个表示在该物体局部空间中位置的向量。
  • 返回:无

lookAt

旋转物体使其在世界空间中面朝一个点。这一方法不支持其父级被旋转过或者被位移过的物体。

  • lookAt(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 {THREE.Vector3} 一个表示世界空间中位置的向量。
  • 返回:无

remove

移除物体

  • remove(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 物体
  • 返回:this

removeFromParent

从父节点中移除本物体

  • removeFromParent()
  • 类型:{Function}
  • 参数:无
  • 返回:this

rotateOnAxis

在局部空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。

  • rotateOnAxis(axis, angle)
  • 类型:{Function}
  • 参数:
    • axis {THREE.Vector3} 一个在局部空间中的标准化向量。
    • angle {Number} 弧度
  • 返回:无

rotateOnWorldAxis

在世界空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。 方法假设该物体没有旋转过的父级。

  • rotateOnWorldAxis(axis, angle)
  • 类型:{Function}
  • 参数:
    • axis {THREE.Vector3} 一个在世界空间中的标准化向量。
    • angle {Number} 弧度
  • 返回:无

rotateX

绕局部空间的X轴旋转这个物体。

  • rotateX(angle)
  • 类型:{Function}
  • 参数:
    • angle {Number} 弧度
  • 返回:无

rotateY

绕局部空间的Y轴旋转这个物体。

  • rotateY(angle)
  • 类型:{Function}
  • 参数:
    • angle {Number} 弧度
  • 返回:无

rotateZ

绕局部空间的Z轴旋转这个物体。

  • rotateZ(angle)
  • 类型:{Function}
  • 参数:
    • angle {Number} 弧度
  • 返回:无

setRotationFromAxisAngle

指定了旋转量的欧拉角。

  • setRotationFromAxisAngle(axis, angle)
  • 类型:{Function}
  • 参数:
    • axis {THREE.Vector3} 一个在局部空间中的标准化向量。
    • angle {Number} 弧度
  • 返回:无

setRotationFromEuler

指定了旋转量的欧拉角。

  • setRotationFromEuler(euler)
  • 类型:{Function}
  • 参数:
    • euler {THREE.Euler} 欧拉角
  • 返回:无

setRotationFromMatrix

通过给定矩阵中的旋转分量来旋转四元数。

  • setRotationFromQuaternion(q)
  • 类型:{Function}
  • 参数:
    • m {THREE.Matrix} 假设m上的3x3矩阵是一个纯旋转矩阵(即未缩放的矩阵)
  • 返回:无

setRotationFromQuaternion

将所给的四元数复制到.quaternion中。

  • setRotationFromQuaternion(q)
  • 类型:{Function}
  • 参数:
    • q {THREE.Quaternion} 包含有元数据的对象,例如该对象的材质、纹理或图片
  • 返回:无

toJSON

将对象转换为JSON序列化参数

  • toJSON(meta)
  • 类型:{Function}
  • 参数:
    • meta {Object} 包含有元数据的对象,例如该对象的材质、纹理或图片
  • 返回:{Object}

translateOnAxis

在局部空间中沿着一条轴来平移物体,假设轴已被标准化。

  • translateOnAxis(axis, distance)
  • 类型:{Function}
  • 参数:
    • axis {THREE.Vector3} 一个在局部空间中的标准化向量。
    • distance {Number} 距离
  • 返回:this

translateX

沿着X轴将平移distance个单位。

  • translateX(distance)
  • 类型:{Function}
  • 参数:
    • distance {Number} 距离
  • 返回:this

translateY

沿着Y轴将平移distance个单位。

  • translateY(distance)
  • 类型:{Function}
  • 参数:
    • distance {Number} 距离
  • 返回:this

translateZ

沿着Z轴将平移distance个单位。

  • translateZ(distance)
  • 类型:{Function}
  • 参数:
    • distance {Number} 距离
  • 返回:this

traverse

在对象以及后代中执行的回调函数。

  • traverse(callback)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
  • 返回:无

traverseVisible

回调函数仅对可见的对象执行,不可见对象的后代将不遍历。

  • traverseVisible(callback)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
  • 返回:无

traverseAncestors

在所有的祖先中执行回调函数。

  • traverseAncestors(callback)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
  • 返回:无

updateMatrix

更新局部变换。

  • updateMatrix()
  • 类型:{Function}
  • 参数:无
  • 返回:无

updateMatrixWorld

更新物体及其后代的全局变换。

  • updateMatrixWorld(force)
  • 类型:{Function}
  • 参数:
    • force {Boolean} 是否强制
  • 返回:无

updateWorldMatrix

  • updateWorldMatrix(updateParents, updateChildren)
  • 类型:{Function}
  • 参数:无
    • updateParents {Boolean} 是否更新父对象
    • updateChildren {Boolean} 是否更新子对象
  • 返回:无

worldToLocal

一个表示在世界空间中位置的向量,将该向量从世界空间转换到物体的局部空间

  • worldToLocal(vector3)
  • 类型:{Function}
  • 参数:
    • vector3 THREE.Vector3 世界坐标
  • 返回:无

扩展方法

query

查询子节点,根据查询条件

  • query(filter)
  • 类型:{Function}
  • 参数:
    • filter {Object} 查询条件
      • property {Array} 物体对象,默认空置则查询所有的物体
      • type {Array} 类型过滤器,默认空置则查询所有的物体
      • properties {Array} 属性过滤器
      • name {Array} 名称过滤器
  • 返回:{Array}
group.query({
    properties: [
        ["==", "名称", "1#仓库"], [">=", "面积", 12344]
    ]
});

traverseFilter

遍历过滤后的对象

  • traverseFilter(callback, filter)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
    • filter {Object} 查询过滤对象
  • 返回:无

traverseBreakable

遍历对象返回true,则一直遍历,否则退出

  • traverseBreakable(callback)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
  • 返回:无

traverseMaterial

遍历所有材质

  • traverseMaterial(callback)
  • 类型:{Function}
  • 参数:
    • callback {Function} 回调, 以一个object3D对象作为第一个参数的函数。
  • 返回:无

getInParentIndex

获取在父节点中的序列号

  • getInParentIndex()
  • 类型:{Function}
  • 参数:无
  • 返回:{Integer}

getRefPositions

获取引用点位置列表

  • getRefPositions(isLocal)
  • 类型:{Function}
  • 参数:
    • isLocal {Boolean} 是否局部坐标
  • 返回:Array

setProperties

设置属性

  • setProperties(key, value)
  • 类型:{Function}
  • 参数:
    • key {String|Object} 属性名称,或属性对象
    • value {Any} 属性对象
  • 返回:无

insertTo

插入到

  • insertTo(parent, index)
  • 类型:{Function}
  • 参数:
    • parent {Object} 对象
    • index {Integer} 下标
  • 返回:无

removeBySelf

将自己从父节点移除

  • removeBySelf()
  • 类型:{Function}
  • 参数:无
  • 返回:无

getMeshByName

根据名称查询 Mesh

  • getMeshByName(name)
  • 类型:{Function}
  • 参数:
    • name {String} 名字
  • 返回:{THREE.Mesh}

hasMesh

是否包含Mesh

  • hasMesh()
  • 类型:{Function}
  • 参数:无
  • 返回:{Boolean}

hasChild

是否包含子节点

  • hasChild()
  • 类型:{Function}
  • 参数:无
  • 返回:{Boolean}

getMeshNames

获取所有Mesh的名称

  • getMeshNames()
  • 类型:{Function}
  • 参数:无
  • 返回:{Array<String>}

getSkinnedMesh

获取所有骨骼网格

  • getSkinnedMesh()
  • 类型:{Function}
  • 参数:无
  • 返回:{Array<String>}

hasSkinnedMesh

是否包含骨骼网格

  • hasSkinnedMesh()
  • 类型:{Function}
  • 参数:无
  • 返回:{Boolean}

getBones

获取Bones

  • getBones(root, skeleton)
  • 类型:{Function}
  • 参数:
    • root {THREE.Object3D} 父节点
    • skeleton {Object} bone
  • 返回:{Array}

getMeshes

获取所有网格

  • getMeshes()
  • 类型:{Function}
  • 参数:无
  • 返回:{Array}

getMaterials

获取所有材质

  • getMaterials()
  • 类型:{Function}
  • 参数:无
  • 返回:{Array}

hasSprite

是否包含Sprite对象

  • hasSprite()
  • 类型:{Function}
  • 参数:无
  • 返回:{Boolean}

hasTexture

是否包含贴图

  • hasTexture(texture)
  • 类型:{Function}
  • 参数:无
  • 返回:{Boolean}

hasMaterial

是否包含材质

  • hasMaterial(material)
  • 类型:{Function}
  • 参数:
    • material {THREE.Material} 材质
  • 返回:{Boolean}

replace

替换对象

  • replace(oldChild, newChild, callback)
  • 类型:{Function}
  • 参数:
    • oldChild {THREE.Object3D} 旧对象
    • newChild {THREE.Object3D} 新对象
    • callback {Function} 回调
  • 返回:无

insert

插入对象

  • insert(index, child)
  • 类型:{Function}
  • 参数:
    • index {Integer} 下标
    • child {THREE.Object3D} 对象
  • 返回:无

getFacesNumber

获取faces数量

  • getFacesNumber()
  • 类型:{Function}
  • 参数:无
  • 返回:{Number}

getVerticesNumber

获取Vertices数量

  • getVerticesNumber()
  • 类型:{Function}
  • 参数:无
  • 返回:{Number}

getBox3

获取Box3对象

  • getBox3()
  • 类型:{Function}
  • 参数:无
  • 返回:{THREE.Box3}

getCenter

获取物体中心位置

  • getCenter()
  • 类型:{Function}
  • 参数:无
  • 返回:{THREE.Vector3}

getSize

获取物体大小

  • getSize()
  • 类型:{Function}
  • 参数:无
  • 返回:{THREE.Vector3}

getAngles

获取物体角度

  • getAngles()
  • 类型:{Function}
  • 参数:无
  • 返回:{Number}

distanceTo

获取到另外一个物体的距离

  • distanceTo(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 对象
  • 返回:{Number}

indexOf

获取子物体的下标

  • indexOf(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 子物体
  • 返回:{Number}

isBrotherOf

是否为兄弟节点

  • isBrotherOf(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 子物体
  • 返回:{Boolean}

isChildOf

是否为子对象

  • isChildOf(object)
  • 类型:{Function}
  • 参数:
    • object {THREE.Object3D} 父物体
  • 返回:{Boolean}

resetMaterial

针对有变化的物体材质,恢复原有材质

  • resetMaterial()
  • 类型:{Function}
  • 参数:无
  • 返回:this

setBoxHelper

设置辅助BoxHelper

  • setBoxHelper(option)
  • 类型:{Function}
  • 参数:
    • option {Object} 参数
      • color {String} 颜色
  • 返回:this

setEdge

设置边框

  • setEdge(option)
  • 类型:{Function}
  • 参数:
    • option {Object} 参数
      • color {String} 颜色
  • 返回:this

getBy

根据路径节点获取物体

  • getBy(mapString)
  • 类型:{Function}
  • 参数:
    • mapString {String}.隔开的路径节点
  • 返回:{THREE.Object3D}

updateBy

根据参数,更新物体

  • updateBy(config, filter)
  • 类型:{Function}
  • 参数:
    • config {config} 更新配置
    • filter {Object} 查询条件
  • 返回:无
// 更新的对象
{ 
    // self property
    uuid, name, layers,
    position, rotation, scale,
    visible, renderOrder, frustumCulled, 
    receiveShadow, castShadow, center, locked,

    // material
    material,materialArraySize, 
    
    // object
    properties, interact, video, userData, style, geometry, 
    arrow, line, polygon, points, shader, light, images,

    shadow, particle,

    // helper
    box, edge,  
    
}

toJSON2

将对象转换为JSON序列化参数,为了兼容VTTHREE,重新添加此方法

  • toJSON2(meta)
  • 类型:{Function}
  • 参数:
    • meta {Object} 包含有元数据的对象
  • 返回:{Object}

updateMaterial

更新物体材质

  • updateMaterial(material)
  • 类型:{Function}
  • 参数:
    • material {Object} 材质参数
  • 返回:无

cloneByJSON

根据JSON克隆对象

  • cloneByJSON()
  • 类型:{Function}
  • 参数:无
  • 返回:无

dispose

销毁所有材质和几何体对象

  • dispose()
  • 类型:{Function}
  • 参数:无
  • 返回:无

事件

事件名适用对象说明
addedThing添加到父结点时
removedThing从父节点删除时
loadedModel、ImagePlane远程资源加载完成
var model = new VT.Model({
    modelType: "gltf",
    src: "./resources/scene/models/test/1.gltf"
});

// 事件监听
model.addEventListener("loaded", () => {
    // 响应代码
});
上次编辑于:
贡献者: dashun