一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf

上传人:大师****2 文档编号:5584969 上传时间:2019-02-20 格式:PDF 页数:11 大小:745.40KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410195747.7

申请日:

2014.05.09

公开号:

CN103957400A

公开日:

2014.07.30

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):H04N 13/00申请公布日:20140730|||实质审查的生效IPC(主分类):H04N 13/00申请日:20140509|||公开

IPC分类号:

H04N13/00; H04N13/04; G02B27/22

主分类号:

H04N13/00

申请人:

北京乐成光视科技发展有限公司

发明人:

崔华坤; 丁凌; 何林; 杨岭; 张成浩

地址:

100025 北京市朝阳区朝阳路67号财满街7号楼602

优先权:

专利代理机构:

北京市百伦律师事务所 11433

代理人:

周红力;姜莹

PDF下载: PDF下载
内容摘要

本发明提出一种基于Unity3D游戏引擎的裸眼3D显示系统,根据计算的视点子像素映射矩阵编写在GPU上运行的着色器Shader,该Shader包含顶点Shader和片段Shader。在Unity3D软件中创建多台立体相机,并按照一定的结构位置进行排布。最后,每台立体相机输出的渲染贴图与Shader进行采样和融合处理,将获得的合成图像输出到裸眼3D显示屏中,实现裸眼3D显示。

权利要求书

权利要求书
1.  一种基于Unity3D游戏引擎的裸眼3D显示系统,其特征在于:用于裸眼3D显示装置的2D显示屏的子像素结构应满足如下:一个完整像素由1R1G1B三种子像素灯组成,在水平方向上按红、绿、蓝或蓝、绿、红循环排布;在垂直方向上为红、绿、蓝的同一色,每个子像素在水平和垂直方向上的间距均保持相等。 

2.  根据权利要求1所述的基于Unity3D游戏引擎的裸眼3D显示系统,其特征在于:通过将狭缝光栅或柱镜光栅装配于2D显示屏的前方或后方,其中,狭缝光栅的参数设计满足如下特征: 
a)光栅常数d,即光栅周期的计算公式为: 

其中,K为视点数,s为相邻视点间距,是由视点组合方式决定的,每一对视点组合在观看平面的间距与人眼的瞳距e相等,相邻视点间距为: 

其中,ΔK为每一对视点组合之间所包含的视区数,双眼瞳距通常取e=65mm; 
b)光栅与2D显示屏的间距,即屏栅距l的计算公式为: 

其中,H为观看距离,也就是观看者距离2D显示屏的距离; 
另外,柱镜光栅的参数设计满足如下特征: 
a)光栅常数d,即光栅周期的计算公式为: 

b)柱镜光栅的厚度t的计算公式为: 

其中,n为柱状透镜的折射率,是由柱栅材料决定的; 
c)柱镜光栅的曲率半径r的计算公式为: 


3.  根据权利要求1所述的基于Unity3D游戏引擎的裸眼3D显示系统,其特征在于:利用Unity3D游戏引擎实现裸眼3D显示技术的思路如下: 
a)在Unity3D软件中建立场景,物体模型通过3ds Max、Maya模型制作软件制作后导入到Unity3D场景,并在场景中摆放多台虚拟的立体相机;每台虚拟相机在目标贴图位置添加渲染贴图Render Texture,在运行时实时更新;各个相机的设置参数应保持一致,且保持同步拍摄;多台虚拟立体相机之间按照一定的结构进行布置,保证进入观察者左右眼的两幅视差图像的视差量在潘弄区范围之内,即大脑可以将两幅不同的视差图像融合成一个物体,而不致于出现重影,通常立体相机的摆放结构有平行式、会聚式、离轴平行式及弧形式4种结构; 
b)根据2D显示屏参数及光栅参数,计算视点子像素映射映射矩阵,确定2D显示屏上给定的RGB子像素应该取自哪个视点的RGB分量,多视点子像素映射矩阵的计算公式为: 

其中,(k,l)为RGB子像素的坐标位置,koff表示2D显示屏左上边缘与光栅单元边缘点的水平位移量,α为光栅轴相对于LCD显示屏垂直轴的倾斜夹角,X为一个光栅周期在水平方向上覆盖RGB子像素的个数,Ntot表示总视点个数,也就是参与合成的视差图像数量; 
c)把得到的视点子像素映射矩阵编写到着色器Shader中,利用Shader在GPU上对相机渲染的多张渲染贴图进行子像素级别的采样处理,并将经过采样处理后的多张视差图像相加,得到最终的合成图像;编写的Shader分为顶点Shader和片段Shader两种类型,通过顶点Shader处理和变换渲染到屏幕上的网格物体的顶点位置,顶点Shader的输出结果传递给流水线的下一步,几何体的网格经过硬件的栅格化后,处于流水线上的片段Shader会被执行,片段Shader会对一个片段进行各种测试,最终测试成功的片段会被写入渲染的输出帧 中,从而成为显示器屏幕上的一个可见像素; 
d)将合成图像输出到裸眼3D显示器屏幕上,利用光栅的分光作用,使不同视差图像的光线在空间分离,当观察者在合适的观看位置处,左右眼可分别接收到来自不同视点的信息,从而产生立体视觉。 

说明书

说明书一种基于Unity3D游戏引擎的裸眼3D显示系统
技术领域
本发明涉及裸眼3D显示领域,尤其涉及一种基于Unity3D游戏引擎的3D显示系统。
背景技术
裸眼3D显示是不需要佩戴辅助设备(如红蓝、偏振、快门眼镜或者液晶头盔等)的一种显示技术,它在航空航天、军事、医学、广告设计和娱乐互动等领域有着广泛的应用背景。
目前,主流的裸眼3D显示技术主要是基于狭缝光栅和柱镜光栅来实现的,狭缝光栅是由透光和挡光的光栅条组成,通过对光线的遮挡作用,来实现不同视点图像的空间分离,而柱镜光栅是利用柱面透镜对光线的折射作用,使光线在空间发生偏转,从而实现与狭缝光栅相似的效果,这两种方式都属于空间复用的裸眼3D显示技术。
通常,为了获得更好的立体效果,往往采用多幅视差图像进行合成,观看者在不同观看位置只要看到其中的两幅图像就可以在大脑皮层中产生立体视觉,且随着观看者的水平移动,可以看到物体的不同角度侧面,进而产生运动视差。
而Unity3D是Unity Technologies公司开发的一款3D游戏引擎,这款引擎因其强大的跨平台开发特性、绚丽的3D渲染效果以及自由丰富的人机交互功能而闻名出众。其跨平台开发特性可以节省开发时间,加快游戏开发进度,因为平台之间的差异较大,比如屏幕尺寸、操作方式、硬件条件等的不同均会给开发者造成巨大麻烦,而Unity3D的跨平台特性恰能省去开发者在不同的平台之间的移植开发工作。Unity3D是一款专门用来制作游戏场景、建筑设计、动画展示的软件,它在模型方面只内嵌了最基本的立体体、球体、平面、圆柱体等,实际应用中需要从外界导入制作好的模型。Unity3D对于主流的艺术设计软件制作出来的模型,如3ds Max、Maya等,几乎都可兼容,且Unity3D相较于3ds Max、Maya 等的优势在于其自由丰富的人机交互功能。
假若利用Unity3D游戏引擎实现裸眼3D显示功能,便可以极大地扩展Unity3D游戏引擎软件和裸眼3D显示技术这两者的应用领域,且可以将已有的基于Unity3D的游戏经过些许修改便可实现裸眼3D显示,从而在很大程度上降低了裸眼3D显示的视频源制作成本,并且可以将Unity3D丰富的交互功能移植到裸眼3D显示技术中来,并借助于Unity3D强大的模型兼容能力丰富裸眼3D的显示内容及素材。
发明内容
人眼在观看自然物体时,两眼是从不同角度观看物体,从而在左右眼视网膜上形成稍有差异的像,然后再经过大脑分析融合形成立体视觉。裸眼3D的显示过程就是模拟人眼的立体视觉过程。
下面将本发明专利分为两大部分进行解释:第一是裸眼3D显示装置的设计方法及各项参数特征,裸眼3D显示装置主要是基于光栅的分光作用,将不同视点的图像信息在空间实现分离,从而保证进入人眼左右眼的信息分属不同视点,且视点间的视差量在人脑可融合的范围之内。通常光栅可以为狭缝光栅和柱镜光栅。第二是对Unity3D游戏引擎进行开发,通过架设多台虚拟立体相机,并借助于编写GPU上运行的着色器程序,使Unity3D最终渲染输出的图像满足裸眼3D显示装置的要求。
一、裸眼3D显示装置设计方法
裸眼3D显示装置的光栅可以为狭缝光栅,也可以为柱镜光栅,狭缝光栅是由透光和挡光的光栅条组成,通过对光线的遮挡作用,来实现不同视点图像的空间分离,而柱镜光栅是利用柱面透镜对光线的折射作用,使光线在空间发生偏转,从而实现与狭缝光栅相似的效果,这两种方式都属于空间复用的裸眼3D显示技术。
值得说明的是,并非所有的2D显示屏均可以用于裸眼3D显示,裸眼3D显示装置对2D显示屏的子像素结构要求特别高,一个完整像素由1R1G1B三种子像素灯组成,子像素排布方式且应满足如下规则:在水平方向上按红、绿、蓝或蓝、绿、红循环排布;在垂直方向上为红、绿、蓝的同一色,每个子像素在水平和垂直方向上的间距均应保持相等。
下面首先给出狭缝光栅主要参数的设计方法:
1.首先,光栅常数d,即光栅周期的计算公式如下:
d=Kspp+s---(1)]]>
其中,K为视点数,对于拥有K视点的裸眼3D显示器,需将K个视点的视差图像信息合成为一幅合成图像并显示在2D显示屏上。2D显示屏的分辨率是固定的,那么,单幅视差图像的分辨率只能占到2D显示屏分辨率的1/K,相应的3D分辨率也下降为2D显示屏分辨率的1/K。因此需要注意的是,采用多视点技术可提高立体观看自由度,视点数越多,则立体观看自由度越大,但同时使3D分辨率损失越严重,因此,需合理选择视点数,在立体观看自由度与立体分辨率两者间取得平衡。通常,裸眼3D显示器的视点数为8。
公式(1)中的s为相邻视点间距,是由视点组合方式决定的,这里以8视点为例,组合方式可以为1-4,2-5,3-6,4-7,5-8或者1-2,2-3,3-4...等其他组合。为了让左右眼分别接收到每一对视点组合的两个视差图像信息,须使每一对视点组合在观看平面的间距与人眼的瞳距e相等,则相邻视点间距为
s=eΔK---(2)]]>
其中,ΔK为每一对视点组合之间所包含的视区数,双眼瞳距通常取e=65mm。
2.光栅与2D显示屏的间距,即屏栅距l的计算公式为:
l=Hpp+s---(3)]]>
其中,H为观看距离,也就是观看者距离2D显示屏的距离。
另外,给出柱镜光栅主要参数的设计方法:
柱栅研究思路是根据2D显示屏参数和立体观看条件来设计和优化柱透镜光栅。柱透镜光栅的基本参数包括折射率n、厚度t、焦距f、曲率半径r、光栅常数d和屏栅距l。其中,折射率n是由柱栅材料决定,通常的PS(又称聚苯乙烯)的折射率为1.6。柱镜光栅的设计关键在于对焦距f、曲率半径r、厚度t和光栅常数d的设计,使其与具体的2D显示屏相匹配而得到性能优良的柱透镜光栅3D显示器。值得说明的是,本文中 将屏栅距作为已知量,而屏栅距和柱栅厚度两者任一个均可作为已知量,这要看实际的加工和装配情况。
柱镜光栅跟狭缝光栅的分光原理虽不一样,但是在实现裸眼3D显示的思路上基本一致,柱镜光栅计算公式中的物理量名称均与狭缝光栅一致,因此这里不再重复说明。
1.首先,光栅常数d,即光栅周期的计算公式如下:
d=Ksps+p---(4)]]>
2.柱镜光栅的厚度t的计算公式如下:
t=Hnp-nl(s+p)s+np---(5)]]>
3.柱镜光栅的曲率半径的计算公式如下:
r=p(n-1)[H+l(n-1)]s+np---(6)]]>
设计柱透镜光栅就是设计其焦距f、曲率半径r、厚度t和光栅常数d,使其与具体的2D显示屏相匹配而得到性能优良的柱透镜光栅3D显示器。
二、基于Unity3D游戏引擎的裸眼3D显示技术的具体实现思路:
1、建立场景,摆放多台立体相机
实现立体视觉的首要条件是要给观看者左右眼提供稍有差异的视差图像。在Unity3D软件中,可以通过合理布局多台虚拟立体相机,对同一个场景进行同步拍摄来获得多幅视差图像。立体相机需按一定结构摆放来拍摄场景以获得合理的视差图像,其摆放结构主要有平行式、会聚式、离轴平行式及弧形式4种结构。
在每台相机的目标贴图中加入渲染贴图Render Texture,渲染贴图是一种特殊的纹理类型,能够在运行时产生和更新。要使用渲染贴图,首先要创建一个新的渲染纹理,并且指定一个摄像机对其进行渲染,然后就可以像常规的纹理一样为材质添加渲染纹理。
2、计算视点映射矩阵
首先,确定2D显示屏上给定的RGB子像素应该取自哪个视点的RGB分量,式(7)给出了多视点子像素映射矩阵的计算公式:
Q=(k+koff-3ltanα)modXXNtot---(7)]]>
其中,(k,l)为RGB子像素的坐标位置,koff表示2D显示屏左上边缘与光栅单元边缘点的水平位移量,α为光栅轴相对于LCD显示屏垂直轴的倾斜夹角,X为一个光栅周期在水平方向上覆盖RGB子像素的个数,Ntot表示总视点个数,也就是参与合成的视差图像数量。
根据上式可计算出2D显示屏上的每个子像素的灰度值应该取自于哪幅视差图像的相应坐标位置的灰度值。
3、Shader处理渲染贴图
将视点映射矩阵编写到Shader中,利用Shader对相机渲染的多张渲染贴图进行子像素级别的采样处理,并将经过采样处理的多张视差图像相加,得到最终的合成图像。
其中,Shader也称之为着色器,是运行在GPU上的程序,用来对三维物体进行着色处理、光影计算和纹理颜色呈现等。随着GPU硬件性能的提升,Shader的编程方式经历了从最初的固定渲染管线,到可编程渲染管线的发展。固定渲染管线是支持老旧显卡的一种模式,它写出的Shader是基于顶点照明的,相较于逐像素的照明方式,这种方式的照明计算速度更快,但效果会差一些。固定管线是标准的几何、光照管线,它控制着世界、视投影变换及固定光照控制和纹理混合,基本所有的显卡都能正常运行。可编程渲染管线对渲染管线中的顶点运算和像素运算分别进行编程处理。Shader有顶点Shader(Vertex Shader)和片段Shader(Fragment Shader,又称为Pixel Shader)两种基本类型,顶点Shader可以处理和变换渲染到屏幕上的网格物体的顶点位置,顶点Shader的输出结果将会传递给流水线的下一步。几何体的网格经过硬件的栅格化后,处于流水线上的片段Shader会被执行,片段Shader会对一个片段进行各种测试,最终测试成功的片段会被写入渲染的输出帧中,从而成为显示器屏幕上的一个可见像素。
4、合成图像输出,实现裸眼3D显示
将合成图像写入到渲染阵列中,输出到显示器屏幕上。然后,利用光栅的分光作用,使不同视差图像的光线在空间分离,当观察者在合适 的观看位置处,左右眼可分别接收到来自不同视点的信息,从而产生立体视觉。
附图说明
下面结合附图对本发明做进一步说明。
图1是本发明涉及的流程图;
图2是本发明涉及的Unity3D相机结构具体实施例;
图3是本发明计算的视点子像素映射矩阵具体实施例;
图4是本发明合成的视差图像具体实施例;
图5是本发明涉及的裸眼3D显示器具体实施例。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
图1为本发明所涉及的思路流程图。首先,在Unity3D游戏引擎软件中建立场景,游戏物体可以在Unity3D中自建,也可以从其他模型制作软件中导入。然后,在场景中建立多台虚拟相机,并按照一定的结构要求进行摆放,在每个相机身上加渲染贴图,以便与相应的Shader相互作用。其次,根据计算的视点子像素映射矩阵,编写相应的Shader,对每台相机渲染的贴图进行采样处理,并得到合成图像。最后,写入到GPU的渲染输出帧,输出到裸眼3D显示屏,获得立体图像。
图2是本发明涉及的Unity3D相机结构具体实施例,这里给出的是平行会聚式立体相机结构,并以9台相机为例。其中,1为多台相机的光轴2的会聚平面,也称为零视差面。3为多台相机的成像系统中心点所在平面,4为虚拟相机。
图3是本发明计算的视点子像素映射矩阵具体实施例。其中,图中的细长方格代表一个子像素,每个细长方格中的数字为该子像素所对应的视点数,也就是矩阵Q中的值。
图4是本发明合成的视差图像具体实施例。图中的汽车是在3ds Max制作的模型并导出成FBX格式,导入到Unity3D场景中,加上背景及光影,然后根据前面所述布置多台相机,编写脚本及Shader对多台相机渲染出来的贴图纹理进行处理,最终获得如图4所示的合成图像。将该合成图像输出显示到裸眼3D显示屏上,观看者在最佳观看距离处,便可以 看到飞出屏幕的汽车。
图5是本发明涉及的裸眼3D显示器具体实施例,这里给出的是装置俯视图。其中,5为2D显示屏的子像素间距p,6为2D显示屏,可以为LED,也可以为LCD,7为狭缝光栅,8为狭缝光栅7的光栅常数,9为狭缝光栅7距离2D显示屏6的距离,10为观看距离。值得说明的是,本发明专利中涉及的光栅不仅局限于狭缝光栅,同样适用于柱镜光栅,这里仅是以狭缝光栅为例进行装置说明。
以上所述仅为本发明创造的较佳实施例,并不用以限制本发明创造,凡在本发明创造的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明创造的保护范围之内。

