3d 将已具有透视效果的纹理映射到三维对象

3d 将已具有透视效果的纹理映射到三维对象,3d,texture-mapping,3d,Texture Mapping,通常,纹理就像是从自上而下的角度拍摄的照片。拍摄纹理图像的理论摄影机指向下方并垂直于平面。然后将该纹理映射或投影到任意对象上 如果我从一张已经以一定角度拍摄的照片开始,并将其用作纹理,会怎么样?想象一下,我站在外面,把相机稍微向下一点,然后给草地拍了张照片。现在,我的程序中有一个2D平面,我想在平面上使用草纹理。如果我的程序中的相机具有相同的位置wrt。这架飞机和我的真相机一样。当然,草和照片中的像素以1:1的比例直接映射到屏幕上。但我希望能够移动虚拟摄像机一点 由于草的照片是以一定角度拍摄的(

通常,纹理就像是从自上而下的角度拍摄的照片。拍摄纹理图像的理论摄影机指向下方并垂直于平面。然后将该纹理映射或投影到任意对象上

如果我从一张已经以一定角度拍摄的照片开始,并将其用作纹理,会怎么样?想象一下,我站在外面,把相机稍微向下一点,然后给草地拍了张照片。现在,我的程序中有一个2D平面,我想在平面上使用草纹理。如果我的程序中的相机具有相同的位置wrt。这架飞机和我的真相机一样。当然,草和照片中的像素以1:1的比例直接映射到屏幕上。但我希望能够移动虚拟摄像机一点

由于草的照片是以一定角度拍摄的(而不是从上方拍摄),因此底部(朝向观察者)的细节要比顶部(远离观察者)的细节多得多。我可能会将其转换为“常规”纹理(正方形,取自上方),但我会失去它具有更多细节的优势


我找不到这方面的任何资源,我甚至不知道这种纹理叫什么。预投影纹理?透视纹理?我正在寻找这项技术的名称,如果它有一个,以及一些开始的提示,比如如何在OpenGL或Unity中实现它,但我并不局限于特定的技术。

您描述的丢失细节的问题是计算机图形和信号处理的基础

您的图像是通过对在特定时间段(曝光)内撞击光传感器的所有光子进行采样而构建的。最初,这些光子是在不同的时间从三维空间中的不同位置到达的,但当您在一段时间内在单个二维平面上对它们进行采样时,您已经丢失了大量信息(二维)

现在,您可以扭曲图像以改变透视,但这会在新信号(图像)中产生不均匀的采样率分布。扭曲信号在某些地方的采样频率高于必要的采样频率,而在其他地方的采样频率低于必要的采样频率,因此会产生过采样/欠采样。过采样通常不是一个大问题。另一方面,采样不足会导致另一个重大的信息损失。这种情况通常被简单地称为别名

在这种情况下,由于无法从新的透视图重新生成图像,因此最简单的解决方案是插值。一种方法是分析正在重建的图像的角度,并选取一个形状合理的额外像素横截面进行采样和平均(各向异性过滤就是这样做的)。像这样的过滤是一种有根据的猜测,它试图通过假设原始图像中不存在的样本点在给定足够多的相邻样本的情况下遵循可识别的模式来理解丢失的信息。你永远无法弥补失去的信息,只是简单地掩盖它

在任何情况下,您在这里掌握的一般概念称为。你处理这件事的频率比你想象的要高;我能给你举的最简单的例子就是谷歌街景

要获得更好的视觉效果,请查看: