Three.js基礎探尋一


1.webGL

  一種網絡標准,定義了一些較底層的圖形接口。

2.Three.js

  一個3Djs庫,webGL開源框架中比較優秀的一個。除了webGL以外,Three.js還提供了基於Canvas、SVG標簽的渲染器。

  這是一個開源項目

3.環境

  找一個喜歡的jsIDE。調試建議使用Chrome或者Firefox。

4.下載

  傳送門

5.使用

<head>

    <script type="text/javascript" src="js/three.js"></script>

</head>

 

  webGL的渲染需要canvas,Three.js可以生成,也可以自定義canvas:

<body onload="init()">

    <canvas id="mainCanvas" width="400px" height="300px" ></canvas>

</body>

 

在js中定義一個init函數,在HTML加載后執行:

function init(){   // ...
 }

 

  Three.js程序要包括三大組建:

  場景(Scene)、相機(Camera)、渲染器(Renderer),以及你創建的物體。

6.渲染器(Renderer)

  渲染器將和Canvas元素進行綁定,接着上面的:

var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById(‘mainCanvas’) });

 

  如果想要Three.js生成Canvas元素,在HTML中就不需要定義canvas,在js中可以這樣寫:

var renderer = new THREE.WebGLRenderer(); renderer.setSize(400,300); document.getElementsByTagName(‘body’)[0].appendChild(renderer.domElement);

 

  第二行設置了Canvas的寬高。第三行將渲染器對應的Canvas元素添加到<body>中。

  下面這句可以設置背景為黑色:

renderer.setClearColor(0x000000);

 

7.場景(Scene)

  在Three.js中添加的物體都是添加到場景中的。在程序最開始的時候進行實例化,然后將物體添加到場景中即可。

var scene = new THREE.Scene();

 

8.照相機(Camera)

  webGL和Three.js使用的坐標系是右手坐標系:

 

 

  相機分正投影相機和透視投影相機。這里先定義一直透視投影的照相機,:

var camera = new THREE.PerspectiveCamera(45,4/3,1,1000);

//四個參數分別對應:視角、近處的裁面的距離、遠處的裁面的距離、實際窗口的縱橫比(后面會詳細討論)
 camera.position.set(0,0,5);//設置相機位置
 scene.add(camera);//添加到場景中。

 

9.長方體

  創建一個x,y,z方向長度分別為1、2、3的紅色長方體:

var cube = new THREE.Mesh(new THREE.CubeGeometry(1,2,3),

  new THREE.MeshBasicMaterial({       color: 0xff0000   }) ); scene.add(cube);

 

  其中,THREE.Mesh表示網格模型;THREE.CubeGeometry表示立方體盒子;MeshBasicMaterial是一種材質:對光照無感,給幾何體一種簡單的顏色或顯示線框。最后添加到場景中。

10.渲染

  在定義了場景中的物體,設置好的照相機之后,渲染器就知道如何渲染出二維的結果了。調用渲染器的渲染函數,就能使其渲染一次了。

renderer.render(scene, camera);

 

11.示例

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>3.js測試一</title>

</head>

<body onload="init()">

<canvas id="mainCanvas" width="400px" height="300px" ></canvas>

<script type="text/javascript" src="js/three.min.js"></script><!--路徑改成你的-->

        <script type="text/javascript">

            function init() { // renderer 渲染器

                var renderer = new THREE.WebGLRenderer({ canvas: document.getElementById('mainCanvas')  //綁定canvas }); renderer.setClearColor(0x000000); // black 

                

                // scene 場景

                var scene = new THREE.Scene();  //實例化場景 // camera 照相機

                var camera = new THREE.PerspectiveCamera(45, 4 / 3, 1, 1000);  //透視投影相機參數設置 camera.position.set(0, 0, 5);  //相機位置設置 scene.add(camera);  //添加到場景 // a cube in the scene 創建的物體

                var cube = new THREE.Mesh(new THREE.CubeGeometry(1, 2, 3),  //創建網格,參數一:幾何體(立方體) new THREE.MeshBasicMaterial({  //參數二:材質(網格基礎材質)
color:
0xff0000  //設置顏色 }) ); scene.add(cube);  //添加到場景 // render 渲染 renderer.render(scene, camera); } </script> </body> </html>

 

  渲染的效果是:

 

  下一篇: Three.js基礎探尋二

 

  整理自張雯莉《Three.js入門指南》

  其他參考:WebGL中文網

 


免責聲明!

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



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