一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf_第1页
第1页 / 共11页
一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf_第2页
第2页 / 共11页
一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf》由会员分享,可在线阅读,更多相关《一种基于UNITY3D游戏引擎的裸眼3D显示系统.pdf(11页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103957400 A (43)申请公布日 2014.07.30 CN 103957400 A (21)申请号 201410195747.7 (22)申请日 2014.05.09 H04N 13/00(2006.01) H04N 13/04(2006.01) G02B 27/22(2006.01) (71)申请人 北京乐成光视科技发展有限公司 地址 100025 北京市朝阳区朝阳路 67 号财 满街 7 号楼 602 (72)发明人 崔华坤 丁凌 何林 杨岭 张成浩 (74)专利代理机构 北京市百伦律师事务所 11433 代理人 周红力 姜莹 (54) 发明名称 一种。

2、基于Unity3D游戏引擎的裸眼3D显示系 统 (57) 摘要 本发明提出一种基于 Unity3D 游戏引擎的裸 眼 3D 显示系统, 根据计算的视点子像素映射矩阵 编写在 GPU 上运行的着色器 Shader, 该 Shader 包 含顶点 Shader 和片段 Shader。在 Unity3D 软件 中创建多台立体相机, 并按照一定的结构位置进 行排布。最后, 每台立体相机输出的渲染贴图与 Shader 进行采样和融合处理, 将获得的合成图像 输出到裸眼 3D 显示屏中, 实现裸眼 3D 显示。 (51)Int.Cl. 权利要求书 2 页 说明书 5 页 附图 3 页 (19)中华人民共和。

3、国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书5页 附图3页 (10)申请公布号 CN 103957400 A CN 103957400 A 1/2 页 2 1. 一种基于 Unity3D 游戏引擎的裸眼 3D 显示系统, 其特征在于 : 用于裸眼 3D 显示装 置的2D显示屏的子像素结构应满足如下 : 一个完整像素由1R1G1B三种子像素灯组成, 在水 平方向上按红、 绿、 蓝或蓝、 绿、 红循环排布 ; 在垂直方向上为红、 绿、 蓝的同一色, 每个子像 素在水平和垂直方向上的间距均保持相等。 2. 根据权利要求 1 所述的基于 Unity3D 游戏引擎的裸眼 3D 显示系统。

4、, 其特征在于 : 通 过将狭缝光栅或柱镜光栅装配于 2D 显示屏的前方或后方, 其中, 狭缝光栅的参数设计满足 如下特征 : a) 光栅常数 d, 即光栅周期的计算公式为 : 其中, K 为视点数, s 为相邻视点间距, 是由视点组合方式决定的, 每一对视点组合在观 看平面的间距与人眼的瞳距 e 相等, 相邻视点间距为 : 其中, K 为每一对视点组合之间所包含的视区数, 双眼瞳距通常取 e 65mm ; b) 光栅与 2D 显示屏的间距, 即屏栅距 l 的计算公式为 : 其中, H 为观看距离, 也就是观看者距离 2D 显示屏的距离 ; 另外, 柱镜光栅的参数设计满足如下特征 : a) 光。

