Class: Node

Node

new Node(params)

节点,3D场景中的元素,是大部分类的基类

Name Type Description
params object optional

初始化参数,所有params都会复制到实例上

Example
const node = new Hilo3d.Node({
    name:'test',
    x:100,
    rotationX:30,
    onUpdate(){
        this.rotationY ++;
    }
});
node.scaleX = 0.3;
stage.addChild(node);

Mixes In

Members Show Inherited

Name Type Default Description
isNode boolean true
className string Node
name string

Node 的名字,可以通过 getChildByName 查找

anim Animation null

动画

animationId String ''

animation 查找 id

jointName String ''

骨骼名称

autoUpdateWorldMatrix boolean true

是否自动更新世界矩阵

autoUpdateChildWorldMatrix boolean true

是否自动更新子元素世界矩阵

parent Node null

父节点

needCallChildUpdate boolean true

每次更新的时候是否调用子节点的 onUpdate 方法

visible boolean true

节点是否显示

pointerEnabled Boolean true

可视对象是否接受交互事件。默认为接受交互事件,即true。

pointerChildren Boolean true

子元素是否接受交互事件。

useHandCursor Boolean false

是否用鼠标指针

userData any null

用户数据

onUpdate function null

update 回调

onlySyncQuaternion Boolean false

只同步四元数,不同步欧拉角

id string
up Vector3

元素的up向量

children Array.<Node>

元素直接点数组

worldMatrix Matrix4

元素的世界矩阵

matrix Matrix4Notifier

元素的矩阵

position Vector3Notifier

位置

x number

x轴坐标

y number

y轴坐标

z number

z轴坐标

scale Vector3Notifier

缩放

scaleX number

缩放比例x

scaleY number

缩放比例y

scaleZ number

缩放比例z

pivot Vector3Notifier

中心点

pivotX Number

中心点x

pivotY Number

中心点y

pivotZ Number

中心点z

rotation EulerNotifier

欧拉角

rotationX number

旋转角度 x, 角度制

rotationY number

旋转角度 y, 角度制

rotationZ number

旋转角度 z, 角度制

quaternion Quaternion

四元数角度

matrixVersion Number 0

矩阵 version,每次改变会加一

worldMatrixVersion Number 0

世界矩阵 version,每次改变会加一

staticNode.TRAVERSE_STOP_NONEnumber

traverse callback 返回值,执行后不暂停 traverse

staticNode.TRAVERSE_STOP_CHILDRENnumber

traverse callback 返回值,执行后暂停子元素 traverse

staticNode.TRAVERSE_STOP_ALLnumber

traverse callback 返回值,执行后暂停所有 traverse

Methods Show Inherited

clone(isChild){Node}

Name Type Default Description
isChild boolean false optional

是否子节点,子节点不会处理动画及骨骼Mesh,即如果有动画将共享

Returns:
Type Description
Node 返回clone的Node

setAnim(anim){Node}

设置节点的动画,这个需要是模型的根节点

Name Type Description
anim Animation

动画实例

Returns:
Type Description
Node this

resetSkinedMeshRootNode()

重置子孙元素中 SkinedMesh 的根节点为当前元素

getChildrenNameMap(){Object}

将所以子孙元素放到一个对象中,对象key为元素的name,value为该元素

Returns:
Type Description
Object 返回获取的对象

addChild(child){Node}

添加一个子元素

Name Type Description
child Node

需要添加的子元素

Returns:
Type Description
Node this

removeChild(child){Node}

移除指定的子元素

Name Type Description
child Node

需要移除的元素

Returns:
Type Description
Node this

addTo(parent){Node}

将当前元素添加到某个父元素的子元素中

Name Type Description
parent Node

需要添加到的父元素

Returns:
Type Description
Node this

removeFromParent(){Node}

将当前元素从其父元素中移除

Returns:
Type Description
Node this

updateMatrix(){Node}

更新本地矩阵

Returns:
Type Description
Node this

updateQuaternion(){Node}

更新四元数

Returns:
Type Description
Node this

updateTransform(){Node}

更新transform属性

Returns:
Type Description
Node this

updateMatrixWorld(force){Node}

更新世界矩阵

Name Type Default Description
force Boolean true optional

是否强制更新

Returns:
Type Description
Node this

getConcatenatedMatrix(ancestor){Matrix4}

获取当前元素相对于指定元素的矩阵

Name Type Description
ancestor Node optional

相对于的元素,需要是当前元素的祖先元素,不传表示获取世界矩阵

