15
©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

Embed Size (px)

Citation preview

Page 1: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

1

Arbitrary 3-D View-Plane

Page 2: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

2

Specifying An Arbitrary 3-D ViewTwo coordinate systems

•World reference coordinate system (WRC)

•Viewing reference coordinate system (VRC)

First specify a viewplane and coordinate system (WRC)

•View Reference Point (VRP)

•View Plane Normal (VPN)

•View Up Vector (VUP)

Specify a window on the view plane (VRC)

•Max and min u,v values ( Center of the window (CW))

•Projection Reference Point (PRP)

•Front (F) and back (B) clipping planes (hither and yon)

Page 3: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

3

Specifying A View

u

v

n

VRP

VPN

VUP

Z

X

Y

(umax, vmax)

(umin, vmin)

PRP

CW

Page 4: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

4

Normalizing Transformation

1. Translate VRP to origin

2. Rotate the VRC system such that the VPN (n-axis) becomes the z-axis, the u-axis becomes the x-axis and

the v-axis becomes the y-axis

3. Translate so that the CoP given by the PRP is at the origin

4. Shear such that the center line of the view volume becomes the z-axis

5. Scale so that the view volume becomes the canonical view volume: y = z, y = -z, x=z, x = -z, z = zmin, z = zmax

Page 5: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

5

1. Translate VRP to origin

( 1 0 0 -VRPx )

( 0 1 0 -VRPy )

( 0 0 1 -VRPz )

( 0 0 0 1 )

Page 6: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

6

2. Rotate VRC

We want to take u into (1, 0, 0)

v into (0, 1, 0)

n into (0, 0, 1)

First derive n, u, and v from user input:

n = VPN / ||VPN||

u = (Vup x n) / ||Vup x n||

v = n x u

Page 7: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

7

2. Rotate VRC (cont.)

( uxuy uz 0 )

( vx vy vz 0 )

( nxny nz 0 )

( 0 0 0 1 )

Page 8: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

8

3. Translate so that the CoP given by the PRP is at the origin

( 1 0 0 -PRPu )

( 0 1 0 -PRPv )

( 0 0 1 -PRPn )

( 0 0 0 1 )

Page 9: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

9

4. Shear such that the center line of the view volume becomes the z-axis

+Y

-Z

VPNVRP

CW

View Volume Center Line

Center line of window lies along the vector [CW - PRP], this is the direction of projection, DoP.

PRP

Page 10: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

10

Shear (cont.)

( (umax + umin)/2 ) ( PRPu )

CW = ( (vmax + vmin)/2 ) PRP= ( PRPv )

( 0 ) ( PRPn )

( 1 ) ( 1 )

( (umax + umin)/2 - PRPu )

DoP = [CW-PRP] = ( (vmax + vmin)/2 - PRPv )

( 0 - PRPn )

( 1 )

The shear matrix must take this direction of projection and shear it to the z-axis , DoP' = [0, 0, DoPz].

Page 11: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

11

Shear (cont.)

( 1 0 SHx 0 ) We want SH*DoP = DoP'SH = ( 0 1 SHy 0 )

( 0 0 1 0 )

( 0 0 0 1 )

( 1 0 SHx 0 ) ( (umax + umin)/2 - PRPu ) (0)

( 0 1 SHy 0 ) ( (vmax + vmin)/2 - PRPv ) = (0)

( 0 0 1 0 ) ( 0 - PRPn ) (DoPz)

( 0 0 0 1 ) ( 1 ) (1)

SHx = -DoPx/DoPz, SHy = -DoPy/DoPz

Page 12: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

12

5. Scale

z=-PRPnz= -PRPn + Bz=-PRPn + F

y = -v + vmax min

2

y = v - vmax min

2

Y axis

+1

-1

-Z-1

BackClipping Plane

z=-1

FrontClippingPlane

y= -z

y= z

Before Scale

After Scale

View plane

Page 13: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

13

5. Scale (cont.)

Scale is done in two steps:

1. First scale in x and y

xscale = -2PRPn/(umax - umin)

yscale = -2PRPn/(vmax - vmin)

2. Scale everything uniformly such that the back clipping plane becomes z = -1

xscale = -1 / (-PRPn + B)

yscale = -1 / (-PRPn + B)

zscale = -1 / (-PRPn + B)

Page 14: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

14

5. Scale (cont.)(Sx 0 0 0 )

(0 Sy 0 0 )

(0 0 Sz 0 )

(0 0 0 1 )

Sx = 2PRPn / [(umax - umin) (-PRPn + B)]

Sy = 2PRPn / [(vmax - vmin) (-PRPn + B)]

Sz = -1 / [(vmax - vmin) (-PRPn + B)]

Page 15: ©Larry F. Hodges (modified by Amos Johnson) 1 Arbitrary 3-D View-Plane

©Larry F. Hodges(modified by Amos Johnson)

15

Total Composite Transformation

Nper = [Sper ][SHper ][T(-PRP) ][R ][T(-VRP)]