Threejs中的材質貼圖


最近項目需要折騰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前端開發、喜歡閱讀

本文版權歸作者所有,轉載請標明原文鏈接。

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我不斷的迭代!

支付寶

微信


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM