【WebGL】《WebGL编程指南》读书笔记——第4章
2018-06-24 00:36:42来源:未知 阅读 ()
一、前言
今天继续第四章的学习内容,开始学习复合变换的知识。
二、正文
Example1: 复合变换
在书中,作者为我们封装了一套用于变换的矩阵对象:Matrix4对象。它包含以下几种方法:
- Matrix4.setIdentity(): 将Matrix4实例化为单位矩阵
- Matrix4.setTranslate(x,y,z): 将Matrix4实例设置为平移变换矩阵,在x轴平移距离为x,在y轴平移距离为y,在z轴平移距离为z;
- Matrix4.setScale(x,y,z): 将Matrix4实例设置为缩放变换矩阵,缩放因子分别为x,y,z;
- Matrix4.setRotate(angle,x,y,z): 将Matrix4实例设置为旋转变换矩阵,角度为angle,旋转轴为(x,y,z);
- Matrix4.translate(x,y,z): 将Matrix4实例本身乘以一个平移变换矩阵;
- Matrix4.rototate(angle,x,y,z): 将Matrix4实例本身乘以一个旋转变换矩阵;
- Matrix4.scale(x,y,z): 将Matrix4实例本身乘以一个缩放变换矩阵;
- Matrix4.set(m): 将Matrix4设置为m;
- Matrix4.elements: 类型化数组包含了Matrix4实例的矩阵元素;
var modelMatrix = new Matrix4(); modelMatrix.setRotate(ANGLE,0,0,1); modelMatrix.translate(Tx,0,0); ... ... gl.uniformMatrix4fv(u_ModelMatrix,false,modelMatrix.elements);
Example2: 动画
requestAnimationFrame(func): 请求浏览器在将来某时刻回调函数func以完成重绘。我们应当在回调函数最后再次发起该请求。
var tick = function() { currentAngle = animate(currentAngle); // Update the rotation angle draw(gl, n, currentAngle, modelMatrix, u_ModelMatrix); // Draw the triangle requestAnimationFrame(tick, canvas); // Request that the browser calls tick }; tick();
由于浏览器执行Tick()的时间是不可控的,我们需要让三角形匀速的旋转,那么就需要控制时间:
var g_last = Date.now(); function animate(angle) { // Calculate the elapsed time var now = Date.now(); var elapsed = now - g_last; g_last = now; // Update the current rotation angle (adjusted by the elapsed time) var newAngle = angle + ANGLE_STEP * (elapsed / 1000.0); return newAngle %= 360; }
三、结尾
下周日继续更新第五章。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 使用webgl(three.js)创建3D机房,3D机房微模块详细介绍(升级 2019-03-10
- 使用webgl(three.js)创建3D机房(升级版)-普通机房 2019-03-10
- 如何用webgl(three.js)搭建不规则建筑模型,客流量热力图模 2019-03-06
- 【读书笔记】ES6 Module的语法 2018-12-19
- 【读书笔记】ES6 变量的结构赋值 2018-12-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash