new BasePlanePoints(param)
基础平面点对象类,负责管理平面上的点数据和区域属性
Parameters:
| Name | Type | Description |
|---|---|---|
param |
object | 初始化参数 |
Extends
Members
-
active :boolean
-
激活状态主要影响可见性,类似与控制节点的可见性,与visible的区别是:
父物体active为false,孩子的active为true,孩子不可见
父物体visible为false,孩子的visible为true,孩子可见
- Overrides:
Example
let box = new THING.Box(); let box2 = new THING.Box({parent: box}); box.active = false; // @expect(box2.active == true); // @expect(box.active == false); -
alwaysOnTop :boolean
-
设置/获取 是否开启渲染置顶
- Overrides:
Example
// Keep object render as the top of render layer object.alwaysOnTop = true; -
angles :Array.<number>
-
设置/获取 世界坐标系下的旋转角度欧拉角('XYZ'),单位为 degree(度)。
- Overrides:
-
app :THING.App
-
获取app对象
- Overrides:
Example
let object = new THING.BaseObject(); let app = object.app; let ret = app == THING.App.current; // @expect(ret == true) -
area :number
-
获取区域面积(计算中会减去洞的面积)
-
autoAdjustPosition :boolean
-
是否自动调整点坐标。当坐标过大时,由于精度问题可能导致抖动,此时需要自动调整。
- Overrides:
Example
let point = new THING.Points(); let ret = point.autoAdjustPosition == false; // @expect(ret == true); point.autoAdjustPosition = true; ret = point.autoAdjustPosition == true; // @expect(ret == true); -
body :THING.BodyObject
-
获取body对象 body对象可以理解这个对象自身,不包含它的孩子.
- Overrides:
-
boundingBox :THING.Box3
-
获取世界坐标系下的包围盒数据 等同于getAABB(true,true,false)
- Overrides:
Example
let boundingBox = object.boundingBox; if (boundingBox.halfSize[1] > 100) { console.log('The object is so tall'); } -
brothers :THING.Selector
-
获取兄弟节点(同级节点)
- Overrides:
Example
let box1 = new THING.Box(); let box2 = new THING.Box({parent: box1}); let box3 = new THING.Box({parent: box1}); let brothers = box3.brothers; // @expect(brothers.length == 1); -
children :THING.Selector
-
获取孩子
- Overrides:
Example
let object = new THING.BaseObject(); let child= new THING.BaseObject({parent: object}); let children = object.children; let ret = children.length == 1; // @expect(ret == true) -
collider :ColliderComponent
-
物体的碰撞检测组件
- Overrides:
-
readonly components :Map.<String, THING.BaseComponent>
-
获取所有组件
- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'component1'); obj.addComponent(new THING.BaseComponent(), 'component2'); // @expect(obj.components.size == 2) -
destroyable :boolean
-
设置/获取 对象是否可以被销毁
- Overrides:
Example
let object = new THING.BaseObject(); object.destroyable = true; // @expect(object.destroyable == true) -
dtType :string
-
设置/获取 孪生体类型
- Overrides:
Example
let object = new THING.BaseObject(); object.dtType = 'Equipment'; // @expect(object.dtType == 'Equipment') -
events :Array.<ObjectListenerInfo>
-
获取当前对象注册的所有事件监听器的详细列表。该属性返回一个 ObjectListenerInfo 类型的数组,每一项包含一个事件监听器的全部信息。ObjectListenerInfo 格式参考(常用字段如下):- name: 事件名称(一般为小写,如 "click", "update", "mouseenter" 等)- callback: 回调函数,事件触发时调用- context: 回调函数的上下文对象- once: 是否为一次性监听(只会触发一次,之后移除)- filter: 事件过滤函数(可选)- id: 事件监听唯一标识(可选)- other: 可能包含的其他参数或元数据
- Overrides:
Example
let object = new THING.BaseObject(); object.on('click', function() { console.log('clicked'); }); // 获取所有事件监听器 let allEvents = object.events; // @expect(Array.isArray(allEvents)); // @expect(allEvents.length >= 0); // allEvents 结果类似: // [{ // name: 'click', // callback: ƒ, // context: object, // once: false, // filter: undefined, // id: 1 // }, ...] -
frustumCulled :boolean
-
获取/设置视锥剔除状态。
- Overrides:
-
helper :THING.HelperComponent
-
辅助组件 可显示坐标轴等
- Overrides:
-
holes :Array.<Array.<Array.<number>>>
-
设置/获取 世界坐标系下(3D)区域空洞坐标
-
id :string
-
设置/获取 物体id
- Overrides:
Example
let object = new THING.BaseObject(); object.id = 'DEVICE_007'; // @expect(object.id == 'DEVICE_007') -
ignoreParentTransform :THING.Transform
-
获取/设置是否忽略父物体的变换
Example
object.ignoreParentTransform = THING.Transform.Rotation | THING.Transform.Scale; -
inherit :InheritData
-
获取继承信息
- Overrides:
Example
object.inherit.style = THING.InheritType.Jump; object.inherit.visible = THING.InheritType.Break; object.inherit.pickable = THING.InheritType.Stop; -
isDynamicLoad :string
-
设置/获取 对象为动态加载
- Overrides:
- Default Value:
- false
Example
object.isDynamicLoad = true; -
isFlying :boolean
-
获取飞行状态
- Overrides:
-
keepSize :boolean
-
是否自适应大小(缩放时保持像素级别大小不变)
- Overrides:
Example
let keepSize = object.keepSize; if (keepSize) { console.log('object is keep size to render'); } -
keepSizeUseBodyLocalScale :boolean
-
获取/设置 keepSize 时是否使用 body.localScale(true)而不是 object.localScale(false,默认)。
- Overrides:
- Default Value:
- false
Example
// 使用 body.localScale 来保持大小 object.keepSizeUseBodyLocalScale = true; object.keepSize = true; -
labelPosition :Array.<number>
-
获取世界坐标系下区域的标注位置(一般是在区域中心)
-
layerMask :number
-
取/设置遮罩层(LayerMask)。默认值为 1。通过"按位与"的计算,来判定物体在指定摄像机中的layerMask的值。
- Overrides:
Example
// Hide object by changing layer mask object.layerMask = 0; -
length :number
-
获取由点形成的路径的长度
- Overrides:
Example
let point = new THING.Points(); point.localPoints = [[0,0,0],[3,0,0],[0,4,0]]; ret = point.length == 8; // @expect(ret == true); -
lerp :THING.LerpComponent
-
物体的插值组件(可控制属性动态的修改)
- Overrides:
-
level :THING.LevelComponent
-
物体的层级组件
- Overrides:
-
localAngles :Array.<number>
-
设置/获取 相对于父物体坐标系的旋转角度欧拉角('XYZ'),单位为 degree(度)。
- Overrides:
-
localPoints :Array.<Array.<number>>
-
获取/设置局部坐标系中的点坐标集合
- Overrides:
Example
let point = new THING.Points(); point.localPoints = [[1,1,1],[2,2,2]]; ret = point.localPoints[1][1] == 2; // @expect(ret == true); -
localPosition :Array.<number>
-
设置/获取 相对于父物体坐标系的位置(偏移)
- Overrides:
-
localQuaternion :Array.<number>
-
设置/获取 相对于父物体坐标系的四元数
- Overrides:
-
localRotation :Array.<number>
-
等同于localAngles欧拉角('XYZ'),单位为 degree(度)。
- Overrides:
-
localScale :Array.<number>
-
设置/获取 父物体坐标系下的缩放
- Overrides:
-
name :string
-
设置/获取 对象名称
- Overrides:
Example
object.name = 'MyObject'; -
number :number
-
点的个数
- Overrides:
Example
let point = new THING.Points(); let ret = point.number == 0; // @expect(ret == true); point.addPoints([[1,1,1],[2,2,2]]); ret = point.number == 2; // @expect(ret == true); -
orientedBox :OrientedBoxResult
-
获取旋转后的包围盒数据 包围盒坐标轴一般是物体自身坐标轴 等同于getOBB(true,true,false)
- Overrides:
Example
let orientedBox = object.orientedBox; if (orientedBox.angles[1] > 0) { console.log('The object has rotated by Y-axis'); } -
outlinePoints :Array.<Array.<number>>
-
获取自身平面空间(2D)下区域外轮廓点位
-
parent :THING.BaseObject
-
设置/获取 父物体
- Overrides:
Example
let parent = new THING.BaseObject(); let child = new THING.BaseObject({parent: parent}); let ret = child.parent == parent; // @expect(ret == true); -
parents :THING.Selector
-
获取所有的祖先(父物体,父物体的父物体等,直到查询到根节点--app.root)
- Overrides:
Example
let box1 = new THING.Box(); let box2 = new THING.Box({parent: box1}); let parents = box2.parents; // @expect(parents.length == 2); -
perimeter :number
-
获取区域周长
-
pickable :boolean
-
获取/设置可拾取状态。此属性操作会影响自身以及所有子对象。
- Overrides:
Example
let object = new THING.Box(); object.pickable = false; -
pivot :Array.<number>
-
获取/设置轴心点信息。轴心点参考原点为自身包围盒的 [left, bottom, back] 的位置。数组每个分类的取值为0-1
- Overrides:
Example
// Make object origin to [right, top, front] position object.pivot = [1, 1, 1]; -
points :Array.<Array.<number>>
-
获取/设置世界坐标系中的点坐标集合
- Overrides:
Example
let point = new THING.Points(); point.points = [[1,1,1],[2,2,2]]; ret = point.points[1][1] == 2; // @expect(ret == true); -
position :Array.<number>
-
设置/获取 世界坐标系下的位置
- Overrides:
-
quaternion :Array.<number>
-
设置/获取 世界坐标系下的四元数
- Overrides:
-
queryable :boolean
-
设置/获取 对象是否可以被查询
- Overrides:
Example
let object = new THING.BaseObject(); object.name = 'Hidden'; let ret = app.query('Hidden'); // @expect(ret[0].name = 'Hidden') object.queryable = false; ret = app.query('Hidden'); // @expect(ret.length = 0) -
relationships :Array.<THING.Relationship>
-
设置/获取 关系
- Overrides:
Example
let object = new THING.Object3D(); let source = new THING.Object3D(); let target = new THING.Object3D(); let relationship = new THING.Relationship({ type: 'control', source: source, target: target }); object.addRelationship(relationship); let ret = object.relationships[0].type == 'control'; // @expect(ret == true) -
renderOrder :number
-
获取/设置渲染顺序,绘制顺序从低到高。
- Overrides:
-
rotation :Array.<number>
-
等同于angles欧拉角('XYZ'),单位为 degree(度)。
- Overrides:
-
scale :Array.<number>
-
设置/获取 世界坐标系下的缩放
- Overrides:
-
selfHoles :Array.<Array.<Array.<number>>>
-
设置/获取 自身坐标系下(3D)区域空洞坐标
-
selfPlaneHoles :Array.<Array.<Array.<number>>>
-
设置/获取 自身平面坐标系下(2D)区域空洞坐标
-
selfPlanePoints :Array.<Array.<Array.<number>>>
-
设置/获取 自身平面坐标系下(2D)区域外轮廓坐标
-
selfPoints :Array.<Array.<number>>
-
获取/设置对象自身坐标系中的点坐标集合
- Overrides:
Example
let point = new THING.Points(); point.selfPoints = [[1,1,1],[2,2,2]]; ret = point.selfPoints[1][1] == 2; // @expect(ret == true); -
style :THING.Style
-
获取/设置样式
- Overrides:
Example
let style = object.style; style.color = 'red'; style.opacity = 0.1; -
styleTag :string
-
样式标签
- Overrides:
-
tags :Set.<string>
-
设置/获取 物体标签
- Overrides:
Example
// Get tags let tags = object.tags; console.log(tags); // Set tags by array object.tags = ['one','two','three']; // Set tags by set object.tags = new Set(['one','two','three']); -
type :string
-
获取类型
- Overrides:
Example
let object = new THING.BaseObject(); let type = object.type; // @expect(type == 'BaseObject') -
userData :object
-
设置/获取 物体的自定义属性
- Overrides:
Example
let object = new THING.BaseObject(); object.userData['Notebook'] = { name: 'FlyingCar', price: 100 }; let name = object.userData['Notebook'].name; // @expect(name == 'FlyingCar') let price = object.userData['Notebook'].price // @expect(price == 100) -
uuid :string
-
设置/获取 物体的唯一标识
- Overrides:
Example
let object = new THING.BaseObject({uuid: 10000}); // @expect(object.uuid == 10000) object.uuid = THING.Math.generateUUID(); // @expect(object.id != 10000) -
visible :boolean
-
获取/设置显示状态,此属性操作会影响自身以及所有子对象。
- Overrides:
Example
let object = new THING.Box(); // @expect(object.visible == true) object.visible = false; // @expect(object.visible == false)
Methods
-
add(object, options) → {boolean}
-
添加对象作为自己的孩子
Parameters:
Name Type Description objectTHING.Object3D 待添加对象 optionsobject 选项 Properties
Name Type Attributes Default Description subNodeNamestring 子节点名称 localPositionArray.<number> 相对父物体的位置 localAnglesArray.<number> 相对父物体的旋转角度 attachModeboolean <optional>
true 表示是否保持世界坐标系下的位置不变 ignoreScaleboolean <optional>
false 是否忽略缩放 indexOfParentboolean <optional>
对象在子节点中的索引 Returns:
boolean - 添加成功返回true,否则返回false- Overrides:
Example
// Keep local transform of box to be added to object object.add(new THING.Box({ localPosition: [0, 10, 0]}), { attachMode: false }); -
addComponent(component, name, args?) → {boolean}
-
添加组件
Parameters:
Name Type Description componentTHING.BaseComponent | object 组件对象类名或者组件对象实例 namestring 组件名称 args?object 初始化具体组件的参数对象 如果第一个参数是一个类名而不是一个实例,添加时会根据初始化参数和类名创建一个组件实例 Returns:
boolean - 是否成功 如果给obj添加了一个name为myComponent的组件,添加成功后,可通过obj.myComponent获取该组件对象- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'myComponent'); // @expect(obj.myComponent != null) -
bindSubNode(target, subNodeName) → {boolean}
-
绑定子节点,绑定后将自动根据子节点更新世界坐标。绑定后位置、角度和缩放会锁定。
Parameters:
Name Type Description targetTHING.Object3D 目标对象。 subNodeNamestring 子节点名称。 Returns:
boolean - 是否绑定成功。- Overrides:
Example
let box = new THING.Box(); box.bindSubNode(car, 'chair'); -
clone(recursive, parent, options) → {THING.Object3D}
-
克隆对象
Parameters:
Name Type Description recursiveboolean 是否克隆所有的孩子 parentTHING.BaseObject 指定克隆出的对象父物体 默认用app.root作为父物体 optionsobject 选项 Returns:
THING.Object3D - 克隆出来的物体- Overrides:
Example
// Clone the object and move up let otherObject = object.clone(); otherObject.translateY(10); -
copy(object, options) → {Promise.<any>}
-
拷贝对象(不拷贝uuid和parent),拷贝对象会重新加载资源
Parameters:
Name Type Description objectTHING.BaseObject 源对象 optionsobject 选项 Returns:
Promise.<any> - 返回一个Promise对象- Overrides:
Example
// 从查询结果拷贝对象 let sourceObject = app.query('#master')[0]; if (sourceObject) { object.copy(sourceObject); } -
destroy() → {boolean}
-
销毁物体
Returns:
boolean - 返回一个布尔值,表示是否销毁成功- Overrides:
Example
let object = new THING.BaseObject(); // @expect(object.destroyed == false); object.destroy(); // @expect(object.destroyed == true) -
disableInstancing() → {boolean}
-
禁用实例化节点。
Returns:
boolean - 是否禁用成功- Overrides:
Example
// 禁用实例化渲染 object.disableInstancing(); -
distanceTo(target) → {number}
-
获取距离另一个Object3D对象或者一个三维坐标的距离
Parameters:
Name Type Description targetTHING.Object3D | Array.<number> 目标物体或者世界坐标 Returns:
number - 距离- Overrides:
Example
let distance = object.distanceTo([0, 10, 0]); if (distance > 5000) { console.log('object is so far from specified position'); } -
enableInstancing(options) → {Promise.<boolean>}
-
启用实例化节点(启用后将使主体节点不可见)。
Parameters:
Name Type Description optionsInstancingNodeOptions 选项。 Returns:
Promise.<boolean> - 是否启用成功- Overrides:
Example
// 启用实例化渲染,设置最大数量为31104个实例 object.enableInstancing({ maxNumber: 31104, number: 0, matrices: [], // 包含所有实例的变换矩阵 pickedIds: pickedIds, // 可选,包含所有实例的拾取ID colors: colors // 可选,包含所有实例的颜色 }); -
fadeIn(param)
-
对象渐现
Parameters:
Name Type Description paramLerpArgs The parameters. 插值参数 - Overrides:
Example
object.fadeIn({ duration: 2000, onComplete: () => { console.log('Fade in completed'); } }); -
fadeInAsync(param) → {Promise}
-
异步将对象渐现。
Parameters:
Name Type Description paramLerpArgs The parameters. 插值参数 Returns:
Promise - 一个在渐现完成时解析的承诺。- Overrides:
Example
await object.fadeInAsync({ duration: 2000 }); -
fadeOut(param)
-
对象渐隐
Parameters:
Name Type Description paramLerpArgs The parameters. 插值参数 - Overrides:
Example
object.fadeOut({ duration: 2000, onComplete: () => { console.log('Fade out completed'); } }); -
fadeOutAsync(param) → {Promise}
-
异步将对象渐隐。
Parameters:
Name Type Description paramLerpArgs The parameters. 插值参数 Returns:
Promise - 一个在渐隐完成时解析的承诺。- Overrides:
Example
await object.fadeOutAsync({ duration: 2000 }); -
fit(param) → {boolean}
-
根据目标对象计算最佳位置 一般用于调整摄像机最佳视角
注意参数中 times 和 duration 不起作用Parameters:
Name Type Description paramTHING.BaseObject | LerpFlyToArgs 可传入BaseObject或参数 Returns:
boolean - 是否计算成功- Overrides:
Example
app.camera.fit(otherTarget); -
flyTo(param) → {boolean}
-
物体在特定时间内飞行到特定位置
Parameters:
Name Type Description paramTHING.BaseObject | LerpFlyToArgs 可传入BaseObject或飞行参数 Returns:
boolean - 是否飞行成功- Overrides:
Example
object.flyTo(baseObject);//飞到物体 object.flyTo({ target: otherTarget, horzAngle: 0, vertAngle: 45 }); object.flyTo({ position: [0,10,0], target:[0,0,0], up:[0,0,1] }); -
getAABB(recursiveopt, updateMatrixopt, localopt) → {THING.Box3}
-
获取包围盒
Parameters:
Name Type Attributes Default Description recursiveboolean <optional>
true 计算aabb时是否考虑孩子 updateMatrixboolean <optional>
true 计算aabb时是否更新自己和孩子的矩阵 localboolean <optional>
false 计算出的aabb的轴向是基于父物体坐标系,还是相对于世界坐标系(计算出的包围盒是不同的) Returns:
THING.Box3 - 包围盒对象- Overrides:
Example
let boundingBox = object.getAABB(); console.log(boundingBox); -
getAllComponents() → {Array.<THING.BaseComponent>}
-
获取所有组件
Returns:
Array.<THING.BaseComponent>- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'component1'); obj.addComponent(new THING.BaseComponent(), 'component2'); let components = obj.getAllComponents(); // @expect(components.length == 2) -
getAttribute(key, separator) → {*}
-
根据name获取属性值
Parameters:
Name Type Default Description keystring 属性名称,支持嵌套,例如获取object.a.b.c 可以使用object.getAttribute('a/b/c') separatorstring / 分隔符,默认是'/' Returns:
* - 返回指定属性的值- Overrides:
Example
let object = new THING.BaseObject(); object.userData['power'] = 100; let power = object.getAttribute('userData/power'); // @expect(power == 100) -
getComponentByName(name) → {THING.BaseComponent}
-
根据名称获取组件对象
Parameters:
Name Type Description namestring 组件名称 Returns:
THING.BaseComponent- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'myComponent'); let component = obj.getComponentByName('myComponent'); // @expect(component != null) -
getComponentByType(type) → {THING.BaseComponent}
-
根据类型获取组件对象 返回符合条件的第一个组件
Parameters:
Name Type Description type* 组件类型 Returns:
THING.BaseComponent- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'myComponent'); let component = obj.getComponentByType(THING.BaseComponent); // @expect(component != null) -
getComponentsByType(type) → {Array.<THING.BaseComponent>}
-
根据类型获取组件对象的集合
Parameters:
Name Type Description type* 组件类型 Returns:
Array.<THING.BaseComponent>- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'component1'); obj.addComponent(new THING.BaseComponent(), 'component2'); let components = obj.getComponentsByType(THING.BaseComponent); // @expect(components.length == 2) -
getEvents(type) → {Array.<ObjectListenerInfo>}
-
获取指定类型的事件。
Parameters:
Name Type Description typestring 事件类型,为null表示获取所有事件。 Returns:
Array.<ObjectListenerInfo> - 返回一个数组,包含所有指定类型的事件- Overrides:
Example
let object = new THING.BaseObject(); let events = object.getEvents(); // @expect(events.length > 0); -
getFrustumCulled() → {boolean}
-
获取视锥剔除状态。
Returns:
boolean - 视锥剔除状态。- Overrides:
Example
let frustumCulled = object.getFrustumCulled(); if (frustumCulled) { console.log('object is frustum culled'); } -
getInstancedCount() → {number}
-
获取实例化数量。
Returns:
number - 实例化数量- Overrides:
Example
// 获取当前实例的数量 const count = object.getInstancedCount(); console.log('Current instance count:', count); -
getInstancing() → {InstancingNodeOptions}
-
获取实例化节点信息。
Returns:
InstancingNodeOptions - 实例化节点信息- Overrides:
Example
// 获取实例化渲染的当前参数 const info = object.getInstancing(); console.log(info.number); // 当前实例数量 console.log(info.maxNumber); // 最大实例数量 -
getInstancingAttribute(name) → {any}
-
获取实例化属性。
Parameters:
Name Type Description namestring 名称。 Returns:
any - 实例化属性Example
// 获取颜色属性的状态 const useColors = object.getInstancingAttribute('Colors'); console.log('Using colors:', useColors); -
getInstancingClearOutColor(index) → {boolean}
-
获取实例化清除颜色。
Parameters:
Name Type Description indexnumber 索引。 Returns:
boolean - 是否获取成功Example
// 获取第一个实例的清除颜色 const clearOutColor = object.getInstancingClearOutColor(0); console.log('Instance 0 clear out color:', clearOutColor); -
getInstancingDiffuseUVTransform(index, target) → {Array.<number>}
-
获取实例化漫反射UV变换。
Parameters:
Name Type Description indexnumber 索引。 targetArray.<number> 目标。 Returns:
Array.<number> - 漫反射UV变换Example
// 获取第一个实例的漫反射UV变换 const diffuseUVTransform = object.getInstancingDiffuseUVTransform(0); console.log('Instance 0 diffuse UV transform:', diffuseUVTransform); -
getInstancingMatrix(index, target?) → {Array.<number>}
-
获取按索引的实例化矩阵。
Parameters:
Name Type Description indexnumber 索引。 target?Array.<number> 目标。 Returns:
Array.<number> - 实例化矩阵- Overrides:
Example
// 获取第一个实例的变换矩阵 const matrix = object.getInstancingMatrix(0); console.log('Instance 0 matrix:', matrix); -
getInstancingVisible(index) → {boolean}
-
获取按索引的实例化可见性。
Parameters:
Name Type Description indexnumber 索引。 Returns:
boolean - 是否获取成功- Overrides:
Example
// 检查第一个实例是否可见 const visible = object.getInstancingVisible(0); console.log('Instance 0 visible:', visible); -
getOBB(recursiveopt, updateMatrixopt, localopt) → {OrientedBoxResult}
-
获取旋转后的包围盒
Parameters:
Name Type Attributes Default Description recursiveboolean <optional>
true 计算obb时是否考虑孩子 updateMatrixboolean <optional>
true 计算obb时是否更新自己和孩子的矩阵 localboolean <optional>
false 描述obb时的参数是基于父物体还是世界坐标系(算出的包围盒是一样的,只是描述不同) Returns:
OrientedBoxResult - 旋转包围盒对象- Overrides:
Example
let orientedBox = object.getOBB(); console.log(orientedBox); -
getRenderOrder() → {number}
-
获取渲染顺序。
Returns:
number - 渲染顺序- Overrides:
Example
let renderOrder = object.renderOrder; console.log(renderOrder); -
getVisible() → {boolean}
-
获取visible的状态
Returns:
boolean - 可见状态。- Overrides:
Example
let visible = object.getVisible(); if (visible) { console.log('object is showing'); } -
hasAttribute(name, separator) → {boolean}
-
检查是否含有属性名为name的属性
Parameters:
Name Type Default Description namestring 属性名称,支持嵌套,例如查询object.a.b.c 可以使用object.hasAttribute('a/b/c') separatorstring / 分隔符,默认是'/' Returns:
boolean - 返回一个布尔值,表示是否存在指定的属性- Overrides:
Example
let object = new THING.BaseObject(); object.userData['power'] = 100; let ret = object.hasAttribute('userData/power'); // @expect(ret == true) -
hasComponent(name) → {boolean}
-
判断是否含有特定名称的组件
Parameters:
Name Type Description namestring 组件名称 Returns:
boolean- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'myComponent'); let ret = obj.hasComponent('myComponent') // @expect(ret == true) -
async invoke(type, condition, data, tagName) → {*}
-
触发并等待事件完成
Parameters:
Name Type Description typestring 事件类型。 conditionstring | object 事件条件 或 事件数据。 dataobject | string 事件数据 或 事件标签。 tagNamestring 事件标签名称。 Returns:
* - 返回一个Promise对象,包含指定类型的事件- Overrides:
-
loadResource(recursiveopt, optionsopt) → {Promise.<any>}
-
加载资源 返回一个Promise对象
Parameters:
Name Type Attributes Default Description recursiveboolean <optional>
true 是否加载所有孩子的资源 optionsResourceResult <optional>
{} 加载选项 Returns:
Promise.<any> - 返回一个Promise对象- Overrides:
Example
// 等待物体加载资源完成 await object.loadResource(); -
localToWorld(position, ignoreScaleopt) → {Array.<number>}
-
相对于父物体的坐标转为世界坐标
Parameters:
Name Type Attributes Default Description positionArray.<number> 相对于父物体的坐标 ignoreScaleboolean <optional>
false 转换时是否忽略缩放 默认不忽略 Returns:
Array.<number> - 返回世界坐标- Overrides:
Example
let parentObj = new THING.Object3D({ position: [0, 5, 0] }); let childObj = new THING.Object3D({ localPosition: [0, 10, 0], parent: parentObj }); let worldPos = childObj.localToWorld([0, -5, 0]); // print [0, 0, 0] console.log(worldPos); -
lookAt(target, param) → {boolean}
-
看对象或一个目标位置
Parameters:
Name Type Description targetArray.<number> | THING.Object3D 要看的对象或目标位置 paramLookAtArgs 参数列表 Returns:
boolean - 是否看成功- Overrides:
-
makeInstancedDrawing(value, options) → {boolean}
-
开启/关闭批量渲染模式。
Parameters:
Name Type Default Description valueboolean true 是否开启 optionsobject 选项 Properties
Name Type Attributes Default Description renderModestring <optional>
'InstancedRendering' 渲染模式 InstancedRendering/SharedRenderingSharedRendering代表材质共用但是drawCall还是多个 InstancedRendering代表材质共用,drawCall只有一次 Returns:
boolean - 是否开启成功- Overrides:
Example
// 开启批量渲染模式 if (object.makeInstancedDrawing()) { console.log('Enable instanced drawing'); } -
movePath(value, param) → {boolean}
-
对象沿路径移动
Parameters:
Name Type Description valueArray.<Array.<number>> 组成路径的坐标的集合 paramMovePathLerpArgs 移动参数 Returns:
boolean - 是否移动成功- Overrides:
Example
let path = [ [100, 0, 0], [100, 0, 100], [0, 0, 100], [0, 0, 0], ]; object.movePath(path.map(point => object.selfToWorld(point)), { duration: 5 * 1000, loopType: THING.LoopType.Repeat, }); object.movePath({ path: path.map(point => object.selfToWorld(point)), duration: 5 * 1000, loopType: THING.LoopType.Repeat, }); -
movePathAsync(value, param) → {Promise.<any>}
-
对象沿路径移动 返回一个Promise对象
Parameters:
Name Type Description valueArray.<Array.<number>> 组成路径的坐标的集合 paramMovePathLerpArgs 移动参数 Returns:
Promise.<any> - 返回一个Promise对象- Overrides:
Example
let path = [ [100, 0, 0], [100, 0, 100], [0, 0, 100], [0, 0, 0], ]; await object.movePathAsync(path.map(point => object.selfToWorld(point)), { duration: 5 * 1000 }); await object.movePathAsync({ path: path.map(point => object.selfToWorld(point)), duration: 5 * 1000 }); -
moveTo(value, param) → {boolean}
-
对象移动到目标位置
Parameters:
Name Type Description valueArray.<number> 目标位置 paramMovePathLerpArgs 移动的参数 Returns:
boolean - 是否移动成功- Overrides:
Example
object.moveTo(object.selfToWorld(THING.Math.randomVector([-200, -5, -200], [200, 5, 200])), { loopType: THING.LoopType.PingPong, duration: THING.Math.randomInt(1000, 5000) }); object.moveTo({ to: object.selfToWorld(THING.Math.randomVector([-200, -5, -200], [200, 5, 200])), duration: THING.Math.randomInt(1000, 5000) }) -
off(type, condition, tag)
-
注销事件
Parameters:
Name Type Description typestring 事件类型 conditionstring 注册事件的条件 tagstring 事件的tag - Overrides:
Example
let object = new THING.BaseObject(); let markOff = 0; object.on('testOff', function(ev) { markOff = 1; }); object.trigger('testOff'); // @expect(markOff == 1); markOff = 0; object.off('testOff'); object.trigger('testOff'); // @expect(markOff == 0); -
on(type, condition, callback, tag, priority, options)
-
注册事件
Parameters:
Name Type Description typestring 事件类型 conditionstring 注册事件前先进行查询,对符合条件的对象进行注册 callbackEventCallback 事件回调函数 tagstring 事件的tag prioritynumber 优先级 默认0 optionsObjectEventOptions 事件参数 - Overrides:
Example
let object = new THING.BaseObject(); let mark = 0; object.on('click', function(ev){ mark = 1; }, 'MyClick'); object.trigger('click'); // @expect(mark == 1) let mark2 = 0; object.on('click', '.Box', function(ev){ mark2 = 1; }, 'MyClick'); // @expect(mark2 == 0) -
once(type, condition, callback, tag, priority, options)
-
注册一次性的事件,此事件响应只会触发一次,触发后会被自动注销
Parameters:
Name Type Description typestring 事件类型 conditionstring 注册事件前先进行查询,对符合条件的对象进行注册 callbackEventCallback 事件回调函数 tagstring 事件的tag prioritynumber 优先级 默认0 optionsObjectEventOptions 事件参数 - Overrides:
Example
let object = new THING.BaseObject(); let markOnce = 0; object.once('testOnce', function(ev) { markOnce = 1; }); object.trigger('testOnce'); // @expect(markOnce == 1); markOnce = 0; object.trigger('testOnce'); // @expect(markOnce == 0); -
pauseEvent(type, condition, tag)
-
暂停事件
Parameters:
Name Type Description typestring 事件类型 conditionstring 注册事件的条件 tagstring 事件的tag - Overrides:
Example
let object = new THING.BaseObject(); let markPause = 0; object.on('testPause', function(ev) { markPause = 1; }); object.trigger('testPause'); // @expect(markPause == 1); markPause = 0; object.pauseEvent('testPause'); object.trigger('testPause'); // @expect(markPause == 0); app.on('test', ".Box", (e) => { console.log(e.object) }, 'MyTag'); app.pauseEvent('test', '.Box', 'MyTag'); -
pauseFading()
-
暂停淡入淡出动作。
- Overrides:
Example
object.pauseFading(); -
pauseFlying()
-
暂停飞行
- Overrides:
Example
object.pauseFlying(); -
pauseMoving()
-
暂停移动
- Overrides:
Example
object.pauseMoving(); -
pauseRotating()
-
暂停旋转
- Overrides:
Example
object.pauseRotating(); -
pauseScaling() → {boolean}
-
暂停缩放动画
Returns:
boolean - 是否暂停成功- Overrides:
Example
object.pauseScaling(); -
pauseUVTransform(slotType) → {boolean}
-
暂停UV变化
Parameters:
Name Type Description slotTypeImageSlotType 指定纹理类型 Returns:
boolean - 是否暂停成功- Overrides:
Example
object.pauseUVTransform(THING.ImageSlotType.Map); -
promoteNode(name, parent, cls) → {THING.Object3D}
-
提升渲染节点(uNode)作为Object3D对象
Parameters:
Name Type Description namestring 节点名称 parentTHING.Object3D 父对象,如果为null,则表示使用当前对象作为父对象 cls* 类 Returns:
THING.Object3D - 提升后的对象- Overrides:
Example
// Promote all sub nodes var nodeNames = entity.body.nodeNames; nodeNames.forEach(name => { entity.promoteNode(name); }); -
query(condition) → {THING.Selector}
-
根据条件查询孩子 返回所有满足条件的对象集合
Parameters:
Name Type Description conditionObjectQueryOptions | string 查询条件 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child= new THING.BaseObject({parent: object}); child.userData = {power: 1000}; let children = object.children.query('[userData/power>100]'); let ret = children.length == 1; // @expect(ret == true) -
queryAll(condition) → {THING.Selector}
-
根据条件查询孩子 返回所有满足条件的对象集合(忽略 queryable 属性)
Parameters:
Name Type Description conditionObjectQueryOptions | string 查询条件 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child= new THING.BaseObject({parent: object}); child.userData = {power: 1000}; let children = object.children.queryAll('[userData/power>100]'); let ret = children.length == 1; // @expect(ret == true) -
queryByDTType(condition, options) → {THING.Selector}
-
根据孪生体类型查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.BaseObject({parent: object}); child1.dtType = 'Equipment'; let child2= new THING.BaseObject({parent: object}); let result = object.queryByDTType('Equipment'); let ret = result[0].dtType == 'Equipment'; //@expect(ret == true) -
queryById(condition, options) → {THING.Selector}
-
根据id查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.BaseObject({parent: object}); child1.id = '10000'; let child2= new THING.BaseObject({parent: object}); let result = object.queryById('10000'); let ret = result[0].id == '10000'; //@expect(ret == true) -
queryByName(condition, options) → {THING.Selector}
-
根据名称查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 主要包括是否递归查询和是否包含自身 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child= new THING.BaseObject({parent: object, name: 'liming'}); let result = object.queryByName('liming'); let ret = result[0].name == 'liming'; // @expect(ret == true) -
queryByRegExp(condition, options) → {THING.Selector}
-
根据正则表达式查询孩子
Parameters:
Name Type Description conditionstring 正则表达式 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.BaseObject({parent: object, name: 'car1'}); let child2= new THING.BaseObject({parent: object, name: 'car2'}); let result = object.queryByRegExp(/car/); let ret = result.length == 2; //@expect(ret == true) -
queryByTags(condition, options) → {THING.Selector}
-
根据tag查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.Object3D({parent: object, name: 'car1'}); child1.tags.add('testCar'); let child2= new THING.BaseObject({parent: object, name: 'car2'}); let result = object.queryByTags('testCar'); let ret = result.length == 1; //@expect(ret == true) -
queryByType(condition, options) → {THING.Selector}
-
根据类型查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.Box({parent: object, id: '10000'}); let child2= new THING.BaseObject({parent: object}); let result = object.queryByType('Box'); let ret = result[0].id == '10000'; //@expect(ret == true) -
queryByUUID(condition, options) → {THING.Selector}
-
根据uuid查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.BaseObject({parent: object, uuid: '1000'}); let child2= new THING.BaseObject({parent: object}); let result = object.queryByUUID('1000'); let ret = result[0].uuid == '1000'; //@expect(ret == true) -
queryByUserData(condition, options) → {THING.Selector}
-
根据userData(用户数据)查询孩子
Parameters:
Name Type Description conditionstring 查询条件 optionsObjectQueryOptions 查询参数 Returns:
THING.Selector - 查询结果- Overrides:
Example
let object = new THING.BaseObject(); let child1= new THING.Box({parent: object}); child1.userData['power'] = 100; let child2= new THING.BaseObject({parent: object}); let result = object.queryByUserData('power=100'); let ret = result[0].userData.power == 100; //@expect(ret == true) -
raycast(ray, recursiveopt) → {Array.<RaycastResult>}
-
射线检测,检测射线是否与对象相交
Parameters:
Name Type Attributes Default Description rayRaycastInfo 射线信息 recursiveboolean <optional>
true 是否对所有子对象进行检测 Returns:
Array.<RaycastResult> - 检测结果(按距离从近到远排序)- Overrides:
Example
// 示例1: 创建一个向前的射线 let results = object.raycast({ origin: [0, 0, 0], // 起点 direction: [0, 0, 1] // 向前 }); if (results.length) { let nearest = results[0]; // 获取最近的相交点 console.log('击中物体:', nearest.object); console.log('击中位置:', nearest.position); console.log('击中距离:', nearest.distance); } // 示例2: 创建一个指向目标的射线 let direction = THING.Math.normalizeVector( THING.Math.subVector(targetPos, startPos) // 目标点减起点 ); console.log('从起点:', startPos, '朝向:', direction, '进行射线检测'); let hits = object.raycast({ origin: startPos, direction: direction }); console.log('射线检测结果:', hits); -
remove(object, options) → {boolean}
-
从自己的孩子中移除BaseObject
Parameters:
Name Type Description objectTHING.BaseObject 待移除物体 optionsobject 选项 Returns:
boolean - 返回一个布尔值,表示是否移除成功- Overrides:
Example
let parent = new THING.BaseObject(); let child = new THING.BaseObject(); parent.add(child); let ret = child.isChildOf(parent); // @expect(ret == true); parent.remove(child); ret = child.isChildOf(parent); // @expect(ret == false); -
removeAllComponents()
-
移除所有组件
- Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'component1'); obj.addComponent(new THING.BaseComponent(), 'component2'); obj.removeAllComponents(); // @expect(obj.components.size == 0) -
removeComponent(name)
-
根据名称移除组件
Parameters:
Name Type Description namestring The name. 组件名称 - Overrides:
Example
let obj = new THING.BaseObject();; obj.addComponent(new THING.BaseComponent(), 'myComponent'); obj.removeComponent('myComponent'); // @expect(obj.components.size == 0) -
resumeEvent(type, condition, tag)
-
恢复事件
Parameters:
Name Type Description typestring 事件类型 conditionstring 注册事件的条件 tagstring 事件的tag - Overrides:
Example
let object = new THING.BaseObject(); let markResume = 0; object.on('testResume', function(ev) { markResume = 1; }); object.trigger('testResume'); // @expect(markResume == 1); markResume = 0; object.pauseEvent('testResume'); object.trigger('testResume'); // @expect(markResume == 0); object.resumeEvent('testResume'); object.trigger('testResume'); // @expect(markResume == 1); app.on('test', ".Box", (e) => { console.log(e.object) }, 'MyTag'); app.pauseEvent('test', '.Box', 'MyTag'); app.resumeEvent('test', '.Box', 'MyTag'); -
resumeFading()
-
恢复淡入淡出动作。
- Overrides:
Example
object.resumeFading(); -
resumeFlying()
-
恢复飞行
- Overrides:
Example
object.resumeFlying(); -
resumeMoving()
-
恢复移动
- Overrides:
Example
object.resumeMoving(); -
resumeRotating()
-
恢复旋转
- Overrides:
Example
object.resumeRotating(); -
resumeScaling() → {boolean}
-
恢复缩放动画
Returns:
boolean - 是否恢复成功- Overrides:
Example
object.resumeScaling(); -
resumeUVTransform(slotType) → {boolean}
-
恢复UV变化
Parameters:
Name Type Description slotTypeImageSlotType 指定纹理类型 Returns:
boolean - 是否恢复成功- Overrides:
Example
object.resumeUVTransform(THING.ImageSlotType.Map); -
rotate(axis, angle, lerpParam) → {boolean}
-
等同于rotateOnAxis
Parameters:
Name Type Description axisArray.<number> 在自身坐标系下的轴向信息 anglenumber 旋转角度 lerpParamLerpArgs 插值信息 Returns:
boolean - 是否旋转成功- Overrides:
Example
let box = new THING.Box(); box.rotate(THING.Utils.xAxis, 45); // @expect(THING.Math.equalsVector3([45, 0, 0], box.angles) == true); -
rotateOnAxis(axis, angle, lerpParam) → {boolean}
-
绕固定轴旋转特定角度
Parameters:
Name Type Description axisArray.<number> 在自身坐标系下的轴向信息 anglenumber 旋转角度 lerpParamLerpArgs 插值信息 Returns:
boolean - 是否旋转成功- Overrides:
Example
let box = new THING.Box(); box.rotateOnAxis(THING.Utils.xAxis, 45); //@expect(THING.Math.equalsVector3([45, 0, 0], box.angles) == true); -
rotateTo(value, param) → {boolean}
-
旋转对象
Parameters:
Name Type Description valueArray.<number> 三个轴向的旋转角度 paramLerpWithSpaceTypeArgs 插值参数 Returns:
boolean - 是否旋转成功- Overrides:
Example
object.rotateTo([0, 360, 0], { loopType: THING.LoopType.Repeat, duration: 10 * 1000 }); object.rotateTo({ to: [0, 360, 0], duration: 10 * 1000 }); -
rotateX(angle, lerpParam) → {boolean}
-
绕自身坐标系下的x轴进行旋转
Parameters:
Name Type Description anglenumber 旋转角度 lerpParamLerpArgs 插值信息 Returns:
boolean - 是否旋转成功- Overrides:
-
rotateY(angle, lerpParam) → {boolean}
-
绕自身坐标系下的y轴进行旋转
Parameters:
Name Type Description anglenumber 旋转角度 lerpParamLerpArgs 插值信息 Returns:
boolean - 是否旋转成功- Overrides:
-
rotateZ(angle, lerpParam) → {boolean}
-
绕自身坐标系下的z轴进行旋转
Parameters:
Name Type Description anglenumber 旋转角度 lerpParamLerpArgs 插值信息 Returns:
boolean - 是否旋转成功- Overrides:
-
scaleTo(value, param) → {boolean}
-
缩放动画
Parameters:
Name Type Description valueArray.<number> 要缩放到三个轴向的倍数 paramLerpWithSpaceTypeArgs 插值参数 Returns:
boolean - 是否缩放成功- Overrides:
Example
object.scaleTo(THING.Math.randomVector([1, 1, 1], [3, 3, 3]), { loopType: THING.LoopType.PingPong, duration: THING.Math.randomInt(1000, 5000) }); object.scaleTo({ to: THING.Math.randomVector([1, 1, 1], [3, 3, 3]), duration: THING.Math.randomInt(1000, 5000) }); -
selfToWorld(position, ignoreScaleopt) → {Array.<number>}
-
自身坐标转世界坐标
Parameters:
Name Type Attributes Default Description positionArray.<number> 自身坐标系下的坐标 ignoreScaleboolean <optional>
false 转换时是否忽略缩放 默认不忽略 Returns:
Array.<number> - 返回世界坐标- Overrides:
Example
let obj = new THING.Object3D({ position: [0, 15, 0] }); let worldPos = obj.selfToWorld([0, -15, 0]); // print [0, 0, 0] console.log(worldPos); -
setAttribute(key, value, separator)
-
设置属性名称为key的属性值
Parameters:
Name Type Default Description keystring 属性名称,支持嵌套,例如设置object.a.b.c=1 可以使用object.setAttribute('a/b/c',1) value* 属性值 separatorstring / 分隔符,默认是'/' - Overrides:
Example
let object = new THING.BaseObject(); object.setAttribute('userData/power', 200); let power = object.getAttribute('userData/power'); // @expect(power == 200) -
setAttributes(attributes, overwriteopt, separator)
-
设置属性
Parameters:
Name Type Attributes Default Description attributesobject 属性对象 overwriteboolean <optional>
true 是否覆盖 separatorstring / 分隔符,默认是'/' - Overrides:
Example
let object = new THING.BaseObject(); object.setAttributes({ "userData/name": 'Mr.Door', "userData/age": 18 }) let name = object.getAttribute('userData/name'); // @expect(name == 'Mr.Door') let age = object.getAttribute('userData/age'); // @expect(age == 18) -
setFrustumCulled(value, recursiveopt)
-
设置视锥剔除状态。
Parameters:
Name Type Attributes Default Description valueboolean 为真表示启用视锥剔除,否则不启用。 recursiveboolean <optional>
false 为真表示处理所有子对象。 - Overrides:
Example
object.setFrustumCulled(true, true); -
setInstancing(options) → {boolean}
-
设置/更新实例化节点选项。
Parameters:
Name Type Description optionsInstancingNodeOptions 选项。 Returns:
boolean - 是否设置成功- Overrides:
Example
// 更新实例化渲染的参数 object.setInstancing({ maxNumber: 31104, number: 31104, matrices: matrices, // 包含所有实例的变换矩阵 pickedIds: pickedIds, // 可选,包含所有实例的拾取ID colors: colors // 可选,包含所有实例的颜色 }); -
setInstancingAttribute(name, value) → {boolean}
-
设置实例化属性。
Parameters:
Name Type Description namestring 名称。 valueany 值。 Returns:
boolean - 是否设置成功Example
// 启用颜色属性 object.setInstancingAttribute('Colors', true); -
setInstancingClearOutColor(index, value) → {boolean}
-
按索引设置实例化清除颜色。
Parameters:
Name Type Description indexnumber 索引。 valueboolean 是否清除颜色。 Returns:
boolean - 是否设置成功Example
// 清除第一个实例的颜色 object.setInstancingClearOutColor(0, true); -
setInstancingColor(index, color) → {boolean}
-
按索引设置实例化颜色。
Parameters:
Name Type Description indexnumber 索引。 colorArray.<number> 颜色。 Returns:
boolean - 是否设置成功- Overrides:
Example
// 将第30个实例设置为绿色 object.setInstancingColor(30, [0, 1, 0]); // 随机将一些实例设置为红色警告色 for(let i = 0; i < warnCount; i++) { const index = Math.floor(Math.random() * 31104); object.setInstancingColor(index, [1, 0, 0]); } -
setInstancingDiffuseUVTransform(index, diffuseUVTransform) → {boolean}
-
按索引设置实例化漫反射UV变换。
Parameters:
Name Type Description indexnumber 索引。 diffuseUVTransformArray.<number> 漫反射UV变换。 Returns:
boolean - 是否设置成功Example
// 设置第一个实例的漫反射UV变换 object.setInstancingDiffuseUVTransform(0, [0, 0, 1, 1]); -
setInstancingMatrix(index, matrix) → {boolean}
-
按索引设置实例化矩阵。
Parameters:
Name Type Description indexnumber 索引。 matrixArray.<number> 矩阵。 Returns:
boolean - 是否设置成功- Overrides:
Example
// 修改第30个实例的变换矩阵,将其Y轴位置上移1个单位 const matrices = options[0].matrices[30]; object.setInstancingMatrix(30, [ 1, 0, 0, matrices[3], 0, 1, 0, matrices[7] + 1, 0, 0, 1, matrices[11], 0, 0, 0, 1 ]); -
setInstancingVisible(index, visible) → {boolean}
-
按索引设置实例化可见性。
Parameters:
Name Type Description indexnumber 索引。 visibleboolean 可见性。 Returns:
boolean - 是否设置成功- Overrides:
Example
// 隐藏第一个实例 object.setInstancingVisible(0, false); -
setPickable(value, recursiveopt)
-
设置可拾取状态。
Parameters:
Name Type Attributes Default Description valueboolean 可拾取状态。 recursiveboolean <optional>
false 为真表示处理所有子对象。 - Overrides:
Example
object.setPickable(true, true); -
setRenderOrder(value, recursive) → {boolean}
-
设置渲染顺序。
Parameters:
Name Type Description valuenumber 渲染顺序的值,渲染顺序从低到高。 recursiveboolean 为真表示处理所有子对象。 Returns:
boolean - 是否设置成功- Overrides:
Example
object.setRenderOrder(10); -
setStyle(value, recursiveopt)
-
整体设置样式
Parameters:
Name Type Attributes Default Description valueobject 样式对象 recursiveboolean <optional>
false 是否影响孩子样式 - Overrides:
Example
let box1 = new THING.Box(); let box2 = new THING.Box({parent: box1}); box1.setStyle({color: 'red'}); // @expect(box1.style.color[0] == 1); // @expect(box1.style.color[1] == 0); // @expect(box1.style.color[2] == 0); // @expect(box2.style.color == null); -
setVisible(value, recursiveopt)
-
设置visible的状态
Parameters:
Name Type Attributes Default Description valueboolean 是否显示 recursiveboolean | ProcessObjectCallback <optional>
false 是否同时影响它的孩子 - Overrides:
Example
// Hide object self only, exclude all children object.setVisible(false, false); // Hide object(s) but exclude children what name equals to 'stone' object.setVisible(false, (obj) => { if (obj.name == 'stone') { return false; } }); -
stopFading()
-
停止淡入淡出动作。
- Overrides:
Example
object.stopFading(); -
stopFlying()
-
停止飞行
- Overrides:
Example
object.stopFlying(); -
stopMoving()
-
停止移动
- Overrides:
Example
object.stopMoving(); -
stopRotating()
-
停止旋转
- Overrides:
Example
object.stopRotating(); -
stopScaling() → {boolean}
-
停止缩放动画
Returns:
boolean - 是否停止成功- Overrides:
Example
object.stopScaling(); -
stopUVTransform(slotType) → {boolean}
-
停止UV变化 主要用于贴图动画
Parameters:
Name Type Description slotTypeImageSlotType 指定纹理类型 Returns:
boolean - 是否停止成功- Overrides:
Example
object.stopUVTransform(THING.ImageSlotType.Map); -
translate(offset, lerpParamopt) → {boolean}
-
沿三个轴向对物体做偏移
Parameters:
Name Type Attributes Description offsetArray.<number> 三个轴向的偏移 单位米 lerpParamLerpArgs <optional>
插值信息 Returns:
boolean - 是否平移成功- Overrides:
Example
object.translate([10, 10, 10], {time: 1000}) -
translateX(distance, lerpParamopt) → {boolean}
-
沿着自身X轴对物体做偏移
Parameters:
Name Type Attributes Description distancenumber 偏移距离 单位米 lerpParamLerpArgs <optional>
插值信息 Returns:
boolean - 是否平移成功- Overrides:
Example
object.translateX(10, {time: 1000}) -
translateY(distance, lerpParamopt) → {boolean}
-
沿着自身Y轴对物体做偏移
Parameters:
Name Type Attributes Description distancenumber 偏移距离 单位米 lerpParamLerpArgs <optional>
插值信息 Returns:
boolean - 是否平移成功- Overrides:
Example
object.translateY(10, {time: 1000}) -
translateZ(distance, lerpParamopt) → {boolean}
-
沿着自身Z轴对物体做偏移
Parameters:
Name Type Attributes Description distancenumber 偏移距离 单位米 lerpParamLerpArgs <optional>
插值信息 Returns:
boolean - 是否平移成功- Overrides:
Example
object.translateZ(10, {time: 1000}) -
traverse(callback)
-
递归遍历自己和自己的孩子 这个方法会遍历到所有的后代节点(孩子,孩子的孩子等)
Parameters:
Name Type Description callbackfunction The callback function. 执行遍历时执行的方法 - Overrides:
Example
let parent = new THING.BaseObject(); let child1 = new THING.BaseObject({parent: parent}); let child2 = new THING.BaseObject({parent: parent}); let mark = 0; parent.traverse((child) => { mark++; }); // @expect(mark == 3) -
traverseComponentByType(type, callback)
-
根据类型遍历查找组件
Parameters:
Name Type Description type* 组件类型 callbackTraverseComponentByTypeCallback 回调函数 Example
object.addComponent(new MyComponent(), 'myComponent'); object.traverseComponentByType(MyComponent, (component, name) => { console.log(component, name); }); -
trigger(type, condition, data, tagName) → {*}
-
抛出事件
Parameters:
Name Type Description typestring 事件类型。 conditionstring | object 事件条件 或 事件数据。 dataobject | string 事件数据 或 事件标签。 tagNamestring 事件标签名称。 Returns:
* - 返回一个对象,包含指定类型的事件- Overrides:
Example
let object = new THING.BaseObject(); let markTrigger = {}; object.on('myEvent', function(ev) { markTrigger = ev; }); object.trigger('myEvent', { result: true }); let ret = markTrigger.result; // @expect(ret == true); new THING.Box(); app.on('test', (e) => { console.log('无条件+tag1', e) }, 'MyTag1'); app.on('test', (e) => { console.log('无条件+tag2', e) }, 'MyTag2'); app.on('test', ".Box", (e) => { console.log('条件+tag1', e) }, 'MyTag1'); app.on('test', ".Box", (e) => { console.log('条件+tag2', e) }, 'MyTag2'); // 事件类型 + 事件条件,触发事件。 app.trigger('test', '.Box'); // 事件类型 + 事件数据,触发事件 app.trigger('test', { result: true }); // 事件类型 + 事件条件 + 事件标签,触发事件 app.trigger('test', '.Box', 'MyTag2'); // 事件类型 + 事件条件 + 事件参数,触发事件 app.trigger('test', '.Box', { result: true }); // 事件类型 + 事件条件 + 事件数据 + 事件标签,触发事件 app.trigger('test', '.Box', { result: true },'MyTag2'); // 注意事项: // 1. 事件标签不能单独使用,否则事件标签和事件条件无法区分。 app.trigger('test', null, 'MyTag2'); // 2. 事件数据兼容了数组的情况,如果传了数组将无法从参数中获取object。 app.trigger('test', '.Box', [{ result: 'r1' },{ result: 'r2' }], 'MyTag2') -
unbindSubNode()
-
解绑子节点。
- Overrides:
Example
let box = new THING.Box(); box.bindSubNode(car, 'chair'); box.unbindSubNode(); -
unloadResource(recursiveopt) → {Promise.<any>}
-
卸载资源 返回一个Promise对象
Parameters:
Name Type Attributes Default Description recursiveboolean <optional>
true 是否卸载所有孩子的资源 Returns:
Promise.<any> - 返回一个Promise对象- Overrides:
Example
// 等待物体卸载资源完成 await object.unloadResource(); -
uvTransformTo(slotType, value) → {boolean}
-
开始UV变化
Parameters:
Name Type Description slotTypeImageSlotType 指定纹理类型 (diffuseMap,alphaMap,emissiveMap等) valueLerpArgs 插值参数 参数中需指定UV对象中要变化哪个属性包含以下四种 {number[]} offset,{number[]} repeat,{number[]} center(number[]),{number} rotation Returns:
boolean - 是否开始成功- Overrides:
Example
// Lerp UV offset from [0, 0] to [-1, 0] in 2 seconds by repeat mode object.uvTransformTo(THING.ImageSlotType.Map, { from: { offset: [0, 0] }, to: { offset: [-1, 0] }, duration: 2000, loopType: THING.LoopType.Repeat, times: 3 }); -
waitForComplete() → {Promise.<any>}
-
等待物体资源加载完成 返回一个Promise对象
Returns:
Promise.<any> - 返回一个Promise对象- Overrides:
Example
// 等待物体资源加载完成 await object.waitForComplete(); app.camera.fit(object); -
worldToLocal(position, ignoreScaleopt) → {Array.<number>}
-
世界坐标转为相对于父物体的坐标
Parameters:
Name Type Attributes Default Description positionArray.<number> 世界坐标 ignoreScaleboolean <optional>
false 转换时是否忽略缩放 默认不忽略 Returns:
Array.<number> - 返回相对于父物体的坐标- Overrides:
Example
let parentObj = new THING.Object3D({ position: [0, 5, 0] }); let childObj = new THING.Object3D({ localPosition: [0, 10, 0], parent: parentObj }); let localPosition = childObj.worldToLocal([0, 5, 0]); // print [0, 0, 0] console.log(localPosition); -
worldToSelf(position, ignoreScaleopt) → {Array.<number>}
-
世界坐标转自身坐标
Parameters:
Name Type Attributes Default Description positionArray.<number> 世界坐标 ignoreScaleboolean <optional>
false 转换时是否忽略缩放 默认不忽略 Returns:
Array.<number>- Overrides:
Example
let worldPos = [5, 10, 0]; let obj = new THING.Object3D({position: worldPos}); let selfPos = obj.worldToSelf(worldPos); // print [0, 0, 0] console.log(selfPos);