对于学校项目,我需要将DirectX模型(.x文件)加载到我的(OpenScene)图形中。 我有一个BeeGee.x文件(DirectX 3D模型)和一个BeeGee.dds文件(纹理)。这是我负责构建图表的代码的简短示例:
osg::ref_ptr<osg::Group> root = new osg::Group;
osg::ref_ptr<osg::MatrixTransform> t1 = new osg::MatrixTransform;
root->addChild(t1.get());
// What I want to do but not working
osg::ref_ptr<osg::Node> plane= osgDB::readNodeFile( "BeeGee.x" );
t1->addChild(plane);
...
是否可以将osgDB :: readNodeFile与DirectX 3D模型一起使用? 谢谢你的帮助
答案 0 :(得分:1)
我再试一次,它有效!为了记录,这是我的工作代码:
osg::ref_ptr<osg::Node> plane = osgDB::readNodeFile( "GeeBee2.x" );
osg::Image *img_plane = osgDB::readImageFile("Images/GeeBee.dds");
osg::Texture2D *tex_plane = new osg::Texture2D;
tex_plane ->setImage(img_plane);
plane->getOrCreateStateSet()->setTextureAttributeAndModes(0, tex_plane );
答案 1 :(得分:0)
是的,显然osgDB使用文件扩展名来加载正确的插件。
但是,我不确定.x文件格式的支持程度如何。我已经能够从DX SDK加载一个模型(它不是很漂亮):
C:\OpenSceneGraph\bin>osgviewer.exe --window 10 10 600 600 "C:\Program Files\DXSDK\Samples\Media\Tiny\tiny.x"
其他尝试导致深蓝色背景,没有任何事情发生(并且大多数尝试也没有产生任何错误)。
所以,这是可能的,但你的模型应该如何制作还不清楚。