NG Design Document/Viewer Architecture/World-building
From Rex community wiki
Introduction
The ability to perform world-building while in the virtual world is one of the key features the realXtend platform allows, and the new viewer naturally has to be able to support this.
World-building includes for example creating new objects into the world, both basic shapes and 3D meshes, editing the properties of these objects, and adjusting the terrain shape and texturing. In addition to this kind of direct online building, an offline form of building by exporting and importing sets of objects should also be possible.
Because of the plugin-based nature of the new viewer, world-building functionality does not have to be built right into the viewer core framework or the World Logic module: their APIs just have to support outside modules creating new world objects and adjusting their parameters. In addition the rendering module has to be flexible enough for the world building tools to be able to render their own custom views.
Different world-building plugins can implement different functionality: for example a basic one may allow to drag, rotate and scale items directly in the default 3D world view, while another could present several views (perspective, side, top-down etc.) of the world for editing, like 3D modelling programs do.
Basic world-building tools
- Object editor: create, delete, move, rotate and scale objects, and adjust their parameters
- Material parameter editor
- Particle effect editor
Advanced world-building tools
- Cutscene editor
- Multi-viewport world editor
Required operations
This is not a list of all features the world-building tools should support: rather, this is what the world-building tools must at least be able to realize through the core framework and APIs of other modules.
- Creating new world objects (basic shapes, 3D meshes, lights, particle emitters etc.)
- Modifying the world terrain
- Modifying world parameters like skybox and fog
- Modifying parameters of existing world objects
- Deleting world objects
- Importing, exporting and modifying assets (3D meshes, textures, material scripts etc.)
- Having custom UI layouts for the editing tools: these may include several viewports to the world.
- Drawing custom 3D tool elements on top of the 3D world view (reference grids, arrows)
UML diagram
Possible dependencies of an editor module shown below.
|