2021SC@SDUSC ClayGL Camera类分析(二)
接上文
Camera 类成员
1. uid
获取用户id
名称 | 类型 |
---|---|
uid | number |
获取uid;
初始化uid;
代码如下:
var Base = function () {
this.__uid__ = util.genGUID();
};
Base.__initializers__ = [
function (opts) {
util.extend(this, opts);
}
];
2. autoUpdateLocalTransform
自动更新局部变换
名称 | 类型 |
---|---|
autoUpdateLocalTransform | boolean |
对来自SRT(缩放、旋转、平移,此处的位置)进行局部变换更新
如果位置、旋转、比例_dirty标记全部为假,则不会更新局部变换,并将更新世界变换设置为True
updateLocalTransform: function () {
var position = this.position;
var rotation = this.rotation;
var scale = this.scale;
if (this.transformNeedsUpdate()) {
var m = this.localTransform.array;
// Transform order, scale->rotation->position
mat4.fromRotationTranslation(m, rotation.array, position.array);
mat4.scale(m, m, scale.array);
rotation._dirty = false;
scale._dirty = false;
position._dirty = false;
this._needsUpdateWorldTransform = true;
}
},
3.frustum
名称 | 类型 |
---|---|
frustum | clay.Frustum |
视角空间里的视锥体
六个平面包围视锥体:
this.planes = [];
for (var i = 0; i < 6; i++) {
this.planes.push(new Plane());
}
视锥体的边界框:
this.boundingBox = new BoundingBox();
视锥体的八个顶点
this.vertices = [];
for (var i = 0; i < 8; i++) {
this.vertices[i] = vec3.fromValues(0, 0, 0);
}
从投影矩阵设置视锥体
setFromProjection: function(projectionMatrix) {
var planes = this