百科问答小站 logo
百科问答小站 font logo



假如一个真空球,球内壁是全镜面。这时悬浮在球心的人看到的是什么景象? 第1页

  

user avatar   akirachang 网友的相关建议: 
      

警告:内含大量诡异图片,胆小人士与使用流量上网的人士请谨慎查看。

再次更新,更正在球心时看到影像的错误,在回答后方回应了章佳杰先生的质疑。

更新:回答一下质疑

在这个答案下面,和知乎微博的评论、转发里面,有人质疑说球里面根本没有光源,所以看上去应该是漆黑一片。其实在原文里,已经写了:

对于人物,给她设置为「自发光」材质,即可表现出类似「全身涂足够亮的荧光粉」效果,「荧光粉」的颜色就是材质的颜色。场景里不摆放除人物外其他任何光源。由于人物是自发光材质,所以人物是不接受自己本身的投影的。并且,假设光线在球壁之间反射和通过球内空间时没有衰减。

给人物设置自发光材质,目的就是为了让里面的人能看到自己的影像。因此,实际上,场景里面还是有光源的,光源就是人物本身。

另一个比较多的质疑点是,由于模拟场景是由多边形面片组成的(包括球体和人物),那么能不能真实地反映在实际世界中的情况?实际上,在计算机中是不可能完全模拟、仿真真实世界的情况。原因就是在于,真实世界,从人类日常生活的尺度看,是连续的。而计算机模拟的世界只能是离散数学模型的方式存在。因此,使用计算机模拟一定有其局限性。

在这个实验里,计算机模拟的局限性包括光路的反射次数是有限的、镜面并不是一个完美的平滑曲面、人物也是有三角面片所组成的,并且渲染器是基于光路追踪技术,只能表现出光的粒子性,不能模拟光的波动性、眼睛(摄影机)也不可能完全不吸收任何光线、光路追踪采样率也不可能无限大,等等。因此,这个实验实际上是以不可能完全真实的方式模拟一个不可能的场景,因此,别把这个当科研论文来对待,看看就好。

既然计算机不可能完全模拟实际世界,那么计算机模拟的意义在哪里?模拟的意义是在于解决问题。因此,模拟的精度细化到能够解决问题就可以了,再精确地模拟只是消耗时间、能源、计算量等。如本实验中,虽然模拟的结果很粗糙,但能看出大概的样子,比如重复的画面很可能在无限细化后变成颜色条带,等等。这就足够了。正如鳄鱼洗澡中模拟水的流动,不需要细化到模拟单个水分子,还要模拟水分子的布朗运动。只需模拟一个个大团的水就够了。模拟游戏中的物理现象,时间也不可能细分到普朗克时间。模拟机翼的空气动力学效果,也不需要模拟出单个空气分子。因此,模拟的精细度取决于待解决的问题,如同样是流体模拟,鳄鱼洗澡的复杂度就不需要达到模拟机翼的空气动力学那样的水平。

------ 原答案:------

很有趣的一个问题。对此,我也很好奇结果到底是什么。很遗憾,当前本问题下大多数答案都不太令人满意。当前排名第一的给的是一个平面在球面里的模拟效果,跟三维物体在球面里的效果差别还是很大的。

所以,昨天和今天在自己的计算机上,用 3D 软件模拟了一下,得到了一些有趣的结果。虽然,由于计算机的局限性,模拟出的结果肯定会跟真实看到的有一些差别。但我认为这些结果,在一定程度上已经可以说明了问题。

在此,我认为题主的描述已经足够清楚了。我们在这里不考虑细节问题,如在真空中,人会不会死啊什么的,只考虑最后我们能够看到什么。于是,在 3D 软件里,设置了这样的场景:放一个直径 5 米的球体,球体的球心在原点,在里面放一个人物的模型。人物的眼睛附近放一个摄影机,模拟眼睛,来查看场景。给人物设置一个动画,让人物从距离球心 1.5 米的地方,穿过球心,移动至球心对面距离球心 1.5 米的地方。在人物移动的过程中,眼睛(摄影机)正好穿过球心。


哦对了,人物的模型是从

Characters 3D Models

找的现成的一个模型。然后,球体与人物的比例关系大概是这样的:

场景基本上搭好了,接下来是设材质。对于球体,很好说,设置为完全的镜面材质就可以了,再把球面的法线翻转一下,使之指向球面内部。对于人物,给她设置为「自发光」材质,即可表现出类似「全身涂足够亮的荧光粉」效果,「荧光粉」的颜色就是材质的颜色。场景里不摆放除人物外其他任何光源。由于人物是自发光材质,所以人物是不接受自己本身的投影的。并且,假设光线在球壁之间反射一次时有 15% 的衰减。

