当前位置:C++技术网 > 精选软件 > 3D电影:3 3D电影是如何拍摄、存储和播放的

3D电影:3 3D电影是如何拍摄、存储和播放的

更新时间:2016-09-25 18:58:56浏览次数:1+次

    前面一部分讲了人眼是如何看到3D电影的,如果你没有看,请阅读:3D电影原理深度全面分析:人眼如何看到3D效果
    我们这里开始讲述3D电影是如何拍摄,如何存储和如何播放的。当然,我不是电影从业者,也就不是从具体实现去讨论,而是从原理设计的角度来讨论,也八九不离十。而且,本文的创作是为了让读者更好的理解3D电影的原理,而不是专业的学术性的探讨,你能明白3D原理,那么文章的作用就达到了。

    下面把原理图再次贴上,可以对照着看文章,促进理解:

【点击图片看大图】
    我们的现实世界是3D的。由前面文章我们知道了,我们看到3D,并不需要是一个真实的3D物体,只需要3D物体的两个画面即可,而这两个画面是两只眼睛所看到的不同角度的画面,因为眼睛相隔很近,所以两幅画面看上去基本上是一样的,只有一些小小的差异,这些差异就是左右眼睛所处的不同的位置产生的。我们只要将这两个有差异的画面分别送给眼睛就可以看到3D效果了。而对于两个画面来说,画面是2D的。我们看到的3D是大脑合成两个2D画面的结果。这个可以算上是欺骗了眼睛,或者叫做欺骗了大脑,大脑以为看到的是3D,实际上只是看到了两个平面的画面而已。
    也正是利用这个特点,我们的3D电影就兴起了。在拍摄电影时,被拍摄的场景肯定是真实的世界,也就是真正的3D场景。如何拍摄3D画面呢?不用。我们只要模拟双眼看世界即可,然后得到两个位置的画面即可。
    拍摄电影的时候,摄像机不就充当了我们的眼睛了嘛。平面电影也就是我们通常的电影,得到了一个画面。那么现在为了让观众看到3D效果,我们就要让摄像机充当人类的双眼,自然也就要用双摄像头了。双摄像头的概念其实不陌生了。各种手机不是兴起双摄像头拍摄嘛,说是拍摄出来的可以得到有景深的立体感很强的照片。然而,这有点浪费了。手机的双摄像头通常是竖着放的,只能实现立体照片而已。我们完全可以将双摄像头横着放,模拟人眼的位置,拍摄出来的照片不仅可以得到立体感强的照片,还可以得到3D照片。这个和双摄像头是一致的。
    双摄像头得到的两个画面同时存储下来,就完成了3D电影的拍摄。手机完全可以利用这个特点拍摄3D图片,同时将两个画面存储下来,然后用分屏图片查看器播放图片,人眼裸眼就可以看到立体图片了。原理在前文讲过了。只是这一点竟然没有人想过!!当然你不要高兴,这个点子只要散播出去,很快可以得到应用。对于草根的我们来说,这个点子也不足以让我们创业。那些手机厂商只要简单改一下设计就可以了。而分屏播放器很简单,所以这只是一个点子而已,你想到了也不一定有什么优势。关键需要做出来。我不打算用这个点来做什么,就免费分享给大家了,大家看着办吧。如果做成了什么,回来支持一下C++技术网就好了。嘿嘿。如果你想做一个分屏播放器,那你需要继续往下看,来看看如何存储和如何播放的。
    下面这部分可能和编程开发比较相关了。程序员看好了,说不定你做的分屏播放器就可以让你火一把哦。现在PC端和手机端都没有直接的分屏播放器哦,你懂的。只是那些打着VR旗号的播放器会有分屏播放器。所以要做就趁早,一旦这篇文章被VR播放器的人看到了,人家会有动作的,哈哈哈。人家再简单改改就出来一个独立的分屏播放器了。
    3D拍摄就这么简单,两个摄像机就搞定了。每一个相机拍好的都是一个正常的2D画面视频。所以,我们并不需要专门买3D相机,只要摆好位置就行了。普通的相机也可以拍出来3D效果视频。只是单相机拍出来的视频都是2D的,我们需要后期处理,将两个角度的2D视频合成为一个3D视频文件,再给分屏播放器来播放即可。为了更好的兼容性,我们肯定是要将视频合成为主流的3D视频文件。如果只是自己玩玩,也可以不用合成,你只要用播放器同步分屏播放两个视频即可。播放的时候选择两个视频文件,然后同时播放即可。这么一来,很直接,只是不太方便而已。你得确保画面是同步的,两个相机拍摄的角度要正确,而且一直要保持一致,否则中间一帧或者几帧不一致,大脑就合成不了3D,就会产生眩晕。低质量的拍摄会导致中间不停的眩晕正常再眩晕,这样的视频简直就是眼睛杀手,谁还敢看。
    所以,3D摄像机同时将两个摄像头固定在一起,位置也是固定的,这样你就可以和正常相机一样随意拍摄。索尼已经有这样的3D相机了。这也解决了3D片源不足的问题了。以后应该会广泛采用吧。3D最符合人类认知世界的天性,所以,会广泛受到欢迎,以后会流行起来的。3D相机成熟之后,新3D电影会越来越多的。所以,以后的电影不是3D的都没有人看了。现在电影院也就是这个感觉了。现在看2D电影多Low呀。
    3D电影拍摄就说完了。3D摄像机同时拍摄了两个画面,必然要都存储起来,如果相机支持的很好,可能就在拍摄的时候将两个画面存在一起了,也就是存在一个文件里了。如果支持的不够好,会单独存储为两个文件,此时需要双SD卡支持,毕竟一张卡同时只能有一个写入操作。如果是交替写的,SD卡写入速度可能是瓶颈。所以双SD卡,双写入部件,拍摄3D画面是最高性能的,此时就是将两个相机融合成一个相机了。这样的相机自然很贵哦。至少和两个相机差不多的造价。这个很自然的,硬件上去了,价格也要上去。双卡的话,是单独存储的,所以还需要进行文件合成为一个视频文件,否则两个文件容易形成错乱,导致播放时两个画面不同步,就没法看了。合成可以后期合成,也可以在拍摄时合成,只是拍摄时合成,也就降低了拍摄的性能,特别是拍摄高清大幅画面的3D场景视频,性能消耗极大。不过对于一般的消费级的相机,应该要求不会太高,画幅和像素都可以偏低,然后可以在相机拍摄时进行合成,这样最好了。我想消费级的相机应该这么做,个人谁会慢慢玩后期合成呢?越方便也就越容易普及。
    那么现在的问题是,3D电影视频如何存储的呢?我们通常下载的3D视频都是单个文件村存储的。也就是两个画面的视频文件是已经混合在一起的了。其实存储也是很简单的。因为么是两个画面要同时播放,电影是以帧来表示画面的,我们也就要将马上要播放的两个画面连续存储起来。这样在播放的时候,连续取两帧,然后同时播放出来。你可以分屏播放,也可以叠加在一起播放。
    我们的左右分屏画面需要我们的眼睛保持水平看分屏画面,如果歪了,就会发现很晕。所以为了解决360度旋转随意观看3D效果,在拍摄时可以加很多组相机,360覆盖,也就形成了很多的画面,这些画面都是对一个3D场景的描述,总画面数=左右视角*旋转角度个数。所以支持360度旋转的3D电影,相当于很多部电影了,所以容量非常大。所以,如果一个2D电影是1GB,左右分屏3D电影就是2GB大小,再如果支持上下分屏,就是4GB了,旋转的更多角度,就更大了。如果只是看看3D电影,只要下载左右分屏电影就行了,这样文件相对比较小了。
    那么360度旋转3D电影是如何存储的呢?这个自然也是按照角度旋转顺序依次排列画面,比如是水平左、水平右、垂直上,垂直下。每一帧都按照这个顺序排列,直到电影结束。
    那么存储电影也就这么回事了。自然,存储格式确定了,那么播放方法也就随之确定了。如果是2D电影,视频播放器只需要一帧帧的播放画面即可。如果是3D的左右分屏3D电影,那么就需要每次连续读取两帧,然后分别显示在屏幕两边。也就是将两个帧当做一个画面播放出来。这也就是我们看到的左右分屏3D电影的实现方法了。
    那么360度的分屏电影如何播放呢?当然,这个需要视频文件是360度旋转的。前面说了,360度视频文件只是按照角度顺序依次存储的,如果我们要看上下分屏的,视频播放器只需要忽略左右方向的帧,直接跳到上下方向的帧,并播放出来。当然,我们眼睛只有左右调节才能将画面合成,所以裸眼只能看左右分屏的。如果你要旋转眼睛,手机也就要跟着旋转。那么360的3D电影在哪些场合需要呢?电影院!而且这个需要3D眼睛支持。
    360的3D电影要达到的效果就是,你在电影院看电影,屏幕是不动的,如果你头一歪,就看不到3D了,而且会头晕。这个对于体验不好。所以为了让观众可以随便扭动脑袋,更加自由,就有了360度的旋转支持。拍摄时只需要左右两个画面即可,后期只要将画面旋转一下,然后存到其中一帧就行了。这样眼镜也做一个处理,水平角度只能看到水平的两个叠加画面,斜着的只能看到斜着的两个叠加画面。这样我们就可以随意转动脑袋了。
    不过360只能用于戴眼镜的模式,裸眼不可行,也不需要。那么播放360度的3D电影如何播放呢?其实还是和分屏3D电影一样播放,也就是播放速度快些。每一个角度也是同时获取两帧,然后叠加在一起。然后多个角度按照先后依次播放一次。因为眼镜只能接受到一个角度的画面,所以可以随意角度观看。因为每一个角度都播放了两帧叠加成一个画面,就好比同一个左右分屏播放了很多次,因为播放的间隔很短,我们每一个角度都可以看到连续的画面,而且眼睛觉察不出来。只是这样对于播放器提高了要求,性能要好。高清大屏超快播放速度,一般的设备是播放不出来的。
    这里还要补充一点,因为360度3D电影是旋转画面得到的,也就是将左右分屏的两个画面做中心旋转的,如果播放器性能足够好,不需要连续存储那么多角度的文件,只需要存储左右分屏的。然后在播放每一帧的时候,进行画面旋转播放,这样存储的文件也就不大了。当然,如果播放器性能不够,还是文件大一点比较好,直接播放要求的性能会低些。具体如何实现就看具体的要求了。
    以是上就是所有的原理解析了。