Working with Quest3D 5
Using the QFramework
The easiest way to use Quest3D is to use the QFramework. The Qframework is a reference application which implements many common features like shadows, materials, lights and importing.
If you need a simple flytrough you can import your models, tweak settings and instantly export the scene you just built to an executable.
- Robust import of FBX, 3DS, DAE and other formats
- Sky rendering with procedural clouds
- Sunlight, ambient lighting and sun shadows
- Ocean rendering
- Landscape painting
- Volumetric fog
- Spot lights with shadows
- Object placer
- Fly trough camera
- Ambient occlusion
- Anti aliasing
For more information on the QFramework here: QFramework overview
The QFramework is fully customizable or you an even choose to use it as reference design and build your own 3D engine from scratch.
Essential elements of the GUI
This is the most important window of the user interface. In this window you can add channels and create links between channels to create your program. It's the graphical equivalent of a the text editor you would use in text based programming languages.
For more information here go here: Channel Graph
The project window simply shows your current result. In this window the project runs live at it is right now. Any changes you make in your program are visible here immediately. This is the second most important window because it not only shows you the current result but it also contains the editing capabilities that are part of the current program. In the QFramework you can move and load 3D models for example.
For more information here go here: Project Window
Template list and Channel list
These two windows allow you to add new components to the channel graph. Your program in Quest3D is constructed from one or multiple graphs and the graphs are built from individual channels. A channel in a sense is a very small piece of your program. By combining different types of channels you can create almost anything you can imagine.
This window shows all the graph files you currently have in your project. By double clicking on an item you can view its graph. The names you see in this window are not the file names but they are the names internally used in Quest3D. With this name other graphs can find things located in other files. If you hover your mouse over an item you can see the actual file name. Some files contain OO information. This information is displayed as sub nodes of the main item. A file contains not only a graph but also interfaces. An interface is a method for pieces of the program to talk to each other. An interface can have members and functions. To use these members and functions you can drag them from the project tree into the channel graph. To put it simply: if you want to call a function you can look it up in the project tree and drag it into the graph. So in short this window has the following functions:
- Show a list of all files which are part of your project
- Show for each file which interfaces, functions and members are defined in the file
- Allow you to access members and functions in the graph by dragging them from the Project Tree into the graph.
For more information here go here: Project Tree
This window shows all functions in the current file (The file that's currently visible in the graph). You only need this window for implementing functions. You first define a function in the OO Editor and then switch to the channel graph to implement the function. When you drag a function to the channel graph the new channel you created becomes the starting point for that function. You can recognize these starting points because they are colored red.
For more information here go here: Function Window
The OO Editor is an editor for defining Classes and interfaces. A class is like a 'black box' in your software. Other parts of the software ave no clue how the black box works but this does not matter because they khow exacly how to talk to it. The interfaces are specifications on how parts of your program can talk to the black box.
The interface contains functions and data. Functions allow other parts of the program to make the black box do things and the data allows other programs to get information from it. The OO editor allows you to create interfaces and then create data and functions inside these interfaces. When you have an interface you can assign it to a class. One class can have multiple interfaces so there are multiple ways other parts of your program can talk to it. To illustrate this we can have an class "TV".
- Imagine we want to talk to the TV in two ways. This means we need two interfaces.
- First we want to control it so. we create an interface called "Controls". This interface contains things like the current channel and maybe a function to turn it off.
- Another interface would allow you to define the settings for the TV so this interface contains contrast, brightness and maybe a function to search for a new channel on it incoming antenna line.
As you can see we have a class TV with two interfaces "Control" and "Settings". The beauty of the OO system is interfaces can be shared between different classes. You could have 100 different TVs and you can all control them trough the same "control" interface. It's like having a remote which works on 100 different TVs. This in a nutshell is the essence of object oriented programming. By abstracting the internal workings of pieces of software and defining clear rules this system makes programming a lot easier and less prone to mistakes.
For more information here go here: OO Editor
The Debug Window shows debug output of channels and the Quest3D engine.
The profiler is a small tool to investigate the perfomance of an OO based program.
For more information here go here: Profiler
The Search window allows you to search for channels in the application
OO (Object oriented) Tutorials
The following articles refer to examples listed in the following file: Working_with_Quest3D_5_files.zip
Advanced Framework Examples
The QFramework is an excellent starting point for your own project. We have several examples available which show you many of the concepts of the QFramework. In these examples a framework similar to the QFramework is created in several steps from scratch. Download the examples here:
Publishing an executable
Information for users of previous versions
The new 'OO mode' provides a more streamlined an clean working environment. In old Quest3D versions we added many windows to the editor to allow you to place object or to change material properties. In Quest3D 5 this is not needed anymore because all editing capabilities are part of the project and can be customized per project. The reference framework included with Quest3D contains nice editting capabilities so you don't need them in the editor anymore.
OO (Object Orientation) is now the preferred method to structure you Quest3D projects. In the past this was done by creating links between files. You could have a 'public caller' in one file and a 'public' channel in a second file. The best method to do this in an OO system is by defining a class first. In this class you define functions which have pointers to public channels in the file. Quest3D in OO still has 'public' channels in the GUI but no more 'public callers' and parameter channels because they have been replaced by functions of the OO system. Parameters are now defined when you define a function. You can now easily define a funcion and its parameters in one place. For a short overview what functions look like in the OO system you can go here: Functions.
- Public callers and parameter channels are only available in legacy mode. In OO mode there are better ways to create parameters and call functions.
- The "Object Section", "Animation Section", "Nature Painting" and the array editor are only available in legacy mode.
- Any old channels or windows are removed from the GUI in legacy mode.
For more details you go here: New in Quest3D 5
How to enable legacy mode
If you used a previous version of Quest3D and you look for maximum backwards compatibility you can enable "Legacy Mode" in the options menu of the Quest3D. You need to restart Quest3D for this setting to take effect.