QGLAbstractScene ClassThe QGLAbstractScene class represents a 3D scene consisting of zero or more QGLSceneNode instances. More... #include <QGLAbstractScene> Inherits: QObject. This class was introduced in Qt 4.8. Public Types
Public Functions
Static Public Members
Additional Inherited Members
Detailed DescriptionThe QGLAbstractScene class represents a 3D scene consisting of zero or more QGLSceneNode instances. Scenes are typically created by 3D modelling packages and then loaded into the application via a QGLSceneFormatPlugin; but they can also be constructed programatically. The functions in this class provide access to major scene objects so that they can be applied or drawn whenever the application decides. QGLAbstractScene presents a very simple model of a 3D scene. Subclasses implement the specific scene graph and object representations in a manner specific to the package's format. Subclasses may also provide functionality to create new objects at runtime, but this is not required. The scene is defined to consist of a number of important objects of the following types:
Typically, the full scene represented by an external model format is not interesting to the application. 3D modelling packages regularly insert cameras, lights, effects, and other library objects that are useful to the modelling package, but not the application. The mainNode() is usually the most interesting to applications. QGLAbstractScene makes it easy to access the major scene elements with object(), objects(), and mainNode(). There are many other kinds of objects in the scene that may not be accessible via QGLAbstractScene because they are not considered "important" enough. For example, a file that contains the data for a skateboard object would contain many objects for the board, wheels, texturing effects, animations, and so on. The application may only be interested in the skateboard as a whole, and not its sub-components. The skateboard would be considered an important main object in this case, which can be easily accessed and incorporated into the application's logic. Each Subclass needs to provide its own policy for deciding which objects are considered "important". See also QGLSceneNode and QGLSceneFormatPlugin. Member Type Documentation
|
Constant | Value | Description |
---|---|---|
QGLAbstractScene::AsFilter | 0 | Return a format list that may be used as a filter. |
QGLAbstractScene::AsSuffix | 1 | Return a format list that is simply the filename suffixes. |
Constructs a 3D scene and attaches it to parent.
Destroys this 3D scene.
Returns a list of animations.
The default implementation returns empty list.
Generates QGLPickNode instances for important QGLSceneNode instances that are pickable. Objects that are either not important or not pickable can be omitted. The default implementation simply generates pick nodes for every top level object of type QGLSceneNode.
Sub-classes may implement different schemes for picking. When doing so parent the QGLPickNode objects onto the scene, so that they will appear in the list returned by pickNodes()
See also pickNodes() and setPickable().
Loads a scene from the internet in the specified format using the registered scene format plugins. If format is an empty string, then the format will be autodetected from the filename extension of the url, which specifies the location of the data online.
The options string is passed to the underlying format loader and its meaning and format depend on the loader. For example the format string for the .3ds loader accepts the following options:
The options may be specified globally for the whole model, or just for a particular mesh.
In this example smoothing is forced on globally, and native indices are used on just the mesh called "BattCoverMesh".
QString op = "ForceSmooth BattCoverMesh=NativeIndices"; QString url = "http://www.example.url.com/music-player.3ds"; QGLAbstractScene *scene = QGLAbstractScene::loadScene(url, QString(), op);
Returns the scene object, or null if the scene could not be loaded or the format was not supported by any of the plugins.
The scene object returned by this will contain only a single stub node at the root of the scenegraph, which will be filled out later once the asynchronous download of the scene data is complete.
See also QGLSceneFormatPlugin.
Loads a scene from device in the specified format using the registered scene format plugins. If format is an empty string, then the format will be autodetected from the filename extension of device. The url specifies the location of the data in device so that relative resources can be located.
The options string is passed to the underlying format loader and its meaning and format depend on the loader. For example the format string for the .3ds loader accepts the following options:
The options may be specified globally for the whole model, or just for a particular mesh.
In this example smoothing is forced on globally, and native indices are used on just the mesh called "BattCoverMesh".
QString op = "ForceSmooth BattCoverMesh=NativeIndices"; QString file = "music-player.3ds"; QGLAbstractScene *scene = QGLAbstractScene::loadScene(file, QString(), op);
Returns the scene object, or null if the scene could not be loaded or the format was not supported by any of the plugins.
To debug scene loading export the environment variable QT3D_DEBUG_MODEL, and (depending on backend implementation) the loader can produce useful debugging information on the console.
See also QGLSceneFormatPlugin.
Loads a scene from fileName in the specified format, with the supplied options, and using the registered scene format plugins.
If format is an empty string, then the format will be autodetected from the extension of fileName.
The options string is passed to the underlying format loader and its meaning and format depend on the loader. See the doc above for loadScene() for details on the 3ds format options.
Returns the scene object, or null if the scene could not be loaded or the format was not supported by any of the plugins.
See also QGLSceneFormatPlugin.
Returns the main mesh node in the scene, or null if the scene does not contain a main mesh node.
See also objects().
Increments and returns the next available pick id for this scene.
Returns the scene object that has the specified name; or null if the object was not found.
The default implementation searches objects() for an object that matches name.
See also objects().
Returns a list of the names of all objects in the scene which are considered important, and which have non-empty names associated with them.
The default implementation calls objects() and then compiles a list of all non-empty object names.
See also objects().
Returns a list of all objects in the scene which are considered important.
Important objects will typically be the main mesh object, cameras, lights, and other top-level objects. Sub-meshes and effects are normally not considered important unless the scene is acting as a library of meshes and effects.
See also objectNames(), object(), and mainNode().
Returns a list of the pick nodes that have been parented onto this scene.
See also generatePickNodes().
Returns true if this scene is pickable.
See also setPickable().
Sets this scene to be pickable if enable is true, otherwise picking is disabled. If the scene is set to be pickable, pick nodes are generated by calling generatePickNodes().
See also generatePickNodes() and pickable().
Returns a list of all supported formats known by currently available sceneformat plugins, in the format type t.
If t is QGLAbstractScene::AsFilter then the result may be passed to QDir::setNameFilters(), or used in other filters. This is the default.
For example to create a file dialog to load model files use this:
QString modelsDir = QDir::toNativeSeperators(QDir::homePath()); QString filter = tr("Models (%1)").arg(QAbstractScene::supportedFormats().join(" ")); QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), modelsDir, filter));
Otherwise (when t is QGLAbstractScene::AsSuffix) it is simply a list of file name suffixes.