首页 > 代码库 > three.js 源码注释(二十二)Core/Object3D.js

three.js 源码注释(二十二)Core/Object3D.js

商域无疆 (http://blog.csdn.net/omni360/)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:商域无疆 -  本博客专注于 敏捷开发及移动和物联设备研究:数据可视化、GOLANG、Html5、WEBGL、THREE.JS否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


俺也是刚开始学,好多地儿肯定不对还请见谅.

以下代码是THREE.JS 源码文件中Core/Object3D.js文件的注释.

更多更新在 : https://github.com/omni360/three.js.sourcecode


/**
 * @author mrdoob / http://mrdoob.com/
 * @author mikael emtinger / http://gomo.se/
 * @author alteredq / http://alteredqualia.com/
 * @author WestLangley / http://github.com/WestLangley
 */
/*
///Object3D是场景中图形对象的基类.Object3D对象的功能函数采用定义构造的函数原型对象来实现.
*/
///<summary>Object3D</summary>
THREE.Object3D = function () {

/****************************************
****下面是Object3D对象的属性定义
****************************************/

	this.id = THREE.Object3DIdCount ++;		//Object3D对象id属性.
	this.uuid = THREE.Math.generateUUID();	//调用THREE.Math.generateUUID()方法,Object3D对象uuid(通用唯一识别码)属性,

	this.name = '';		//Object3D对象name属性,可以为当前对象定义一个名称,初始化为''

	this.parent = undefined;		//Object3D对象parent属性,初始化为undefined.
	this.children = [];			//Object3D对象children属性,初始化为[].

	this.up = THREE.Object3D.DefaultUp.clone();	////Object3D对象up属性,当前对象的上方,初始化为THREE.Vector3( 0, 1, 0 )	

	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 );

	rotation.onChange( function () {
		quaternion.setFromEuler( rotation, false );	//给对象的rotation属性绑定setFromEuler()方法,当rotation属性值更改,调用setFromEuler()方法
	} );

	quaternion.onChange( function () {
		rotation.setFromQuaternion( quaternion, undefined, false );		//给对象的quaternion属性绑定setFromQuaternion()方法,当rotation属性值更改,调用setFromEuler()方法
	} );

	Object.defineProperties( this, {
		position: {					//Object3D对象position属性
			enumerable: true,
			value: position
		},
		rotation: {					//Object3D对象rotation属性,以弧度为单位
			enumerable: true,
			value: rotation
		},
		quaternion: {					//Object3D对象quaternion属性,当useQuaternion属性为true,可用.
			enumerable: true,
			value: quaternion
		},
		scale: {					//Object3D对象scale属性
			enumerable: true,
			value: scale
		},
	} );

	this.renderDepth = null;		//Object3D对象renderDepth属性,初始化为null,如果设置了值将会覆盖渲染深度.

	this.rotationAutoUpdate = true;		//Object3D对象rotationAutoUpdate属性,初始化为true,表示每帧都会重新计算.

	this.matrix = new THREE.Matrix4();		//Object3D对象matrix属性,变换矩阵
	this.matrixWorld = new THREE.Matrix4();		//Object3D对象matrixWorld属性,如果当前对象是子对象,matrixWorld属性为上一级对象的变换矩阵,否则是自己的变换矩阵.

	this.matrixAutoUpdate = true;		//Object3D对象matrixAutoUpdate属性,初始化为true,表示每帧都会重新计算缩放,位置,旋转或四元数矩阵.matrixWorld属性也会重新计算
	this.matrixWorldNeedsUpdate = false;		//Object3D对象matrixWorldNeedsUpdate属性,初始化为false

	this.visible = true;		//Object3D对象visible属性,表示当前对象场景中是否可见,初始化为trure

	this.castShadow = false;		//Object3D对象castShadow属性,初始化为false,表示不产生阴影
	this.receiveShadow = false;		//Object3D对象receiveShadow属性,初始化为false,表示材质不接受烘焙阴影

	this.frustumCulled = true;		//Object3D对象frustumCulled属性,初始化为true

	this.userData = http://www.mamicode.com/{};		//Object3D对象userData属性,初始化为{},用户自定义的其它属性,这里的数值不会被clone>

商域无疆 (http://blog.csdn.net/omni360/)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:商域无疆 -  本博客专注于 敏捷开发及移动和物联设备研究:数据可视化、GOLANG、Html5、WEBGL、THREE.JS否则,出自本博客的文章拒绝转载或再转载,谢谢合作。


以下代码是THREE.JS 源码文件中Core/Object3D.js文件的注释.

更多更新在 : https://github.com/omni360/three.js.sourcecode

three.js 源码注释(二十二)Core/Object3D.js