threejs學習筆記02--畫線


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        html, body {
            margin: 0;
            padding: 0;
        }
        div#canvas-frame {
            border: none;
            cursor: pointer;
            width: 100%;
            height: 600px;
            background-color: #EEEEEE;
        }
    </style>
</head>
<body>
<div id="canvas-frame"></div>

<script src="js/three.js"></script>
<script>
    //定義一些需要的變量
    var renderer, camera, scene, light, object;
    var width, height;
    function initThree(){
        width = document.getElementById('canvas-frame').clientWidth;
        height=document.getElementById('canvas-frame').clientHeight;
        renderer= new THREE.WebGLRenderer({
            antialias:true
        });
        renderer.setSize(width,height);
        document.getElementById('canvas-frame').appendChild(renderer.domElement);
        renderer.setClearColor(0xFFFFFF, 1.0);
    }
    //定義相機
    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
        });
    }

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

    function initLight(){
        light = new THREE.DirectionalLight(0xFF0000,1.0,0);
        light.position.set(100,100,200);
        scene.add(light);
    }

    var cube;
    function initObject(){
        //生命一個幾何體
        var geometry = new THREE.Geometry();
        //定義一種線條的材質,使用THREE.LineBasicMaterial類型來定義,它接受一個集合作為參數
        /*
        * LineBasicMaterial( parameters )
         Parameters是一個定義材質外觀的對象,它包含多個屬性來定義材質,這些屬性是:
         Color:線條的顏色,用16進制來表示,默認的顏色是白色。
         Linewidth:線條的寬度,默認時候1個單位寬度。
         Linecap:線條兩端的外觀,默認是圓角端點,當線條較粗的時候才看得出效果,如果線條很細,那么你幾乎看不出效果了。
         Linejoin:兩個線條的連接點處的外觀,默認是“round”,表示圓角。
         VertexColors:定義線條材質是否使用頂點顏色,這是一個boolean值。意思是,線條各部分的顏色會根據頂點的顏色來進行插值。(如果關於插值不是很明白,可以QQ問我,QQ在前言中你一定能夠找到,嘿嘿,雖然沒有明確寫出)。
         Fog:定義材質的顏色是否受全局霧效的影響。
         好了,介紹完這些參數,你可以試一試了,在課后,我們會展示不同同學的傑出作品。下面,接着上面的講,我們這里使用了頂點顏色vertexColors: THREE.VertexColors,就是線條的顏色會根據頂點來計算。
         var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
        * */
        var material = new THREE.LineBasicMaterial({vertexColors:true});
        var color1 = new THREE.Color(0x444444),color2=new THREE.Color(0xFF0000);

        //線的材質可以由2店的顏色決定
        //定義兩種顏色,分別表示線條兩個端點的顏色
        var p1 = new THREE.Vector3(-100,0,100);
        var p2 = new THREE.Vector3(100,0,-100);
        //幾何體里面有一個vertices變量,可以用來存放點。
        // 定義2個頂點的位置,並放到geometry中
        geometry.vertices.push(p1);
        geometry.vertices.push(p2);
        //為4中定義的2個頂點,設置不同的顏色
        geometry.colors.push(color1,color2);
        //定義一條線
        //定義線條,使用THREE.Line類
        //第一個參數是幾何體geometry,里面包含了2個頂點和頂點的顏色。第二個參數是線條的材質,或者是線條的屬性,表示線條以哪種方式取色。第三個參數是一組點的連接方式
        var line = new THREE.Line(geometry,material,THREE.LinePieces);
        //把線加到場景里
        scene.add(line);
    }

    function threeStart() {
        initThree();
        initCamera();
        initScene();
        initLight();
        initObject();
        renderer.clear();
        renderer.render(scene, camera);
    }

    window.onload=threeStart();
</script>
</body>
</html>

  


免責聲明!

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



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