- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WebGL 3D 摄像机
WebGL 3D 摄像机
WebGL 3D 摄像机
在过去的章节⾥我们将 F 移动到截锥的前⾯,因为 makePerspective 函数从原点 (0 ,
0 ,0 )度量它,并 截锥的对象从 -zNear 到 -zFar 都在它前⾯。
视点前⾯移动的物体似乎没有正确的⽅式去做吗?在现实世界中,你通常会移动你的
相机来给建筑物拍照。
将摄像机移动到对象前
你通常不会将建筑移动到摄像机前。
将对象移动到摄像机前
但在我们最后⼀篇⽂章中,我们提出了⼀个投影,这就需要物体在 Z 轴的原点前⾯。
为了实现它,我们想做的是把摄像机移动到原点,然后把所有的其它物体都移动恰当
的距离,所以它相对于摄像机仍然是在同⼀个地⽅。
将对象移动到视图
我们需要有效地将现实中的物体移动到摄像机的前⾯。能达到这个⽬的的最简单的⽅
法是使⽤“逆”矩阵。⼀般情况下的逆矩阵的计算是复杂的,但从概念上讲,它是容易
的。逆是你⽤来作为其他数值的对⽴的值。例如,123 的是相反数是 -123 。缩放⽐例
为5的规模矩阵的逆是 1/5 或 0 .2 。在 X 域旋转 30° 的矩阵的逆是⼀个在 X 域旋转 -30°
的矩阵。
直到现在我们已经使⽤了平移,旋转和缩放来影响我们的 F 的位置和⽅向。把所有
的矩阵相乘后,我们有⼀个单⼀的矩阵,表⽰如何将 “F” 以我们希望的⼤⼩和⽅向从
原点移动到相应位置。使⽤摄像机我们可以做相同的事情。⼀旦我们的矩阵告诉我们
如何从原点到我们想要的位置移动和旋转摄像机,我们就可以计算它的逆,它将给我
们⼀个矩阵来告诉我们如何移动和旋转其它⼀切物体的相对数量,这将有效地使摄像
机在点 (0 ,0 ,0 ),并 我们已经将⼀切物体移动到它的前⾯。
让我们做⼀个有⼀圈 F 的三维场景,就像上⾯的图表那样。
下⾯是实现代码。
var numFs = 5;
var radius = 200;
// Compute the projection matrix
var aspect = canvas.clientWidth / canvas.clientHeight;
var projection atrix =
makePerspective(fieldOfViewRadians, aspect, 1, 2000);
// Draw Fs in a circle
for (var ii = 0; ii numFs; ++ii) {
var angle = ii * ath.PI * 2 / numFs;
var x = ath.cos(angle) * radius;
var z = ath.sin(angle) * radius;
var translation atrix = makeTranslation(x, 0, z);
// ultiply the matrices.
var matrix = translation atrix;
matrix = matrix ultiply(matrix, projection atrix);
// Set the matrix .
gl.uniform atrix4fv(matrixLocation, false, matrix);
// Draw the geometry .
gl.drawArrays(gl.TRIANGLES, 0, 16 * 6);
}
就在我们计算出我们的投影矩阵之后,我们就可以计算出⼀个就像上⾯的图表中显⽰
的那样围绕 ‘F ’ 旋转的摄像机。
// Compute the cameras matrix
var camera atrix = makeTranslation(0, 0, radius * 1.5);
camera atrix = matrix ultiply(
camera atrix, makeYRotation(cameraAngleRadians));
然后,我们根据相机矩阵计算“视图矩阵” 。“视图矩阵”是将⼀切物体移动到摄像机相
反的位置,这有效地使摄像机相对于⼀切物体就像在原点 (0 ,0 ,0 )。
// ake a view matrix from the camera matrix .
var view atrix = makeInverse(camera atrix);
最后我们
您可能关注的文档
- SMC 单向节流阀AS1000-5000.pdf
- SNS时代,在改变中生存和发展.pdf
- senuke x中文教程.pdf
- SoC总线测试平台的设计实现.pdf
- SIH及营销体系介绍.ppt
- Sobolev方程的一个紧致差分格式.pdf
- SolverOptions函数.doc
- SpreadJS表格控件自定义AutoComplete单元格.pdf
- SolidWorks教程 SolidWorks 2011高级曲面和钣金设计教程.docx
- SO小型元件引脚共面性在线检测装置的设计与实现_谭刚林.pdf
- 1.1细胞是生命活动的基本单位课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 1.2细胞的多样性和统一性第1课时课件-2024-2025学年高一上学期生物人教版必修1.pptx
- 第16课《白杨礼赞》课件-2025-2026学年统编版语文八年级上册.pptx
- 2026届高三生物一轮复习课件+减数分裂与生物的遗传、变异.pptx
- 3.1细胞膜的结构和功能第2课时课件-2025-2026学年高一上学期生物人教版必修1.pptx
- 2025届高三生物一轮复习课件2.1减数分裂和受精作用.ppt
- 中考语文二轮专题复习课件:新闻概括题.pptx
- 第6课《我看》课件+++2025-2026学年统编版语文九年级上册.pptx
- 第21课《人民英雄永存不朽》课件-2025-2026学年统编版语文八年级上册.pptx
- 2025年广西河池罗城特聘农机技术指导员的(1人)考前自测高频考点模拟试题含答案详解(b卷).docx
最近下载
- 神经内科三基考试题及答案.doc VIP
- 等离子体物理与当代高新技术(本科生).ppt VIP
- SMTC 2 800 003 LIN节点设计需求LIN node design requirements(20180730).pdf
- 医院医院安保服务及停车场运营管理服务招标文件.pdf
- (最新)社区网格员考试试题(含答案).docx VIP
- 老小区燃气管道改造监理实施细则.docx VIP
- 中国行业标准 YY/T 1831-2021梅毒螺旋体抗体检测试剂盒(免疫层析法).pdf
- Walkera华科尔无人机FCS-F8使用指南_CN_V1.2_2020.10.12(金属壳版).pdf
- 五升六数学暑假作业60天附答案.docx VIP
- 高中物理:强基计划专题讲座.pptx VIP
文档评论(0)