使用three.js 画渐变的直线


Posted in Javascript onJune 05, 2016

Three.js 是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。你可以在它的主页上看到许多精彩的演示。不过,这款引擎目前还处在比较不成熟的开发阶段,其不够丰富的 API 以及匮乏的文档增加了初学者的学习难度(尤其是文档的匮乏)three.js的代码托管在github上面。

http://github.com/mrdoob/three.js/

我们来看实例吧

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <script type="text/javascript" src="js/three.js" ></script>
  <style>
    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;
      height = document.getElementById('canvas-frame').clientHeight;
      //渲染器 决定渲染的结果和应该画在页面的元素什么元素上面并且怎样绘制。
      renderer = new THREE.WebGLRenderer({
        antialias : true
      });
      renderer.setSize(width,height);
      //domElement表示渲染器中的画布,所有的渲染都画在上边
      document.getElementById('canvas-frame').appendChild(renderer.domElement);
      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(){
      //声明的几何体, 里边有个vertices参数可以用来存放点
      var geometry = new THREE.Geometry();
      //LineBasicMaterial(parameters)//basic翻译:基础//Material翻译:原料
      //Parameters:是一个定义材质外观的对象,它包含多个属性来定义材质,这些属性是//翻译:参数
      //Color:线条的颜色,用16进制来表示,默认的颜色是白色。
      //Linewidth
      //Linecap:线条两端的外观,默认是圆角端点,当线条较粗的时候才看得出效果//cap翻译:帽子
      //Linejoin:两个线条的连接点处的外观,默认是round 圆角//join翻译:加入
      //VertexColors:定义线条材质是否使用顶点元素,这是一个boolean值。意思是线条各部分的颜色根据顶点的颜色来进行插值。//vertex翻译:顶点
      //Fog:定义材质的颜色是否受全局雾效的影响。//翻译:雾  
      var material = new THREE.LineBasicMaterial({
        vertexColors: true
      });
      //定义两种颜色分别是两个端点的颜色
      var color1 = new THREE.Color( 0x444444 ),
        color2 = new THREE.Color( 0xFF0000 );
      //线的材质可以由两点的颜色决定
      var p1 = new THREE.Vector3();
      var p2 = new THREE.Vector3();
      p1.set(-100,0,100);
      p2.set(100,0,-100);
      geometry.vertices.push(p1);
      geometry.vertices.push(p2);
      geometry.colors.push(color1, color2);
      //定义线条 这里会传进去三个参数  
      //第一个是几何体geometry,里面包含两个顶点和顶点颜色
      //第二个是线条的材质
      //第三个是一组点的连接方式
      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);
    }
  </script>
  <body onload="threeStart()">
    <div id="canvas-frame"></div>
  </body>
</html>

希望本实例能给大家学习three.js带来些帮助

Javascript 相关文章推荐
jquery select选中的一个小问题
Oct 11 Javascript
IE6、IE7中获取Button元素的值的bug说明
Aug 28 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
AngularJS 与Bootstrap实现表格分页实例代码
Oct 14 Javascript
Angular之指令Directive用法详解
Mar 01 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
Vue从TodoList中学父子组件通信
Feb 05 Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
vue+iview实现手机号分段输入框
Mar 25 Vue.js
jquery判断input值不为空的方法
Jun 05 #Javascript
jQuery四种选择器使用及示例
Jun 05 #Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 #Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 #Javascript
EasyUI布局 高度自适应
Jun 04 #Javascript
javascript获取select标签选中的值
Jun 04 #Javascript
jQuery Mobile 触摸事件实例
Jun 04 #Javascript
You might like
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
python模块内置属性概念及实例
2021/02/18 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
世界经理人咨询有限公司面试
2014/09/23 面试题
班组长的岗位职责
2013/12/09 职场文书
茶叶生产计划书
2014/01/10 职场文书
回门宴答谢词
2014/01/13 职场文书
办公室文员自荐书
2014/02/03 职场文书
战略合作协议书范本
2014/04/18 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
作风转变心得体会
2014/09/02 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python