5、栅常数 d, 即光栅周期的计算公式为 : b) 柱镜光栅的厚度 t 的计算公式为 : 其中, n 为柱状透镜的折射率, 是由柱栅材料决定的 ; c) 柱镜光栅的曲率半径 r 的计算公式为 : 。 3. 根据权利要求 1 所述的基于 Unity3D 游戏引擎的裸眼 3D 显示系统, 其特征在于 : 利 用 Unity3D 游戏引擎实现裸眼 3D 显示技术的思路如下 : a)在Unity3D软件中建立场景, 物体模型通过3ds Max、 Maya模型制作软件制作后导入 到 Unity3D 场景, 并在场景中摆放多台虚拟的立体相机 ; 每台虚拟相机在目标贴图位置添 加渲染贴图Render Textu。

6、re, 在运行时实时更新 ; 各个相机的设置参数应保持一致, 且保持 同步拍摄 ; 多台虚拟立体相机之间按照一定的结构进行布置, 保证进入观察者左右眼的两 幅视差图像的视差量在潘弄区范围之内, 即大脑可以将两幅不同的视差图像融合成一个物 体, 而不致于出现重影, 通常立体相机的摆放结构有平行式、 会聚式、 离轴平行式及弧形式 4 权 利 要 求 书 CN 103957400 A 2 2/2 页 3 种结构 ; b)根据2D显示屏参数及光栅参数, 计算视点子像素映射映射矩阵, 确定2D显示屏上给 定的 RGB 子像素应该取自哪个视点的 RGB 分量, 多视点子像素映射矩阵的计算公式为 : 其中,。

