Object3D
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
子对象
- object
- 返回:
this
applyMatrix4
对当前物体应用这个变换矩阵,并更新物体的位置、旋转和缩放。
- applyMatrix4(matrix)
- 类型:
{Function}
- 参数:
- matrix
THREE.Matrix4
变换矩阵
- matrix
- 返回:无
applyQuaternion
对当前物体应用由四元数所表示的变换。
- applyQuaternion(quaternion)
- 类型:
{Function}
- 参数:
- matrix
THREE.Quaternion
四元数
- matrix
- 返回:无
attach
将object作为子级来添加到该对象中,同时保持该object的世界变换。
- attach(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
- object
- 返回:
{THREE.Object3D}
clone
返回对象前物体的克隆(以及可选的所有后代)。
- copy(recursive )
- 类型:
{Function}
- 参数:
- recursive
{Boolean}
如果值为true,则该物体的后代也会被克隆。默认值为true。
- recursive
- 返回:
{THREE.Object3D}
copy
复制给定的对象到这个对象中
- copy(object, recursive )
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
待复制对象 - recursive
{Boolean}
如果值为true,则该物体的后代也会被复制。默认值为true。
- object
- 返回:
{THREE.Object3D}
getObjectById
从该对象开始,搜索一个对象及其子级,返回第一个带有匹配id的子对象。 请注意,id是按照时间顺序来分配的:1、2、3、……,每增加一个新的对象就自增1。
- getObjectById(id)
- 类型:
{Function}
- 参数:
- id
{Integer}
ID
- id
- 返回:
{THREE.Object3D}
getObjectByName
从该对象开始,搜索一个对象及其子级,返回第一个带有匹配name的子对象。 请注意,大多数的对象中name默认是一个空字符串,要使用这个方法,你将需要手动地设置name属性。
- getObjectByName(name)
- 类型:
{Function}
- 参数:
- name
{String}
属性名称
- name
- 返回:
{THREE.Object3D}
getObjectByProerty
从该对象开始,搜索一个对象及其子级,返回第一个给定的属性中包含有匹配的值的子对象。
- getObjectByProerty(name, value)
- 类型:
{Function}
- 参数:
- name
{String}
属性名称 - value
{Any}
给定属性的值
- name
- 返回:
{THREE.Object3D}
getWorldPosition
返回一个表示该物体在世界空间中位置的矢量。
- getWorldPosition(vector3)
- 类型:
{Function}
- 参数:
- vector3
{THREE.Vector3}
结果将被复制到这个Vector3中。
- vector3
- 返回:
{THREE.Vector3}
getWorldQuaternion
返回一个表示该物体在世界空间中旋转的四元数。
- getWorldQuaternion(quaternion)
- 类型:
{Function}
- 参数:
- quaternion
{THREE.Quaternion}
四元数
- quaternion
- 返回:
{THREE.Quaternion}
getWorldScale
返回一个包含着该物体在世界空间中各个轴向上所应用的缩放因数的矢量。
- getWorldScale(vector3)
- 类型:
{Function}
- 参数:
- vector3
{THREE.Vector3}
结果将被复制到这个Vector3中。
- vector3
- 返回:
{THREE.Vector3}
getWorldDirection
返回一个表示该物体在世界空间中Z轴正方向的矢量。
- getWorldDirection(vector3)
- 类型:
{Function}
- 参数:
- vector3
{THREE.Vector3}
结果将被复制到这个Vector3中。
- vector3
- 返回:
{THREE.Vector3}
localToWorld
将该向量从物体的局部空间转换到世界空间。
- localToWorld(vector3)
- 类型:
{Function}
- 参数:
- vector3
{THREE.Vector3}
一个表示在该物体局部空间中位置的向量。
- vector3
- 返回:无
lookAt
旋转物体使其在世界空间中面朝一个点。这一方法不支持其父级被旋转过或者被位移过的物体。
- lookAt(vector3)
- 类型:
{Function}
- 参数:
- vector3
{THREE.Vector3}
一个表示世界空间中位置的向量。
- vector3
- 返回:无
remove
移除物体
- remove(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
物体
- object
- 返回:
this
removeFromParent
从父节点中移除本物体
- removeFromParent()
- 类型:
{Function}
- 参数:无
- 返回:
this
rotateOnAxis
在局部空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。
- rotateOnAxis(axis, angle)
- 类型:
{Function}
- 参数:
- axis
{THREE.Vector3}
一个在局部空间中的标准化向量。 - angle
{Number}
弧度
- axis
- 返回:无
rotateOnWorldAxis
在世界空间中绕着该物体的轴来旋转一个物体,假设这个轴已被标准化。 方法假设该物体没有旋转过的父级。
- rotateOnWorldAxis(axis, angle)
- 类型:
{Function}
- 参数:
- axis
{THREE.Vector3}
一个在世界空间中的标准化向量。 - angle
{Number}
弧度
- axis
- 返回:无
rotateX
绕局部空间的X轴旋转这个物体。
- rotateX(angle)
- 类型:
{Function}
- 参数:
- angle
{Number}
弧度
- angle
- 返回:无
rotateY
绕局部空间的Y轴旋转这个物体。
- rotateY(angle)
- 类型:
{Function}
- 参数:
- angle
{Number}
弧度
- angle
- 返回:无
rotateZ
绕局部空间的Z轴旋转这个物体。
- rotateZ(angle)
- 类型:
{Function}
- 参数:
- angle
{Number}
弧度
- angle
- 返回:无
setRotationFromAxisAngle
指定了旋转量的欧拉角。
- setRotationFromAxisAngle(axis, angle)
- 类型:
{Function}
- 参数:
- axis
{THREE.Vector3}
一个在局部空间中的标准化向量。 - angle
{Number}
弧度
- axis
- 返回:无
setRotationFromEuler
指定了旋转量的欧拉角。
- setRotationFromEuler(euler)
- 类型:
{Function}
- 参数:
- euler
{THREE.Euler}
欧拉角
- euler
- 返回:无
setRotationFromMatrix
通过给定矩阵中的旋转分量来旋转四元数。
- setRotationFromQuaternion(q)
- 类型:
{Function}
- 参数:
- m
{THREE.Matrix}
假设m上的3x3矩阵是一个纯旋转矩阵(即未缩放的矩阵)
- m
- 返回:无
setRotationFromQuaternion
将所给的四元数复制到.quaternion中。
- setRotationFromQuaternion(q)
- 类型:
{Function}
- 参数:
- q
{THREE.Quaternion}
包含有元数据的对象,例如该对象的材质、纹理或图片
- q
- 返回:无
toJSON
将对象转换为JSON序列化参数
- toJSON(meta)
- 类型:
{Function}
- 参数:
- meta
{Object}
包含有元数据的对象,例如该对象的材质、纹理或图片
- meta
- 返回:
{Object}
translateOnAxis
在局部空间中沿着一条轴来平移物体,假设轴已被标准化。
- translateOnAxis(axis, distance)
- 类型:
{Function}
- 参数:
- axis
{THREE.Vector3}
一个在局部空间中的标准化向量。 - distance
{Number}
距离
- axis
- 返回:
this
translateX
沿着X轴将平移distance个单位。
- translateX(distance)
- 类型:
{Function}
- 参数:
- distance
{Number}
距离
- distance
- 返回:
this
translateY
沿着Y轴将平移distance个单位。
- translateY(distance)
- 类型:
{Function}
- 参数:
- distance
{Number}
距离
- distance
- 返回:
this
translateZ
沿着Z轴将平移distance个单位。
- translateZ(distance)
- 类型:
{Function}
- 参数:
- distance
{Number}
距离
- distance
- 返回:
this
traverse
在对象以及后代中执行的回调函数。
- traverse(callback)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。
- callback
- 返回:无
traverseVisible
回调函数仅对可见的对象执行,不可见对象的后代将不遍历。
- traverseVisible(callback)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。
- callback
- 返回:无
traverseAncestors
在所有的祖先中执行回调函数。
- traverseAncestors(callback)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。
- callback
- 返回:无
updateMatrix
更新局部变换。
- updateMatrix()
- 类型:
{Function}
- 参数:无
- 返回:无
updateMatrixWorld
更新物体及其后代的全局变换。
- updateMatrixWorld(force)
- 类型:
{Function}
- 参数:
- force
{Boolean}
是否强制
- force
- 返回:无
updateWorldMatrix
- updateWorldMatrix(updateParents, updateChildren)
- 类型:
{Function}
- 参数:无
- updateParents
{Boolean}
是否更新父对象 - updateChildren
{Boolean}
是否更新子对象
- updateParents
- 返回:无
worldToLocal
一个表示在世界空间中位置的向量,将该向量从世界空间转换到物体的局部空间
- worldToLocal(vector3)
- 类型:
{Function}
- 参数:
- vector3
THREE.Vector3
世界坐标
- vector3
- 返回:无
扩展方法
query
查询子节点,根据查询条件
- query(filter)
- 类型:
{Function}
- 参数:
- filter
{Object}
查询条件- property
{Array}
物体对象,默认空置则查询所有的物体 - type
{Array}
类型过滤器,默认空置则查询所有的物体 - properties
{Array}
属性过滤器 - name
{Array}
名称过滤器
- property
- filter
- 返回:
{Array}
group.query({
properties: [
["==", "名称", "1#仓库"], [">=", "面积", 12344]
]
});
traverseFilter
遍历过滤后的对象
- traverseFilter(callback, filter)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。 - filter
{Object}
查询过滤对象
- callback
- 返回:无
traverseBreakable
遍历对象返回true
,则一直遍历,否则退出
- traverseBreakable(callback)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。
- callback
- 返回:无
traverseMaterial
遍历所有材质
- traverseMaterial(callback)
- 类型:
{Function}
- 参数:
- callback
{Function}
回调, 以一个object3D对象作为第一个参数的函数。
- callback
- 返回:无
getInParentIndex
获取在父节点中的序列号
- getInParentIndex()
- 类型:
{Function}
- 参数:无
- 返回:
{Integer}
getRefPositions
获取引用点位置列表
- getRefPositions(isLocal)
- 类型:
{Function}
- 参数:
- isLocal
{Boolean}
是否局部坐标
- isLocal
- 返回:
Array
setProperties
设置属性
- setProperties(key, value)
- 类型:
{Function}
- 参数:
- key
{String|Object}
属性名称,或属性对象 - value
{Any}
属性对象
- key
- 返回:无
insertTo
插入到
- insertTo(parent, index)
- 类型:
{Function}
- 参数:
- parent
{Object}
对象 - index
{Integer}
下标
- parent
- 返回:无
removeBySelf
将自己从父节点移除
- removeBySelf()
- 类型:
{Function}
- 参数:无
- 返回:无
getMeshByName
根据名称查询 Mesh
- getMeshByName(name)
- 类型:
{Function}
- 参数:
- name
{String}
名字
- name
- 返回:
{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
- root
- 返回:
{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}
材质
- material
- 返回:
{Boolean}
replace
替换对象
- replace(oldChild, newChild, callback)
- 类型:
{Function}
- 参数:
- oldChild
{THREE.Object3D}
旧对象 - newChild
{THREE.Object3D}
新对象 - callback
{Function}
回调
- oldChild
- 返回:无
insert
插入对象
- insert(index, child)
- 类型:
{Function}
- 参数:
- index
{Integer}
下标 - child
{THREE.Object3D}
对象
- index
- 返回:无
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}
对象
- object
- 返回:
{Number}
indexOf
获取子物体的下标
- indexOf(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
子物体
- object
- 返回:
{Number}
isBrotherOf
是否为兄弟节点
- isBrotherOf(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
子物体
- object
- 返回:
{Boolean}
isChildOf
是否为子对象
- isChildOf(object)
- 类型:
{Function}
- 参数:
- object
{THREE.Object3D}
父物体
- object
- 返回:
{Boolean}
resetMaterial
针对有变化的物体材质,恢复原有材质
- resetMaterial()
- 类型:
{Function}
- 参数:无
- 返回:
this
setBoxHelper
设置辅助BoxHelper
- setBoxHelper(option)
- 类型:
{Function}
- 参数:
- option
{Object}
参数- color
{String}
颜色
- color
- option
- 返回:
this
setEdge
设置边框
- setEdge(option)
- 类型:
{Function}
- 参数:
- option
{Object}
参数- color
{String}
颜色
- color
- option
- 返回:
this
getBy
根据路径节点获取物体
- getBy(mapString)
- 类型:
{Function}
- 参数:
- mapString
{String}
以.
隔开的路径节点
- mapString
- 返回:
{THREE.Object3D}
updateBy
根据参数,更新物体
- updateBy(config, filter)
- 类型:
{Function}
- 参数:
- config
{config}
更新配置 - filter
{Object}
查询条件
- config
- 返回:无
// 更新的对象
{
// 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序列化参数,为了兼容VT
和THREE
,重新添加此方法
- toJSON2(meta)
- 类型:
{Function}
- 参数:
- meta
{Object}
包含有元数据的对象
- meta
- 返回:
{Object}
updateMaterial
更新物体材质
- updateMaterial(material)
- 类型:
{Function}
- 参数:
- material
{Object}
材质参数
- material
- 返回:无
cloneByJSON
根据JSON克隆对象
- cloneByJSON()
- 类型:
{Function}
- 参数:无
- 返回:无
dispose
销毁所有材质和几何体对象
- dispose()
- 类型:
{Function}
- 参数:无
- 返回:无
事件
事件名 | 适用对象 | 说明 |
---|---|---|
added | Thing | 添加到父结点时 |
removed | Thing | 从父节点删除时 |
loaded | Model、ImagePlane | 远程资源加载完成 |
var model = new VT.Model({
modelType: "gltf",
src: "./resources/scene/models/test/1.gltf"
});
// 事件监听
model.addEventListener("loaded", () => {
// 响应代码
});