美文网首页
学习threejs(三)—— 创建线

学习threejs(三)—— 创建线

作者: 一沭丶 | 来源:发表于2019-01-04 10:54 被阅读21次

创建线

<!DOCTYPE html>
<html>
    <head>
        <meta charset=utf-8>
        <title>My first three.js app</title>
        <style>
            * { margin: 0; padding: 0; }
            canvas { width: 100%; height: 100% }
        </style>
    </head>
    <body>
        <script src="three.js"></script>
        <script>
            var scene = new THREE.Scene();
            // 相机 正交相机(OrthographicCamera)、透视相机(PerspectiveCamera)、全景相机(CubeCamera)和3D相机(StereoCamera)。
            var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 600 );

            // 渲染器
            var renderer = new THREE.WebGLRenderer();

            renderer.setSize( window.innerWidth, window.innerHeight );

            document.body.appendChild( renderer.domElement );

            // 实线
            function createLine(){
                let geometry = new THREE.Geometry();

                const p1 = new THREE.Vector3(-10,0,0);
                const p2 = new THREE.Vector3(0,10,0);
                const p3 = new THREE.Vector3(10,0,0);

                geometry.vertices.push(p1, p2, p3);

                //注意这里使用的是LineBasicMaterial 实线
                //https://threejs.org/docs/index.html#api/zh/materials/LineBasicMaterial
                let material = new THREE.LineBasicMaterial({
                    color:0xff0000
                }); 

                let line = new THREE.Line(geometry,material);

                return line;
            }

            // 虚线
            function createDashedLine(){
                let geometry = new THREE.Geometry();
                const p1 = new THREE.Vector3(15,15,0);
                const p2 = new THREE.Vector3(-15,2,0);

                geometry.vertices.push(p1, p2);

                let material = new THREE.LineDashedMaterial({
                    color:0xff0000,
                    dashSize:3, // 虚线的大小,是指破折号和间隙之和。默认值为 3。
                    gapSize:1, // 间隙的大小,默认值为 1。
                    linewidth:1, // 控制线宽。默认值为 1。
                    scale: 1 // 线条中虚线部分的占比。默认值为 1。
                });
                
                // 这里可以换了Objects,添加一个顶点看看效果,即 Line 和 LineLoop
                let line = new THREE.LineSegments(geometry,material);

                //计算LineDashedMaterial所需的距离的值的数组。对于几何体中的每一个顶点,这个方法计算出了当前点到线的起始点的累积长度。
                line.computeLineDistances();

                return line;
            }

            var line = createLine();
            // var line = createDashedLine();


            scene.add( line );
            camera.position.z = 100;

            function render() {
                renderer.render( scene, camera );
            }
            render();

        </script>
    </body>
</html>

效果:

createLine() createDashedLine()

替换连线的 ObjectsLine

Line

效果:

Line

替换连线的 ObjectsLineLoop

LineLoop LineLoop

相关文章

网友评论

      本文标题:学习threejs(三)—— 创建线

      本文链接:https://www.haomeiwen.com/subject/mwlhrqtx.html