7、 (k,l) 为 RGB 子像素的坐标位置, koff表示 2D 显示屏左上边缘与光栅单元边缘点 的水平位移量, 为光栅轴相对于LCD显示屏垂直轴的倾斜夹角, X为一个光栅周期在水平 方向上覆盖 RGB 子像素的个数, Ntot表示总视点个数, 也就是参与合成的视差图像数量 ; c) 把得到的视点子像素映射矩阵编写到着色器 Shader 中, 利用 Shader 在 GPU 上对相 机渲染的多张渲染贴图进行子像素级别的采样处理, 并将经过采样处理后的多张视差图像 相加, 得到最终的合成图像 ; 编写的Shader分为顶点Shader和片段Shader两种类型, 通过 顶点 Shader 处理和。

8、变换渲染到屏幕上的网格物体的顶点位置, 顶点 Shader 的输出结果传 递给流水线的下一步, 几何体的网格经过硬件的栅格化后, 处于流水线上的片段 Shader 会 被执行, 片段 Shader 会对一个片段进行各种测试, 最终测试成功的片段会被写入渲染的输 出帧 中, 从而成为显示器屏幕上的一个可见像素 ; d) 将合成图像输出到裸眼 3D 显示器屏幕上, 利用光栅的分光作用, 使不同视差图像的 光线在空间分离, 当观察者在合适的观看位置处, 左右眼可分别接收到来自不同视点的信 息, 从而产生立体视觉。 权 利 要 求 书 CN 103957400 A 3 1/5 页 4 一种基于 Uni。

9、ty3D 游戏引擎的裸眼 3D 显示系统 技术领域 0001 本发明涉及裸眼 3D 显示领域, 尤其涉及一种基于 Unity3D 游戏引擎的 3D 显示系 统。 背景技术 0002 裸眼 3D 显示是不需要佩戴辅助设备 ( 如红蓝、 偏振、 快门眼镜或者液晶头盔等 ) 的一种显示技术, 它在航空航天、 军事、 医学、 广告设计和娱乐互动等领域有着广泛的应用 背景。 0003 目前, 主流的裸眼 3D 显示技术主要是基于狭缝光栅和柱镜光栅来实现的, 狭缝光 栅是由透光和挡光的光栅条组成, 通过对光线的遮挡作用, 来实现不同视点图像的空间分 离, 而柱镜光栅是利用柱面透镜对光线的折射作用, 使光线。

