360度自转三维异形物体影像投射系统的研究与实现

2015-05-30 06:28刘浩君
工业设计 2015年6期
关键词:投影仪

刘浩君

摘要:三维影像投射技术的英文是3D projection mapping,中文有人翻译为三维影装,指运用影像边缘融合算法,开发一种将预先制作好的或实时生成的静态或动态影像,通过单台或多台投影仪投射在三维静态或动态物体上的技术。三维影像投射方式分为四类:第一类将动态的影像内容投射在具有一定进深的二维为主的物体上,对物体的形态和边缘进行影像创意。第二类则是将动态的视频内容投射在静态的、规范的三维几何形体上,所投射的影像多为硬拼接,不需要使用影像边缘融合技术进行投射。第三类是第一类和第二类的结合,即将事先制作好的、或实时生成的动态视频内容投射到异形三维立体上。第四类是第三类的发展,使用多台投影仪运用影像边缘实时融合技术,在绕轴进行360度自转的异形三维物体上,进行动态、实时影像内容的投射。本文是第四类投影方式,通过进一步研究虚拟空间和现实空间的关系,完成两者的同步,虚拟摄像机拍摄到的内容即是投影仪需要显示的内容,最终实现对物体的完全覆盖。

关键词:旋转物体;三维影装;三维影像投射;投影仪

1.引言

随着投影技术的发展,虚拟世界和现实世界有了一种很好地同步结合方式——三维影像投射。通过三维影像投射技术。艺术家可以将虚拟世界创造的艺术作品与现实世界的物体进行同步,完成虚拟世界到现实世界的转换,将虚拟世界的内容通过异面投影技术真实的展现在人们面前。相对于传统形式,三维影像投射技术更加自由,任何可以反射投影光的物体都可以作为被投影介质,而投影物体的立体性可以很好地增加投影内容的真实感,可以很好地吸引观众的目光,同时使用实时渲染三维影像投射系统可以便捷地更换显示内容,丰富展示的多样性。不会让人感觉到枯燥。

本文主要研究一种新的投影融合算法设计技术,设计了一个软件与硬件结合的系统,最终可以在这样的系统中,将动态的科学与艺术结合的影像内容,对360度绕轴旋转的三维异形物体进行预先制作好的或者实时生成的动态影像内容的投射,从而在科学普及、科学与艺术结合的展示领域,形成具有强烈艺术感染力的三维动态影像投影效果和作品。本文对于系统的设计思路与实现方法进行了深入的探讨。

2.渲染内容的简介

2.1模型内容的建立

首先需要明确的是三维扫描后录入的数据其形式。通过三维扫描仪录入电脑的是点云,及每一次激光反射的位置和距离,这样的一系列点集构成了整个模型的点云。通过三维扫描仪自带的软件进行补洞操作后,完整模型就完成了,但是补洞的模型只有大致形状,没有任何走线,所有面由无数小三角面构成,显然这些密集的三角面是不能作为虚拟模型加载的。其占用资源过多,需要进行拓扑。

在获得了已经补完洞的模型后,需要对模型进行拓扑。拓扑的方式完全依靠模型师的经验和手法,如何体现物体的细节,如何保证拓扑的模型既与原物体基本一致,又要保证尽量少的走线。这些都与模型师的经验息息相关。总的来说拓扑的最佳结果是保证最少的走线和最佳的模型形状,尽量贴合三维扫描的模型,满足上述条件的拓扑模型才是比较好的模型,相对来说技术要求较高。

获得拓扑模型后需要将其转换成WW可以识别的模型形式,VVVV主要使用DirectX进行渲染,使用的也是DirectX默认的后缀名为.X的模型文件。默认包含两部分,包含模型文件以及动画键。MAYA和3DMAX都有其转换插件,这部分交给插件即可。

最后需要对模型文件进行加载,VVVV中加载模型文件有自己的节点。但是只提供了基本的模型信息,其余的位移、旋转、变形矩阵等信息需要自行设计,基本设计如图1所示。

至此,模型模块从录入、拓扑、到加载完成了整个的流程,成为了构建虚拟空间的基础。

