COMP3617-无代写
时间:2023-05-09
总结性作业
计算机科学
模块代码和标题 COMP3617 虚拟和增强现实技术
学年 2022/23
子模块标题 不适用
课件名称 VR课件
课业学分 10个学分
讲师 George Koulieris
截止日期* 2023年5月4日,星期四,14:00
递进法 超强
额外的课程作业文件
三维图形引擎代码,VR头盔三维模型,与运动跟踪、物理学和失真校正有关
的其他文献。所有文件都可以在黑板课件文件夹中找到。
要求提交的项目和格式
请提交一个压缩的档案(.zip),其中包括:
(a) 你所有的源代码,原始/修改的引擎源代码文件和3D模型。我应该可
以通过在终端上运行python3 render.py来运行你的软件。包括一个
readme文件,说明如何运行你的程序,以及你需要哪些外部资源,如果
这一点不明显的话。
(b) 一份不超过6页的.pdf报告,包括图片(最多约2500字)。在文件
的第一页顶部,用你的CIS用户名表明你的身份。
(c) 一个演示完整序列的简短视频(压缩至
<100MB)。
* 这是所有提交材料的截止日期,除非有批准的延期。在截止日期后的5个工作日内收到的迟交材料,将以40%为上
限。在截止日期后5天内收到的迟交材料,将得到0分。
虚拟和增强现实comp3617 2022/23 George Koulieris
1
COMP3617总结性作业 虚拟和增强现实
技术
重要的是,请先阅读!
• 作业应通过黑板提交;截止日期是5月4日下午2点。所有的截止日期都可以在SharePoint
中找到。
• 你的软件将被测试,应该可以在Python 3.11.1下运行。你可以使用额外的Python库来实
现任何额外的功能(例如,NumPy)。然而,问题1-5中要求的方法应该由你来实现,正
如你将提交的源代码所证明的那样,而不是通过现有的库来实现这些算法。
• 请提交一个压缩的档案(.zip),其中包括:(a) 你的所有源代码、原始/修改的引擎源代码文件
和3D模型。我应该能够通过在终端上运行python3 render.py来运行你的软件,并在屏
幕上看到要求的序列。包括一个readme文件,说明如何运行你的程序,以及你需要哪些
外部资源,如果这不是很明显的话。(b) 一份不超过6页的.pdf报告,包括图片(最多
2500字)。在文件的第一页顶部,用你的CIS用户名表明你的身份。(c) 一份简短的
展示完整序列的视频(压缩到<100MB,你可以使用任何在线视频压缩平台来压缩它)
。该视频应显示跟踪数据集所显示的实时运动,即应持续27秒∼。当运行你的软件时
不过,如果渲染需要更多的时间也没关系--软件渲染器很慢。
• 每个问题的正确实施/回答可得的分数已标明。良好的尝试将得到部分分数。
• 每个评分标准的成绩水平(好/非常好/优秀/等)是根据大学核心条例(第15-16页)中公
布的评分和分类惯例确定的:链接。
• 虚拟和增强现实模块仅由该课程作业评估(占模块分数的100%)。
• 黑板上的常见问题部分将随着问题的出现而更新。
你在一家VR公司工作,目前你参与了一个原型3D图形引擎的开发,该引擎能够为VR头盔渲染内容。你
的任务是在3D引擎上开发基本的渲染、跟踪、物理学和VR的失真预校正。我们为你们提供了一个初级
的3D引擎[2](可在黑板上找到),能够只用正投影来渲染简单的3D物体(即没有透视投影,深度被投
射到屏幕上,而不考虑它们的深度--与摄像机的距离)。该引擎也可以在顶点颜色插值的基础上进行简
单的阴影处理。该引擎在磁盘上输出一个单一的帧缓冲区。你的任务是扩展3D引擎,以处理透视投影
和物体变换、跟踪、物理和失真校正。你的任务列表如下。你应该在一个演示场景中展示你的开发成
果,渲染一些VR头盔(3D模型已提供)在重力作用下从空中坠落,同时基于所提供的(黑板上的)真
虚拟和增强现实comp3617 2022/23 George Koulieris
2
实头盔跟踪数据集进行偏航、俯仰和滚动。
在继续之前,请阅读黑板上免费提供的LaValle的相关章节,参加所有相关的讲座,并仔细阅读[4]
(请注意公式8和10中运算顺序的错字)。
虚拟和增强现实comp3617 2022/23 George Koulieris
3
问题1,渲染--15分:
所提供的引擎目前只产生静态渲染。请根据需要更新渲染引擎的源代码,为其增加以下功能:
1. 启用屏幕上的帧缓冲区的实时输出,而不是输出到磁盘上。你可以使用PIL / Matplotlib /
OpenCV / 等来在屏幕上显示缓冲区。(1分)
2. 实现透视投影而不是正视投影。你将需要扩展引擎的一些元素以处理同质坐标。(6分)
3. 实现基本的变换矩阵,特别是增加平移、旋转和缩放物体的能力。你应该在演示场景中使用
这些功能,例如,在耳机从空中落下时旋转它们。(8分)
问题2 ,跟踪:处理位置数据--15分:
在黑板课件文件夹中,你可以找到一个从VR头盔的IMU获取的样本数据集(6959条记录)。
耳机在X、Y和Z轴上依次从0度旋转到+90度,然后再旋转到-90度(由于IMU被焊接到那个特
定的耳机上,Z是向上的)。IMU的观测值以256Hz的速率记录:时间以秒为单位,三轴速
度(旋转率)以度/秒为单位,三轴加速度以克(m/s2)为单位,三轴磁力计磁通量读数以高
斯(G)为单位--磁通量读数将不用于本课程作业中。
1. 读取并导入提供的(.csv)数据集(6分)。
2. 将旋转速率转换为弧度/秒,并将加速度计和磁力计的数值归一化,特别注意NaN的划分
(5分)。
3. 实施你的方法,(i)将欧拉角读数(弧度)转换为四元数(1分)、
(ii) 从四元数计算欧拉角(1分),(iii) 将四元数转换为其共轭数(反旋转)(1分),(iv)
计算四元数a和b的四元数积(1分)。
问题3,跟踪:相机姿势计算--20分:
1. 实施死推过滤器(使用陀螺仪测量的旋转速率),并进行基于重力的倾斜校正(使用加速度
计数据)。首先通过使用先前确定的位置(从身份四元数开始)来计算当前位置,并根据经
过的时间的估计速度重新评估该位置(5分)。考虑初始方向q[0]是身份四元数[1,0,0,0]。
2. 然后你将在计算中包括加速度计信息:将加速度测量值转化为全局框架(2分)。计算
倾斜轴(2分),并找到向上的矢量和从加速度计获得的矢量之间的角度j(2分)。使用
互补滤波器来融合陀螺仪的估计和加速度计的估计(4分)。启动引擎后,虚拟摄像机应根
据融合的输入数据(陀螺仪和加速度计)进行旋转。
3. 尝试一些不同的阿尔法值(如0.01,0.1,......),调查并评论它们对漂移的影响。
在黑板上可以找到其他有用但并非必要的资源([1,3])。
虚拟和增强现实comp3617 2022/23 George Koulieris
4
问题4,失真预校正--10分:
通过实施失真预校正,说明耳机镜头引入的失真。你将使用的公式是基于布朗模型的一个严
重简化版本,它只使用两个系数,c1和c2用于径向畸变,省略了切向畸变校正所需的p系数。
下面的公式认为,世界上的点在典型的
观察地壳有x和y坐标,范围从-1到1。我们将用以下方式指代这些点
极坐标:
布朗的简化正向径向变换;rd 是扭曲的半径,ru 是未扭曲的半径:
你将通过适当地扭曲帧缓冲区来实现枕形失真预纠正。假设镜头是径向对称的,枕形失真可以描
述为图像在远离光轴的地方变得越来越严重的拉伸。为了纠正枕形失真效果,你需要应用一个适
当的变换,使屏幕发出的光线不失真地到达眼睛。使用上面详述的简化径向畸变模型。你所使用
的实际参数并不重要,但所产生的反向失真应该是清晰可见的。
问题5,物理学--20分:
1. 在引擎中实现简单的物理学,模拟重力加速度和空气阻力作用于下落物体。有关空气阻力的
计算公式,请参见黑板课件文件夹中的其他文献。为阻力系数(如0.5)、空气密度(如
1.3kg/m3)和面积(如0.2m2)选择任意的数值。(10分)
2. 实现物体之间简单的基于距离的碰撞检测。使用适当半径的球体作为边界区域来进行计算。
在你的演示场景中,以这样的方式安排物体,使其中一些物体发生碰撞并改变方向。(10分)
问题6,研究报告和视频 - 20分:
研究报告的主要目的是包括测试的证据,提供以下问题的图像/答案,并让你对你认为重要的
或在上述问题中被问到的其他问题进行评论。
1. 针对摄像机的不同方向,为报告制作静态渲染图,证明你的跟踪和变换矩阵是有效的。
不要忘记附上一个简短的视频,演示摄像机的完整跟踪运动。(5分)
2. 使用简单的航位推算与包括加速器在内的优势和劣势是什么?用你的模拟数据来支持你
的主张。(5分)
3. 对上述第2点中的方法的性能进行评论,即对每种方法的预期计算量进行评论。(2分)
在你的报告中进行补偿。实施你认为重要/必要的任何其他加速器数值处理,并在报告中
讨论。(5分)
虚拟和增强现实comp3617 2022/23 George Koulieris
5
参考文献
[1] BROWN, D. C. Decentering distortion of lenses.Photogrammetric Engineering and Remote Sensing (1966).
[2] CANN, E. RenderPy. https://github.com/ecann/RenderPy, 2023.[在线;2023年1月9日访问]。
[3] DE VILLIERS, J. P., LEUSCHNER, F. W., AND GELDENHUYS, R. Centi-pixel accurate real-reverse distortion
correction.In Optomechatronic Technologies 2008 (2008), vol. 7266, International Society for Optics and
Photonics, p. 726611.
[4] LAVALLE, S. M., YERSHOVA, A., KATSEV, M., AND ANTONOV, M. Head tracking for the oculus rift.在
机器人和自动化(ICRA),2014年IEEE国际会议(2014),IEEE,第187-194页。
4. 能否根据所提供的数据实施位置跟踪?如果可以,如何实现?对基于IMU数据的位置跟
踪的预期精度进行评论。这种方法的一些潜在局限性是什么?(2分)
5. 对使用球体的碰撞检测进行评论。你可以如何改进碰撞检测,这些改进对性能会有什么影响
?用提供给你的耳机的特定3D模型的数据来支持你的论点。(4分)
6. 根据你在这个基于CPU的软件渲染器中实现失真校正的方式,当在GPU加速引擎中实现这一
技术时,可以如何加速?讨论所有可能的方案。(2分)