Returns:
Type Description
Matrix4 返回获取的矩阵

traverse(callback, onlyChild){Node}

遍历当前元素的子孙元素

Name Type Default Description
callback NodeTraverseCallback

每个元素都会调用这个函数处理

onlyChild Boolean false optional

是否只遍历子元素

Returns:
Type Description
Node this

traverseBFS(callback, onlyChild){Node}

遍历当前元素的子孙元素(广度优先)

Name Type Default Description
callback NodeTraverseCallback

每个元素都会调用这个函数处理

onlyChild Boolean false optional

是否只遍历子元素

Returns:
Type Description
Node this

getChildByFnBFS(fn){Node|null}

根据函数来获取一个子孙元素(广度优先)

Name Type Description
fn NodeGetChildByCallback

判读函数

Returns:
Type Description
Node | null 返回获取到的子孙元素

getChildByNamePath(path){Node|null}

根据 name path 来获取子孙元素

Name Type Description
path Array.<String>

名字数组, e.g., getChildByNamePath(['a', 'b', 'c'])

Returns:
Type Description
Node | null 返回获取到的子孙元素

traverseUpdate(dt){Node}

遍历调用子孙元素onUpdate方法

Name Type Description
dt Number
Returns:
Type Description
Node this

getChildByFn(fn){Node|null}

根据函数来获取一个子孙元素

Name Type Description
fn NodeGetChildByCallback

判读函数

Returns:
Type Description
Node | null 返回获取到的子孙元素

getChildrenByFn(fn){Array.<Node>}

根据函数来获取匹配的所有子孙元素

Name Type Description
fn NodeGetChildByCallback

判读函数

Returns:
Type Description
Array.<Node> 返回获取到的子孙元素

getChildByName(name){Node|null}

获取指定name的首个子孙元素

Name Type Description
name string

元素name

Returns:
Type Description
Node | null 获取的元素

getChildrenByName(name){Array.<Node>}

获取指定name的所有子孙元素

Name Type Description
name string

元素name

Returns:
Type Description
Array.<Node> 获取的元素数组

getChildById(id){Node|null}

获取指定id的子孙元素

Name Type Description
id string

元素id

Returns:
Type Description
Node | null 获取的元素

getChildrenByClassName(className){Array.<Node>}

获取指定类名的所有子孙元素

Name Type Description
className string

类名

Returns:
Type Description
Array.<Node> 获取的元素数组

getChildrenByBaseClassName(className){Array.<Node>}

获取指定基类名的所有子孙元素

Name Type Description
className string

类名

Returns:
Type Description
Array.<Node> 获取的元素数组

setScale(x, y, z){Node}

设置元素的缩放比例,如果只有一个参数三个轴等比缩放

Name Type Description
x number

X缩放比例

y number optional

Y缩放比例

z number optional

Z缩放比例

Returns:
Type Description
Node this

setPosition(x, y, z){Node}

设置元素的位置

Name Type Description
x number

X方向位置

y number

Y方向位置

z number

Z方向位置

Returns:
Type Description
Node this

setRotation(x, y, z){Node}

设置元素的旋转

Name Type Description
x number

X轴旋转角度, 角度制

y number

Y轴旋转角度, 角度制

z number

Z轴旋转角度, 角度制

Returns:
Type Description
Node this

setPivot(x, y, z){Node}

设置中心点

Name Type Description
x Number

中心点x

y Number

中心点y

z Number

中心点z

Returns:
Type Description
Node this

lookAt(node){Node}

改变元素的朝向

Name Type Description
node Node | Object | Vector3

需要朝向的元素,或者坐标

Returns:
Type Description
Node this

raycast(ray, sort, eventMode){Array.<raycastInfo>|null}

raycast

Name Type Default Description
ray Ray
sort Boolean false optional

是否按距离排序

eventMode Boolean false optional

是否事件模式

Returns:
Type Description
Array.<raycastInfo> | null

getBounds(parent, currentMatrix, bounds){Bounds}

获取元素的包围盒信息

Name Type Description
parent Node optional

元素相对于哪个祖先元素的包围盒,不传表示世界

currentMatrix Matrix4 optional

当前计算的矩阵

bounds Bounds optional

当前计算的包围盒信息

Returns:
Type Description
Bounds 返回计算的包围盒信息

destroy(renderer, destroyTextures){Node}

销毁 Node 资源

Name Type Default Description
renderer WebGLRenderer optional

stage时可以不传

destroyTextures Boolean false optional

是否销毁材质的贴图,默认不销毁

Returns:
Type Description
Node this