Supports importing of scene, object, camera, mesh, texture and image data.
This plugin depends on the Trade and OpenDdl libraries and the AnyImageImporter plugin. It is built if
WITH_OPENGEXIMPORTER is enabled when building Magnum Plugins. To use as a dynamic plugin, load
"OpenGexImporter" via Corrade::
Additionally, if you're using Magnum as a CMake subproject, bundle the magnum-plugins repository and do the following:
set(WITH_ANYIMAGEIMPORTER ON CACHE BOOL "" FORCE) add_subdirectory(magnum EXCLUDE_FROM_ALL) set(WITH_OPENGEXIMPORTER ON CACHE BOOL "" FORCE) add_subdirectory(magnum-plugins EXCLUDE_FROM_ALL) # So the dynamically loaded plugin gets built implicitly add_dependencies(your-app MagnumPlugins::OpenGexImporter)
To use as a static plugin or as a dependency of another plugin with CMake, put FindMagnumPlugins.cmake into your
modules/ directory, request the
OpenGexImporter component of the
MagnumPlugins package and link to the
find_package(MagnumPlugins REQUIRED OpenGexImporter) # ... target_link_libraries(your-app PRIVATE MagnumPlugins::OpenGexImporter)
The plugin supports ImporterFeature::
- Import of animation data is not supported at the moment.
halfdata type results in parsing error.
- On OpenGL ES, usage of double type and on WebGL additionally also usage of 64bit integer types results in parsing error.
- Object-only transformations are not supported.
- Additional material references after the first one for given geometry node are ignored.
- Geometry node visibility, shadow and motion blur properties are ignored.
- Camera type is always CameraType::
- Default FoV for cameras that don't have it specified is
- Default near and far plane for cameras that don't have it specified is
- Aspect ratio is ignored and hardcoded to
- Light attenuation properties are not yet supported.
- Light textures are not yet supported.
- Quads are not supported.
- Additional mesh LoDs after the first one are ignored.
wcoordinate for vertex positions and normals is ignored if present.
- Positions and normals are always imported as VertexFormat::
Vector3, texture coordinates as VertexFormat:: Vector2. Positions and normals of a different component count than 3 and texture coordinates of a different component count than 2 are not supported. Only floats are supported, doubles not.
- Indices are imported as either MeshIndexType::
UnsignedByte, MeshIndexType:: UnsignedShort or MeshIndexType:: UnsignedInt. 64-bit indices are not supported.
The imported mesh always has at least one vertex attribute, but positions are not required to be present. Indices are optional as well.
- Alpha mode is always MaterialAlphaMode::
Opaque and alpha mask always
- Two-sided property is ignored, always set to
- All materials are imported as Trade::
PhongMaterialData with ambient color always set to
transparencyattributes are not supported.
normaltextures are not supported.
- Texture coordinate transformation is ignored.
- Textures using other than the first coordinate set are not supported.
- Texture type is always Trade::
TextureType:: Texture2D, wrapping is always SamplerWrapping:: ClampToEdge, minification and magnification is SamplerFilter:: Linear and mipmap selection is SamplerMipmap:: Linear.
- If multiple textures have the same image filename string, given image is present in the image list only once. Note that only a simple string comparison is used without any path normalization.
Generic importer for OpenDDL files is implemented in the OpenDdl::
- Calling importerState() returns pointer to parsed OpenDdl::
*importerState()on data class instances returned from this importer return pointer to OpenDdl::
Structure of these types:
importerState() returns OpenGex:: Material structure
importerState() returns OpenGex:: CameraObject structure
importerState() returns OpenGex:: Texture structure
importerState() returns OpenGex:: GeometryObject structure
importerState() returns OpenGex:: Node, OpenGex:: BoneNode, OpenGex:: GeometryNode, OpenGex:: CameraNode or OpenGex:: LightNode structure
- class AbstractImporter
- Base for importer plugins.
Trade:: OpenGexImporter:: OpenGexImporter() explicit
In case you want to open images, use OpenGexImporter(PluginManager::