OSG提供了很多的插件用来读取常用的数据格式,包括图像和模型等等。下面对插件的使用进行简单的描述。
使用插件读取和保存数据
当使用osgDB读取文件时,会自动根据文件的扩展名来到插件目录中寻找相应的插件,来实现。
比如:
> osgviewer cow.osg
调用了osgdb_osg插件去读*.osg文件。
> osgviewer model.flt
调用了osgdb_flt插件去读*.flt文件。
如果使用代码我们是使用如下代码读取模型:
#include <osgDB/ReadFile> osg::ref_ptr<Node> node = osgDB::readNodeFile("cow.osg"); osg::ref_ptr<Image> image = osgDB::readImageFile("lz.rgb");
下面是保存模型:
#include <osgDB/WriteFile> osgDB::writeNodeFile(*node, "saved.osg");
使用OSG插件是用户无需过分关心的事情,机制已经建立,当读某文件时,它会自己去寻找相应的插件,当你需要读定特文件的时候,就要确认这个文件的插件是否存在,如果不存在如何编译。
列举一些OSG支持的模型类型
Plugin name | Description | Extensions | Read | Write | Notes |
3dc | 3DC point cloud reader | .3dc .asc | yes | no | |
3ds | 3D Studio | .3ds | yes | yes | |
ac3d | AC3D modeler | .ac | yes | yes | |
bsp | Quake3 BSP | .bsp | yes | no | |
dae | COLLADA 1.4.x | .dae | yes | yes | Requires Collada DOM library. See Collada plugin details |
dw | Design Workshop Database | .dw | yes | no | |
dxf | Autodesk DXF Reader | .dxf | yes | no | |
fbx | Autodesk FBX | .fbx | yes | yes | Requires Autodesk's FBX SDK. If using OpenSceneGraph 2.8.x you'll need version 2010.2 of the SDK. Otherwise checkReaderWriterFBX.h to see which version of the SDK is required (currently 2012.1). If you have problems loading an FBX model please check that it works in Autodesk's FBX QuickTime Viewer first to see if the model was correctly exported. |
geo | Geo | .gem .geo | yes | no | |
Inventor | Open Inventor format | .iv .wrl | yes | yes | .wrl Only VRML1.0 |
ive | Native osg binary | .ive | yes | yes | May also read/write (internal) images |
logo | Logo database | .logo | yes | no | |
lwo | Lightwave Object | .lwo .lw .geo | yes | no | |
lws | Lightwave Scene | .lws | yes | no | |
md2 | Quake MD2 | .md2 | yes | no | |
obj | Alias Wavefront | .obj | yes | yes | Also writes materials to .mtl |
ogr | .ogr | yes | no | ||
Openflight | Multigen Openflight | .flt | yes | yes | See OpenFlight plugin details |
osg | Native osg ascii | .osg | yes | yes | Currently the writer supports OVERRIDE/PROTECTED flags in "StateSets" only for "Modes" and not for "StateAttributes". |
pfb | Performer loader | All extensions supported by Performer loaders | yes | no | Requires Performer library |
shp | ESRI Shapefile | .shp | yes | no | |
stl | Stereolithography file | .stl .sta | yes | no | |
vrml | VRML2 | .wrl | yes | no | Requires OpenVRML library |
x | DirectX 3D model | .x | yes | no |
图片和视频
Plugin name | Description | Extensions | Read | Write | Notes |
bmp | Window bitmap | .bmp | yes | yes | |
dds | DirectX image format | .dds | yes | yes | |
gdal | GDAL image loaders | All extensions supported by GDAL | yes | no | |
gif | GIF Image | .gif | yes | no | |
hdr | High Dynamic Range image | .hdr | yes | yes | |
jp2 | .jps .jpc | yes | yes | ||
jpeg | Jpeg image | .jpeg .jpg | yes | yes | |
Openflight | Image attribute files | .attr | yes | yes | Stores additional attributes that are not stored in .rgb files |
pic | PIC image | .pic | yes | no | |
png | Portable Network Graphics | .png | yes | yes | |
pnm | .pnm. ppm .pgm .pbm | yes | yes | ||
rgb | .rgb .sgi .rgba .int .inta .bw | yes | yes | ||
tga | Targa image | .tga | yes | no | |
tiff | Tiff image | .tiff .tif | yes | yes | |
quicktime | Quicktime movie loader | .mov .mpg .mpv .mp4 .m4v .dc .avi .flv .swf | yes | yes | |
Quicktime image loader | rgb. rgba .jpg .jpeg .tif .tiff .gif .png .pict .pct .tga .psd | yes | yes | ||
xine | Xine image stream | .mpg .mpv .db .flv .mov .avi .wmv. xine | yes | no |
压缩以及网络传输类型
Plugin name | Description | Extensions | Read | Write | Notes |
curl | HTTP Protocol Model | .curl | yes | no | |
osga | |||||
txp | Terrapage file | .txp | yes | no | Produced by Terra Vista terrain building tools |
net | |||||
zip | |||||
tgz | |||||
osgtgz |
字体类型
Plugin name | Description | Extensions | Read | Write | Notes |
freetype | Freetype font loader | .ttf .ttc .pfb .pfa .cid .cff .cef .fon .fnt | yes | no | |
txf | GLU texture font | .txf | yes | no |
加载时可以显式加的矩阵操作
Plugin name | Description | Extensions | Read | Write | Notes |
rot | Rotates to the loaded model | .rot | |||
scale | Scales the loaded model | .scale | |||
trans | Translates the loaded model | .trans | |||
normals | Shows normals of the loaded model | .normals |