2021SC@SDUSC ClayGL Camera类分析(三)
接上文
获取节点的包围盒:
参数 {Function} [filter]
{clay.BoundingBox} [out]
返回值 {clay.BoundingBox}
// TODO Skinning
getBoundingBox: (function () {
function defaultFilter (el) {
return !el.invisible && el.geometry;
}
var tmpBBox = new BoundingBox();
var tmpMat4 = new Matrix4();
var invWorldTransform = new Matrix4();
return function (filter, out) {
out = out || new BoundingBox();
filter = filter || defaultFilter;
if (this._parent) {
Matrix4.invert(invWorldTransform, this._parent.worldTransform);
}
else {
Matrix4.identity(invWorldTransform);
}
this.traverse(function (mesh) {
if (mesh.geometry && mesh.geometry.boundingBox) {
tmpBBox.copy(mesh.geometry.boundingBox);
Matrix4.multiply(tmpMat4, invWorldTransform, mesh.worldTransform);
tmpBBox.applyTransform(tmpMat4);
out.union(tmpBBox);
}
}, this, defaultFilter);
return out;
};
})(),
节点及其子节点不可见
类型:boolean(布尔)
invisible: false,
相机投影矩阵的逆矩阵
类型: clay.Matrix4(4维矩阵)
invProjectionMatrix: new Matrix4(),
相对于其父节点的仿射变换矩阵,与位置、旋转和缩放相结合,局部变换初始值为 null。
类型: clay.Matrix4(4维矩阵)
如果每帧本地变换是从 SRT 更新的(缩放、旋转、平移,位于此处的位置),则自动更新局部变换为True
localTransform: null,
autoUpdateLocalTransform: true,
场景节点名称
类型:字符串
name: '',
相对于其父节点node. aka的位置变换,初始值为 NULL。
类型:clay.Vector3(3维向量)
position: null,
相机投影矩阵
类型:clay.Matrix4(4维矩阵)
projectionMatrix: new Matrix4(),
相对于其父节点的旋转。由四元数表示,初始值为 NULL。
类型:clay.Quaternion(四元数)
rotation: null,