ad9生成坐标文件_《图形编程技术学习》(五十二)自动生成纹理坐标

一、如何得到纹理坐标?

(1)自己指定纹理坐标

(2)模型文件中带有纹理坐标

a.如pikaqiu.obj中有纹理坐标

3ce1da5b749be324bd14391d0c1676c8.png

上面是用sublime打开一个obj文件的文本显示

b.如glut提供的基本模型都自带纹理坐标

(3)OpenGL可自动生成纹理坐标

二、投影式纹理映射(projective texture mapping)

(1)投影式纹理映射从投影点出发,将二维纹理投到三维物体表面。(如同从放映机中投影出的画面一样)

c8a209cdddc09b17986d306909118866.png

45c41c28d3f884b617593cb05a2a911e.png

三、OpenGL自动生成纹理坐标

五种方式

85a94b5f59f2ae2ae609a946ce4f0800.png

四、GL_OBJECT_LINEAR

(1)设置三维空间中的一个平面

(2) 计算当前顶点与该平面的距离

(3) 以此距离作为纹理坐标。

f1cc81438f8ee5c5f7ccbb845be38e7b.png

如果是二维纹理,则可为s和t分别设置一个平面;

bd8685c6f8c43eaa4c937a384252d4f1.png

三维空间中平面的方程

p1*x + p2*y + p3*z + p4 = 0

三维空间中顶点到平面的距离

d = p1*x + p2 *y + p3*z + p4

GL_OBJECT_LINEAR中的纹理坐标计算;

g = p1*x + p2 *y + p3*z + p4*w

五、GL_OBJECT_LINEAR与GL_EYE_LINEAR

GL_OBJECT_LINEAR是在物体局部坐标系的平面,保持与物体的相对位置关系不变。

GL_EYE_LINEAR则是当前时点坐标系中的平面。当物体变换时,该平面与物体的相对位置会发生变化。

8c41d5dd16592e975613df13552ba4f6.png

六、操作步骤

步骤一、指定坐标生成模式

void glTexGenni(GLenum coord,GLenum pname,GLint param);

coord:GL_S,GL_T,GL_R,or GL_Q

pname:必须是GL_TEXTURE_GEN_MODE

param:GL_OBJECT_LINEAR,GL_EYE_LINEAR,GL_SPHERE_MAP,GL_REFLECTION_MAP,GL_NORMAL_MAP,GL_REFLECTION_MAP,GL_NORMAL_MAP

注意区分:(x,y,z,w)、(s,t,r,q)、(u,v,w)

步骤二:指定参考平面的参数

void glTexGenfv(GLenum coord,GLenum pname,const GLfloat *params);

coord:GL_S,GL_T,GL_R,or GL_Q

pname:GL_OBJECT_PLANE,GL_EYE_PANE

param:平面的四个参数p1,p2,p3,p4

步骤三

glEnable(GL_TEXTURE_GEN_S);

glEnable(GL_TEXTURE_GEN_T);

glEnable(GL_TEXTURE_GEN_R);

glEnable(GL_TEXTURE_GEN_Q);

七、OpenGL自动生成纹理坐标

54cc01d17d9f16c0e3c61b7e194c1c3f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值