3D 相机在手里转起来就像放烟花,但真正看透世界内部结构的时候,它却比天平还冷酷。别再跟我拿啥“透视法”撒气,那玩意儿早就把三十年的光学前沿给颠覆了。大家习惯了看屏幕,当作透视就是把物体往镜头前推,画成类似画在纸上的样子,实际上那是个最原始、最没用的概念。真世界的三维体素模型可没这本事,它们忒厚了,直接把空间挤扁,让你根本看不清里面藏着啥。

故此,我们根本不用画,也不用像那会儿那样求“正交投影”,目前的 3D 相机,特别是那种带纹理的体素相机,直接把每一根线都画出来了。 想象一下,你手里拿着一把枪,瞄准镜里看到的不是那个弯曲的世界,而是由无数个黑方块拼凑成的恐怖场景。每个方块里都藏着纹理,每个纹理都记录着方向。当你把模型搬到现实世界,这时候纹理的方向就彻底乱了。

比如我把方块推到镜头前,纹理应当和方块背面平行,但在屏幕上,纹理会跟着方块一起扭曲。

这就像是你把照片里的火柴人往前推,脸部的朝向就会一扭一扭。传统的图像处理软件,特别是旧版的 Photoshop,处理这种乱纹简直成了噩梦,你得一个个去对齐,然后慢慢蒙版,最终还得去重。目前的方案就是直接把这些乱纹扫出来,它们在屏幕上呈现时就已经是对的空间方向了。 实际上原理挺好办,就是一种“扫形”技术。机器人在宽阔的平地上随意走了一圈,每走一步就拍一张照片。

这就好比你拿着一个庞大的透明方块在操场上奔跑,每走一步,它就把自己扫过的一小块地面拍下来。别看拍下来的全是黑点(出于忒远了),但你只要把这些黑点连成线,跑了一圈一圈,连起来不就有一座山吗?这就相当于你在拍一个 3D 的影子,然后把影子的形状重建出来。 有人可能会说,那直接用手机拍视频算啥?哈哈,你当作你拍的是视频?错。你拍的是无数个不同距离下的影子,还有无数个不同角度的影子。每一帧视频都是那个场景里不同位置、不同角度的“影子”。当你把这些影子拼起来,要么用算法分析它们的方向和纹理,你就能还原出一个整个的、有深度的 3D 模型。

这就像是一个个盲人画家,他们手里拿着一个庞大的透明方块,围着房子转圈,把每一块地砖的纹理都记下来,最终大家把记下来的纹理按位置倒贴回去,就能画出整栋楼的立体结构。 这种技术最早是在 2012 年在波士顿大学用的,那时候他们让机器人走一圈,然后对所有拍下的视频进行处理,取出每个纹理的方向和强度,最终就能在屏幕上画出场景的纹理图。

这比当年那种用“阴影法”要么“透视投影法”做出来的模型要清楚多了,起码让你看清了每一根线的走向。早期的体素相机,比如那个著名的 Boston Dynamics 的 Petronas 机器人,连它自己的腿、肚子、脑袋,还有它背后的纹理,全是用这种扫形法拍出来的。它把机器人模型做得跟真人差不多,连肌肉纹理感都有,出于每一块皮肤表面的纹理方向都是记录在里面的。 说到数据,这可不是随意拍拍就完事。就拿波士顿那个极限机器人来说,单只大猩猩重 40 公斤,光给个身体模型就占用了 800 兆的纹理数据。

要是加上它的腿、手、尾巴,再加上眼、鼻子、嘴这些五官,总数据量能达到上千兆。

更关键的是,这些纹理是动态的。机器人步行的姿势会变,转圈圈的时候头发都会飘,跑起来时衣服褶皱也会变。

这就像给每个零件都贴了点动态贴纸,换一种步行姿势,贴纸的方向和位置就跟着变。

这种细节,当初那个作者为了追求极致,连机器人步行时的脸表情纹理都给它算进去了,出于那才是最真的 3D 感。 目前的云端 3D 相机应用得可多了,比如那个叫 Cloud9 的云端模型,它是用这种方式构建的。想象你在网页上看着一个模型,你旋转鼠标,模型里的纹理也跟着转,并且你还能把它放大、缩小,就连翻转过来,就像拿着一个真正的实体模型。

这一切的底层逻辑,就是那些散落在全球各地不同角度、不同距离下的“影子”。 有人可能会问,那有啥区别?那会儿做那个叫 X-Ray 的 3D 相机,它就算出了物体的内部结构,像看骨头、看血管,但那只是把物体内部的东西当成一个黑体塞进去,外面再罩一层透明罩子,结局就是画质挺烂,纹理乱得像破布。目前的云 9 模式不一样,它是把每一块像素都当成独立的纹理块存起来。

故此你看出来的纹理,每一块的方向都是彻底对的,就像你是直接拿着一个实体模型在屏幕上转一样。

这就是从“把物体当成空心壳”到“把物体当成真存有的纹理”的跨越。 再说说如何把数据变成画面。

有时候你直接看到的是纹理图,有时候你看到的是光影图。

实际上差别不大,都是把纹理的方向和颜色取出来了。有些相机会把纹理直接画在屏幕上,叫纹理图;有些会把纹理和光照混合起来,叫光影图。

这就像你画画,有的直接画线稿,有的先画阴影再画线稿。

只要纹理的方向是对的,光如何打上去,你都能看清物体的形状和纹理。 那些旧的方式,那时候的人认定“透视法”才是正解。他们把物体往镜头推,让物体变大,看起来近大远小,最终把物体压扁成二维的。别看这在数学上是成立的,但在物理上彻底是错的。世界是立体的,你往镜头前一推,背景会消亡,物体边缘会不清楚,这跟真情况彻底反之。目前的方案,就是承认世界是立体的,把每一根线都画出来,不管你如何转视角,纹理的方向都不会乱。

这就像是你把一张全景图拆成无数张小图,分别放在不同的角度,然后把这些碎片拼起来,自然就成了一张整个的立体的图。 故此,别再被那些标榜“透视”的营销话术给骗了。

那只是个老掉牙的概念。目前的 3D 相机,靠的是把世界变成无数个黑方块,然后扫出来纹理,最终把这些纹理按方向重新贴回去。

这过程别看有点笨,有点累,但它是目前唯一能把复杂物体纹理还原得如此真的方式。当你看着屏幕上旋转的模型,发现连头发丝都能看清走向,连衣服褶皱都严丝合缝时,你就知道,这不只是是图形学,这是一套真正能构建真感的技术。