zoukankan      html  css  js  c++  java
  • 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;
                 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>
    

      

    学习是对自己负责,自己是职业发展的负责人!
  • 相关阅读:
    day02-html+css
    day01-html+css
    ES6-03 symbol数据类型,代理,遍历的使用
    ES6-02 新增方法及函数新增
    Java创建对象基础与修饰符整理
    python dataframe基于另一列提取对应列值
    Python .seq文件批量转.fas 并根据文件夹与文件名重命名
    Python 批量修改文件夹名称 (os.rename)
    Python 批量修改文件夹名称 (os.rename)
    R mgcv包参数 gam参数
  • 原文地址:https://www.cnblogs.com/Webyangbowen/p/8044199.html
Copyright © 2011-2022 走看看