接下来,在渲染之前,需要设置一下渲染器的选项。这里使用的渲染器是基于光路追踪技术的。基本的原理是,根据光学中,光路是可逆的这一特征,从相机(眼睛)逆向分析进入相机的光路经过了哪些反射、折射、直接照射、环境光影响之类的。因此,光路追踪引擎的渲染效果,还是能比较确切反映真实情况的。在这里,把最大反弹次数设为 128 次,即认为光路在追踪过程中,如果在镜面求壁上反弹次数超过 128 次仍未碰到物体时,就不追踪了。经过尝试,128 次已经基本够用了,反弹次数再多的话,效果变化非常微小,但却大大延长渲染所需的时间。

一切都准备就绪,开始渲染吧!这就是这段过程中,「她」所能看到的景象:

假如一个真空球内壁是全镜面,悬浮在球内的人看到的是什么景象? http://v.youku.com/v_show/id_XNTk5NjM0NTIw.html

可以看到,在穿过球心前,自己的影像是倒像。影像随着距离球心距离的缩短而变大,在球心时影像变为无限大。穿过球心后,影像变为正向,大小由无限大开始缩小。

如果从人物外边,看这个人物呢?我们首先从人物的正前方,向人物的方向看去(把反射衰减重新设置为 0,即光线在球壁反射时,并无衰减):


看到的大概是这个效果:


从后面看:




侧面:




(两倍球半径,镜面衰减 15%)从模特前方观察模特:


背面视角:


侧面视角:


最后要声明一下,这些画面是用计算机模拟生成的,而使用计算机模拟不可避免地带有局限性。因为从人们生活的尺度看,自然世界是连续的。而计算机模拟的世界是离散的,比如球面、人物实际是一组三角面片的组合,光线反射次数也不能设置为无限大等。但我想,这些图片已经能够说明大概效果了。

PS: 使用开源 3D 软件 Blender 来做的模拟,渲染引擎为 Blender 自带的 Cycles 光路追踪引擎。Blender 介绍:

推荐一个 3D 动画创作软件:Blender

,Blender 下载:

blender.org/download

======

有人问,是不是画面中,镜像个数取决于球形镜面的多边形个数吗?那么来看看细化球面多边形几何形态后,结果会是什么样吧:

原球体多边形镜面:

球体镜面几何形态细化两倍后:

细化为 3 倍后:

细化为四倍后:

五倍:

可以看到,映像个数没有变化,变化的只是映像的大小,所以认为,这个球面几何体精度基本能够接受。出现不连续的人物影像,不是由于几何体的精度有限所造成的。

再回应一下章佳杰先生提出的质疑吧。部分写在了他答案的评论上,现在挪到这边来:

对于第一点,虽然球面的确是由一组多边形组成的,但着色方式是由顶点的法线插值运算而来的(不知道大家能不能明白 = =)。简单说,这样可以用离散的几何多边形物体模拟光滑的表面,例如游戏、CG 中常见的汽车那样。因此,仍可以说,这是一个光滑(但不完美)的球面。实际上,我也在底下试过了平直着色,即面的法线完全就是多边形的法线,而不是多边形顶点法线插值而来。这种情况下的渲染结果完全不一样。此外,光路追踪引擎不同于游戏中的光栅化投影引擎,光路追踪引擎还是能相当真实地还原各种光学现象的,如折射、镜面反射、散射等等。光路追踪引擎的具体原理,网上可以很容易查到,在此就不多叙述了。

对于第二点,光线追踪引擎完全可以「看到」虚像。举个例子,平面镜镜像即是虚像,可镜面在 3D 效果图里是一个司空见惯的东西。由此可见,使用光路追踪引擎渲染镜面是没有任何问题的。就此可证明,光路追踪引擎有能力表现虚像。

(多说一句,3D 游戏中的镜面反射材质效果,如跑车表面反射环境周围环境的效果,跟 3D 动画软件渲染原理是大不一样的。游戏里常用的技术是用虚拟摄影机捕捉物体周围的画面,然后组成环境立方贴图,映射到物体表面上,并与漫反射、法线映射、高光映射等效果混合而来。)

对于第三点,是我这边的错误,现在的回答已经据此修正。

就这样。

评论请寄至邮箱:




  

相关话题

  如何理解海森堡的「不确定性原理」? 
  为什么红绿蓝三种墨水混在一起是黑墨水,而红绿蓝三种光混在一起是白光? 
  为什么(同一个)光学玻璃对紫色(波长短)光的折射率比红光(波长长)的折射率大? 
  对于大一物理专业新生,有没有什么忠告(最好能结合亲身经历)? 
  结构化学中的量子力学与物理中的量子力学有什么区别? 
  甲烷的熔点为啥大于硅烷?按照分子化合物理论,不应该是相对分子质量大的熔沸点高吗? 
  《水知道答案》究竟是不是伪科学? 
  数学家和物理学家思考方式是什么? 
  为什么拿相机对着电脑屏幕照相,照片会出现波纹? 
  物理学大师费曼真的讨厌哲学吗? 

前一个讨论
设计院做epc有什么缺陷?
下一个讨论
如果美国率先研究出了可控核聚变,世界会变成什么样?





© 2024-12-18 - tinynew.org. All Rights Reserved.
© 2024-12-18 - tinynew.org. 保留所有权利