threeJs學習隨筆(一),附百度網盤下載地址

threeJS簡介

爲了真正能夠使用three.js顯示任何內容,我們需要三件事:場景相機渲染器,以便我們可以使用相機渲染場景。github地址:https://github.com/mrdoob/three.js,直接下載,會非常慢,出現下載不成功。奉上資源的百度網盤地址:https://pan.baidu.com/s/1d5miM_0qmntxVt8QdvZ8UQ ,密碼:mu1r

threeJs的幾個核心對象:

  • Scene(場景)
  • Camera(相機)
  • Light(光源)
  • Mesh(模型)
  • Renderer(渲染器)
  • Loader(加載器,用來導入模型)

three.js中常用的語法:

語法 描述
new THREE.Scene() 創建場景
new THREE.PerspectiveCamera(num,width/height) 創建相機,第一個參數是視野。表示看到的場景範圍,以度爲單位。第二個是長寬比。接下來的兩個參數表示近和遠裁剪平面,指對象從相機比的值越遠遠或近於附近將不會被渲染。
new THREE.WebGLRenderer() 創建渲染器
renderer.setSize() 設置渲染器尺寸
query.appendChild(renderer.domElement) 將<canvas>元素添加到dom元素中
new THREE.Mesh(geometry, material) 創建一個模型,第一個參數表示幾何形狀,第二個參數表示材質
scene.add() 將參數(模型、光源等對象)添加到場景中
renderer.render(scene, camera) 將場景和相機渲染到頁面中

一個完整的簡單的three.js案例:
在這裏插入圖片描述
案例代碼如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>My first three.js app</title>
</head>
<body>
    <script src="../js/three.js"></script>
    <script>
    
        init();
        box();
        animate();

        var scene,camera,renderer,cube

        function init(){
            //創建場景
            scene = new THREE.Scene();
            
            //創建相機
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
            
            //創建渲染器
            renderer = new THREE.WebGLRenderer();
            //渲染器的尺寸
            renderer.setSize(window.innerWidth, window.innerHeight);
            //將renderer(渲染器)的dom元素(renderer.domElement)添加到我們的HTML文檔中。
            //這就是渲染器用來顯示場景給我們看的<canvas>元素
            document.body.appendChild(renderer.domElement);
             //默認情況下,當我們調用scene.add()的時候,物體將會被添加到(0,0,0)座標。但將使得攝像機和立方體彼此在一起。
            //爲了防止這種情況的發生,我們只需要將攝像機稍微向外移動一些即可。
            camera.position.z = 5;
        }
        
        function box(){
             //創建一個立方體,我們需要一個BoxGeometry(立方體)對象
             var geometry = new THREE.BoxGeometry(1, 1, 1);
            //材質,來讓它有顏色
            var material = new THREE.MeshBasicMaterial({
                color: 0x00ff00
            });
            //Mesh(網格)。 網格包含一個幾何體以及作用在此幾何體上的材質
            cube = new THREE.Mesh(geometry, material);
            scene.add(cube);
        }

        //“渲染循環”(render loop)或者“動畫循環”(animate loop)
        function animate() {
            requestAnimationFrame(animate);
            cube.rotation.x += 0.01;
            cube.rotation.y += 0.01;
            renderer.render(scene, camera);
        }
    </script>
</body>
</html>

下一篇文章來實現 加載3D皮卡丘.obj模型,實現縮放、旋轉等功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章