Home - Forums - Documentation - Gallery - Bugs
Current revision (14:45, 29 March 2011) (edit) (undo)
 
(25 intermediate revisions not shown.)
Line 1: Line 1:
-
== Feature Spotlight ==
+
== The Crystal Space SDK ==
-
This page was simplified due to massive amount of visits from other sites.
+
* Portability
 +
** Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
 +
** Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
 +
** Written in standard C++ using very few non-standard extensions.
 +
** Self contained so that many modules requires no or few external dependencies.
 +
** Virtual File System handling both physical files on disk and files within ZIP files.
 +
** Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
 +
** Platform specific optimizations (MMX/SSE/Altivec).
-
=== Version 1.1 ===
+
* Modularity
 +
** Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
 +
** Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
 +
** All subsystems easily extendable for new file formats.
-
==== Decals ====
+
* Rendering & Lighting
 +
** OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
 +
** Rendering loops for custom rendering of objects.
 +
** Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
 +
** Static lighter with radiosity and caustic.
 +
** Lightmap and per-vertex lighting.
 +
** Rendering to textures.
-
<span>[[Image:Showcase_1_1_Decals.jpg|thumb|right|Decals]]In the development version of Crystal Space (1.1) we recently added support for decals. In this screenshot you can see how decals will be used in future versions of PlaneShift for doing shadows under characters and for a targetting effect. Of course you can use decals for many other things (footsteps, bullet holes, ...).</span>
+
* Shaders
-
<br clear="all">
+
** Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
 +
** Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
 +
** Shader weaver for combination of shaders and post-processing effects.
 +
** HDR rendering, tone mapping and eye adaptation.
 +
** Fallback system of shader techniques for hardware compatibility.
 +
** Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
 +
** Automatic environment mapping.
-
=== Version 1.0 ===
+
* Scene & Level Of Detail Management
 +
** Scene node system for easy composition of objects
 +
** Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
 +
** Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
 +
** General system for static LOD on all types of meshes, progressive LODS.
 +
** Impostors for replacement of far meshes with a 2D object.
 +
** Threaded loader for streamed loading of levels and objects.
 +
** Instanciation of meshes and objects.
-
==== Terrain with Foliage ====
+
* Meshes
 +
** Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
 +
** Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
 +
** Mesh generator to dress up a scene with objects such as flora and rocks,...
 +
** Decals to be added on top of other meshes, even animated.
 +
** Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
 +
** Halos and lens flares.
 +
** Automatic triangulation of shapes.
-
<span>[[Image:Showcase_1_0_Foliage.jpg|thumb|left|Trees on a hill]]Crystal Space includes a foliage generator. This generator can randomly (based on user supplied input like density map and material based densities) place objects like stones, trees, grass, and so on. Especially in combination with our outside terrain engine this will make your worlds feel a lot less empty.</span>
+
* Animation
-
<br clear="all" />
+
** Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
 +
** Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
 +
** Ragdoll animation and animation of hairs & equipment.
 +
** Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
 +
** Motion capture viewer with integrated Point Light Display system.
 +
** Generic animation system for management of sequences of time events.
 +
