Sixth 3D engine demos

1 General

1.1 Source code

2 Overview

Goal of this project is to show off capabilities and API usage of Sixth 3D engine.

All example scenes in this repository render at interactive framerates.

Download runnable JAR file: sixth-3d-demos.jar

To start demo application, use command:

java -jar sixth-3d-demos.jar

3 Navigating in space

key result
cursor keys move: left, right, forward, backward
mouse scroll wheel move: up, down
dragging with mouse look around

4 Example scenes in this repository

4.1 Raytracing through voxels

raytracing fractal in voxel polygon hybrid scene.png

Test scene that is generated simultaneously using:

  • conventional polygons
    • for realtime navigation, and
  • voxels
    • for on-demand raytracing

Instead of storing voxels in dumb [X * Y * Z] array, dynamically partitioned octree is used to compress data. Press "r" key anywhere in the scene to raytrace current view through compressed voxel datastructure.

4.2 Conway's Game of Life

The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970.

  • https://en.wikipedia.org/wiki/Conway's_Game_of_Life
    • Game rules:
      • 2 cell states: alive / dead
      • Each cell sees 8 neighboring cells.
      • If alive cell neighbors count is 2 or 3, then cell survives, otherwise it dies.
      • Dead cell becomes alive if neighbors count is exactly 3.

life.png

Current application projects 2D game grid/matrix onto three dimensional space. Extra dimension (height) is used to visualize history (previous iterations) using glowing dots suspended in space.

Usage:

key result
mouse click on the cell (cell) toggles cell state
<space> next iteration
ENTER next iteeration with the history
"c" clear the matrix

4.3 Text editors

text editors.png

Initial test for creating user interfaces in 3D and:

  • window focus handling
  • picking objecs using mouse
  • redirecting keyboard input to focused window

Window focus acts like a stack.

When window is clicked with the mouse, previously focused window (if any) is pushed to the focus stack and new window receives focus. Red frame appears around the window to indicate this.

When ESC key is pressed, window focus is returned to previous window (if any).

When any window is focused, all keyboard input is redirected to that window, including cursor keys. To be able to navigate around the world again, window must be unfocused first using ESC key.

  • TODO:
    • Improve focus handling:
      • Perhaps add shortcut to navigate world without exiting entire stack of focus.
      • Possibility to retain and reuse recently focused elements.
      • Store user location in the world and view direction with the focused window. So that when returning focus to far away object, user is redirected also to proper location in the world.
    • Possibility to store recently visited locations in the world and return to them.

4.4 Mathematical formulas

mathematical formulas.png

  • TODO: instead of projecting 2D visualizations onto 3D space, visualize some formula using all 3 dimensions avaliable.

4.5 Sinus heightmaps and sphere

sinus heightmaps and sphere.png

Simple test scene. Easy to implement and looks nice.