怎样让HoloLens的成像视野中做到真实物体遮挡住虚拟物体( 二 )


对于虚实融合和交互来说,在每一帧画面里,不管是眼睛还是渲染桌面,最终呈现到眼镜的方式都必须是2D。所以Hololens之所以可以知道桌子等对于虚拟物体的遮挡,就在于它扫描并定义了实际的空间深度映射(由实际到虚拟的过程)。也就是说它是知道桌子的深度值的。这样,渲染输出呈现到眼睛的时候,自然可以不渲染深度值小于桌子的内容。自然你就看不到被桌子遮挡的物体了。
再引用增强现实系统中的遮挡处理技术-虚拟现实(VR)模拟仿真行业资讯 第三维度-打造最专业的虚拟现实行业门户
中的话简单说下现有的处理虚实遮挡的技术:
1、遮挡处理技术介绍
遮挡处理(Occlusion Handling)指的是如何使虚拟模型同真实环境中的物体产生正确的遮挡关系的处理过程。早期的增强现实技术中,所有计算机生成的虚拟模型都是直接叠加到真实场景的图片上,也就是说无论这些虚拟模型代表的空间位置距离摄像机是远还是近,其模型都是简单显示在真实场景的前方,真实场景中的物体仅仅是作为背景,虚拟模型可以遮挡住真实物体,而真实物体却不能遮挡虚拟模型。由于这种简单的遮挡关系使得早期的增强现实技术在真实感上存在严重不足,导致用户对空间方位的认知产生混乱。遮挡处理就是为了解决这个问题而产生的。遮挡处理的方法大致可以分为两种(Breen eta1.1995):基于模型的方法(Model-based Method)和基于深度值的方法(Depth—based Method)。
1.1 基于模型的遮挡处理方法
基于模型的遮挡处理方法预先对工作空间中的真实物体建立对应的三维虚拟模型,并将这些模型与真实物体位置对齐,用这些模型代表真实物体。在遮挡处理中,这些代表真实物体的模型同其他虚拟模型进行遮挡计算,获取遮挡关系,最后显示的时候只输出虚拟模型遮挡后的图形,而不输出代表真实物体韵模型,将输出图形同背景图片叠加后就得到有正确遮挡关系的场景图片。
Fuhrmann et a1.(1998)利用这个方法提出了一个快速构件人体虚拟模型的方法,用虚拟的人体模型代表真实人体,进而进行遮挡处理得到较好的处理结果。
这种遮挡处理方法由于采用虚拟模型代表真实物体,因而遮挡计算实际是在虚拟模型之间进行了,由图形渲染管线(graphics pipe l ine)自动计算深度值,写入Z缓冲区(Z-buffer),进行深度比较,完成遮挡处理,因而这种方法运算速度非常高,能够充分满足实时性的要求,遮挡效果依赖于代表真实物体的虚拟模型的准确性和方位的对齐程度。然而基于模型的遮挡处理方法只适用于场景复杂良低.且能够预先或者快速建立精确代表真实物体的虚拟模型的情况,而不适用于室外复杂动态场景中。由于这种处理方法的局限性,越来越多的学者提出根据场景图片深度信息的遮挡处理方法。
1.2 基于深度值的遮挡处理方法
基于深度值的遮挡处理方法首先需要获得真实场景图片的深度图(depthmap),Zenati et a1.(2007)提出了一个根据立体匹配(stereo matching)原理由成对图片计算深度图的动态程序结构,根据真实场景深度图同虚拟模型深度信息比较获得精确的遮挡处理结果。基于深度值的遮挡处理由于只需要成对的场景图片就可以完成,因此不受场景大JJ,$D复杂度的限制,不需要大量的预先准备工作,适用范围更加广泛。同时由于采用立体匹配原理计算深度图,遮挡效果取决于深度图计算精度。然而深度图的计算和比较往往花费较多的计算时间,使得整个处理过程很难达到实时性的要求。Lu and Smith(2009)提出了一个利用GPU加速计算深度处理的方法,使得计算速度大幅度提高(约20倍)。

■网友
可以看到的是,对手指这种移动中的物体,虚拟画面还是会遮挡住手指的。所以实际上很简单,hololens在启动的时候会对房间进行一个即时的扫描建模,在这个时候hololens理解了房间的空间结构,家具等物体的摆放位置。所以虚拟画面就会通过计算被某些应该会挡住它的东西挡住。这并没有什么根本性的技术难度。难的是对活动物体的遮挡关系的计算和即时的渲染。而实际上微软在这一块也做的差不多了,Kinect的holodesk


推荐阅读