其他 Unity3D实现3D立体游戏原理及过程

下面的教程是我今天整理的资料Unity3D实现3D立体游戏原理及过程,教大家一步步完成自己的3D立体游戏,并向大家介绍一些3D成像的原理。
    理论上,每个普通的非立体3d游戏,都可以改为3D立体游戏,看完这篇帖子,你们都可以把自己之前做过的3D游戏改为立体游戏,那效果。。。
   一直想尝试用unity做3D立体游戏,昨天终于入手了一台3D显示器,并成功模拟出3D信号,出现了3D效果:
    带上眼镜后的观看效果不错,个人感觉比一般的3D电影的立体效果还要强。


         第一步:了解偏振式3D成像原理
         偏振式3D成像是根据人眼成像原理发明的,人眼看到的景象呈现立体感,是由于双眼所观察到的景象有略微的差别,因为瞳距(两眼球之间的距离)导致观察的物体的角度不同。
所谓偏振成像就是将两幅不同偏振态的图像送到双眼,每只眼睛只允许看到其中一幅,我们用unity制作3D游戏,其实就是制作这两幅图像。或者说模拟3D信号。

       第二步:了解现在的硬件技术能帮我们做什么,我们需要做什么
       在3D显示器出现之前,我们要做3D立体游戏,估计只能用两台投影仪来实现3D效果了,不过现在的3D液晶显示器大多都是集成好一键转3D功能,在这里这个转3D功能指的是自动识别左右半宽的信号(上下的就不考虑了,一般都是左右),并将其融合,转换为偏振的3D信号,并通过3D眼镜观看到3D效果。当然现在的3D显示器经常会宣传说一键2D转3D功能,这个功能不是我刚才说的融合,而是显示器根据2D影像自动给加上景深,生成左右两幅图像,其实是伪3D,试了一下,的确略微有些效果,不过效果真的不怎么样。。。我们这里还是做真的3D立体吧。知道了显示器能够帮我们自动融合左右图像后,我们就只需要模拟出左右半宽的图像就OK了

       第三步:如何用Unity3D模拟出3D信号
       这步才是我们要做的重点。要模拟出真实的3D立体影像,首先要知道人眼成像原理,上面第一步说了,因为我们有两只眼睛,并分开一定距离(大约150px),这样就出现了距离感。我们都知道unity中的摄像机是模拟人的眼睛的,一般我们在unity中观察场景都是创建一个摄像机,当然就没有立体感了,要模拟人的眼睛,就要创建两个摄像机(好吧,废话一大堆,其实我就是想说,请先创建两个摄像机。。。)。
       把场景本来存在的主相机删掉,把创建的两个摄像机放在同一平面,分开很小的距离,角度调成一样,注意不是往中间看,而是平视,人的双眼也都是平视向前的,这个和焦距是两个概念,别弄混了,类似于下面这样:



        至于相距多少,这个视环境而定,两个摄像机之间的距离类似于人眼之间的距离。我们用自带的第一人称控制器来解释这个距离。导入第一人称控制,把这两个摄像机拖到第一人称控制器的摄像机下,作为子物体,把第一人称控制自带的相机关掉(enabled=false),就是把camera组件对号去掉。把左右相机的位置改为这样:
    左相机:


    右相机:

         对于第一人称控制器的大小来说,这个0.06的距离够用了,为什么说是够用了,不是正好,是因为距离大点小点都是可以的,距离越大,景深越大,看起来更清晰,好像是距离拉近了,不过给人观看的感觉更累了,这个很好理解,人的眼睛距离变大,就相当于人变成了巨人,或者眼前的景象拉近,也就是你把手指从远处拉到眼前的感觉,当近到一定程度是,你要看你的手指就会很吃力,要不就重影~~再近,就是斗鸡眼了,斗鸡眼的感觉,你懂的。。。

        如果距离拉近的话,3D感会渐渐变弱,最近就是两个相机重合,重合后就没有立体感了。所以这个距离要根据你看的场景而定,对于自带的第一人称控制器,它的大小作为人的大小的话,它所存在的场景比例就是固定的,此时的瞳距根据你想要的效果而定,具体可以在显示器上测试。

      当两个摄像机的距离固定后,怎么把影像分开呢?因为我们用3d显示器来融合,就不需要考虑unity的融合图像部分,只需要把两个相机的影像分为左右半宽同时输出即可。要达到这样的效果,用RenderTexture是个很好的解决方案,我们新建两个RenderTexture,分别用来显示左右两个相机的视野:



         把新建的两个RenderTexture放到plane上,并排放到一起,并新建一个垂直摄像机来单独显示这两个RenderTexture,这个摄像机也是我们最后看到的画面所使用的相机。所以它的depth要设置的高一点。

      大多数的3D显示器的屏幕比例都是1920*1080,也就是16:9,现在的3D视频分辨率大多也是这个比例,这样在全屏的时候就不会变形或者出现黑边,我们玩游戏全屏不失真的话,也要按这个比例(16:9),当然不全屏的话也是看不了3D的,因为左右半宽的窗体无法融合,3D显示器也不认识这样的3D信号。

      再回到上面说的RenderTexture的大小(分辨率)问题上来,假如选择了2048*2048,而game窗口比例又是16:9,unity的RenderTexture为了显示1:1的比例,就把摄像机中间部分显示出来,两侧内容裁减掉了,造成视野缺失,所以要选择size为2048*1024,不过这样又出新的问题,Game窗口是16:9,也就是摄像机视野比例是16:9,比2048*1024,也就是2:1的比例要小,造成RenderTexture两侧多显示了一部分,这部分是左右相机视野中没有的部分,必须要去掉的。去掉的方法其实很简单,通过更改材质的UV值即可,也就是让这两个RenderTexture,显示的影像往中间偏移,偏移的量,通过计算可以算出为0.05555…,我们改变UV偏移:
   



    由于我们的摄像机视野时16:9,所以附有RenderTexture的plane的两侧内容并不在我们的视野内,这样主相机的显示影像只有左右相机的视野影像,不会有其他的内容.

    将导出的游戏(exe)打开,电脑要连好3D显示器,这样在选择比例的时候才有1920*1080, Windowed的对号去掉,保证是全屏,导出设置里面也有默认全屏,



    打开后,将显示器改为3D模式,3D显示器一般都有按键在下面或者侧面,有转换3D的功能键,打开后,带上眼镜就可以体验3D立体效果了!为了解决广大Unity3D游戏开发爱好者的学费问题,龙图教育特别推出分期付款和先学习后付款的特色优惠,并可以进行试听。入学就签订就业协议,毕业后直接进入校企合作企业进行工作。

温馨提示:如需预约免费试听课程,请将姓名,联系方式,以及预约的课程发送至以下手机、QQ、或微信,如有疑问也可拨打热线电话。报名咨询热线:15112251330     QQ:1358148771     微信:1358148771


作者 1994922 发表于 2016-11-10 10:46:30
您需要登录后才可以回帖 登录 | 立即注册
1994922

关注0

粉丝3

发布159

热门作品推荐
glow
Dark City2-Cyberpunk Pack 1.2 未来科技城
glow
CyberPunk City. VR and Mobile 3.0 赛博朋
glow
【更新】Draw Save Puzzle 1.0 2021.3.6f1
glow
【更新】Obfuscator 3.13.0
glow
【更新】Car Mega Ramp 2020.3.40f1
glow
Mobile FPS Game Environment & Assets, ic
glow
Moore's RPG Template 适配UE5.1
glow
Dynamic Grass System 适配UE5.1
glow
Showroom Level Kit Vol 1 Low-poly 3D mod
glow
Black mage spells 1.2 魔法技能粒子特效