日期:2014-05-16 浏览次数:20496 次
关于Three.js
?
three.js的代码托管在github上面,https://github.com/mrdoob/three.js/
我们可以用git来获取代码,闲麻烦的话也可以直接下载zip文件。
拿到代码后先看下three.js的目录结构
|-build
???? |-custom
???? |-Three.js
|-examples
|-gui
|-src
???? |-cameras
???? |-core
???? |-extras
???? |-lights
???? |-materials
???? |-objects
???? |-renderers
???? |-scenes
???? |-textures
???? |-Three.js
|-utils
???? |-compiler
???? |-exporters
???? |-build.bat
???? |-build.sh
???? |-build.xml
???? |-build_all.bat
???? |-build_all.sh
?
?
?
在线地址:http://216.108.229.22/examples/webgl_trackballcamera_earth.html
examples目录下也有该示例
?
在这个example里我们能够看到:
?
这里不会逐行逐行代码的分析,而是对于每个特性挑出代码来讲。
?
一个three.js应用的基本结构。
不管用什么写3d应用,c++的ogre,flash的pv3d,js的o3d,又或者使用场景编辑器,一个3d场景所需要的最基本的东西都是一样的,一个主要的camera,一个主要的scene。
当然一般的场景里都会有物体,有灯光,每个物体都有材质。我们在three.js中可以一个个手动创建,也可以直接加载一个记录场景数据的json文件。
?
创建一个scene
scene = new THREE.Scene();
创建一个摄像机
camera = new THREE.PerspectiveCamera( 25, width / height, 50, 1e7 );
camera.position.z = radius * 7;
这段代码确定了一个摄像机的视锥,四个参数分别是摄像机的视锥角度,视口的长宽比,摄像机的近切面(Front Clipping Plane)和远切面(Back Clipping Plane),为什么要四个参数?其实摄像机本质上就是一个投影矩阵,而建立一个透视投影的矩阵(还有正交投影)需要这四个参数,形象点可以看下图