裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感
http://sd89.blog.163.com/blog/static/356041322014112532958728/
3D图片的拍摄,与平面有着全新的不同要求,那就是空间感的表现。
简单来说,空间感是由两条视线分别从左右不同的视角,各自获取物体左右两面的不同信息交汇而产生的,获取的物体两侧信息越是丰富,空间感就越是强烈,就像我们的双眼,对中近距离的空间感觉十分敏锐,而对远景的空间效果则感觉平淡,这是因为物体越近,我们两眼就越是能从不同的角度观察到相同物体更多的侧面信息,而远处的物体,相对于我们双眼那不大的间距来说,双眼看到的几乎都是一个正面,侧面信息实在是太少,也就很难有立体的感觉。
由于光线进入我们眼睛的位置是瞳孔,所以双眼的间距实际上也就是瞳孔的间距,即瞳距。当瞳距越大,看到同一个物体就会让视角更多地向内偏转,也就能获得物体侧面更丰富的信息。
由此我们得到一个关于空间感的重要结论:双眼对同一物体的不同视角,才是产生空间感的根本原因。
显然瞳距是产生不同视角的前提,瞳距越大,双眼视线交汇时产生的视角也越大,获得的物体两侧信息就越丰富,空间感也越强烈。
比如当我们想看清稍远一些的路面是否平整时,往往会向前多跑几步,这倒不是我们看不清路,而是看不清路面细节的凹凸坑洼,多走近一些,双眼视角就会产生更多的向内偏转,以便获得更多关于路面细节的立体效果。
在军事上,双筒望远镜的应用更是如此:目镜的间距跟我们人眼瞳距相当,但物镜的间距,也叫镜距,则会分开很多,使得我们能在更远的距离上,产生清晰的立体效果,从而能看到不同的地形和物体相互空间排列,更有大型望远镜,两个物镜会分开更多,能使我们肉眼无法分辨的远处物体产生空间感觉。
图1、空间感觉的产生,是双眼的瞳距,产生了不同的视角,从而获得了物体两侧不同的视觉信息。
图2、两次拍摄之间,镜头的间距越大,则空间感也越强烈,这是因为两次拍摄获得了物体更多的两侧的信息,或者说,从两侧角度观察到了物体的更多差异信息。
至此,我们从瞳距延伸推理,得到新的结论:
两次拍摄之间,镜头间距越大,视角偏转越多,则获得的3D效果也越强烈。
但是从欣赏的角度来说,并不是两个画面的信息差异越大越好,太大的差异,会让我们左右两眼很难将两个画面的信息通过转变视角(内视法)合成在一起,或者能合成立体效果,但看起来却很累,时间长了,难免会感到视觉疲劳甚至头晕恶心,就像我们想努力看清距离眼睛很近的物体一样,需要用“斗鸡眼”的战斗姿态,很费力地调整两眼向内聚焦才行。
于是找到一个合适的视角,能舒适地欣赏到很明显的3D效果,就成了3D摄影镜头间距的重要指标。
那么多大的视角才合适?要弄明白这个问题也很简单,睁开双眼,看我们身边多远的地方最舒服、空间感也最强烈?对于一般人来说,这个距离大概是在20-80厘米之间吧,更近的物体看起来费劲儿,更远的物体,空间的准确细节就不太好判断,而且有远离我们无法掌控的感觉,再看看眼前的键盘、鼠标、手机等物体,其色彩层次质感大小体积及其相互位置,看起来都那么清晰而舒适,而且让您有一种君临天下、随手把玩的感觉!
于是我们认为视距为50cm左右的场景,会呈现十分理想的立体效果,而我们的瞳距,假设平均值是8厘米左右,现在来计算一下,我们要对一个物体转动多大的角度来拍摄才合适?
这要用到三角函数的反正切计算:先取瞳距的一半8/2=4cm,得到对边距离,而邻边距离为50cm,于是:Arctan(4/50)=4.57 度,这是单只眼睛的偏转角度,那么两眼的偏转角度就是4.57*2=9.14度,取个整数,就算是10度吧。
图:
于是我们不会再为镜距烦恼了,直接用被摄物体的10度偏转视角来决定镜距,岂不是更直观?!而相对于10度的物体视角偏转,远近不同的物体显然会有不同的镜距:眼前的物体可能只有10厘米的镜距,而外景会有几十厘米的镜距,至于远山,或许要有几米的镜距才行!
图:看远山的空间效果,那镜距是要走两步才行的,也只有单机才能拍摄,当视角偏转到15度左右时,远山的空间感也就相当于眼前几米处的感觉,比真实场景的肉眼视觉空间感更强,整个山景就像近在咫尺的沙盘!
***************************************
裸眼3D教程必读:
**************************************************
写作软件类 推荐阅读:
裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感的更多相关文章
- VS2013全攻略(安装,技巧,快捷键,插件)!
工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)! 之前一篇<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥>承蒙大家喜爱和编辑推荐,在此 ...
- 【C#代码实战】群蚁算法理论与实践全攻略——旅行商等路径优化问题的新方法
若干年前读研的时候,学院有一个教授,专门做群蚁算法的,很厉害,偶尔了解了一点点.感觉也是生物智能的一个体现,和遗传算法.神经网络有异曲同工之妙.只不过当时没有实际需求学习,所以没去研究.最近有一个这样 ...
- 生成 PDF 全攻略【2】在已有PDF上添加内容
项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...
- 从小工到专家 ——读《Java程序员职场全攻略》有感
从小工到专家 ——读<Java程序员职场全攻略>有感 <Java程序员职场全攻略>是以故事的形式,向读者介绍Java程序员的职场经验.作者牛开复在北京从事软件开发,已经是一 ...
- Android屏幕适配全攻略 (转载)
http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...
- Moon.Orm3.8技术全攻略
Moon.ORM技术全攻略 一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...
- TestLink安装全攻略
TestLink安装全攻略 此文章转自该链接--http://www.cnblogs.com/Tcorner/archive/2011/07/26/2117296.html 安装前准备 需要下载xam ...
- 取代奶瓶Minidwep-gtk破解WPA 全攻略
取代奶瓶Minidwep-gtk 破 WPA 全攻略 目录 1. CDlinux 下使用 minidwepgtk 获取握手包并使用自带的字典破解 2. 自带的字典破解不出密码时使用 U 盘外挂字典继 ...
- 用C#制作PDF文件全攻略
用C#制作PDF文件全攻略 目 录 前 言... 3 第一部分 iText的简单应用... 4 第一章 创建一个Document 4 第一步 创建一个Document实例:... 5 第二步 ...
随机推荐
- ReactiveCocoa - iOS开发的新框架
本文转载至 http://www.infoq.com/cn/articles/reactivecocoa-ios-new-develop-framework ReactiveCocoa(其简称为RAC ...
- Mybatis头文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- django 文档
django 学习文档 https://yiyibooks.cn/xx/django_182/index.html
- 原创Java多线程详解(一)
只看书不实践是不行的.来实践一下~~~~~~(引用请指明来源) 先看看百科对多线程的介绍 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的 ...
- 《转载》struts旅程《1》
struts简介 Struts是Apache软件基金会(ASF)赞助的一个开源项目.它最初是jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目.它通过采用JavaServlet/ ...
- 1.执行环境判断 window 或 self
window or self ? 在 underscore 的判断所处环境的代码中,似乎我们没有看到 window 对象的引用,其实,在浏览器环境下,self 保存的就是当前 window 对象的引用 ...
- 【BZOJ3203】[Sdoi2013]保护出题人 二分+凸包
[BZOJ3203][Sdoi2013]保护出题人 Description Input 第一行两个空格隔开的正整数n和d,分别表示关数和相邻僵尸间的距离.接下来n行每行两个空格隔开的正整数,第i + ...
- MarkDownPad2 key
MarkDownPad2 key : Soar360@live.com GBPduHjWfJU1mZqcPM3BikjYKF6xKhlKIys3i1MU2eJHqWGImDHzWdD6xhMNLGVp ...
- java的this表示当前类还是当前实例?
转自:http://www.runoob.com/java/java-basic-syntax.html this 表示调用当前实例或者调用另一个构造函数
- JS替换URL中参数示例
<script type="text/javascript"> var url = window.location.href; url = changeURLArg(u ...