Sie sind auf Seite 1von 39

Stereoscopy with the JMonkey Engine

Sebastian Stamm, Sören Wellhöfer

25th March 2009


Lösungsansätze Entwicklungen Auswertung

Inhalt

1 Lösungsansätze

2 Entwicklungen

3 Auswertung
Lösungsansätze Entwicklungen Auswertung

Ziele

Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Lösungsansätze Entwicklungen Auswertung

Ziele

Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Lösungsansätze Entwicklungen Auswertung

Ziele

Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter

Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
Lösungsansätze Entwicklungen Auswertung

Ziele

Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter

Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-Kenntnisse
Engine-Erweiterungen, Renderer, Zusatzlibraries
Lösungsansätze Entwicklungen Auswertung

Ziele

Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter

Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-Kenntnisse
Engine-Erweiterungen, Renderer, Zusatzlibraries
Lösungsansätze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung
RenderPass: Multi-Canvas
Lösungsansätze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
Lösungsansätze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Lösungsansätze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,


Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen


Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java
Berechnen Kamerkoordinaten
Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Lösungsansätze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Lösungsansätze Entwicklungen Auswertung

Gesucht: C1 , C2
T

0000000000
1111111111
C1 11
00 Annahmen:

000
111
0000000000
1111111111 C1 C2 ⊥ ZT

0000000000
1111111111
00
11
00
11
0000000000
1111111111
11Z
00
0000000000
1111111111
0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

Gesucht: C1 , C2
T

0000000000
1111111111
C1 11
00 Annahmen:

000
111
0000000000
1111111111 C1 C2 ⊥ ZT

0000000000
1111111111
00
11
00
11
0000000000
1111111111
−−→ −−→
|ZC1 | = |ZC2 | = 21 d,

11Z
00
0000000000
1111111111
0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

Gesucht: C1 , C2
T

0000000000
1111111111
C1 11
00 Annahmen:

000
111
0000000000
1111111111 C1 C2 ⊥ ZT

0000000000
1111111111
00
11
00
11
0000000000
1111111111
−−→ −−→
|ZC1 | = |ZC2 | = 21 d,

11Z
00
0000000000
1111111111
d... Eye distance

0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

Gesucht: C1 , C2
T

0000000000
1111111111
C1 11
00 Annahmen:

000
111
0000000000
1111111111 C1 C2 ⊥ ZT

0000000000
1111111111
00
11
00
11
0000000000
1111111111
−−→ −−→
|ZC1 | = |ZC2 | = 21 d,

11Z
00
0000000000
1111111111
d... Eye distance

0000000000
1111111111
000
111
 
−−→ −−→ c
ZC1 = −ZC2 = ± x
0000000000
1111111111
000C
111 2
cy

O
Lösungsansätze Entwicklungen Auswertung

Gesucht: C1 , C2
T

0000000000
1111111111
C1 11
00 Annahmen:

000
111
0000000000
1111111111 C1 C2 ⊥ ZT

0000000000
1111111111
00
11
00
11
0000000000
1111111111
−−→ −−→
|ZC1 | = |ZC2 | = 21 d,

11Z
00
0000000000
1111111111
d... Eye distance

0000000000
1111111111
000
111
 
−−→ −−→ c
ZC1 = −ZC2 = ± x
0000000000
1111111111
000C
111 2
cy

O
Lösungsansätze Entwicklungen Auswertung

q
2
T cx = ± d4 − cy2

1111111111
0000000000
C 11
00
111
000
0000000000
1111111111
1

0000000000
1111111111
00
11
00
11
0000000000
1111111111
11Z
00
0000000000
1111111111
0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

q
2
T cx = ± d4 − cy2

1111111111
0000000000
C 11
00
111
000
0000000000
1111111111
1
q
d 2 (Zx −Tx )2
cy = ± 21 (Zy −Ty )2 +(Zx −Tx )2

0000000000
1111111111
00
11
00
11
0000000000
1111111111
11Z
00
0000000000
1111111111
0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

q
2
T cx = ± d4 − cy2

1111111111
0000000000
C 11
00
111
000
0000000000
1111111111
1
q
d 2 (Zx −Tx )2
cy = ± 21 (Zy −Ty )2 +(Zx −Tx )2

0000000000
1111111111
00
11
00
11
0000000000
1111111111 −−−→

Zx + cx


11Z
00
OC1,2 =

0000000000
1111111111
Zy + cy

0000000000
1111111111
000
111
0000000000
1111111111
O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

q
2
T cx = ± d4 − cy2

1111111111
0000000000
C 11
00
111
000
0000000000
1111111111
1
q
d 2 (Zx −Tx )2
cy = ± 21 (Zy −Ty )2 +(Zx −Tx )2

0000000000
1111111111
00
11
00
11
0000000000
1111111111 −−−→

Zx + cx


11Z
00
OC1,2 =

0000000000
1111111111
Zy + cy

0000000000
1111111111
000
111
0000000000
1111111111
C1,2 (..., ...)

O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

q
2
T cx = ± d4 − cy2

1111111111
0000000000
C 11
00
111
000
0000000000
1111111111
1
q
d 2 (Zx −Tx )2
cy = ± 21 (Zy −Ty )2 +(Zx −Tx )2

0000000000
1111111111
00
11
00
11
0000000000
1111111111 −−−→

Zx + cx


11Z
00
OC1,2 =

0000000000
1111111111
Zy + cy

0000000000
1111111111
000
111
0000000000
1111111111
C1,2 (..., ...)

O
000C
111 2
Lösungsansätze Entwicklungen Auswertung

 
- −→
ZT : Change over Y

00000000000000
11111111111111
+

00000000000000
11111111111111
 
+

00000000000000
11111111111111
00000000000000
11111111111111
+

00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
00000000000000
11111111111111
Lösungsansätze Entwicklungen Auswertung

−→
  ZT : Change over Y
+

11111111111
00000000000
+
−−−→

00000000000
11111111111
00000000000
11111111111
ZC1,2 : Change in Y

00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
 
+
-
Lösungsansätze Entwicklungen Auswertung

Engine Adaptionen und Entwicklungen

Hands on!
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Lösungsansätze Entwicklungen Auswertung

Entwicklungsprozess

Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...

Auswertung/Probleme
Core - Verständnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style