Developing Gameplay Mechanics for Head-Tracked Stereoscopy: A Feasibility Study
Stereoscopy with the JMonkey Engine
-
Upload
soeren-wellhoefer -
Category
Documents
-
view
491 -
download
3
description
Transcript of Stereoscopy with the JMonkey Engine
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