Open Inventor的VRML2转换SoToVRML2Action

本文介绍了一个简单的程序,该程序可以将SOVRML格式的3D模型文件转换为VRML2格式。程序首先初始化SoDB和SoInteraction库,然后读取指定的输入文件,并使用SoDB::readAll()函数解析整个场景图。接下来,通过SoToVRML2Action将读取的场景图转换为VRML2格式,最后将转换后的场景图写入到名为out.wrl的文件中。

#include <Inventor/SoDB.h> #include <Inventor/SoInteraction.h> #include <Inventor/SoInput.h> #include <Inventor/SoOutput.h> #include <Inventor/actions/SoWriteAction.h> #include <Inventor/actions/SoToVRML2Action.h> #include <Inventor/nodes/SoSeparator.h> #include <Inventor/VRMLnodes/SoVRMLGroup.h> int main(int argc, char *argv[]) { SoDB::init(); SoInteraction::init(); SoInput in; in.openFile(argv[1]); printf("Reading.../n"); SoSeparator *root = SoDB::readAll(&in); if (root) { root->ref(); SbString hdr = in.getHeader(); in.closeFile(); printf("Converting.../n"); SoToVRML2Action tovrml2; tovrml2.apply(root); SoVRMLGroup *newroot = tovrml2.getVRML2SceneGraph(); newroot->ref(); root->unref(); printf("Writing.../n"); SoOutput out; out.openFile("out.wrl"); out.setHeaderString("#VRML V2.0 utf8"); SoWriteAction wra(&out); wra.apply(newroot); out.closeFile(); newroot->unref(); } return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值