10、在空间发生偏转, 从而实现与狭 缝光栅相似的效果, 这两种方式都属于空间复用的裸眼 3D 显示技术。 0004 通常, 为了获得更好的立体效果, 往往采用多幅视差图像进行合成, 观看者在不同 观看位置只要看到其中的两幅图像就可以在大脑皮层中产生立体视觉, 且随着观看者的水 平移动, 可以看到物体的不同角度侧面, 进而产生运动视差。 0005 而 Unity3D 是 Unity Technologies 公司开发的一款 3D 游戏引擎, 这款引擎因其 强大的跨平台开发特性、 绚丽的 3D 渲染效果以及自由丰富的人机交互功能而闻名出众。其 跨平台开发特性可以节省开发时间, 加快游戏开发进度, 因为。

11、平台之间的差异较大, 比如屏 幕尺寸、 操作方式、 硬件条件等的不同均会给开发者造成巨大麻烦, 而 Unity3D 的跨平台特 性恰能省去开发者在不同的平台之间的移植开发工作。Unity3D 是一款专门用来制作游戏 场景、 建筑设计、 动画展示的软件, 它在模型方面只内嵌了最基本的立体体、 球体、 平面、 圆 柱体等, 实际应用中需要从外界导入制作好的模型。 Unity3D对于主流的艺术设计软件制作 出来的模型, 如 3ds Max、 Maya 等, 几乎都可兼容, 且 Unity3D 相较于 3ds Max、 Maya 等的优 势在于其自由丰富的人机交互功能。 0006 假若利用 Unity。

12、3D 游戏引擎实现裸眼 3D 显示功能, 便可以极大地扩展 Unity3D 游 戏引擎软件和裸眼3D显示技术这两者的应用领域, 且可以将已有的基于Unity3D的游戏经 过些许修改便可实现裸眼 3D 显示, 从而在很大程度上降低了裸眼 3D 显示的视频源制作成 本, 并且可以将 Unity3D 丰富的交互功能移植到裸眼 3D 显示技术中来, 并借助于 Unity3D 强大的模型兼容能力丰富裸眼 3D 的显示内容及素材。 发明内容 0007 人眼在观看自然物体时, 两眼是从不同角度观看物体, 从而在左右眼视网膜上形 成稍有差异的像, 然后再经过大脑分析融合形成立体视觉。裸眼 3D 的显示过程就是。

13、模拟人 眼的立体视觉过程。 0008 下面将本发明专利分为两大部分进行解释 : 第一是裸眼 3D 显示装置的设计方法 及各项参数特征, 裸眼 3D 显示装置主要是基于光栅的分光作用, 将不同视点的图像信息在 说 明 书 CN 103957400 A 4 2/5 页 5 空间实现分离, 从而保证进入人眼左右眼的信息分属不同视点, 且视点间的视差量在人脑 可融合的范围之内。通常光栅可以为狭缝光栅和柱镜光栅。第二是对 Unity3D 游戏引擎进 行开发, 通过架设多台虚拟立体相机, 并借助于编写 GPU 上运行的着色器程序, 使 Unity3D 最终渲染输出的图像满足裸眼 3D 显示装置的要求。 0。

14、009 一、 裸眼 3D 显示装置设计方法 0010 裸眼 3D 显示装置的光栅可以为狭缝光栅, 也可以为柱镜光栅, 狭缝光栅是由透光 和挡光的光栅条组成, 通过对光线的遮挡作用, 来实现不同视点图像的空间分离, 而柱镜光 栅是利用柱面透镜对光线的折射作用, 使光线在空间发生偏转, 从而实现与狭缝光栅相似 的效果, 这两种方式都属于空间复用的裸眼 3D 显示技术。 0011 值得说明的是, 并非所有的 2D 显示屏均可以用于裸眼 3D 显示, 裸眼 3D 显示装置 对2D显示屏的子像素结构要求特别高, 一个完整像素由1R1G1B三种子像素灯组成, 子像素 排布方式且应满足如下规则 : 在水平方。

15、向上按红、 绿、 蓝或蓝、 绿、 红循环排布 ; 在垂直方向 上为红、 绿、 蓝的同一色, 每个子像素在水平和垂直方向上的间距均应保持相等。 0012 下面首先给出狭缝光栅主要参数的设计方法 : 0013 1. 首先, 光栅常数 d, 即光栅周期的计算公式如下 : 0014 0015 其中, K 为视点数, 对于拥有 K 视点的裸眼 3D 显示器, 需将 K 个视点的视差图像信 息合成为一幅合成图像并显示在 2D 显示屏上。2D 显示屏的分辨率是固定的, 那么, 单幅视 差图像的分辨率只能占到 2D 显示屏分辨率的 1/K, 相应的 3D 分辨率也下降为 2D 显示屏分 辨率的1/K。 因此需。

