查看: 1993|回复: 5

求教!如何改变模型纹理贴图?

[复制链接]

该用户从未签到

发表于 2010-12-14 16:44:15 | 显示全部楼层 |阅读模式
求教!如何改变模型纹理贴图?
我有一个用3dmax做的汽车模型,此模型上已有纹理,且面很多不同面有不同贴图,我想改变整个车的纹理只贴一幅图,达到把原来纹理覆盖的效果,该如何?
我的程序大致如下但不起作用,请问该如何处理?
osg::ref_ptr<osg::Node>model1=osgDB::readNodeFile(car.ive);
osg::StateSet* stateset = new osg::StateSet();
osg::Image* imagea = osgDB::readImageFile( "aaa.bmp" );
if (imagea)
{
osg::Texture2D* texture = new osg::Texture2D;
texture->setImage(imagea);
stateset->setTextureAttributeAndModes(0,texture,osg::StateAttribute::ON); }
model1->setStateSet( stateset );
aaa.bmp是我想贴上去的一幅图
谢谢!

该用户从未签到

发表于 2010-12-14 17:14:26 | 显示全部楼层
  1. stateset->setTextureAttributeAndModes(0,texture,osg::StateAttribute::ON|osg::StateAttribute::OVERRIDE);
复制代码
此时所有没有设置PROTECTED的纹理都会被覆盖

该用户从未签到

 楼主| 发表于 2010-12-14 17:58:15 | 显示全部楼层
stateset->setTextureAttributeAndModes(0,texture,osg::StateAttribute::ON|osg::StateAttribute::OVERRIDE);此时所有没有设置PROTECTED的纹理都会被覆盖
array 发表于 2010-12-14 17:14

谢谢!但是怎么知道是protected啊?原纹理贴图都是3dmax中做的。

该用户从未签到

 楼主| 发表于 2010-12-14 18:14:45 | 显示全部楼层
而且原贴图有半透明贴图时也不正确,该如何?

该用户从未签到

发表于 2010-12-14 18:29:46 | 显示全部楼层
查找节点下的所有drawable对象,改变其stateset贴图属性即可

该用户从未签到

发表于 2010-12-15 10:51:03 | 显示全部楼层
通常只要您自己不设置,纹理就不会具有PROTECTED属性
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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