Upload
soeren-wellhoefer
View
483
Download
3
Embed Size (px)
DESCRIPTION
This is a PDFLaTeX presentation on how to mathematically, technically and programatically realize stereoscopic rendering with the JMonkey Engine. The prospectives of this work were to lay the foundations for integrating the feature of stereoscopy into a game developed in my computer science class.
Citation preview
Stereoscopy with the JMonkey Engine
Sebastian Stamm, Soren Wellhofer
25th March 2009
Losungsansatze Entwicklungen Auswertung
Inhalt
1 Losungsansatze
2 Entwicklungen
3 Auswertung
Losungsansatze Entwicklungen Auswertung
Ziele
Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-KenntnisseEngine-Erweiterungen, Renderer, Zusatzlibraries
Losungsansatze Entwicklungen Auswertung
Ziele
Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-KenntnisseEngine-Erweiterungen, Renderer, Zusatzlibraries
Losungsansatze Entwicklungen Auswertung
Ziele
Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-KenntnisseEngine-Erweiterungen, Renderer, Zusatzlibraries
Losungsansatze Entwicklungen Auswertung
Ziele
Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-KenntnisseEngine-Erweiterungen, Renderer, Zusatzlibraries
Losungsansatze Entwicklungen Auswertung
Ziele
Zielsetzung
Illusion 3D Ansicht
Zwei Beamer Projektion
Polarisationsfilter
Programmiertechnisch
Positionierung zweier Kameras (Non-Native)
Multi-Canvas-Rendering
⇒ JM Engine Core-KenntnisseEngine-Erweiterungen, Renderer, Zusatzlibraries
Losungsansatze Entwicklungen Auswertung
JME Gibbon (Radakan)
Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Losungsansatze Entwicklungen Auswertung
JME Gibbon (Radakan)
Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Losungsansatze Entwicklungen Auswertung
JME Gibbon (Radakan)
Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Losungsansatze Entwicklungen Auswertung
JME Gibbon (Radakan)
Zielsetzung
RenderPass: Multi-Canvas
JFrames anstatt JME-Fullscreen
ContextSystem: Renderer anpassen
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,
Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen
CameraPoints.java
Berechnen Kamerkoordinaten
JME Camera: Position, Target
In Renderer: makeCameraPoints(Camera center)
CameraPoints.getXLeft(), getYLeft(), ...
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
TGesucht: C1, C2
Annahmen:
C1C2 ⊥ ZT
|−−→ZC1| = |
−−→ZC2| = 1
2d ,
d ... Eye distance
−−→ZC1 = −
−−→ZC2 = ±
(cx
cy
)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
TGesucht: C1, C2
Annahmen:
C1C2 ⊥ ZT
|−−→ZC1| = |
−−→ZC2| = 1
2d ,
d ... Eye distance
−−→ZC1 = −
−−→ZC2 = ±
(cx
cy
)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
TGesucht: C1, C2
Annahmen:
C1C2 ⊥ ZT
|−−→ZC1| = |
−−→ZC2| = 1
2d ,
d ... Eye distance
−−→ZC1 = −
−−→ZC2 = ±
(cx
cy
)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
TGesucht: C1, C2
Annahmen:
C1C2 ⊥ ZT
|−−→ZC1| = |
−−→ZC2| = 1
2d ,
d ... Eye distance
−−→ZC1 = −
−−→ZC2 = ±
(cx
cy
)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
TGesucht: C1, C2
Annahmen:
C1C2 ⊥ ZT
|−−→ZC1| = |
−−→ZC2| = 1
2d ,
d ... Eye distance
−−→ZC1 = −
−−→ZC2 = ±
(cx
cy
)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
T cx = ±√
d2
4 − c2y
cy = ±12
√d2(Zx−Tx )2
(Zy−Ty )2+(Zx−Tx )2
−−−→OC1,2 =
(Zx + cx
Zy + cy
)C1,2(..., ...)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
T cx = ±√
d2
4 − c2y
cy = ±12
√d2(Zx−Tx )2
(Zy−Ty )2+(Zx−Tx )2
−−−→OC1,2 =
(Zx + cx
Zy + cy
)C1,2(..., ...)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
T cx = ±√
d2
4 − c2y
cy = ±12
√d2(Zx−Tx )2
(Zy−Ty )2+(Zx−Tx )2
−−−→OC1,2 =
(Zx + cx
Zy + cy
)
C1,2(..., ...)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
T cx = ±√
d2
4 − c2y
cy = ±12
√d2(Zx−Tx )2
(Zy−Ty )2+(Zx−Tx )2
−−−→OC1,2 =
(Zx + cx
Zy + cy
)C1,2(..., ...)
Losungsansatze Entwicklungen Auswertung
����
������������
��������
������
����
����������������������������������������������������������������������
����������������������������������������������������������������������
Z
C2
C1
O
T cx = ±√
d2
4 − c2y
cy = ±12
√d2(Zx−Tx )2
(Zy−Ty )2+(Zx−Tx )2
−−−→OC1,2 =
(Zx + cx
Zy + cy
)C1,2(..., ...)
Losungsansatze Entwicklungen Auswertung
����������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������
(-+
)(
++
)−→ZT : Change over Y
Losungsansatze Entwicklungen Auswertung
�����������������������������������������������������������������������������
�����������������������������������������������������������������������������
(++
)
(+-
)
−→ZT : Change over Y
−−−→ZC1,2: Change in Y
Losungsansatze Entwicklungen Auswertung
Engine Adaptionen und Entwicklungen
Hands on!
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style
Losungsansatze Entwicklungen Auswertung
Entwicklungsprozess
Entwicklung
Testapplikationen, Bugfixes
2 Bildschirme, 2 Beamer
Kreos, Wii, ...
Auswertung/Probleme
Core - Verstandnis: schlechte Dokumentation
Core - Modifikationen: Ungeahnte Effekte
Absprache, Interfaces, Integration, ...
⇒ Version Conflicts
Nervenaufreibende Tests, Integrations, Bug-Searches
Unsauberer Programming style