2.2实时渲染的设计

拥有模型之后。虚拟世界才算是有建立的基础,实时渲染的基本要素如图2所示:

构成本文虚拟空间的基本要素如图2所示,分别是:

(1)模型:在获得拓扑模型后,转换成VVVV可以识别的模型文件,同时要保证文件的UV合理展开,保证模型的大小合适,方便调整。满足如上要求才算符合要求。

(2)着色器:DirectX拥有自己的渲染器,需要利用其自己的语言来完成对模型渲染的操作,包括灯光、融合拼接等。

(3)摄像机:作为与现实世界同步的虚拟构建,摄像机的参数需要保证与投影仪的参数完全保证一致,焦距,高度,距物体距离,中心位置等等,必须与现实世界同步。

(4)相对位置信息:除基本的位置、角度信息外,物体与物体之间的相对位置也需要保证,其中之后同步阶段需要虚拟世界和现实世界保持一致的旋转参数等。

(5)艺术视频文件:在UV基础上根据艺术内容进行加载的图形视频文件,对于艺术设计而言,这将是展现整个视觉效果的部分,在之前艺术设计部分已经详细描述。

其中不得不说的是融合拼接的方式。一般的平面投影的拼接方式较简单,根据融合公式即可进行较完整的融合拼接。但显然在不规则曲面上没有办法找到一个普适的算法可以让所有的物体都可以做到很好地融合。每一个投影仪根据其位置和角度不同,所能显示模型的角度和大小都不可能完全一样,所以类似平面上通过投影仪画面做切割进行融合的方式在异面投影上是不可取的。

异型投影的融合通常分两类。一类是完全的硬拼接。通常立方体等有明显的面变化,或者形状简单,可以对模型形状和大小可以精确变换的模型可以使用硬拼接。另一类是软拼接,通过划分融合带,对两个融合带进行叠加来达到融合拼接的目的。本文的汽车没有明显的面与面的划分,由于点数众多,也没有办法进行精确的形状调整,只能使用软拼接的方式完成融合。

根据汽车模型的特点,其形状类似长方形,故一台投影最多可以覆盖其中的三个面,显然,光路直线的原理表明,投影仪最多只可能覆盖到三个平面,不可能超过三个。

以汽车作为示例,由于汽车的前面和尾部的面较小,所以并不需要单独分割出来,连接到汽车顶面即可,故整个分割方案如图3所示:

红色和绿色线内为融合带,通过融合算法进行软拼接,

设计完融合带分割方案后,还需要根据物体转动情况确定融合带精确位置,具体算法如下:

顶面分割方案相对简单,首先依据输入角度来进行位置映射,根据同步模块反馈的角度信息R,以及当前渲染点坐标信息来判断渲染点处理方案;整个融合带由六条直线构成最终形成如图3所示,根据与各边相交点。通过斜率公式(1)。可以得到直线的斜率式(2):

我们只需要根据斜率求出相应的系数A、B、C即可获取直线的标准式,从而通过点到直线标准式(3):

在获得基本分割信息后,需要结合之前获取的信息进行落点判定,判定方法为利用点到直线距离d,界定当前渲染点距离分割方案中直线的与点的距离,以此判断出当前点属于哪一个区域,不同区域对应不同的处理算法进行数据处理。判定结果分为三种,如图4所示:

其中1区域为全显示区域,图像亮度不做任何变换,2为反向融合带,3为正向融合带。判断点处于哪个区域时首先判断是否处于两条红线范围内即是否是1或3区域,然后判断是否处于红线和绿线之间,完成对点显示亮度的映射。具体算法描述如下:

算法一顶面融合带算法

任务:求解每个渲染点亮度变换系数初始化:获取同步模块角度信息,获取分割方案中六条直线对应系数A1..A6,B1..B6,C1..C6。

重复以下步骤直至所有贴图点都完成渲染:

(1)获取当前渲染点坐标X,Y,以及当前渲染点颜色COL

(2)通过点到直线公式(3)判断渲染点坐标与各直线位置。

(3)落点处于图4中1区域的,当前点颜色COL不进行改变。跳转到(7)

