为了账号安全,请及时绑定邮箱和手机立即绑定

threejs

标签:
JavaScript

Introduction

three.js是基于webGL的一种为HTML5 Canvas提供硬件3D加速渲染的js库。
webGL是3D绘图协议,协议的主要内容就是将JavaScript和OpenGL结合到一起,通过增加OpenGLES2.0的一个JavaScript绑定,webGL可以为html5和canvas提供硬件3D加速渲染。
OpenGL是一个用于渲染2D和3D矢量图形的API,OpenGL不做的是保留有关“对象”的信息,所以OpenGL每次都是绘制所需绘制的所有内容。OpenGL可以和一些存在仅用于更新屏幕的一部分的技术来结合,实现部分更新的功能。

webgl、three.js、canvas区别与联系

canvas是html5新定义的一个标签,用于做图形容器
webgl要依赖canvas运行。
three.js是以webgl为基础的库,封装了一些3D渲染需求中重要的工具方法与渲染循环。

更新机制

three.js中默认所有添加到场景中的对象,或者它们是已添加到场景中的另一个对象的子节点都会更新矩阵。如果不希望对象在加入场景时自动更新,则可以进行手动刷新。
object3D的matrixAutoUpdate属性对于所有它的子类都生效,不会因为它是否为某个对象的子节点而不同。object3D的updateMatrix()方法是自动更新scene中的添加的对象的整体,不是部分更新。
`
object.matrixAutoUpdate = false;
object.updateMatrix();

`

three.js中可以采用BufferGeometry将信息存在类数组中,提高读写的速度。这样想要动态更新则需要在第一次渲染后更改每个不同情况的对应的选项为true,来动态控制每次更改的刷新,否则设置bufferGeometry后,对应的标志位都会变更为false。

`
line.geometry.attributes.position.needsUpdate = true;

geometry.verticesNeedUpdate = true;
geometry.elementsNeedUpdate = true;
geometry.morphTargetsNeedUpdate = true;
geometry.uvsNeedUpdate = true;
geometry.normalsNeedUpdate = true;
geometry.colorsNeedUpdate = true;
geometry.tangentsNeedUpdate = true;

material.needsUpdate = true

texture.needsUpdate = true;

// 相机的位置和目标都会自动更新,但是改变相机的视角广度、宽高比、近截面、远截面则需要手动调用下面方法去更新。
camera.updateProjectionMatrix()

`

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消