本文主要介绍一下如何使用Three.js框架加载本地的3D模型文件,有关于Three.js和WebGL的具体知识请参考http://www.khronos.org/webgl/
在页面中,我们利用WebGL技术来呈现3D模型。
1.首先我们创建一个div,并将其加入到页面中。
|
2.定义相机。
|
3.定义场景。
|
4.设置环境光,并将其加入场景。
1
2
|
var ambient = new THREE.AmbientLight( 0x101030 );
scene.add( ambient );
|
5.设置平行光,并将其加入场景。
1
2
3
|
var directionalLight = new THREE.DirectionalLight( 0xffeedd );
directionalLight.position. set ( 0 , 0 , 1 ).normalize();
scene.add( directionalLight );
|
6.设置材质。
1
2
3
4
5
6
7
8
9
10
|
var texture = new THREE.Texture();
var loader = new THREE.ImageLoader();
loader.addEventListener( 'load' , function ( event ) {
texture.image = event.content;
texture.needsUpdate = true ;
} );
loader.load( 'small.jpg' );
|
7.加载3D模型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var loader = new THREE.OBJLoader();
loader.addEventListener( 'load' , function ( event ) {
var object = event.content;
_object = object;
console.log(object);
for ( var i = 0 , l = object.children.length; i < l; i ++ ) {
//object.children[ i].material.map = texture;
}
object.position.y = initalYElem.value;
object.position.x = initalXElem.value;
object.position.z = initalZElem.value;
scene.add( object );
});
loader.load( path );//path为模型的路径
|
8.渲染场景。
1
2
3
|
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth , window.innerHeight);
container.appendChild( renderer.domElement );
|
模型可以为本地的,也可以为服务器上的。
如果加载的是本地模型,浏览器会报错,原因是浏览器默认不允许加载本地的文件,解决方法是:
以Chrome为例,右击Chrome图标,在目标后面添加如下命令:
--allow-file-access-from-files
即可加载本地的模型文件。