百科问答小站 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 动画软件渲染原理是大不一样的。游戏里常用的技术是用虚拟摄影机捕捉物体周围的画面,然后组成环境立方贴图,映射到物体表面上,并与漫反射、法线映射、高光映射等效果混合而来。)

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

就这样。

评论请寄至邮箱:




  

相关话题

  如果严格限制低温水的膨胀空间,水还会结冰吗? 
  为什么阳光下的泡沫是彩色的? 
  为什么这个世界没有魔法? 
  为什么折射率也是一个复数? 
  自己的学生在知乎上灌水不好好做Peskin final project怎么办? 
  没有物理天赋是怎样一种体验? 
  二级文明能否建立一个以戴森云能量收集系统供应人能够承受的加速度的电磁弹射轨道使用实现亚光速星际旅行? 
  引力是如何产生的? 
  请问为了省油省电,能否在公路上铺设一块块能变换地面摩擦力的板,板能通过电脑感应,调节地面的粗糙程度? 
  为什么子弹射出后枪口向上跳跃,而不是向下,左右? 

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





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利