39
Stereoscopy with the JMonkey Engine Sebastian Stamm, S¨ oren Wellh¨ ofer 25th March 2009

Stereoscopy with the JMonkey Engine

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

Page 1: Stereoscopy with the JMonkey Engine

Stereoscopy with the JMonkey Engine

Sebastian Stamm, Soren Wellhofer

25th March 2009

Page 2: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Inhalt

1 Losungsansatze

2 Entwicklungen

3 Auswertung

Page 3: Stereoscopy with the JMonkey Engine

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

Page 4: Stereoscopy with the JMonkey Engine

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

Page 5: Stereoscopy with the JMonkey Engine

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

Page 6: Stereoscopy with the JMonkey Engine

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

Page 7: Stereoscopy with the JMonkey Engine

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

Page 8: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung

RenderPass: Multi-Canvas

JFrames anstatt JME-Fullscreen

ContextSystem: Renderer anpassen

Page 9: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung

RenderPass: Multi-Canvas

JFrames anstatt JME-Fullscreen

ContextSystem: Renderer anpassen

Page 10: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung

RenderPass: Multi-Canvas

JFrames anstatt JME-Fullscreen

ContextSystem: Renderer anpassen

Page 11: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

JME Gibbon (Radakan)

Zielsetzung

RenderPass: Multi-Canvas

JFrames anstatt JME-Fullscreen

ContextSystem: Renderer anpassen

Page 12: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,

Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 13: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 14: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 15: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 16: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 17: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 18: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Modifiziert, Adaptieren,Entwickeln, Integrieren,Testen

CameraPoints.java

Berechnen Kamerkoordinaten

JME Camera: Position, Target

In Renderer: makeCameraPoints(Camera center)

CameraPoints.getXLeft(), getYLeft(), ...

Page 19: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����

������������

��������

������

����

����������������������������������������������������������������������

����������������������������������������������������������������������

Z

C2

C1

O

TGesucht: C1, C2

Annahmen:

C1C2 ⊥ ZT

|−−→ZC1| = |

−−→ZC2| = 1

2d ,

d ... Eye distance

−−→ZC1 = −

−−→ZC2 = ±

(cx

cy

)

Page 20: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����

������������

��������

������

����

����������������������������������������������������������������������

����������������������������������������������������������������������

Z

C2

C1

O

TGesucht: C1, C2

Annahmen:

C1C2 ⊥ ZT

|−−→ZC1| = |

−−→ZC2| = 1

2d ,

d ... Eye distance

−−→ZC1 = −

−−→ZC2 = ±

(cx

cy

)

Page 21: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����

������������

��������

������

����

����������������������������������������������������������������������

����������������������������������������������������������������������

Z

C2

C1

O

TGesucht: C1, C2

Annahmen:

C1C2 ⊥ ZT

|−−→ZC1| = |

−−→ZC2| = 1

2d ,

d ... Eye distance

−−→ZC1 = −

−−→ZC2 = ±

(cx

cy

)

Page 22: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����

������������

��������

������

����

����������������������������������������������������������������������

����������������������������������������������������������������������

Z

C2

C1

O

TGesucht: C1, C2

Annahmen:

C1C2 ⊥ ZT

|−−→ZC1| = |

−−→ZC2| = 1

2d ,

d ... Eye distance

−−→ZC1 = −

−−→ZC2 = ±

(cx

cy

)

Page 23: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����

������������

��������

������

����

����������������������������������������������������������������������

����������������������������������������������������������������������

Z

C2

C1

O

TGesucht: C1, C2

Annahmen:

C1C2 ⊥ ZT

|−−→ZC1| = |

−−→ZC2| = 1

2d ,

d ... Eye distance

−−→ZC1 = −

−−→ZC2 = ±

(cx

cy

)

Page 24: Stereoscopy with the JMonkey Engine

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(..., ...)

Page 25: Stereoscopy with the JMonkey Engine

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(..., ...)

Page 26: Stereoscopy with the JMonkey Engine

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(..., ...)

Page 27: Stereoscopy with the JMonkey Engine

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(..., ...)

Page 28: Stereoscopy with the JMonkey Engine

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(..., ...)

Page 29: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

����������������������������������������������������������������������������������������������������������������

����������������������������������������������������������������������������������������������������������������

(-+

)(

++

)−→ZT : Change over Y

Page 30: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

�����������������������������������������������������������������������������

�����������������������������������������������������������������������������

(++

)

(+-

)

−→ZT : Change over Y

−−−→ZC1,2: Change in Y

Page 31: Stereoscopy with the JMonkey Engine

Losungsansatze Entwicklungen Auswertung

Engine Adaptionen und Entwicklungen

Hands on!

Page 32: Stereoscopy with the JMonkey Engine

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

Page 33: Stereoscopy with the JMonkey Engine

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

Page 34: Stereoscopy with the JMonkey Engine

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

Page 35: Stereoscopy with the JMonkey Engine

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

Page 36: Stereoscopy with the JMonkey Engine

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

Page 37: Stereoscopy with the JMonkey Engine

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

Page 38: Stereoscopy with the JMonkey Engine

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

Page 39: Stereoscopy with the JMonkey Engine

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