1. 程式人生 > >three.js 畫網格

three.js 畫網格

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="UTF-8">
    <script src="three.js-master/build/three.js"></script>
    <style type="text/css">
        div#canvas-frame {
            border: none;
            cursor: pointer;
            width: 100%;
            height: 600px;
            background-color: #EEEEEE;
        }
    </style>
    <script>
        var renderer;
        function initThree() {
            width = document.getElementById('canvas-frame').clientWidth;    //獲得標籤為canvas-frame寬度
            height = document.getElementById('canvas-frame').clientHeight;  //獲得標籤為canvas-frame高度
            renderer = new THREE.WebGLRenderer({antialias : true });          //建立一個渲染器預設為false
            renderer.setSize(width, height);                                    //設定渲染器大小
            document.getElementById('canvas-frame').appendChild(renderer.domElement);//將畫布新增到標籤中
            //renderer.setClearColorHex(0xFFFFFF, 1.0);//老版本中的函式
            renderer.setClearColor(0xFFFFFF,1.0);//設定畫布的背景顏色,就是當渲染時,渲染的背景顏色是什麼
        }

        var camera;
        function initCamera() {
            camera = new THREE.PerspectiveCamera(45, width / height, 1, 10000);//建立一個透視相機
            camera.position.x = 0;
            camera.position.y = 1000;
            camera.position.z = 0;//設定相機的位置
            camera.up.x = 0;
            camera.up.y = 0;
            camera.up.z = 1;
            camera.lookAt({
                x : 0,
                y : 0,
                z : 0
            });
        }

        var scene;
        function initScene() {
            scene = new THREE.Scene();
        }

        var light;
        function initLight() {
            light = new THREE.DirectionalLight(0xFF0000, 1.0, 0);
            light.position.set(100, 100, 200);
            scene.add(light);
        }
        var cube;
        function initObject() {
            var material=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});//建立一個材質
            var color1=new THREE.Color(0x444444);
            var color2=new THREE.Color(0xFF0000);
            var geometry=new THREE.Geometry();//建立點的集合
            var p1=new THREE.Vector3(-500,0,0);
            var p2=new THREE.Vector3(500,0,0);
            geometry.vertices.push(p1);
            geometry.vertices.push(p2);
            geometry.colors.push(color1,color2);
            for(var i=0;i<=20;i++)
            {
                var line=new THREE.Line(geometry,material,THREE.LinePieces);
                line.position.z=(i*50)-500;
                scene.add(line);

                line=new THREE.Line(geometry,material,THREE.LinePieces);
                line.position.x=(i*50)-500;
                line.rotation.y=(90 * Math.PI) / 180;
                scene.add(line);
            }
        }
        function threeStart() {
            initThree();
            initCamera();
            initScene();
            initLight();
            initObject();
            renderer.clear();
            renderer.render(scene, camera);
        }
    </script>
</head>
<body onload="threeStart();">
<div id="canvas-frame"></div>
</body>
</html>