** Coherent noise generation through the [http://libnoise.sourceforge.net/ libnoise] library.
-
==== Funny Shaders ====
+
* Audio
 +
** 2D and 3D sounds with OpenAL.
 +
** Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
 +
** Provides both one-time playing of effects and streaming playing in the background for music.
-
<span>[[Image:Showcase_1_0_Shader.jpg|thumb|right|Wolf with fur shader]]Our support for vertex and fragment shaders will give you great possiblities of enhancing your art with the nicest, up-to-date effects. Several shaders are included standard with Crystal Space but you are free to make your own.</span>
+
* Physics & Collisions
-
<br clear="all" />
+
** Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
 +
** Support of kinematic bodies for interaction between classical animation and the physical simulation.
 +
** Transparent integration with the terrain system.
 +
** Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
 +
** Debug plugin to visualize the physical simulation.
 +
** Simplified collision detection when you don't need the full dynamics simulation.
-
==== Skeletal Animation and Dynamic Shadows ====
+
* Data Representation
 +
** XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
 +
** Procedural, dynamic and animated textures.
 +
** Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
 +
** Generic importer for static and animated models for [http://assimp.sourceforge.net/main_features_formats.html many 3D file formats].
 +
** Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
-
<span>[[Image:Showcase_1_0_Demo.jpg|thumb|left|Evil character]]Skeletal animation and dynamic shadows let you characters look lifely and ever more dangerous. We support skeletal animation through the [http://home.gna.org/cal3d/ cal3d] library but we also support our own skeletal animation system. Including support for 3D hardware based animation.</span>
+
* User Interface
-
<br clear="all" />
+
** Event system & peripherals: mouse, joystick, keyboard.
 +
** Graphical user interface system through CEGUI.
 +
** User interface widgets for wxWidgets.
 +
** Text localization.
 +
** Plugin fo easy video recording and uber-screenshots.
 +
** Font servers, FreeType2 and glyphs fonts.
-
==== Haze ====
+
* Project Management
 +
** Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
 +
** Scripts for generation of new projects.
 +
** Easy compilation and customization of the whole project thanks to Jam.
-
<span>[[Image:Showcase_1_0_Haze.jpg|thumb|right|Haze effect]]Haze is a moody visual effect showing light cones or boxes with standard, animated or procedural texture.</span>
+
== The Crystal Entity Layer ==
-
<br clear="all" />
+
-
=== Upcoming Version 1.2 ===
+
* Entity System
 +
** Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
 +
** Generic event system for communication between entities and property classes.
 +
** Persistence layer for saving and loading world states.
 +
** Experimental FTP-based network layer.
-
''This is a preliminary list and subject to change.''
+
* Runtime Package Environment
 +
** CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
 +
** The whole logic may be written with bindings for Python, or in a XML scripting language.
-
==== Imposters ====
+
* Artificial Intelligence
 +
** Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
 +
** Hierarchical path finding upon [http://code.google.com/p/recastnavigation/ Recast & Detour], steering behaviours.
 +
** Neural networks and genetic algorithms.
-
<span>For the upcoming 1.2 release we are working on an imposter system. Basically this means that objects that are far away will be replaced automatically with a single procedural texture. This will help gain speed in wide open areas (like landscape or space based games) with very little effort for the game developer or artist.
+
* World Management
-
 
+
** Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
-
==== PVS ====
+
** Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
-
 
+
** Region management: decomposition of a complete world in regions, with zoning between regions.
-
Most 3D worlds typically contain a lot of static geometry (i.e. houses and hills that don't move). In such situations the PVS visibility culler will help by precomputing visibility in a separate tool. At runtime it will then become very easy to calculate which objects are visible from a given camera position.
+
** Advanced management of portals, e.g. for closing portals that are occluded.
-
 
+
** Spawning of entities.
-
==== New Terrain ====
+
** Triggering of proximity events.
-
 
+
-
We are also working on a new improved terrain engine. One of the most important improvements of this new terrain engine is better paging support.
+
-
 
+
-
== Complete featurelist ==
+
-
* Generic
+
-
** Highly platform independent with good platform abstraction. Officially supports Linux, OSX and Windows using a wide range of compilers.
+
-
** Modularized using a lightweight component framework, SCF, based upon the COM model.
+
-
** Self contained so that many modules requires no or few external dependencies.
+
-
** Written in standard C++ using very few non*standard extensions. Source available under LGPL license.
+
-
 
+
-
* Comprehensive and competent
+
-
** Contains modules for 2d and 3d graphics, sound, collision detection and dynamics via ODE and bullet as well as support modules for filesystem abstraction, xml loading etc.
+
-
** Graphics subsystem:
+
-
*** Generic renderer abstraction with main implementation being OpenGL based.
+
-
*** Supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
+
-
*** OpenGL renderer uses acceleration techniques such as vertex buffers in AGP or VRAM and asyncronious uploads.
+
-
*** Shader centric design with shaders defined in xml markup and shader programs implemented using Cg, assembly language or fixed function operations.
+
-
*** Complicated shaders can be constructed using a meta syntax as composed by simpler modules that gets combined on load.
+
-
*** Library of common shaders such as normal mapping, parallax (virtual displacement) mapping and hardware skinning.
+
-
*** Contains a software renderer with scaled down features for platforms without OpenGL and/or debugging.
+
-
** Mesh objects:
+
-
*** Plugin based mesh object system
+
-
*** Generic triangle based mesh with support for frame and bone based animation.
+
-
*** Terrain mesh with fast block based LOD system.
+
-
*** Configurable and extensible particle system mesh.
+
-
*** General system for static LOD on all types of meshes.
+
-
*** Bone based animation mesh using the [http://home.gna.org/cal3d/ cal3d] library.
+
-
** Collision detection and dynamics:
+
-
*** Provides bindings for ODE and bullet dynamics systems.
+
-
*** Automatic setup of collision detection meshes and syncronization of position and orientation of meshes.
+
-
*** Simplified collision detection when you don't need the full dynamics simulation
+
-
** Sound system:
+
-
*** 2D and 3D sound rendering via DirectSound, Alsa, OSS and CoreAudio.
+
-
*** Provides both one*time playing of effects and streaming playing in the background for music.
+
-
** Other:
+
-
*** Filesystem abstraction layer, VFS, that handles both physical files on disk and files within ZIP files, giving virtual layout independent from platform and physical layout.
+
-
*** Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
+
-
 
+
-
* Compatible
+
-
** Custom model and scene file format with exporters for Blender and 3d studio max and model importers for common file formats such as 3ds and md2.
+
-
** Supports all common texture file formats including dds, jpg, png as well as some more exotic ones such as mng (animated texture format).
+
-
** Sound loaders for wav and ogg formats.
+
-
** All subsystems easily extendable for new file formats.
+
-
=== Crystal Space vs the Other Graphics Rendering Engine ===
+
* Inventory & Interaction
 +
** Key and peripherals events bindings.
 +
** Billboards and tooltips.
 +
** Inventory system.
 +
** Selecting and grabbing objects.
-
Often, Crystal Space is compared with [http://www.ogre3d.org OGRE], and “Crystal Space or Ogre?” is a question a lot of people that wish to venture in realtime 3D graphics probably face sooner or later. Naturally, people from one or the other community have a biased opinion; Walt Collins looked at both sides and wrote [http://www.arcanoria.com/CS-Ogre.php a comparison between CS and Ogre].
+
* Advanced Physics
 +
** Projectiles and damages to entities.
 +
** Collision management with the ground.
 +
** Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
 +
** Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
 +
** Mesh deformation, e.g. for destroying gradually an object.
[[Category:Media]]
[[Category:Media]]

Current revision

The Crystal Space SDK

  • Portability
    • Highly platform independent with good platform abstraction. Supports GNU/Linux, OSX and Windows operating systems, and x86, PowerPC, ARM and SPARC processor architectures.
    • Support of a wide range of compilers and IDE, including Visual C++ 8, 9 & 10, gcc, MinGW/MSYS, Code::Blocks.
    • Written in standard C++ using very few non-standard extensions.
    • Self contained so that many modules requires no or few external dependencies.
    • Virtual File System handling both physical files on disk and files within ZIP files.
    • Abstracted configuration layer with support for settings in configuration file, system dependent storage such as the registry and command line.
    • Platform specific optimizations (MMX/SSE/Altivec).
  • Modularity
    • Modularized using a lightweight component framework, SCF, based upon the COM model. Components can be easily loaded or switched dynamically.
    • Bindings for other programming languages through SWIG: Java, Python, Perl, dedicated bindings for Python.
    • All subsystems easily extendable for new file formats.
  • Rendering & Lighting
    • OpenGL-based engine, supports hardware accelerated rendering on all supported platforms and cards from all well known vendors.
    • Rendering loops for custom rendering of objects.
    • Unshadowed, parallel-split shadow maps, and deferred lighting render managers.
    • Static lighter with radiosity and caustic.
    • Lightmap and per-vertex lighting.
    • Rendering to textures.
  • Shaders
    • Can be written in Cg and ARB. Shader description and mappings are defined in a XML compliant language.
    • Support for multiple passes, vertex and fragment programs. Light selection and multiple lights in one pass possible.
    • Shader weaver for combination of shaders and post-processing effects.
    • HDR rendering, tone mapping and eye adaptation.
    • Fallback system of shader techniques for hardware compatibility.
    • Library of available shaders and post-processing effects: diffuse, specular, bump map, glow, parallax, fur, bloom, blur, water, glass, and many others.
    • Automatic environment mapping.
  • Scene & Level Of Detail Management
    • Scene node system for easy composition of objects
    • Decomposition of a world in sectors with portals connecting them. Portals can be used for effects such as LOD management, streamed loading, mirrors or space warping.
    • Three different cullers: hardware occlusion culling (Occluvis), frustum culling (Frustvis), and dPVS (Dynavis).
    • General system for static LOD on all types of meshes, progressive LODS.
    • Impostors for replacement of far meshes with a 2D object.
    • Threaded loader for streamed loading of levels and objects.
    • Instanciation of meshes and objects.
  • Meshes
    • Many different type of meshes: general triangle mesh with multi-materials, cal3d meshes, sprite 2D, sprite 3D, ocean,...
    • Terrain mesh with paging, multi-splatting, deformations and automatic loading and unloading of terrain cells.
    • Mesh generator to dress up a scene with objects such as flora and rocks,...
    • Decals to be added on top of other meshes, even animated.
    • Configurable and extensible particle system mesh with billboards, emitters, physical effectors,...
    • Halos and lens flares.
    • Automatic triangulation of shapes.
  • Animation
    • Specialized and powerful mesh for advanced skeletal animation with animation blending trees, volume preserving dual quaternion skinning, morphing, and sockets.
    • Many types of animation nodes can be combined to generate dynamically complex animations: multi-blending, Finite State Machine, random, priority, LookAt, Inverse Kinematics (Quaternion-CCD and physically-based), speed (time warping), debug.
    • Ragdoll animation and animation of hairs & equipment.
    • Transparent import of BVH motion capture data, with real-time retargeting to a different (but similar) skeleton.
    • Motion capture viewer with integrated Point Light Display system.
    • Generic animation system for management of sequences of time events.
    • Coherent noise generation through the libnoise library.
  • Audio
    • 2D and 3D sounds with OpenAL.
    • Audio codecs: speex, ogg, wav (8- and 16-bit PCM).
    • Provides both one-time playing of effects and streaming playing in the background for music.
  • Physics & Collisions
    • Physics of rigid bodies and joints, made through a wrapper for two physics libraries: Bullet and ODE.
    • Support of kinematic bodies for interaction between classical animation and the physical simulation.
    • Transparent integration with the terrain system.
    • Soft bodies to simulate ropes, clothes and other volumetric deformable objects. General meshes can be animated automatically through them.
    • Debug plugin to visualize the physical simulation.
    • Simplified collision detection when you don't need the full dynamics simulation.
  • Data Representation
    • XML language for the description of each object and plugin of the whole CS. XML files can be set binary for faster loading.
    • Procedural, dynamic and animated textures.
    • Support for many image formats: png, jpg, dds, bmp, gif, tga, mng, jng, (binary) alpha, transparency, non 2n sized images,...
    • Generic importer for static and animated models for many 3D file formats.
    • Dedicated Exporters for many 3D file formats: Blender up to 2.49b through blender2crystal, Blender 2.5x through B2.5CS, 3D Studio Max, Maya, and model importers for common file formats such as COLLADA, 3ds, cal3d and md2.
  • User Interface
    • Event system & peripherals: mouse, joystick, keyboard.
    • Graphical user interface system through CEGUI.
    • User interface widgets for wxWidgets.
    • Text localization.
    • Plugin fo easy video recording and uber-screenshots.
    • Font servers, FreeType2 and glyphs fonts.
  • Project Management
    • Debugging tools: generic plugin for visual debugging of scenes, support for Valgrind and CppUnit.
    • Scripts for generation of new projects.
    • Easy compilation and customization of the whole project thanks to Jam.

The Crystal Entity Layer

  • Entity System
    • Each object in CEL is an entity. Entities are defined by adding them a list of property classes that defines their attributes and their behaviour.
    • Generic event system for communication between entities and property classes.
    • Persistence layer for saving and loading world states.
    • Experimental FTP-based network layer.
  • Runtime Package Environment
    • CELStart: generic executable for all CELStart packaged applications, only the packed data files of the applications have to be installed on the user machines.
    • The whole logic may be written with bindings for Python, or in a XML scripting language.
  • Artificial Intelligence
    • Behaviour trees to build complex artificial behaviours by combination of single decision nodes.
    • Hierarchical path finding upon Recast & Detour, steering behaviours.
    • Neural networks and genetic algorithms.
  • World Management
    • Avatar and Non Player Character management: synchronization of the user actions with the mesh, its animations, its position and its collisions.
    • Camera management with many different modes: first person, third person, tracking, isometric, horizontal.
    • Region management: decomposition of a complete world in regions, with zoning between regions.
    • Advanced management of portals, e.g. for closing portals that are occluded.
    • Spawning of entities.
    • Triggering of proximity events.
  • Inventory & Interaction
    • Key and peripherals events bindings.
    • Billboards and tooltips.
    • Inventory system.
    • Selecting and grabbing objects.
  • Advanced Physics
    • Projectiles and damages to entities.
    • Collision management with the ground.
    • Advanced physical effects: fluids, thrusters, steering, explosions, attractors and repulsors.
    • Vehicles and their physics: bikes, cars, tanks, hovercrafts, or any wheeled vehicle.
    • Mesh deformation, e.g. for destroying gradually an object.
| Article | Discussion | View source | History |