OpenGL/GLUT-将模型视图坐标投影到纹理矩阵
有没有一种方法可以使用OpenGL或GLUT将点从模型视图矩阵投影到关联的纹理矩阵中?如果没有,是否有一个常用的库可以实现这一点?我想根据3D空间中的光线投射修改对象的纹理 最简单的情况是:OpenGL/GLUT-将模型视图坐标投影到纹理矩阵,opengl,texture-mapping,map-projections,Opengl,Texture Mapping,Map Projections,有没有一种方法可以使用OpenGL或GLUT将点从模型视图矩阵投影到关联的纹理矩阵中?如果没有,是否有一个常用的库可以实现这一点?我想根据3D空间中的光线投射修改对象的纹理 最简单的情况是: 将投射与四边形相交的光线,并使用单个纹理进行贴图 交点将转换为x轴和y轴上夹在[0.0,1.0]之间的纹理空间中的值 围绕结果纹理点的舍入值为中心的3x3像素面片设置为0的alpha值(或另一个方便的RGBA值,以获得所需效果) 为了说明这是一个更复杂的问题,使用一个球体,粉红色框显示替换的像素 我只是在O
有几种方法可以让你完成你想做的事情:
gluProject
),然后执行透视分割步骤。如果使用的深度坐标为零,这将对应于光线在成像平面处相交。你唯一需要做的另一项修正是将NDC(x和y的范围在[-1,1]内)映射到纹理空间,方法是将生成的坐标除以2,然后移动0.5所以我找到了一个有点复杂的解决方案,但确实有效 对于复杂的几何图形,必须确定哪个四边形或三角形相交,并将其用作平面。四边形必须是平面的(显然) 在单位矩阵中绘制尺寸为1x0的平面,在与模型几何体相同的点上映射纹理
所以,也许我不完全理解这个解释,但听起来好像你想让我把世界空间坐标投影到屏幕空间,也许我只是个傻瓜,但我真的不明白这与将世界空间投影到UV贴图纹理有什么关系。我能理解我试图解决的问题是,只是在一点上画画映射,但它不是,它正在绘制到模型上。@awebie:还有另一种方法:用颜色对纹理的UV坐标进行编码。在2通道纹理中使用每个通道超过12位的格式,或者在R和G通道中使用256模的数字,并在B通道中对每个通道8位纹理的商进行编码。渲染图像使用相同的转换,但转换为FBO。然后读回帧缓冲区,这将为您提供从帧缓冲区像素到纹理坐标的直接映射。