查看: 1766|回复: 7

多幅纹理贴图问题

[复制链接]

该用户从未签到

发表于 2013-5-21 10:41:48 | 显示全部楼层 |阅读模式
我想给一个地形网格贴图,要使用有一定重叠区域的两张图片。请问怎样往一个几何体上贴两幅图片呐?
还有这两幅图片的重叠区域我想要融合处理一下不要太明显的接缝,要在贴图前处理还是贴图后有相关函数可以实现,请大神给个思路~

该用户从未签到

发表于 2013-5-21 10:47:29 | 显示全部楼层
MultiTexture  设置 两个 texcoord 和 两个纹理单元就可以了

该用户从未签到

 楼主| 发表于 2013-5-21 21:27:05 | 显示全部楼层
非常感谢,我试了一下,有这么几个小问题,首先是单元1的纹理贴上去以后比单元0的暗好多
再有一个问题是 问题.bmp
假设几何体的顶点是这样的,
                v->push_back(osg::Vec3(0.0f,0.0f,1.0f));
        v->push_back(osg::Vec3(1.0f,0.0f,1.0f));
        v->push_back(osg::Vec3(1.0f,0.0f,0.0f));
        v->push_back(osg::Vec3(0.0f,0.0f,0.0f));
        geom->setVertexArray(v.get());

        osg::ref_ptr<osg::Vec2Array> vt = new osg::Vec2Array();
        //添加数据
        vt->push_back(osg::Vec2(0.0f,1.0f));
        vt->push_back(osg::Vec2(1.0f,1.0f));
        vt->push_back(osg::Vec2(1.0f,0.0f));
        vt->push_back(osg::Vec2(0.0f,0.0f));
        geom->setTexCoordArray(0,vt.get());
        //创建纹理坐标2
        osg::ref_ptr<osg::Vec2Array> vt2 = new osg::Vec2Array();
//我想再往顶点为134的三角形上贴图的话,这里应该怎么设置,如果设置三个顶点就是123顶点的三角形,怎么把顶点2跳过呢

        vt2->push_back(osg::Vec2(0.5f,0.0f));
        vt2->push_back(osg::Vec2(1.0f,0.0f));
        vt2->push_back(osg::Vec2(1.0f,1.0f));??

        geom->setTexCoordArray(1,vt2.get());

该用户从未签到

发表于 2013-5-22 08:20:00 | 显示全部楼层
按照顶点push的顺序设置texcoord就可以了

该用户从未签到

 楼主| 发表于 2013-5-22 09:29:17 | 显示全部楼层
liuzhiyu123 发表于 2013-5-22 08:20
按照顶点push的顺序设置texcoord就可以了

嗯这个我知道嗒,但是有的纹理不能覆盖整个几何体,就存在有的几何体顶点不对应纹理的情况;就像我上面说的,我要往134的三角形上贴图,怎么把2跳过去啊~~它那个纹理坐标push进去不都是按顶点顺序对应的么~

该用户从未签到

发表于 2013-5-22 09:38:08 | 显示全部楼层
小畅 发表于 2013-5-22 09:29
嗯这个我知道嗒,但是有的纹理不能覆盖整个几何体,就存在有的几何体顶点不对应纹理的情况;就像我上面说 ...

这样设置貌似不行吧  那个primitiveset 是一个整体啊 开启了texcoord 是都需要的

该用户从未签到

 楼主| 发表于 2013-5-22 09:54:16 | 显示全部楼层
liuzhiyu123 发表于 2013-5-22 09:38
这样设置貌似不行吧  那个primitiveset 是一个整体啊 开启了texcoord 是都需要的

我试的时候如果几何体有5个顶点,只给前四个设置纹理坐标也是可以的,我说的那个想跳过的顶点2有木有办法像这种方法中第五个顶点那样不给它设置纹理坐标呢~~

还是说这种给一个大大的道路网格贴上好多图片就不能用多重纹理实现了~
那该怎么做呢,只能拆成一个一个的几何体贴图?

该用户从未签到

发表于 2013-5-22 16:16:49 | 显示全部楼层
可以设置一个超出[0,1]区间的值然后CLAMP_TO_BORDER并设置边界颜色。但是您会发现这种时候纹理插值的结果一般不会是您想的那样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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