最近项目需要折腾three.js,有关three.js几点说明
1.作用 threejs适合创建简单的模型视图
2.对于复杂的模型图(如:室内模型图)需要美术3D制作,前端导成特定格式文件(如*.mtl/*.obj 格式文件 ),
之后利用threejs插件MTLLoader.js/OBJLoader.js导入数据即可
基础案例 https://github.com/AragornZJF/ThreeExample.js Chapter7.3.2
或者游戏案例 http://www.w3cmark.com/2016/threejs-mark-02.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <title>材质</title>
6 <style>
7 #canvas-frame {
8 width: 100%;
9 height: 600px;
10 }
11 </style>
12 </head>
13 <body onload="threeStart()">
14 <div id="canvas-frame" ></div>
15 </body>
16 <script type="text/javascript" src="js/three.js"></script>
17 <script type="text/javascript">
18
19 var renderer, //渲染器
20 width = document.getElementById('canvas-frame').clientWidth, //画布宽
21 height = document.getElementById('canvas-frame').clientHeight; //画布高
22 //初始化渲染器
23 function initThree(){
24 renderer = new THREE.WebGLRenderer({
25 antialias : true
26 //canvas: document.getElementById('canvas-frame')
27 });
28 renderer.setSize(width, height);
29 renderer.setClearColor(0xFFFFFF, 1.0);
30 document.getElementById('canvas-frame').appendChild(renderer.domElement);
31 renderer.setClearColor(0xFFFFFF, 1.0);
32 }
33 //初始化场景
34 var scene;
35 function initScene(){
36 scene = new THREE.Scene();
37 }
38 var camera;
39 function initCamera() { //透视相机
40 camera = new THREE.PerspectiveCamera(45, width/height , 1, 10000);
41 camera.position.x = 450;
42 camera.position.y = 100;
43 camera.position.z = 700;
44 camera.up.x = 0;
45 camera.up.y = 1; //相机朝向--相机上方为y轴
46 camera.up.z = 0;
47 camera.lookAt({ //相机的中心点
48 x : 0,
49 y : 0,
50 z : 0
51 });
52 }
53
54 function initLight(){
55 // light--这里使用环境光
56 //var light = new THREE.DirectionalLight(0xffffff); /*方向性光源*/
57 //light.position.set(600, 1000, 800);
58 var light = new THREE.AmbientLight(0xffffff); //模拟漫反射光源
59 light.position.set(600, 1000, 800); //使用Ambient Light时可以忽略方向和角度,只考虑光源的位置
60 scene.add(light);
61 }
62 function initObject(){ //初始化对象
63 //导入材质
64 var texture = THREE.ImageUtils.loadTexture('img/floor.jpg', {}, function() {
65 renderer.render(scene, camera);
66 });
67 /**
68 * 关于material材料注意点说明
69 * MeshBasicMaterial:对光照无感,给几何体一种简单的颜色或显示线框。
70 * MeshLambertMaterial:这种材质对光照有反应,用于创建暗淡的不发光的物体。
71 * MeshPhongMaterial:这种材质对光照也有反应,用于创建金属类明亮的物体。
72 */
73 var material = new THREE.MeshLambertMaterial({
74 map: texture
75 });
76
77 //创建一个立方体
78 var geometry = new THREE.BoxGeometry(600, 25, 1000);
79 //将material材料添加到几何体geometry
80 var mesh = new THREE.Mesh(geometry, material);
81 scene.add(mesh);
82 }
83 function initGrid(){ //辅助网格
84 var helper = new THREE.GridHelper( 1000, 50 );
85 helper.setColors( 0x0000ff, 0x808080 );
86 scene.add( helper );
87 }
88 function threeStart(){
89 //初始化渲染器
90 initThree();
91 //初始化场景
92 initScene();
93 //初始透视化相机
94 initCamera();
95 //初始化光源
96 initLight();
97 //模型对象
98 initObject();
99 //初始化网格辅助线
100 initGrid();
101 //渲染成像
102 renderer.render(scene, camera);
103 }
104
105 </script>
106 </html>
效果图

作者:Avenstar
出处:http://www.cnblogs.com/zjf-1992/p/6130614.html
关于作者:专注于WEB前端开发、喜欢阅读
本文版权归作者所有,转载请标明原文链接。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我不断的迭代!

支付宝

微信
来源:https://www.cnblogs.com/zjf-1992/p/6130614.html