ad3fe897d68dd6e6c0553b432b63410ed9593586
[sixth-3d-demos.git] / doc / index.org
1 #+TITLE: Sixth 3D engine demos
2
3 -----
4 - This is a subproject of [[http://www2.svjatoslav.eu/gitbrowse/sixth-3d/doc/index.html][Sixth 3D]]
5 - [[http://www2.svjatoslav.eu/gitweb/?p=sixth.git;a=snapshot;h=HEAD;sf=tgz][download latest snapshot]]
6
7 - This program is free software; you can redistribute it and/or modify it under
8   the terms of version 3 of the [[https://www.gnu.org/licenses/lgpl.html][GNU Lesser General Public License]] or later as
9   published by the Free Software Foundation.
10
11 - Program author:
12   - Svjatoslav Agejenko
13   - Homepage: http://svjatoslav.eu
14   - Email: mailto://svjatoslav@svjatoslav.eu
15
16 - [[http://svjatoslav.eu/programs.jsp][other applications hosted at svjatoslav.eu]]
17
18
19 * Current status
20 [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/screenshots/index.html][http://www2.svjatoslav.eu/gitbrowse/sixth/doc/screenshots.png]]
21
22
23 Sample scenes rendered at interactive framerates by Sixth 3D engine.
24
25
26 Sixth is presently in research / prototyping and ideas collecting
27 phase. Some working parts are already implemented, and can be run as a
28 demo or as a library in other projects, if you are computer
29 programmer. System is far from being useful for non programmers (Pre
30 alpha).
31
32
33 Implemented and working features:
34 - First layer of storage: Simple persistent key-value map.
35 - In software, pure Java realtime 3D rendering engine.
36
37
38 [[http://www2.svjatoslav.eu/gitbrowse/sixth/doc/applet.html][Run Sixth 3D/GUI demos as Java applet]]
39
40
41 System is implemented in Java because:
42 - It scales well to handle great complexity.
43 - It is easy to refactor and experiment with.
44 - It is fast enough thanks to Java virtual machine just-in-time compiler.
45 - Easy to run on various hardware platforms and operating systems.
46
47 ** 3D rendering
48
49 3D rendering is done in software, 100% pure Java on CPU. At least for
50 now.  Modern CPU cores count keeps growing and therefore rendering by
51 CPU is not as expensive as it used to be for the old single core
52 systems.
53
54 CPU rendering performance is already good enough to implement usable
55 3D UI at sufficient detail level, resolution and frame rate.
56
57 Pure Java also means easy portability and installation. No need to
58 deal with platform specific dependencies.
59
60 Also CPU rendering allows to easily test different rendering algorithms
61 and retains complete control of every rendered pixel.
62
63 * Vision
64 - Human computer symbiosis to unleash full potential of human mind and
65   computer.
66 - A tool to amplify human ability.
67
68 ** Key ideas from user perspective
69 - Helps/assists in understanding, discovering, learning and creating
70   things by being very visual and interactive. (I think of
71   problems/solutions visually and I want user interface/experience to
72   reflect that)
73
74 - Properly visualizes and immerses user in completely various forms of
75   information and provides intuitive and powerful ways to explore,
76   interact and manipulate it with fast feedback loop to immediately
77   see results.
78
79 - I like this quote:
80 #+BEGIN_QUOTE
81 “Virtual reality holds the key to the evolution of the human mind”
82 Dr. Lawrence Angelo, The Lawnmower Man (1992)
83 #+END_QUOTE
84
85 ** Key technical ideas
86 System should make use of distributed computing like SSI or/and Hadoop
87 for greater performance and reliability.
88
89 System should use some overlay network to enable secure and reliable
90 and easy to use communication between any process on any networked
91 computer as well as human to human communication.
92 * Software development
93 Instructions to embed Sixth in your project as a library. Maven
94 *pom.xml* file snippet:
95 #+BEGIN_SRC xml
96 <dependencies>
97     ...
98     <dependency>
99         <groupId>eu.svjatoslav</groupId>
100         <artifactId>sixth</artifactId>
101         <version>1.2</version>
102     </dependency>
103     ...
104 </dependencies>
105
106 <repositories>
107     ...
108     <repository>
109         <id>svjatoslav.eu</id>
110         <name>Svjatoslav repository</name>
111         <url>http://www2.svjatoslav.eu/maven/</url>
112     </repository>
113     ...
114 </repositories>
115 #+END_SRC
116
117 [[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
118 tool]]
119
120 * Ideas to possibly consider/incorporate in the future
121
122 - Semantic networks / knowledge trees.
123     - Is able to use natural language for knowledge mining and
124       question answering. This could potentially lead to self aware
125       artificial intelligence. Because of [[http://en.wikipedia.org/wiki/Three_Laws_of_Robotics]["Three laws safe"]] design,
126       there is nothing that can go wrong.
127
128 - Become an alternative to or an integrated part of KDE, Gnome,
129   Canonical Unity or similar desktop user interfaces.
130
131 - Become an open source scientific computing engine of structured data
132   as an alternative to proprietary Wolfram Alpha.
133
134 - Become an open source solution for unstructured knowledge extraction
135   and processing, similar to IBM Watson.
136
137 - P2P (Peer to peer) capabilities:
138     - File/data sharing system.
139     - Data streaming system.
140     - Distributed backup system.
141     - Distributed computation system.
142     - Communication system.
143     - Possibility of completely decentralized and stealth mode of operation for information publishing, storage and distribution, similar to Freenet.