4 <title>Sixth 3D engine demos</title>
5 <!-- 2020-04-20 Mon 22:25 -->
7 <meta name="viewport" content="width=device-width, initial-scale=1">
8 <meta name="generator" content="Org-mode">
9 <meta name="author" content="Svjatoslav Agejenko">
10 <link href="https://bootswatch.com/3/darkly/bootstrap.min.css" rel="stylesheet">
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
12 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.5/js/bootstrap.min.js"></script>
13 <style type="text/css">
14 footer {background-color: #111 !important;}
15 pre {background-color: #111; color: #ccc;}
17 <style type="text/css">
18 /* org mode styles on top of twbs */
35 background-color: #f5f5f5;
62 display: inline-block;
74 .bs-docs-sidebar.affix {
77 @media (min-width: 768px) {
83 /* All levels of nav */
84 .bs-docs-sidebar .nav > li > a {
91 .bs-docs-sidebar .nav > li > a:hover,
92 .bs-docs-sidebar .nav > li > a:focus {
95 text-decoration: none;
96 background-color: transparent;
97 border-left: 1px solid #A1283B;
99 .bs-docs-sidebar .nav > .active > a,
100 .bs-docs-sidebar .nav > .active:hover > a,
101 .bs-docs-sidebar .nav > .active:focus > a {
105 background-color: transparent;
106 border-left: 2px solid #A1283B;
109 /* Nav: second level (shown on .active) */
110 .bs-docs-sidebar .nav .nav {
111 display: none; /* Hide by default, but at >768px, show it */
112 padding-bottom: 10px;
114 .bs-docs-sidebar .nav .nav > li > a {
121 .bs-docs-sidebar .nav .nav > li > a:hover,
122 .bs-docs-sidebar .nav .nav > li > a:focus {
125 .bs-docs-sidebar .nav .nav > .active > a,
126 .bs-docs-sidebar .nav .nav > .active:hover > a,
127 .bs-docs-sidebar .nav .nav > .active:focus > a {
132 /* Nav: third level (shown on .active) */
133 .bs-docs-sidebar .nav .nav .nav {
134 padding-bottom: 10px;
136 .bs-docs-sidebar .nav .nav .nav > li > a {
143 .bs-docs-sidebar .nav .nav .nav > li > a:hover,
144 .bs-docs-sidebar .nav .nav .nav > li > a:focus {
147 .bs-docs-sidebar .nav .nav .nav > .active > a,
148 .bs-docs-sidebar .nav .nav .nav > .active:hover > a,
149 .bs-docs-sidebar .nav .nav .nav > .active:focus > a {
154 /* Show and affix the side nav when space allows it */
155 @media (min-width: 992px) {
156 .bs-docs-sidebar .nav > .active > ul {
159 /* Widen the fixed sidebar */
160 .bs-docs-sidebar.affix,
161 .bs-docs-sidebar.affix-bottom {
164 .bs-docs-sidebar.affix {
165 position: fixed; /* Undo the static from mobile first approach */
168 .bs-docs-sidebar.affix-bottom {
169 position: absolute; /* Undo the static from mobile first approach */
171 .bs-docs-sidebar.affix .bs-docs-sidenav,.bs-docs-sidebar.affix-bottom .bs-docs-sidenav {
176 @media (min-width: 1200px) {
177 /* Widen the fixed sidebar again */
178 .bs-docs-sidebar.affix-bottom,
179 .bs-docs-sidebar.affix {
184 <script type="text/javascript">
188 $('.bs-docs-sidebar li').first().addClass('active');
190 $(document.body).scrollspy({target: '.bs-docs-sidebar'});
192 $('.bs-docs-sidebar').affix();
197 <div id="content" class="container">
198 <div class="row"><div class="col-md-9"><h1 class="title">Sixth 3D engine demos</h1>
200 <div id="outline-container-sec-1" class="outline-2">
201 <h2 id="sec-1"><span class="section-number-2">1</span> General</h2>
202 <div class="outline-text-2" id="text-1">
204 <li>This program is free software: released under Creative Commons Zero
210 <li>Svjatoslav Agejenko
212 <li>Homepage: <a href="https://svjatoslav.eu">https://svjatoslav.eu</a>
214 <li>Email: <a href="mailto://svjatoslav@svjatoslav.eu">mailto://svjatoslav@svjatoslav.eu</a>
219 <li><a href="https://www.svjatoslav.eu/projects/">Other software projects hosted at svjatoslav.eu</a>
224 <div id="outline-container-sec-1-1" class="outline-3">
225 <h3 id="sec-1-1"><span class="section-number-3">1.1</span> Source code</h3>
226 <div class="outline-text-3" id="text-1-1">
228 <li><a href="https://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=snapshot;h=HEAD;sf=tgz">Download latest snapshot in TAR GZ format</a>
231 <li><a href="https://www2.svjatoslav.eu/gitweb/?p=sixth-3d-demos.git;a=summary">Browse Git repository online</a>
234 <li>Clone Git repository using command:
235 <pre class="example">
236 git clone https://www2.svjatoslav.eu/git/sixth-3d-demos.git
245 <div id="outline-container-sec-2" class="outline-2">
246 <h2 id="sec-2"><span class="section-number-2">2</span> Overview</h2>
247 <div class="outline-text-2" id="text-2">
249 Goal of this project is to show off capabilities and API usage of
250 <a href="https://www3.svjatoslav.eu/projects/sixth-3d/">Sixth 3D</a> engine.
254 All <a href="#sec-4">example scenes in this repository</a> render at interactive
259 Download runnable JAR file: <a href="sixth-3d-demos.jar">sixth-3d-demos.jar</a>
263 To start demo application, use command:
265 <pre class="example">
266 java -jar sixth-3d-demos.jar
272 <div id="outline-container-sec-3" class="outline-2">
273 <h2 id="sec-3"><span class="section-number-2">3</span> Navigating in space</h2>
274 <div class="outline-text-2" id="text-3">
275 <table class="table table-striped table-bordered table-hover table-condensed">
285 <th scope="col" class="text-left">key</th>
286 <th scope="col" class="text-left">result</th>
291 <td class="text-left">cursor keys</td>
292 <td class="text-left">move: left, right, forward, backward</td>
296 <td class="text-left">mouse scroll wheel</td>
297 <td class="text-left">move: up, down</td>
301 <td class="text-left">dragging with mouse</td>
302 <td class="text-left">look around</td>
309 <div id="outline-container-sec-4" class="outline-2">
310 <h2 id="sec-4"><a id="ID-5f88b493-6ab3-4659-8280-803f75dbd5e0" name="ID-5f88b493-6ab3-4659-8280-803f75dbd5e0"></a><span class="section-number-2">4</span> Example scenes in this repository</h2>
311 <div class="outline-text-2" id="text-4">
313 <div id="outline-container-sec-4-1" class="outline-3">
314 <h3 id="sec-4-1"><span class="section-number-3">4.1</span> Raytracing through voxels</h3>
315 <div class="outline-text-3" id="text-4-1">
318 <p><img src="screenshots/raytracing fractal in voxel polygon hybrid scene.png" class="img-responsive" alt="raytracing fractal in voxel polygon hybrid scene.png">
323 Test scene that is generated simultaneously using:
326 <li>conventional polygons
328 <li>for realtime navigation, and
334 <li>for on-demand raytracing
341 Instead of storing voxels in dumb [X * Y * Z] array, dynamically
342 partitioned <a href="https://en.wikipedia.org/wiki/Octree">octree</a> is used to compress data. Press "r" key anywhere in
343 the scene to raytrace current view through compressed voxel
349 <div id="outline-container-sec-4-2" class="outline-3">
350 <h3 id="sec-4-2"><span class="section-number-3">4.2</span> Conway's Game of Life</h3>
351 <div class="outline-text-3" id="text-4-2">
353 The Game of Life, also known simply as Life, is a cellular automaton
354 devised by the British mathematician John Horton Conway in 1970.
358 <li><a href="https://en.wikipedia.org/wiki/Conway's_Game_of_Life">https://en.wikipedia.org/wiki/Conway's_Game_of_Life</a>
362 <li>2 cell states: alive / dead
364 <li>Each cell sees 8 neighboring cells.
366 <li>If alive cell neighbors count is 2 or 3, then cell survives,
369 <li>Dead cell becomes alive if neighbors count is exactly 3.
379 <p><img src="screenshots/life.png" class="img-responsive" alt="life.png">
384 Current application projects 2D game grid/matrix onto three
385 dimensional space. Extra dimension (height) is used to visualize
386 history (previous iterations) using glowing dots suspended in space.
392 <table class="table table-striped table-bordered table-hover table-condensed">
402 <th scope="col" class="text-left">key</th>
403 <th scope="col" class="text-left">result</th>
408 <td class="text-left">mouse click on the cell (cell)</td>
409 <td class="text-left">toggles cell state</td>
413 <td class="text-left"><space></td>
414 <td class="text-left">next iteration</td>
418 <td class="text-left">ENTER</td>
419 <td class="text-left">next iteeration with the history</td>
423 <td class="text-left">"c"</td>
424 <td class="text-left">clear the matrix</td>
431 <div id="outline-container-sec-4-3" class="outline-3">
432 <h3 id="sec-4-3"><span class="section-number-3">4.3</span> Text editors</h3>
433 <div class="outline-text-3" id="text-4-3">
436 <p><img src="screenshots/text editors.png" class="img-responsive" alt="text editors.png">
441 Initial test for creating user interfaces in 3D and:
444 <li>window focus handling
446 <li>picking objecs using mouse
448 <li>redirecting keyboard input to focused window
454 Window focus acts like a stack.
458 When window is clicked with the mouse, previously focused window (if
459 any) is pushed to the focus stack and new window receives focus. Red
460 frame appears around the window to indicate this.
464 When ESC key is pressed, window focus is returned to previous window
469 When any window is focused, all keyboard input is redirected to that
470 window, including cursor keys. To be able to navigate around the world
471 again, window must be unfocused first using ESC key.
478 <li>Improve focus handling:
480 <li>Perhaps add shortcut to navigate world without exiting entire
483 <li>Possibility to retain and reuse recently focused elements.
485 <li>Store user location in the world and view direction with the
486 focused window. So that when returning focus to far away object,
487 user is redirected also to proper location in the world.
491 <li>Possibility to store recently visited locations in the world and
499 <div id="outline-container-sec-4-4" class="outline-3">
500 <h3 id="sec-4-4"><span class="section-number-3">4.4</span> Mathematical formulas</h3>
501 <div class="outline-text-3" id="text-4-4">
504 <p><img src="screenshots/mathematical formulas.png" class="img-responsive" alt="mathematical formulas.png">
509 <li>TODO: instead of projecting 2D visualizations onto 3D space,
510 visualize some formula using all 3 dimensions avaliable.
515 <div id="outline-container-sec-4-5" class="outline-3">
516 <h3 id="sec-4-5"><span class="section-number-3">4.5</span> Sinus heightmaps and sphere</h3>
517 <div class="outline-text-3" id="text-4-5">
520 <p><img src="screenshots/sinus heightmaps and sphere.png" class="img-responsive" alt="sinus heightmaps and sphere.png">
525 Simple test scene. Easy to implement and looks nice.
530 </div><div class="col-md-3"><nav id="table-of-contents">
531 <div id="text-table-of-contents" class="bs-docs-sidebar">
533 <li><a href="#sec-1">1. General</a>
535 <li><a href="#sec-1-1">1.1. Source code</a></li>
538 <li><a href="#sec-2">2. Overview</a></li>
539 <li><a href="#sec-3">3. Navigating in space</a></li>
540 <li><a href="#sec-4">4. Example scenes in this repository</a>
542 <li><a href="#sec-4-1">4.1. Raytracing through voxels</a></li>
543 <li><a href="#sec-4-2">4.2. Conway's Game of Life</a></li>
544 <li><a href="#sec-4-3">4.3. Text editors</a></li>
545 <li><a href="#sec-4-4">4.4. Mathematical formulas</a></li>
546 <li><a href="#sec-4-5">4.5. Sinus heightmaps and sphere</a></li>
553 <footer id="postamble" class="">
554 <div><p class="author">Author: Svjatoslav Agejenko</p>
555 <p class="date">Created: 2020-04-20 Mon 22:25</p>
556 <p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 26.1 (<a href="http://orgmode.org">Org-mode</a> 9.1.9)</p>