我正在使用WPF 3D,但我认为这个问题适用于任何3D纹理映射。假设我有一头奶牛的模型,我想在奶牛上绘制一个圆形斑点(我希望这是动态的——即假设直到运行时我都不知道斑点的位置)。我可以通过着色顶点来实现这一点(基于它们与斑点中心的距离来分配颜色),但如果模型的多边形比较少,那么将会得到一个相当锯齿状的圆形。我可以使用像素着色器来完成这个工作,其中着色器根据每个像素到斑点中心的距离对每个像素进行着色。但是假设我没有访问像素着色器的权限(因为在WPF中我没有),所以我想要做的就是动态地创建一个具有圆形图案的纹理,并用它来渲染奶牛。问题是:当我绘制纹理时,如何知道给定纹理图像上的xy坐标对应于模型空间中的哪个3d坐标?也就是说,假设我已经用纯白纹理对模型进行了纹理贴图——我设置了纹理坐标,完成了纹理映射,但还没有纹理图像。因此,我有一个1000x1000(或其他)像素的图像,根据模型预先设置的一些很好的纹理坐标,在奶牛上漂亮地展开。我知道,当3D硬件要绘制给定的三角形时,它使用三角形顶点的纹理坐标来找到相应的三角形区域,并在三角形表面上插值,以用来自该三角形区域的颜色填充显示的模型像素。那么我该如何反过来?换句话说,对于我的纹理图像上的这个给定的xy点,和已经在模型上设置好的纹理坐标,一旦进行纹理贴图,这个图像像素将对应于哪个模型空间中的3d坐标?如果我有这样一个函数,我可以着色我的纹理映射图像,使所有距离奶牛上圆心点一定距离内的点(在3D空间中)获得一种颜色,而所有距离外部的点都获得另一种颜色,最终我会得到一个漂亮、清晰的圆形斑点,即使是在一个相对低多边形的模型中。听起来没错吧?我确实了解,可以通过模型中每个三角形的纹理坐标,遍历模型中的三角形,在纹理图像上找到相应的三角形,并通过对顶点点确定的3D平面进行插值来完成一些自己的插值。这听起来并不太难。但我只是想知道是否存在一些标准的3D概念/函数,我可以调用一个现成的函数来获取给定纹理坐标的模型空间坐标?