osgconv
- Details
- Category: User Guides
- Published: 12 September 2012
- Written by openscenegraph
- Hits: 68548
osgconv is utility program for reading in 3d databases, apply basic operations to them, then saving out as a single 3d database.
Using osgconv to convert into native osg formats
osgconv can be very useful to read from standard 3d formats such as OpenFlight, 3DS, Alias Wavefront (OBJ) etc and then convert to an OSG native format supported such as the OpenSceneGraph .osg ascii format or .ive binary format. By default, optimization of the loaded scene graph will be peformed so the resulting scene graph written out will be smaller and faster to use at run-time, and the .ive file format is particular fast for loading making it ideal for database paging and large database.
Convert cow.obj to equivilant IVE format file:
osgconv cow.obj cow.ive
Convert cow.obj to equivilant IVE format file and compress and automatically generate mipmapped textures:
osgconv --compressed cow.obj cow.ive
Command line options available
For a full list of command line options supported type:
osgconv --help
Which will print out out the following:
usage:
osgconv [options] infile1 [infile2 ...] outfile
options:
-O option | ReaderWriter option |
--compressed | Compress textures. |
--compressed | Enable the usage of compressed textures. |
--compressed-arb | Enable the usage of OpenGL ARB compressed textures |
--compressed-dxt1 | Enable the usage of S3TC DXT1 compressed textures |
--compressed-dxt3 | Enable the usage of S3TC DXT3 compressed textures |
--compressed-dxt5 | Enable the usage of S3TC DXT5 compressed textures |
-l libraryName | load plugin of name libraryName i.e. -l osgdb_pfb Useful for loading reader/writers which can load other file formats in addition to its extension. |
-e extensionName | load reader/wrter plugin for file extension i.e. -e pfb Useful short hand for specifying full library name as done with -l above, as it automatically expands to the full library name appropriate for each platform. |
-o orientation | Convert geometry from input files to output files. Format of orientation argument must be the following: X1,Y1,Z1-X2,Y2,Z2 or degrees-A0,A1,A2 where X1,Y1,Z1 represent the UP vector in the input files and X2,Y2,Z2 represent the UP vector of the output file, or degrees is the rotation angle in degrees around axis (A0,A1,A2). For example, to convert a model built in a Y-Up coordinate system to a model with a Z-up coordinate system, the argument may look like 0,1,0-0,0,1 or -90-1,0,0 |
-t translation | Convert spatial position of output files. Format of translation argument must be the following : X,Y,Z where X, Y, and Z represent the coordinates of the absolute position in world space |
-s scale | - Scale size of model. Scale argument must be the following : SX,SY,SZ where SX, SY, and SZ represent the scale factors. Caution: Scaling will be done in destination orientation |
Tips
Texture Conversion
When converting from formats like .IVE which contain embedded texture image files to formats such as .OSG which do not, the resulting database may not display any texturing. The .OSG writer supports the "OutputTextureFiles" option, which instructs it to generate new external texture files.
Example:
osgconv -O OutputTextureFiles in.ive out.osg
The texture files will be generated using the original texture filename still present in the scenegraph, and will use the format suggested by the filename's extension. This is only possible if the destination directory the texture file specifies already exists.
Some combinations of formats and texture data are not compatible, for example the .RGB format is not capable of storing compressed texture data. This means that if you started with a scene using .RGB external texture images, converted to .IVE and have compressed your texture data since converting to IVE, converting back to .OSG with external .RGB texture files will not be successful. See also: http://forum.openscenegraph.org/viewtopic.php?t=3196&view=next
Compression and decompression of textures during the conversion process is done by the OpenGL implementation, not by an OSG software algorithm. This means that driver defects may manifest at this stage. Problems with corrupt textures could be caused by a faulty OpenGL driver.