(4)落点处于图4中2区域的。当前点颜色COL进行反向融合带矫正,根据公式(3)所得距离d,判断出点在融合带中的相对位置。跳转到(6)

(5)落点处于图4中3区域的,当前点颜色COL进行正向融合带矫正。根据公式(3)所得距离d,判断出点在融合带中的相对位置。跳转到(6)

(6)根据相对位置以及边缘融合算法求出当前亮度系数,与COL相乘得出当前点新的颜色。

(7)判断是否是最终渲染点,是则结束,否则跳转到(1)

输出:完整的一帧图像内容算法流程图如图5所示:

相对于顶面分割来说,侧面分割比较繁琐,首先要考虑到的是分割带位置问题,由于光线的直线性,融合带的最佳位置与贴图并不是线性关系,如图6分解所示:

假设图左为投影覆盖范围,那么显然融合带位置起始到消失的角度范围是与物体宽度有关的,首先讨论投影角度范围,由图6可知,投影角度范围可由:

其中s为物体宽度,d为投影垂直位置与转台中心之间的距离,由此得出投影带角度范围为;但显然,刚到角度时,投影角度并不好,角度旋转后也不是按照线性关心来确定融合带位置的,经过反复验证,使用一个正弦函数来进行数据建模比较符合实际规律,即融合带位置与角度关系公式如下:

其中为当前转台角度,P为融合带在贴图上的位置,通过公式(5)即可获得一个由角度到位置的关系函数,从而确定融合带具体位置。具体算法如下:

算法二侧面融合带算法

任务:求解每个渲染点亮度变换系数

初始化:获取同步模块角度信息。获取由公式(4)所得角度范围。重复以下步骤直至所有贴图点都完成渲染:

(1)获取当前渲染点坐标X,Y,以及当前渲染点颜色COL。

(2)通过点到直线公式(3)判断渲染点坐标与各直线位置。

(3)落点处于图4中1区域的,当前点颜色COL不进行改变。跳转到(7)

(4)落点处于图4中2区域的。当前点颜色COL进行反向融合带矫正,根据公式(3)所得距离d,判断出点在融合带中的相对位置。跳转到(6)

(5)落点处于图4中3区域的。当前点颜色COL进行正向融合带矫正。根据公式(3)所得距离d,判断出点在融合带中的相对位置。跳转到(6)

(6)根据相对位置以及边缘融合算法求出当前亮度系数,与COL相乘得出当前点新的颜色。

(7)判断是否是最终渲染点,是则结束,否则跳转到(1)

输出:完整的一帧图像内容

算法流程图如图7所示:

完成着色器后,需要对模型的位置,摄影机的位置等相对位置进行确定,之前已经提到。

至此虚拟世界部分设计基本完成,从模型的构建到渲染再到同步接口的设计,完成了虚拟世界的构建。

3.渲染结果

通过实时渲染软件对三个部分进行实施渲染,后通过三台投影仪分别对分割部分的图像进行输出,最终完成现实世界和虚拟世界的匹配,对三个投影图像进行软拼接,形成完整的360度覆盖投影,如图8所示:

经测试,融合带基本完全覆盖,顶部有少许偏差,数以正常范围允许之内。算法分割成功,解决了运动物体全覆盖投影的难题。

4.结束语

通过对输出图像进行精确的分割,并结合融合带,最终完成了三台投影分别输出不同图像,覆盖整个物体的方案,以此类推。可以完成任何形状和大小的物体投影覆盖方案,只要物体处于投影仪投影范围以内,都可以通过对物体进行分割渲染的方式,完成物体图像的拼接。最终形成完全的图像覆盖方案,做到对旋转物体的三维影像全投射。

猜你喜欢
投影仪
天空投影仪
防尘投影仪支撑架
满足多种需求明基E530投影仪
防尘投影仪支撑架
教学投影仪常见故障排除方法
多投影图像参数约束的几何校正技术
索尼发布真4K投影仪
高校多媒体教室投影仪维护技术分析
ThinkPad发布微型智能投影仪
结合实物投影仪 让学具翻转小学数学课堂