查看: 6452|回复: 14

osg纹理贴图坐标

[复制链接]

该用户从未签到

发表于 2012-3-19 10:29:01 | 显示全部楼层 |阅读模式
osg里如何通过鼠标选取获得鼠标点击的贴图的纹理坐标

该用户从未签到

发表于 2012-3-19 12:24:17 | 显示全部楼层
你应首先确定几何体坐标和纹理坐标之间的映射关系,然后通过将鼠标与几何体交点的坐标进行映射来获取纹理坐标!

该用户从未签到

 楼主| 发表于 2012-3-19 12:51:21 | 显示全部楼层
fenma3422 发表于 2012-3-19 12:24
你应首先确定几何体坐标和纹理坐标之间的映射关系,然后通过将鼠标与几何体交点的坐标进行映射来获取纹理坐 ...

映射用的是setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_BORDER);自动计算的,这种怎么获取映射关系??

该用户从未签到

发表于 2012-3-19 13:20:21 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2012-3-19 14:39:15 | 显示全部楼层
fenma3422 发表于 2012-3-19 13:20

求指点

该用户从未签到

发表于 2012-3-19 14:54:26 | 显示全部楼层
我的意思是你能确定一个y=f(x)函数,其中x为vec3类型的几何体顶点坐标,y为x对应的纹理坐标。只有这个关系确定了,你才能找到

该用户从未签到

 楼主| 发表于 2012-3-19 15:03:31 | 显示全部楼层
fenma3422 发表于 2012-3-19 14:54
我的意思是你能确定一个y=f(x)函数,其中x为vec3类型的几何体顶点坐标,y为x对应的纹理坐标。只有这个关系确 ...

但几个模型大小有差别不规则,所以贴纹理时才选择setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP_TO_BORDER);
能给些意见吗

该用户从未签到

发表于 2012-3-19 15:31:18 | 显示全部楼层
你是不是想获取鼠标点击处于模型交点的纹理坐标?

该用户从未签到

 楼主| 发表于 2012-3-19 15:40:23 | 显示全部楼层
fenma3422 发表于 2012-3-19 15:31
你是不是想获取鼠标点击处于模型交点的纹理坐标?

嗯,是的。
通过Intersections::getLocalIntersectPoint()获取了点击的物体上的坐标,但不知到如何转换为纹理上的了

该用户从未签到

发表于 2012-3-19 17:14:57 | 显示全部楼层
给你个通用方案,
1、使用RTT,在渲染时将纹理坐标写到RTT目标中,此时硬件会自动插值纹理坐标
2、获取时找到鼠标的二维平面坐标,然后在RTT纹理上查出对应的值即纹理坐标。
这样你不需要根据物体特点来苦求映射关系,很通用

该用户从未签到

 楼主| 发表于 2012-3-19 17:24:34 | 显示全部楼层
fenma3422 发表于 2012-3-19 17:14
给你个通用方案,
1、使用RTT,在渲染时将纹理坐标写到RTT目标中,此时硬件会自动插值纹理坐标
2、获取时 ...

“将纹理坐标写到RTT目标中”怎么做

该用户从未签到

 楼主| 发表于 2012-3-19 17:27:56 | 显示全部楼层
没太理解

该用户从未签到

发表于 2012-3-19 20:17:48 | 显示全部楼层
“将纹理坐标写到RTT目标中”怎么做
使用shader

该用户从未签到

 楼主| 发表于 2012-3-19 21:01:23 | 显示全部楼层
fenma3422 发表于 2012-3-19 20:17
使用shader

哦,我研究研究。谢谢了

该用户从未签到

发表于 2012-11-16 01:20:35 | 显示全部楼层
fenma3422 发表于 2012-3-19 17:14
给你个通用方案,
1、使用RTT,在渲染时将纹理坐标写到RTT目标中,此时硬件会自动插值纹理坐标
2、获取时 ...

没看懂,可不可以写个小demo看看 比如鼠标已经点选获取了某一个node ,相交点坐标vec3也已经知道,请问怎么给该node相交面添加纹理啊?  谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表