X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=blobdiff_plain;f=doc%2Findex.org;h=3d21043c79750f75c464b8e3d5ff2af31222e195;hp=133387309386f1634bd165b9de789587059601d2;hb=fd099c489d7f4df2624c07d1d3ba24f658b147a7;hpb=3faa9ebcc7e643181ec70a26a69ba1dbd40e6ab6 diff --git a/doc/index.org b/doc/index.org index 1333873..3d21043 100644 --- a/doc/index.org +++ b/doc/index.org @@ -1,36 +1,126 @@ #+TITLE: Sixth 3D engine demos ------ -- This is a subproject of [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d/doc/index.html][Sixth 3D]] which in turn is a subproject of - [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/index.html][Sixth]]. -- [[http://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=snapshot;h=HEAD;sf=tgz][download latest snapshot]] - -- This program is free software; you can redistribute it and/or modify it under - the terms of version 3 of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] or later as - published by the Free Software Foundation. +* General +- This program is free software: released under Creative Commons Zero + (CC0) license - Program author: - Svjatoslav Agejenko - - Homepage: http://svjatoslav.eu + - Homepage: https://svjatoslav.eu - Email: mailto://svjatoslav@svjatoslav.eu -- [[http://www.svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]] +- [[https://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]] + +** Source code +- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]] + +- [[https://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=summary][Browse Git repository online]] + +- Clone Git repository using command: + : git clone https://www2.svjatoslav.eu/git/sixth-3d-demos.git + +* Overview +Goal of this project is to show off capabilities and API usage of +[[https://www3.svjatoslav.eu/projects/sixth-3d/][Sixth 3D]] engine. + +All [[id:5f88b493-6ab3-4659-8280-803f75dbd5e0][example scenes in this repository]] render at interactive +framerates. + +Download runnable JAR file: [[file:sixth-3d-demos.jar]] + +To start demo application, use command: +: java -jar sixth-3d-demos.jar + +* Navigating in space +| key | result | +|--------------------------------+--------------------------------------| +| cursor keys | move: left, right, forward, backward | +| mouse scroll wheel | move: up, down | +| dragging with mouse | look around | + +* Example scenes in this repository +:PROPERTIES: +:ID: 5f88b493-6ab3-4659-8280-803f75dbd5e0 +:END: +** Raytracing through voxels +[[file:screenshots/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 [[https://en.wikipedia.org/wiki/Octree][octree]] is used to compress data. Press "r" key anywhere in +the scene to raytrace current view through compressed voxel +datastructure. + +** 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%27s_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. + +[[file:screenshots/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 | +| | next iteration | +| ENTER | next iteeration with the history | +| "c" | clear the matrix | + +** Text editors +[[file:screenshots/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. -* (document settings) :noexport: -** use dark style for TWBS-HTML exporter -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: " -#+HTML_HEAD: -* Description -Goal of this project is to show off capabilities of [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d/doc/index.html][Sixth 3D]] -engine. Also to show examples of its usage. ++ 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. +** Mathematical formulas +[[file:screenshots/mathematical formulas.png]] -[[file:screenshots/index.html][file:screenshots.png]] ++ TODO: instead of projecting 2D visualizations onto 3D space, + visualize some formula using all 3 dimensions avaliable. +** Sinus heightmaps and sphere +[[file:screenshots/sinus heightmaps and sphere.png]] -Sample scenes rendered at interactive framerates by Sixth 3D engine. +Simple test scene. Easy to implement and looks nice.