Three.js实现hello world以及绘制线的方法

本文主要和大家介绍关于three.js入门之hello world以及如何绘制线的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,希望能帮助到大家。

hello world

首先使用我们先用three.js创建一个立方体的hello world类型的案例。

          Document      body{margin:0;}  canvas{width: 100%; height:100%; display: block;}       //创建场景  var scene = new THREE.Scene();  //设置相机(视野,显示口的宽高比,近裁剪面,远裁剪面)  var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );  //渲染器  var renderer = new THREE.WebGLRenderer();  //设置渲染器的高度和宽度,如果加上第三个值 false,则按场景大小显示,等比例缩放  renderer.setSize( window.innerWidth, window.innerHeight,false);  //将渲染器添加到html当中  document.body.appendChild( renderer.domElement );   //盒子模型(BoxGeometry),这是一个包含立方体所有顶点和填充面的对象。  var geometry = new THREE.BoxGeometry( 1, 2, 1 );  //使用网孔基础材料(MeshBasicMaterial)进行着色器,这里只绘制了一个绿色  var material = new THREE.MeshBasicMaterial( { color: 0x00ffff } );  //使用网孔(Mesh)来承载几何模型  var cube = new THREE.Mesh( geometry, material );  //将模型添加到场景当中  scene.add( cube );  //将相机沿z轴偏移5  camera.position.z = 5;   //设置一个动画函数  var animate = function () {  //一秒钟调用60次,也就是以每秒60帧的频率来绘制场景。  requestAnimationFrame( animate );   //console.log(cube.rotation);  //每次调用模型的沿xy轴旋转0.01  cube.rotation.x += 0.01;  cube.rotation.y += 0.01;  //使用渲染器把场景和相机都渲染出来  renderer.render(scene, camera);  };   animate();   

登录后复制

上面的代码案例解析:

(1)首先引入了three.js的库文件,就和引入jq一样。

(2)创建场景(17行)

(3)创建相机,并设置视野,显示的宽高比,近裁剪面,远裁剪面(19行)

(4)创建渲染器,并设置属性,放置到dom中(21-25行)

(5)创建一个立方体模型,并放入到场景(28-34)

(6)设置相机的位置(36行)

(7)设置一个动画函数,并使用渲染器把场景和相机渲染出来,每秒60帧,显示出来,就变成了动画。

利用Three.js绘制线

Three.js实现hello world以及绘制线的方法

上面就是绘制完成后显示的效果。

          Document      body{margin:0;}  canvas{width: 100%; height:100%; display: block;}       //创建场景  var scene = new THREE.Scene();  //设置相机(视野,显示口的宽高比,近裁剪面,远裁剪面)  var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 );  //设置相机的视点  camera.position.set(0,0,100);  //设置相机的朝向  camera.lookAt(new THREE.Vector3(0,0,0));  //渲染器  var renderer = new THREE.WebGLRenderer();  //设置渲染器的高度和宽度,如果加上第三个值 false,则按场景大小显示,等比例缩放  renderer.setSize( window.innerWidth, window.innerHeight,false);  //将渲染器添加到html当中  document.body.appendChild( renderer.domElement );   //定义线的基本材料,我们可以使用LineBasicMaterial(实线材料)和LineDashedMaterial(虚线材料)  var material = new THREE.LineBasicMaterial({color:0x0000ff});  //设置具有几何顶点的几何(Geometry)或缓冲区几何(BufferGeometry)设置顶点位置,看名字就知道了,一个是直接将数据保存在js里面的,另一个是保存在WebGL缓冲区内的,而且肯定保存到WebGL缓冲区内的效率更高  var geometry = new THREE.Geometry();  geometry.vertices.push(new THREE.Vector3(-10,0,0));  geometry.vertices.push(new THREE.Vector3(0,10,0));  geometry.vertices.push(new THREE.Vector3(10,0,0));  //使用Line方法将线初始化  var line = new THREE.Line(geometry, material);  //将线添加到场景  scene.add(line);   //使用渲染器渲染出场景和相机  renderer.render(scene, camera);   

登录后复制

