查看: 953|回复: 3

求问:关于纹理包裹模型的实现方式

[复制链接]

该用户从未签到

发表于 2014-10-19 22:38:04 | 显示全部楼层 |阅读模式
大家好,我通过下面的代码简单为一个立方体设置纹理,我想实现一张纹理包裹整个立方体,而不是将整个问题重复贴到六个面中。
是不是要自己对立方体的六个面一个个指定在纹理中的对应坐标,如果是一个复杂的模型一个个面去指定纹理的坐标那得多大工作量? 或者通过3DMAX之类的软件预先将模型与纹理配置好,再导入到OSG中使用?
有没有见到的办法,可以为一个模型指定纹理图片,实现,图片多整个问题的包裹? 谢谢大家
Code:
        .......
        osg::ref_ptr<osg::ShapeDrawable> shape1 = new osg::ShapeDrawable;
        shape1->setShape( new osg::Box(osg::Vec3(-3.0f, 0.0f, 0.0f),
                2.0f, 2.0f, 1.0f) );

        osg::ref_ptr<osg::Geode> root = new osg::Geode;
        root->addDrawable( shape1.get() );

        osg::ref_ptr<osg::Image> image = osgDB::readImageFile("Images/clockface.JPG");
        osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
        texture->setImage(image.get());

        root->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture.get());

        osgViewer::Viewer viewer;
        viewer.setSceneData( root.get() );
        return viewer.run();
        ......


      

立方体纹理

立方体纹理

该用户从未签到

 楼主| 发表于 2014-10-20 14:13:07 | 显示全部楼层
自己顶下,怎么没有人帮回答下呢?

该用户从未签到

发表于 2014-10-21 09:13:15 | 显示全部楼层
之所以出现f1层代码你贴纹理出现六个图片,是因为osg::box源代码为每个面指定了纹理坐标,,,六边形你可以使用图上所示绘制自己的六边形,实现一张图全覆盖,怎么指定坐标不用说了吧,但我不知道这个有什么用,还有复杂模型你不可能使用osg写的,使用osg写一个飞机,简直不可能啊,都是建模好了导出来的。。。
无标题.png

该用户从未签到

 楼主| 发表于 2014-10-22 17:54:12 | 显示全部楼层
buaahc 发表于 2014-10-21 09:13
之所以出现f1层代码你贴纹理出现六个图片,是因为osg::box源代码为每个面指定了纹理坐标,,,六边形你可以 ...

OK, 有所了解~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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