X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=blobdiff_plain;f=doc%2Findex.org;h=9842076194e8f9c680b9fe57c526d7568062a553;hp=ad3fe897d68dd6e6c0553b432b63410ed9593586;hb=5d214bee2a41d15d3a12562b4a7e7b36b777bd97;hpb=8699433dbd9238c4d926d78bd2e50f892fc51324 diff --git a/doc/index.org b/doc/index.org index ad3fe89..9842076 100644 --- a/doc/index.org +++ b/doc/index.org @@ -1,143 +1,131 @@ #+TITLE: Sixth 3D engine demos ------ -- This is a subproject of [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d/doc/index.html][Sixth 3D]] -- [[http://www2.svjatoslav.eu/gitweb/?p=sixth.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. +* (document settings) :noexport: +** use dark style for TWBS-HTML exporter +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: + +* General +- This is a subproject of [[http://www3.svjatoslav.eu/projects/sixth-3d/][Sixth 3D]] which in turn is a subproject of + [[http://www3.svjatoslav.eu/projects/sixth/][Sixth]]. + +- This program is free software: you can redistribute it and/or modify + it under the terms of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. - Program author: - Svjatoslav Agejenko - Homepage: http://svjatoslav.eu - Email: mailto://svjatoslav@svjatoslav.eu -- [[http://svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]] - - -* Current status -[[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/screenshots/index.html][http://www2.svjatoslav.eu/gitbrowse/sixth/doc/screenshots.png]] - - -Sample scenes rendered at interactive framerates by Sixth 3D engine. - - -Sixth is presently in research / prototyping and ideas collecting -phase. Some working parts are already implemented, and can be run as a -demo or as a library in other projects, if you are computer -programmer. System is far from being useful for non programmers (Pre -alpha). - - -Implemented and working features: -- First layer of storage: Simple persistent key-value map. -- In software, pure Java realtime 3D rendering engine. - - -[[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/applet.html][Run Sixth 3D/GUI demos as Java applet]] - - -System is implemented in Java because: -- It scales well to handle great complexity. -- It is easy to refactor and experiment with. -- It is fast enough thanks to Java virtual machine just-in-time compiler. -- Easy to run on various hardware platforms and operating systems. - -** 3D rendering - -3D rendering is done in software, 100% pure Java on CPU. At least for -now. Modern CPU cores count keeps growing and therefore rendering by -CPU is not as expensive as it used to be for the old single core -systems. - -CPU rendering performance is already good enough to implement usable -3D UI at sufficient detail level, resolution and frame rate. - -Pure Java also means easy portability and installation. No need to -deal with platform specific dependencies. - -Also CPU rendering allows to easily test different rendering algorithms -and retains complete control of every rendered pixel. - -* Vision -- Human computer symbiosis to unleash full potential of human mind and - computer. -- A tool to amplify human ability. - -** Key ideas from user perspective -- Helps/assists in understanding, discovering, learning and creating - things by being very visual and interactive. (I think of - problems/solutions visually and I want user interface/experience to - reflect that) - -- Properly visualizes and immerses user in completely various forms of - information and provides intuitive and powerful ways to explore, - interact and manipulate it with fast feedback loop to immediately - see results. - -- I like this quote: -#+BEGIN_QUOTE -“Virtual reality holds the key to the evolution of the human mind” -Dr. Lawrence Angelo, The Lawnmower Man (1992) -#+END_QUOTE - -** Key technical ideas -System should make use of distributed computing like SSI or/and Hadoop -for greater performance and reliability. - -System should use some overlay network to enable secure and reliable -and easy to use communication between any process on any networked -computer as well as human to human communication. -* Software development -Instructions to embed Sixth in your project as a library. Maven -*pom.xml* file snippet: -#+BEGIN_SRC xml - - ... - - eu.svjatoslav - sixth - 1.2 - - ... - - - - ... - - svjatoslav.eu - Svjatoslav repository - http://www2.svjatoslav.eu/maven/ - - ... - -#+END_SRC - -[[http://www2.svjatoslav.eu/projects/sixth/codegraphs/][Auto-generated graphs for parts of Sixth code/architecture]] using [[http://www2.svjatoslav.eu/gitbrowse/javainspect/doc/index.html][this -tool]] - -* Ideas to possibly consider/incorporate in the future - -- Semantic networks / knowledge trees. - - Is able to use natural language for knowledge mining and - question answering. This could potentially lead to self aware - artificial intelligence. Because of [[http://en.wikipedia.org/wiki/Three_Laws_of_Robotics]["Three laws safe"]] design, - there is nothing that can go wrong. - -- Become an alternative to or an integrated part of KDE, Gnome, - Canonical Unity or similar desktop user interfaces. - -- Become an open source scientific computing engine of structured data - as an alternative to proprietary Wolfram Alpha. - -- Become an open source solution for unstructured knowledge extraction - and processing, similar to IBM Watson. - -- P2P (Peer to peer) capabilities: - - File/data sharing system. - - Data streaming system. - - Distributed backup system. - - Distributed computation system. - - Communication system. - - Possibility of completely decentralized and stealth mode of operation for information publishing, storage and distribution, similar to Freenet. +- [[http://www.svjatoslav.eu/projects/][Other software projects hosted at svjatoslav.eu]] + +** Source code +- [[http://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=snapshot;h=HEAD;sf=tgz][Download latest snapshot in TAR GZ format]] + +- [[http://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=summary][Browse Git repository online]] + +- Clone Git repository using command: + : git clone http://www2.svjatoslav.eu/git/sixth-3d-demos.git + +* Overview +Goal of this project is to show off capabilities and API usage of +[[http://www3.svjatoslav.eu/projects/sixth-3d/][Sixth 3D]] engine. + +All sample scenes below are rendered at interactive framerates. +* Navigating in space +| key | result | +|--------------------------------+--------------------------------------| +| cursor keys | move: left, right, forward, backward | +| mouse scroll wheel | move: up, down | +| dragging with mouse | look around | + +* Samples +** 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. + + ++ 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]] + ++ 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]] + +Simple test scene. Easy to implement and looks nice.