相对于上一节来说,只是模型方面有区别,这里是先使用线纹理的方法设置线的纹理,然后使用几何对象或者缓冲区几何对象生成顶点坐标,最后调用Line方法绘制出来线。

相关推荐:

详细介绍HTML5 canvas基本绘图之绘制线段代码实例

以上就是Three.js实现hello world以及绘制线的方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787860.html

(0)
上一篇 2025年3月8日 18:17:42
下一篇 2025年3月8日 18:17:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • NW.js是什么如何使用

    本文主要和大家分享nw.js是什么如何使用?nw.js (原名 node-webkit)是一个基于 chromium 和 node.js 的应用运行时,通过它可以用 html 和 javascript 编写原生应用程序。它还允许您从 dom…

    2025年3月8日
    200
  • JS实现多个彩色小球跟随鼠标移动实例代码

    本文主要和大家分享js实现多个彩色小球跟随鼠标移动实例代码,实现方法:每个小球移动都有自己的坐标,小球移动的同时,需要进行坐标传递,将第一个坐标依次传递给最后一个坐标,来实现小球跟着移动的效果。 实现代码: 小球运动 p { border-…

    2025年3月8日
    200
  • javascript中的require、import与export实例分享

    本文主要给大家介绍关于javascript中require、import与export的相关资料,文中通过示例代码介绍的非常详细,对打击大的学习或者工作具有一定的参考学习价值,希望能帮助到大家。 为什么有模块概念 理想情况下,开发者只需要实…

    2025年3月8日 编程技术
    200
  • JS手写parseInt的实例

    手写parseint的实现:要求简单一些,把字符串型的数字转化为真正的数字即可,但不能使用js原生的字符串转数字的api,比如number()本文主要给大家介绍了关于js实现手写parseint的相关内容,分享出来供大家参考学习,下面话不多…

    编程技术 2025年3月8日
    200
  • Js如何利用console计算代码运行时间

    如果学习前端一定时间以后,就会考虑性能方面的问题。那么问题来了,我们怎么计算出一段代码的运行时间呢?发现了个计算代码执行时间的方法,所以本文主要给大家介绍关于javascript利用console计算代码运行时间的相关资料,文中通过示例代码…

    编程技术 2025年3月8日
    200
  • 关于jQuery用$.ajax或$.getJSON实现跨域获取JSON数据的代码

    通过jquery可以跨域获取json数据,但必须弄清楚的是,jquery不可以跨域获取任意json格式的数据,必须要通过服务端输出特定的针对jquery跨域读取的json数据。你可能目前对此仍然毫无了解,没关系,本文将以最简单易懂的方式介绍…

    编程技术 2025年3月8日
    200
  • VsCode完成VueJs项目的教程

    本文主要介绍了vscode新建vuejs项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 使用vue-cli快速构建项目 ( vue-cli 是vue.js的脚手架,用于自动生成…

    2025年3月8日 编程技术
    200
  • javascript二维数组的面试题

    本文主要和大家分享一个关于javascript二维数组的面试题,希望能帮助到大家。给定一个二维数组,实现一个功能函数 fn,向这个函数中传递这个二维数组的一个坐标,如果这个坐标的值为 ”1“,将返回和这个坐标所有相连的并且坐标值为1坐标。 …

    编程技术 2025年3月8日
    200
  • vue-slicksort一个vue.js拖拽组件

    本文主要和大家分享vue-slicksort ,它是一个功能强大的可拖拽的vue.js组件。 它可以自动滚动,锁定坐标系。支持拖拽时,流畅的动画效果。可以支持水平,垂直或者网格的拖拽。支持触摸。希望本文能帮助到大家。 DEMO 安装 通过n…

    2025年3月8日
    200
  • JS中的BOM应用详解

    本文我们住要和大家分享js中的bom应用详解,我们曾经讲过js由三部分组成,其中一个部分就是bom,用于对浏览器进行操作。这节课我们主要就来介绍bom。 BOM基础 我们先来看一个BOM的最基础功能:打开、关闭窗口: 无标题文档 登录后复制…

    2025年3月8日
    200

发表回复

登录后才能评论