使用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 相关文章推荐
Stop SQL Server
Jun 21 Javascript
Document 对象的常用方法
Jul 31 Javascript
jquery交替变换颜色的三种方法 实例代码
Nov 19 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
微信小程序-获得用户输入内容
Feb 13 Javascript
CSS3+JavaScript实现翻页幻灯片效果
Jun 28 Javascript
React学习笔记之事件处理(二)
Jul 02 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
Oct 29 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
electron踩坑之remote of undefined的解决
Oct 06 Javascript
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
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
smarty自定义函数用法示例
2016/05/20 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
PHP hex2bin()函数用法讲解
2019/02/25 PHP
JS实现图片预加载无需等待
2012/12/21 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
Python编程实现的简单Web服务器示例
2017/06/22 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python如何将两个txt文件内容合并
2019/10/18 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
本科生个人求职自荐信
2013/09/26 职场文书
音乐表演专业毕业生求职信
2013/10/14 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
幼儿园门卫岗位职责
2014/02/14 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
师德模范事迹材料
2014/06/03 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers