Dome Projection using a Vertex Shader

11
mjb – December 15, 2020 1 Computer Graphics Dome Projection using a Vertex Shader dome.pptx Mike Bailey [email protected] This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License

Transcript of Dome Projection using a Vertex Shader

Page 1: Dome Projection using a Vertex Shader

mjb – December 15, 2020

1

Computer Graphics

Dome Projection using a Vertex Shader

dome.pptx

Mike [email protected]

This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License

Page 2: Dome Projection using a Vertex Shader

mjb – December 15, 2020

2

Computer Graphics

Dome Projection – Becoming more Common

I believe that it’s only a matter of time until it becomes a routine visualization tool

Page 3: Dome Projection using a Vertex Shader

mjb – December 15, 2020

3

Computer Graphics

Programming a Dome display is easier when onlya single projector is used

A fisheye lens distorts the image so that it spreads out across the dome. The trick is pre-distorting the image in the other direction so that it looks correct after being projected

Page 4: Dome Projection using a Vertex Shader

mjb – December 15, 2020

4

Computer Graphics

Dome Distortion

Move the teapot so it surrounds the audience

Page 5: Dome Projection using a Vertex Shader

mjb – December 15, 2020

5

Computer Graphics

Viewing Volume = (-1,-1) to (1,1)

The edge of the circle represents the edge of the dome projection = your left, right, bottom, top as you are sitting in the theater.

Dome Projection:

Page 6: Dome Projection using a Vertex Shader

mjb – December 15, 2020

6

Computer Graphics

const float PI = 3.14159265;

voidmain( ){

vec4 pos = gl_ModelViewMatrix * gl_Vertex;float lenxy = length( pos.xy );

float phi = atan( lenxy , -pos.z );pos.xy = ( phi / (PI/2. ) ) * ( pos.xy / lenxy );

gl_Position = gl_ProjectionMatrix * pos;}

Y

pos.x

pos.y

X

God’s-eye View: As the eye sees it: From the side:

Z

Y

pos.zΦ

eyeposition

lenxy = sqrt(x2 + y2)

Dome Vertex Shader:

Note: ( pos.xy / lenxy ) = ( cosΘ,sinΘ )

ΘZX

pos.z

pos.x

pos.y

Θ

Φ

Page 7: Dome Projection using a Vertex Shader

mjb – December 15, 2020

7

Computer Graphics

Cartesian: Dome:

Dome Vertex Shader:

Page 8: Dome Projection using a Vertex Shader

mjb – December 15, 2020

8

Computer Graphics

Dome:

Dome Vertex Shader:

Page 9: Dome Projection using a Vertex Shader

mjb – December 15, 2020

9

Computer Graphics

Flow Visualization in the Dome

Page 10: Dome Projection using a Vertex Shader

mjb – December 15, 2020

10

Computer Graphics

Mars Panoram in the Dome

Page 11: Dome Projection using a Vertex Shader

mjb – December 15, 2020

11

Computer Graphics

Large Lines and Polygons Need to be Tessellated

Bounding Box edges were not tessellated. Straight lines on the monitor produced curved lines on the dome.

Bounding Box edges were tessellated. Curves lines on the monitor produced straight lines on the dome.

Note: This edge does not pass through the flow vectors!

Note: This edge does pass through the flow vectors!