1.1 Three.js基本框架.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.1 Three.js基本框架

1.1 Three.js基本框架在本网站/jiaoyanzu/wuli/ShowArticle.aspx?articleId=1248第1课 绘制一个三角形等一系列文章中,使用的都是WebGL原生API来编程。但之后就应该自己编写一个代码库,以用于随后的通用3D编程,这样就可以将相对复杂的原生API封装起来,提高编程效率。现在有很多不错的WebGL开源框架,Three.js就是其中的一个,它是一个3D JavaScript库,封装了底层的图形接口,使得程序员能够在无需掌握繁冗的图形学知识的情况下,也能用简单的代码实现三维场景的渲染。它是由西班牙程序员Ricardo Cabello Miguel开发的,此人更出名的网名为Mr.doob。Three.js在地址为http://mrdoob.github.io/three.js/http://mrdoob.github.io/three.js/,在那儿你可以下载到全部源代码、文档和示例,我使用的版本为r71。本文会建立一个Three.js基本框架,以后的示例都是在这个框架的基础上实现的。我们会将“第1课 绘制一个三角形”的步骤用这个框架再实现一次。接下来的绝大多数示例都参考自《Learning Three.js:The Javascript 3D Library for WebGL》,在本网站可下载到此书的电子英文版和源代码。基本框架在WebGL原生API中,要在页面上生成内容,大致需要以下几步:创建WebGL上下文创建顶点缓冲(和索引缓冲)创建顶点着色器和片段着色器编译着色器创建程序对象和链接着色器绘制场景而要构建一个Three.js框架,必须拥有三样东西:渲染器(renderer)对象:负责创建WebGL上下文,绘制场景。场景(scene)对象:场景是最上级的对象,用于容纳所有的其他图形对象(网格、相机等)。相机(camera)对象:定义我们在渲染好的scene中能够看到些什么。下面就是网页代码:!DOCTYPE htmlhtmlhead title示例01.01 – 基本框架/title script src=Scripts/jquery-2.1.3.min.js/script script src=Scripts/Threejs/three.min.js/script style body{ /* 将margin设置为0,overflow设置为hidden,可让浏览器显示全屏 */ margin: 0; overflow: hidden; } /style/headbody !-- 作为Canvas容器的div -- div id=WebGL-output/divscript type=text/javascript // 页面加载完毕后,就可以运行Three.js了。 $(function () { var stats = initStats(); // 创建渲染器,并设置视口大小和清除色 var renderer = new THREE.WebGLRenderer(); renderer.setClearColor(0x00204d); renderer.setSize(window.innerWidth, window.innerHeight); // 将WebGL的输出canvas放置到div中 $(#WebGL-output).append(renderer.domElement); // 创建scene对象,用来容纳网格、相机、光源等对象 var scene = new THREE.Scene(); // 创建相机 var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000); // 设置相机位置,观察目标设置为场景中央 camera.position.x = 0; camera.position.y = 0; camera.position.z = 3; camera.lookAt(scene.position); renderer.render(scene, camera); });/script/body/html以上代码还使用了jquery库,这不是必须的,但可以让某些DOM操作更加便捷。若现在运行程序,只会显示墨绿色的背景,我们需要在场景中添加一个黄色的三角形。添加网格(Mesh)对象Three.js中绘制的绝大多数对象都是网格(Mesh),一个Mesh通常是由一个几何体(Geometry)对象和一个材质(Material)对象组合而成。其中Geometry对象保存了Mesh对象的顶点信息和索引信息,而Material对象保存

文档评论(0)

jixujianchi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档