16、要注意的是, 采用多视点技术可提高立体观看自由度, 视点数越多, 则立 体观看自由度越大, 但同时使 3D 分辨率损失越严重, 因此, 需合理选择视点数, 在立体观看 自由度与立体分辨率两者间取得平衡。通常, 裸眼 3D 显示器的视点数为 8。 0016 公式 (1) 中的 s 为相邻视点间距, 是由视点组合方式决定的, 这里以 8 视点为例, 组合方式可以为 1-4,2-5,3-6,4-7,5-8 或者 1-2,2-3,3-4. 等其他组合。为了让左右眼 分别接收到每一对视点组合的两个视差图像信息, 须使每一对视点组合在观看平面的间距 与人眼的瞳距 e 相等, 则相邻视点间距为 0017 0。

17、018 其中, K 为每一对视点组合之间所包含的视区数, 双眼瞳距通常取 e 65mm。 0019 2. 光栅与 2D 显示屏的间距, 即屏栅距 l 的计算公式为 : 0020 0021 其中, H 为观看距离, 也就是观看者距离 2D 显示屏的距离。 0022 另外, 给出柱镜光栅主要参数的设计方法 : 0023 柱栅研究思路是根据 2D 显示屏参数和立体观看条件来设计和优化柱透镜光栅。 柱透镜光栅的基本参数包括折射率 n、 厚度 t、 焦距 f、 曲率半径 r、 光栅常数 d 和屏栅距 l。 其中, 折射率 n 是由柱栅材料决定, 通常的 PS( 又称聚苯乙烯 ) 的折射率为 1.6。柱镜。

18、光栅 说 明 书 CN 103957400 A 5 3/5 页 6 的设计关键在于对焦距 f、 曲率半径 r、 厚度 t 和光栅常数 d 的设计, 使其与具体的 2D 显示 屏相匹配而得到性能优良的柱透镜光栅 3D 显示器。值得说明的是, 本文中将屏栅距作为已 知量, 而屏栅距和柱栅厚度两者任一个均可作为已知量, 这要看实际的加工和装配情况。 0024 柱镜光栅跟狭缝光栅的分光原理虽不一样, 但是在实现裸眼 3D 显示的思路上基 本一致, 柱镜光栅计算公式中的物理量名称均与狭缝光栅一致, 因此这里不再重复说明。 0025 1. 首先, 光栅常数 d, 即光栅周期的计算公式如下 : 0026 0。

19、027 2. 柱镜光栅的厚度 t 的计算公式如下 : 0028 0029 3. 柱镜光栅的曲率半径的计算公式如下 : 0030 0031 设计柱透镜光栅就是设计其焦距 f、 曲率半径 r、 厚度 t 和光栅常数 d, 使其与具体 的 2D 显示屏相匹配而得到性能优良的柱透镜光栅 3D 显示器。 0032 二、 基于 Unity3D 游戏引擎的裸眼 3D 显示技术的具体实现思路 : 0033 1、 建立场景, 摆放多台立体相机 0034 实现立体视觉的首要条件是要给观看者左右眼提供稍有差异的视差图像。在 Unity3D 软件中, 可以通过合理布局多台虚拟立体相机, 对同一个场景进行同步拍摄来获得。

20、 多幅视差图像。立体相机需按一定结构摆放来拍摄场景以获得合理的视差图像, 其摆放结 构主要有平行式、 会聚式、 离轴平行式及弧形式 4 种结构。 0035 在每台相机的目标贴图中加入渲染贴图 Render Texture, 渲染贴图是一种特殊的 纹理类型, 能够在运行时产生和更新。要使用渲染贴图, 首先要创建一个新的渲染纹理, 并 且指定一个摄像机对其进行渲染, 然后就可以像常规的纹理一样为材质添加渲染纹理。 0036 2、 计算视点映射矩阵 0037 首先, 确定 2D 显示屏上给定的 RGB 子像素应该取自哪个视点的 RGB 分量, 式 (7) 给出了多视点子像素映射矩阵的计算公式 : 0。

21、038 0039 其中, (k,l) 为 RGB 子像素的坐标位置, koff表示 2D 显示屏左上边缘与光栅单元边 缘点的水平位移量, 为光栅轴相对于 LCD 显示屏垂直轴的倾斜夹角, X 为一个光栅周期 在水平方向上覆盖 RGB 子像素的个数, Ntot表示总视点个数, 也就是参与合成的视差图像数 量。 0040 根据上式可计算出 2D 显示屏上的每个子像素的灰度值应该取自于哪幅视差图像 的相应坐标位置的灰度值。 0041 3、 Shader 处理渲染贴图 说 明 书 CN 103957400 A 6 4/5 页 7 0042 将视点映射矩阵编写到 Shader 中, 利用 Shader 。

