It uses a descriptive approach to declare what will compose your experience in a json configuration file.
The experience will be organized into scenes which display a 360 media, 3D object, classic HTML content and play sounds.
The configuration of your project will describe many aspects.
What we called viewer is the main entry point of the framework, it manages all the following sub modules.
History management handles the browser history so you can use your browser back and forward button to navigate through scenes, each scene is like a new web page for your browser.
This way, each of your scenes have a unique url and you can access a scene directly with its url.
Internationalization helps you to deliver a multilangual experience. So you can localize strings and different kind of assets.
The framework provide differents way to display your 360 media.
You have the classic rectilinear view, but also the little planet and what we called the GoPro view that is a mix between the rectilinear and the little planet view.
Controllers are modules that handle the user input to manipulate the viewer camera.
ForgeJS provides two basic controllers that are the pointer controller (mouse and touch) and a keyboard controller.
The audio module provides many ways to customize the audio aspect of your experience.
Global volumes, and playlists management per scene.
Ambisonic audio for spatialized sound experience.
ForgeJS provides a way to do image post processing on your media, hotspots or global special effects.
What we called director's cut is a mechanism to auto move the camela along defined waypoints.
This way you can provide to the user differents ways to watch your medias automatically with no need to access the controller (mouse / keyboard).
Hotspot are 3D objects to enhance the content and add interactivity to your scenes. It can display images projected in you 3D environment and emit a spatialized sound.
Action is a way to declare intercations behavior in your configuration file. This way you can specify that a specific action will be triggered when the user clicks on a specific hotspot.
Plugins are external modules that are not part of the core framework.
They can be instanciated on specific scenes or during the whole experience.
For example a plugin can provide a way to display a map over your 360 media, or a text description or whatever you want.