Stereoscopy with the JMonkey Engine

Preview:

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

Recommended