有没有办法使用 OpenGL 或 GLUT 将模型视图矩阵中的点投影到关联的纹理矩阵中?如果没有,是否有一个常用的库可以实现这一点?我想根据 3D 空间中的光线投射来修改对象的纹理。
最简单的情况是:
- 投射一条与四边形相交的光线,并使用单个纹理进行映射。
- 交点被转换为在 x 和 y 轴上钳制在 [0.0,1.0] 之间的纹理空间中的值。
- 以生成的纹理点的舍入值为中心的 3x3 像素块设置为 0 的 alpha 值。(或另一个方便的 RGBA 值,以获得所需的效果)。
为了说明这里是一个使用球体的更复杂版本的问题,粉红色的框显示了替换的像素。
我只是在 OpenGL 中指定用于映射的纹理点,我实际上并不知道像素是如何投影到球体上的。基本上我需要该投影的倒数,但我不太清楚如何进行数学运算,尤其是在更复杂的形状上,如球体或任意凸包。我假设您可以以某种方式找到构成形状的平面多边形,光线与之相交,并且从那里四边形或三角形的逆投影将是微不足道的。
一些方程式、文章和/或示例代码会很好。