查看: 2408|回复: 12

osg导入模型问题

[复制链接]

该用户从未签到

发表于 2011-7-14 20:20:25 | 显示全部楼层 |阅读模式
请教大家一个问题,我用alias这个建模软件导出obj格式,然后导入osg中,没有材质信息,是不是obj本来就没材质信息,比如一个汽车模型,那里是车轮哪里是玻璃,在obj中能体现吗?又试了下.iv格式,osg不能读,好像说没有这个插件可读,(想问下大牛们,obj文件是不是不带材质信息?)

该用户从未签到

发表于 2011-7-14 20:38:49 | 显示全部楼层
obj当然带材质信息,不过是纹理文件的名称,需要和obj放一起。
输出obj时,有一些选项,仔细看看就知道了。

该用户从未签到

 楼主| 发表于 2011-7-14 21:35:46 | 显示全部楼层
回复 2# sky11811

恩,不过我想可能是alias这个软件输出obj没有带材质信息吧,这位朋友对alias熟悉吗,另外,你说的输出obj是指的哪个软件输出还是osg写obj,alias导出obj选项没有material相关,
3Dmax好像可以修改材质输出选项。

该用户从未签到

发表于 2011-7-15 08:18:36 | 显示全部楼层
导出obj时会附带一个mtl文件,读取时这两个文件也必须放在一起

该用户从未签到

 楼主| 发表于 2011-7-17 22:34:10 | 显示全部楼层
回复 4# array

恩谢谢回复,然后的问题是我怎么获取obj中的mtl的信息,我只是想根据mtl文件中的材质名,获取到后我自己去改材质参数,不知道怎么做,我现在只是获取到stateset,不知道怎么做,不知道我说明白没,请详细指点下,谢谢array

该用户从未签到

发表于 2011-7-18 08:30:58 | 显示全部楼层
很遗憾您没有说明白

该用户从未签到

 楼主| 发表于 2011-7-18 09:39:23 | 显示全部楼层
回复 6# array


   。。。。,就是我想修改或者替换材质,怎么通过obj文件去做,调用什么函数?请详细点,(我自己认为应该且需要通过获取obj中的mtl文件名然后去做,不知道怎么实现),急死我了。。

该用户从未签到

 楼主| 发表于 2011-7-18 09:41:44 | 显示全部楼层
回复 6# array


   因为学ogre的,刚接触osg,实在要求急,我记得ogre中有material::getbyname就可以得到材质指针什么的,所以希望你指点下osg中mti想关的关联的操作,现在我已经写了节点访问器了

该用户从未签到

发表于 2011-7-19 08:12:45 | 显示全部楼层
读入OSG场景后与obj或mtl文件已经无关了,您可以通过StateSet::getAttribute和getTextureAttribute来获取材质和纹理信息

该用户从未签到

 楼主| 发表于 2011-7-19 15:10:10 | 显示全部楼层
回复 9# array

哦非常感谢!

该用户从未签到

 楼主| 发表于 2011-7-19 22:52:10 | 显示全部楼层
回复 9# array


   osg读取obj,据array老师的说法,就是读进去以后,obj格式的中的mtl名已经不能获取到了,那么我怎么区分一个模型中不同部分,是不是通过组来区分,就是obj文件中以g开头的行的信息来区分;也就是说是不是,比如我给一个obj中的一个对象附以glass的mtl名字,当我readnodefile时候,实际上这个glass的材质名已经无法获取或者说追踪了??

另一个,我怎么区分obj中的不同部分,obj建模时候有什么要求?比如是不同实体部分由名字或者其他可区分的标记?请给予指点,非常感谢!

该用户从未签到

 楼主| 发表于 2011-7-20 00:07:50 | 显示全部楼层
回复 10# menglixiaoyi

最好是通过材质名就是mtl中对应的newmtl关键字后面的名称来判断一个组节点下的不同子节点是同一个渲染状态,因为我的目的就是想通过渲染状态判断是否是同一类型的实体,比如汽车上的金属一组,玻璃一组,希望array能帮助回答谢谢!

该用户从未签到

发表于 2011-7-20 08:29:27 | 显示全部楼层
请不要重复发帖和回帖,只发一次就够了,我能看到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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