Class engine#

Nested Relationships#

Nested Types#

Class Documentation#

class engine#

Class used to create instance of other classes.

The main class of the libf3d to create all other instances. Configured on creation using an enum, then all objects can be accessed through their getter.

Example usage for a default scene file:

f3d::engine eng(f3d::engine::CREATE_WINDOW | f3d::engine::CREATE_INTERACTOR);
f3d::loader& load = eng.getLoader();
load.loadGeometry("path/to/file").loadGeometry("path/to/another/file");
f3d::interactor& inter = eng.getInteractor();
inter.start();

Example usage for a full scene file:

f3d::engine eng(f3d::engine::CREATE_WINDOW | f3d::engine::CREATE_INTERACTOR);
f3d::loader& load = eng.getLoader();
load.loadScene("path/to/file");
f3d::interactor& inter = eng.getInteractor();
inter.start();

Public Functions

explicit engine(window::Type windowType = window::Type::NATIVE)#

Engine constructor, choose the window type using the enum. see window.h for details about the window. When using window::Type::NONE, window and interactor will not be provided by the engine. When using window::Type::EXTERNAL, interactor will not be provided by the engine. All objects instances will be created on construction. Default is window::Type::NATIVE. Throw a no_window_exception when using a Using window::Type::EXTERNAL without the right cmake option.

~engine()#

Engine destructor, delete all object instances as well.

void setCachePath(const std::string &cachePath)#

Set the cache path. Must be an absolute path. Currently, it’s only used to store HDRI baked textures. By default, the cache path is:

  • Windows: LOCALAPPDATA%\f3d

  • Linux: ~/.cache/f3d

  • macOS: ~/Library/Caches/f3d

engine &setOptions(const options &opt)#

Engine provide a default options that you can use using engine::getOptions(). But you can use this setter to use other options directly. It will copy options into engine.

engine &setOptions(options &&opt)#

Engine provide a default options that you can use using engine::getOptions(). But you can use this setter to use other options directly. It will move options into engine.

options &getOptions()#

Get the default options provided by the engine.

window &getWindow()#

Get the window provided by the engine, if any. If not, will throw a engine::no_window_exception.

loader &getLoader()#

Get the loaded provided by the engine.

interactor &getInteractor()#

Get the interactor provided by the engine, if any. If not, will throw a engine::no_interactor_exception.

Public Static Functions

static void loadPlugin(const std::string &nameOrPath, const std::vector<std::string> &pluginSearchPaths = {})#

Load a plugin. Supports full path, relative path, and plugin name. First try to load the plugin by name from the static plugins. Then try to load the path provided as if it is a full path to a plugin. Then try to load a plugin by its name looking into the provided plugin search paths. Then try to load a plugin by its name relying on internal system (eg: LD_LIBRARY_PATH). The plugin “native” is always available and includes native VTK readers. If built and available in your build, F3D is providing 5 additional plugins: “alembic”, “assimp”, “draco”, “exodus”, “occt”, “usd”. Custom plugins can also be available that F3D is not supporting officially. Throw a plugin_exception if the plugin can’t be loaded for some reason.

static void autoloadPlugins()#

Automatically load all the static plugins. The plugin “native” is guaranteed to be static.

static std::vector<std::string> getPluginsList(const std::string &pluginPath)#

List plugins based on associated json files located in the given directory. Listed plugins can be loaded using engine::loadPlugin function. Note that the listed plugins may fail to load if the library is not found or incompatible.

static libInformation getLibInfo()#

Get a struct containing info about the libf3d.

static std::vector<readerInformation> getReadersInfo()#

Get a vector of struct containing info about the supported readers.

struct libInformation#

A structure providing information about the libf3d. Returned by getLibInfo().

Public Members

std::string Version#
std::string VersionFull#
std::string BuildDate#
std::string BuildSystem#
std::string Compiler#
std::string RaytracingModule#
std::string ExternalRenderingModule#
std::string OpenEXRModule#
std::string VTKVersion#
std::string PreviousCopyright#
std::string Copyright#
std::string License#
std::string Authors#
struct no_interactor_exception : public f3d::exception#

An exception that can be thrown by the engine when no interactor is available .

Public Functions

explicit no_interactor_exception(const std::string &what = "")#
struct no_window_exception : public f3d::exception#

An exception that can be thrown by the engine when no window is available.

Public Functions

explicit no_window_exception(const std::string &what = "")#
struct plugin_exception : public f3d::exception#

An exception that can be thrown by the engine when a plugin cannot be loaded.

Public Functions

explicit plugin_exception(const std::string &what = "")#
struct readerInformation#

A structure providing information about a reader. Returned in a vector by getReadersInfo().

Public Members

std::string Name#
std::string Description#
std::vector<std::string> Extensions#
std::vector<std::string> MimeTypes#
std::string PluginName#
bool HasSceneReader#
bool HasGeometryReader#