22、对相机渲染的多张渲染贴图进行 子像素级别的采样处理, 并将经过采样处理的多张视差图像相加, 得到最终的合成图像。 0043 其中, Shader 也称之为着色器, 是运行在 GPU 上的程序, 用来对三维物体进行着色 处理、 光影计算和纹理颜色呈现等。随着 GPU 硬件性能的提升, Shader 的编程方式经历了 从最初的固定渲染管线, 到可编程渲染管线的发展。固定渲染管线是支持老旧显卡的一种 模式, 它写出的 Shader 是基于顶点照明的, 相较于逐像素的照明方式, 这种方式的照明计 算速度更快, 但效果会差一些。 固定管线是标准的几何、 光照管线, 它控制着世界、 视投影变 换及固定光照。

23、控制和纹理混合, 基本所有的显卡都能正常运行。可编程渲染管线对渲染管 线中的顶点运算和像素运算分别进行编程处理。 Shader有顶点Shader(Vertex Shader)和 片段 Shader(Fragment Shader, 又称为 Pixel Shader) 两种基本类型, 顶点 Shader 可以处 理和变换渲染到屏幕上的网格物体的顶点位置, 顶点 Shader 的输出结果将会传递给流水 线的下一步。几何体的网格经过硬件的栅格化后, 处于流水线上的片段 Shader 会被执行, 片段 Shader 会对一个片段进行各种测试, 最终测试成功的片段会被写入渲染的输出帧中, 从而成为显示器。

24、屏幕上的一个可见像素。 0044 4、 合成图像输出, 实现裸眼 3D 显示 0045 将合成图像写入到渲染阵列中, 输出到显示器屏幕上。然后, 利用光栅的分光作 用, 使不同视差图像的光线在空间分离, 当观察者在合适的观看位置处, 左右眼可分别接收 到来自不同视点的信息, 从而产生立体视觉。 附图说明 0046 下面结合附图对本发明做进一步说明。 0047 图 1 是本发明涉及的流程图 ; 0048 图 2 是本发明涉及的 Unity3D 相机结构具体实施例 ; 0049 图 3 是本发明计算的视点子像素映射矩阵具体实施例 ; 0050 图 4 是本发明合成的视差图像具体实施例 ; 0051。

25、 图 5 是本发明涉及的裸眼 3D 显示器具体实施例。 具体实施方式 0052 下面结合附图和具体的实施方式对本发明作进一步的描述。 0053 图 1 为本发明所涉及的思路流程图。首先, 在 Unity3D 游戏引擎软件中建立场景, 游戏物体可以在 Unity3D 中自建, 也可以从其他模型制作软件中导入。然后, 在场景中建立 多台虚拟相机, 并按照一定的结构要求进行摆放, 在每个相机身上加渲染贴图, 以便与相应 的Shader相互作用。 其次, 根据计算的视点子像素映射矩阵, 编写相应的Shader, 对每台相 机渲染的贴图进行采样处理, 并得到合成图像。最后, 写入到 GPU 的渲染输出帧。

26、, 输出到裸 眼 3D 显示屏, 获得立体图像。 0054 图 2 是本发明涉及的 Unity3D 相机结构具体实施例, 这里给出的是平行会聚式立 体相机结构, 并以 9 台相机为例。其中, 1 为多台相机的光轴 2 的会聚平面, 也称为零视差 面。3 为多台相机的成像系统中心点所在平面, 4 为虚拟相机。 0055 图 3 是本发明计算的视点子像素映射矩阵具体实施例。其中, 图中的细长方格代 说 明 书 CN 103957400 A 7 5/5 页 8 表一个子像素, 每个细长方格中的数字为该子像素所对应的视点数, 也就是矩阵 Q 中的值。 0056 图 4 是本发明合成的视差图像具体实施例。

27、。图中的汽车是在 3ds Max 制作的模型 并导出成 FBX 格式, 导入到 Unity3D 场景中, 加上背景及光影, 然后根据前面所述布置多台 相机, 编写脚本及 Shader 对多台相机渲染出来的贴图纹理进行处理, 最终获得如图 4 所示 的合成图像。将该合成图像输出显示到裸眼 3D 显示屏上, 观看者在最佳观看距离处, 便可 以看到飞出屏幕的汽车。 0057 图5是本发明涉及的裸眼3D显示器具体实施例, 这里给出的是装置俯视图。 其中, 5 为 2D 显示屏的子像素间距 p, 6 为 2D 显示屏, 可以为 LED, 也可以为 LCD, 7 为狭缝光栅, 8 为狭缝光栅 7 的光栅常。

28、数, 9 为狭缝光栅 7 距离 2D 显示屏 6 的距离, 10 为观看距离。值得 说明的是, 本发明专利中涉及的光栅不仅局限于狭缝光栅, 同样适用于柱镜光栅, 这里仅是 以狭缝光栅为例进行装置说明。 0058 以上所述仅为本发明创造的较佳实施例, 并不用以限制本发明创造, 凡在本发明 创造的精神和原则之内所作的任何修改、 等同替换和改进等, 均应包含在本发明创造的保 护范围之内。 说 明 书 CN 103957400 A 8 1/3 页 9 图 1 图 2 说 明 书 附 图 CN 103957400 A 9 2/3 页 10 图 3 图 4 说 明 书 附 图 CN 103957400 A 10 3/3 页 11 图 5 说 明 书 附 图 CN 103957400 A 11 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1