警告:内含大量诡异图片,胆小人士与使用流量上网的人士请谨慎查看。
再次更新,更正在球心时看到影像的错误,在回答后方回应了章佳杰先生的质疑。
更新:回答一下质疑
在这个答案下面,和知乎微博的评论、转发里面,有人质疑说球里面根本没有光源,所以看上去应该是漆黑一片。其实在原文里,已经写了:
对于人物,给她设置为「自发光」材质,即可表现出类似「全身涂足够亮的荧光粉」效果,「荧光粉」的颜色就是材质的颜色。场景里不摆放除人物外其他任何光源。由于人物是自发光材质,所以人物是不接受自己本身的投影的。并且,假设光线在球壁之间反射和通过球内空间时没有衰减。
给人物设置自发光材质,目的就是为了让里面的人能看到自己的影像。因此,实际上,场景里面还是有光源的,光源就是人物本身。
另一个比较多的质疑点是,由于模拟场景是由多边形面片组成的(包括球体和人物),那么能不能真实地反映在实际世界中的情况?实际上,在计算机中是不可能完全模拟、仿真真实世界的情况。原因就是在于,真实世界,从人类日常生活的尺度看,是连续的。而计算机模拟的世界只能是离散数学模型的方式存在。因此,使用计算机模拟一定有其局限性。
在这个实验里,计算机模拟的局限性包括光路的反射次数是有限的、镜面并不是一个完美的平滑曲面、人物也是有三角面片所组成的,并且渲染器是基于光路追踪技术,只能表现出光的粒子性,不能模拟光的波动性、眼睛(摄影机)也不可能完全不吸收任何光线、光路追踪采样率也不可能无限大,等等。因此,这个实验实际上是以
不可能完全真实的方式模拟一个不可能的场景
,因此,别把这个当科研论文来对待,看看就好。
既然计算机不可能完全模拟实际世界,那么计算机模拟的意义在哪里?模拟的意义是在于解决问题。因此,模拟的精度细化到能够解决问题就可以了,再精确地模拟只是消耗时间、能源、计算量等。如本实验中,虽然模拟的结果很粗糙,但能看出大概的样子,比如重复的画面很可能在无限细化后变成颜色条带,等等。这就足够了。正如鳄鱼洗澡中模拟水的流动,不需要细化到模拟单个水分子,还要模拟水分子的布朗运动。只需模拟一个个大团的水就够了。模拟游戏中的物理现象,时间也不可能细分到普朗克时间。模拟机翼的空气动力学效果,也不需要模拟出单个空气分子。因此,模拟的精细度取决于待解决的问题,如同样是流体模拟,鳄鱼洗澡的复杂度就不需要达到模拟机翼的空气动力学那样的水平。
------ 原答案:------
很有趣的一个问题。对此,我也很好奇结果到底是什么。很遗憾,当前本问题下大多数答案都不太令人满意。当前排名第一的给的是一个平面在球面里的模拟效果,跟三维物体在球面里的效果差别还是很大的。
所以,昨天和今天在自己的计算机上,用 3D 软件模拟了一下,得到了一些有趣的结果。虽然,由于计算机的局限性,模拟出的结果肯定会跟真实看到的有一些差别。但我认为这些结果,在一定程度上已经可以说明了问题。
在此,我认为题主的描述已经足够清楚了。我们在这里不考虑细节问题,如在真空中,人会不会死啊什么的,只考虑最后我们能够看到什么。于是,在 3D 软件里,设置了这样的场景:放一个直径 5 米的球体,球体的球心在原点,在里面放一个人物的模型。人物的眼睛附近放一个摄影机,模拟眼睛,来查看场景。给人物设置一个动画,让人物从距离球心 1.5 米的地方,穿过球心,移动至球心对面距离球心 1.5 米的地方。在人物移动的过程中,眼睛(摄影机)正好穿过球心。