Quickstart with Advanced Real-Time
The illustration below shows how the advanced real-time module (ART) interacts with HOOPS Luminate:
We still have the base HOOPS Luminate SDK which is accessible from the HOOPS Luminate block in the diagram above. No changes here. Then, we have three new blocks, all accessible through the RPL namespace of the global HOOPS Luminate API:
The HOOPS Luminate ART engine itself, which is built on top of HOOPS Luminate. ART has its own simple SDK, providing base world definition controls and options. For instance, you’ll find the setup of stars and planets with orbital trajectories so that a sun & sky with atmosphere can be setup and be animated properly.
The geometry part of the ART. This is mostly represented by the
RPL::IGeometry
interface. This interface is the entry point to the import of user scenes and models into ART. So for instance, architectural models, roads, standalone buildings will all be imported through theRPL::IGeometry
interface. The Asset Editor also uses theRPL::IGeometry
interface to setup all parameters for import scenes.The outdoor part of the ART. This is mostly a combination of the asset editor generating pre-defined environments that are loaded through the
RED::IAssetManager
interface for an immediate display by ART.
Starting up an ART Application
Basic initializations steps in ART are described below:
Initializing the World
HOOPS Luminate advanced real-time API is packaged into the ART namespace. This namespace co-exists with the RED namespace but also delivers its own application logic which operates at a higher level than HOOPS Luminate. We use a world (ART::IWorld
) that runs a simulation (ART::IWorld::Start
). Then, the world is synchronized (ART::IWorld::Update
) and finally shutdown (ART::IWorld::Shutdown
).
This is illustrated below:
RED::Object* world = ART::Factory::CreateInstance( CID_ARTWorld );
if( !world )
RC_TEST( RED_ALLOC_FAILURE );
ART::IWorld* iworld = world->As< ART::IWorld >();
// Setup a simple planetary system:
RC_TEST( iworld->SetupEarthSystem() );
// Start the world:
RC_TEST( iworld->Start( window, NULL, NULL ) );
// Update the world, refresh the app every frame:
while( app_is_running )
{
RC_TEST( iworld->Update() );
}
// Terminate:
RC_TEST( iworld->Shutdown() );
Then, start with the Loading a Simple Landscape tutorial to start using ART and navigating into it.