three.js中的object3D对象

下面是object3D对象的构造方法,在该方法下我们可以清楚的看到一个object3D对象的构造过程。
接下来按源码顺序具体解释一下每个属性和对象方法:
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。
uuid是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。
name可以自己指定,默认为空。
type类型即为object3D。
children为其子对象。
THREE.Object3D.DefaultUp将此对象的up方向设置为默认的物体的up方向,同时也作为DirectionalLight、HemisphereLight和Spotlight(自顶向下创建的灯光)的默认方向。 默认设为( 0, 1, 0 )。
scope范围
position中心点的位置
rotation转动角度
quaternion四元数,这个现在我还没有搞懂
scale设置缩小或者放大倍数
onRotationChange用来更新转向
onQuaternionChange用来更新四元数
rotation.onChange转向改变就调用更新转向函数
quaternion.onChange四元数改变就调用更新四元数函数
Object.defineProperties见第一个
renderDepth渲染程度
rotationAutoUpdate设置转向自动更新
matrix这是关于矩阵的,之后再进行研究。
visible对象是否可见
castShadow光照是否有阴影
receiveShadow是否接收阴影
frustumCulled默认true,设置后在每一帧渲染时检查对象在相机的截头体(四棱台)。如果设定为真,那么在相机视界之外的会被踢出。
userDataObject 存储用户自定义数据的对象

源码如下所示:

THREE.Object3D = function () {

	Object.defineProperty( this, 'id', { value: THREE.Object3DIdCount ++ } );

	this.uuid = THREE.Math.generateUUID();

	this.name = '';
	this.type = 'Object3D';

	this.parent = undefined;
	this.children = [];

	this.up = THREE.Object3D.DefaultUp.clone();

	var scope = this;

	var position = new THREE.Vector3();
	var rotation = new THREE.Euler();
	var quaternion = new THREE.Quaternion();
	var scale = new THREE.Vector3( 1, 1, 1 );

	var onRotationChange = function () {
		quaternion.setFromEuler( rotation, false );
	};

	var onQuaternionChange = function () {
		rotation.setFromQuaternion( quaternion, undefined, false );
	};

	rotation.onChange( onRotationChange );
	quaternion.onChange( onQuaternionChange );

	Object.defineProperties( this, {
		position: {
			enumerable: true,
			value: position
		},
		rotation: {
			enumerable: true,
			value: rotation
		},
		quaternion: {
			enumerable: true,
			value: quaternion
		},
		scale: {
			enumerable: true,
			value: scale
		},
	} );

	this.renderDepth = null;

	this.rotationAutoUpdate = true;

	this.matrix = new THREE.Matrix4();
	this.matrixWorld = new THREE.Matrix4();

	this.matrixAutoUpdate = true;
	this.matrixWorldNeedsUpdate = false;

	this.visible = true;

	this.castShadow = false;
	this.receiveShadow = false;

	this.frustumCulled = true;

	this.userData = {};

};
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值