Docstoc

Introduction to Computer Graphics - PowerPoint

Document Sample
Introduction to Computer Graphics - PowerPoint Powered By Docstoc
					Computer Graphics : บทที่ 2
- Transformation
- 3D Viewing
                    Transformation

    • Transformation
       – World Coordinates  Camera Coordinates
       – Camera Coordinates  Screen Coordinates(2D)


y
                                 y

                                           x   y
        x
z
                                           z   z    x
World Coordinates     Camera Coordinates       Screen Coordinates
                                                                2
                    World Coordinates

     ั
• พิกดใน 3 มิติ
   – กาหนดตาแหน่งของต้นกาเนิดแสง ตาแหน่งกล้อง ตาแหน่งวัตถุ
                             ้
   – หน่วยเป็ นอะไรก็ได้ แต่ตองเหมือนกัน เช่น เมตร เซนติเมตร กิโลเมตร

                          y



                                  x
                         z
                                                World Coordinates


                                                                        3
                                         ั
                             ประเภทของพิกด

• กฎมือขวา กฎมือซ้าย
   – นิ้วโป้ ง = x,นิ้วชี้ = y , นิ้วกลาง = z
        • OpenGL  กฎมือขวา
        • DirectX  กฎมือซ้าย
                 y                              y

                                          x
                         x
                z                               z
                     กฎมือขวา                       กฎมือซ้าย   4
                                      ั
                          ประเภทของพิกด

• ความแตกต่างของ กฎมือขวา กับ กฎมือซ้าย
   – หลักการในการมอง การคานวณ โดยทัวไปเหมือนกัน
                                       ่
   – Cross Product ต่างกัน
                                           ั
   – ข้อมูลของวัตถุ(ตาแหน่งของvertex) ในพิกดหนึ่ ง ถ้าจะนาไปแสดงในอีก
        ั
     พิกดหนึ่ งต้องเปลี่ยนก่อนแสดงภาพ




                                                                        5
               Camera Coordinates

          ั
• เป็ นพิกดที่เอากล้องเป็ นศูนย์กลางในการคิด
   – แกน X,Y ของกล้องคือแกน X,Y ของ Screen
   – ด้านลึกคือแกน Z
                 y

                       x             y


                       z        z          x
                      Camera Coordinates

                                               6
                  Screen Coordinates

     ั
• พิกดบน Screen
             ั
   – เป็ นพิกดที่เกิดหลังจากกระบวนการ Projection
       • จุดไหนไกล  กลางscreen
   – ค่า Z จาเป็ นในการคานวณความลึก(ใกล้-ไกล)  Z-Buffer
             y

                   x           y                     y


                   z                x                    x
                           z                     z
     Camera                          Screen
    Coordinates                    Coordinates               7
                                   ั
                       ประเภทของพิกด


– OpenGL  ด้านที่วิ่งเข้าหาตัวค่าเป็ น +
– DirectX  ด้านที่วิ่งออกจากตัว(ด้านลึก) ค่าเป็ น -

                  y                               y
                                             z
                          x                            x


                          z
           OpenGL                          DirectX
                                                           8
                 Model Coordinates

• => Local Coordinates ของวัตถุ
                         ่
   – จุดorigin(0,0) จะอยูในตัววัตถุ

                             y        y
  y
                                 x
          x              z
                                             x
                                      z
   z             Model Coordinates    World Coordinates


                                                          9
       ขั้นตอนของ Coordinates Transformation

   • Model Coordinates  Screen Coordinates

                             y            y
  Model                                                  World
Coordinates                      x                     Coordinates
                         z
                                              x
                                         z

                                                  y

               y                                      x Camera
  Screen                                               Coordinates
Coordinates
                                                      z        10
           z       x
                 Affine Transformation

• =>Homogeneous Coordinates Transformation
   – สามารถจัดการการย้าย การหมุน การย่อขยาย วัตถุ ด้วย เมตริ กขนาด 4×4
        • (x, y, z, w)
             ั
        • พิกดใน 3 มิติ  (x/w, y/w, z/w)(โดยปรกติ w = 1)


              R00 S x    R01      R02      Tx  x   x 
                                                 
              R10       R11S y    R12      Ty  y   y 
                                                     
              R20        R21     R22 S z   Tz  z   z 
             
              0                                  
                          0        0       1  w   w ' 
                                                  
                                                                         11
                          Rotation

• หมุนรอบจุด (0,0)



    R00   R01   R02     0  x   R00 x  R01 y  R02 z   x 
                                                       
    R10   R11   R12     0  y   R10 x  R11 y  R12 z   y 
   R      R21   R22     0  z    R x  R y  R z    z  
    20                       20         21      22
                                                            
    0                   1  1                          1
           0        0                   1              


                                                                12
                       Rotation


• หมุนรอบแกนที่กาหนดทวนเข็มนาฬิกา

                        y



                   +          x
               z




                                    13
                                Rotation


   • หมุนรอบแกน Z  เหมือนกับการหมุนใน 2 มิติ
     x’ = x cos(q) – y sin(q)
                                                         y
     y’ = x sin(q) + y cos(q)
     z’ = z

                                               +                   x
              q
 x'   cos( )  sin(q )   0 0  x      z
                              
                      q
 y '   sin(q ) cos( )    0 0  y 
 z'    0        0       1 0  z 
                              
1  0                     0 1  1              glRotatef(q, 0,0,1)
                 0            
                                                                         14
        Rotation
                                                            y
   หมุนรอบแกน y (z -> y, y -> x, x->z)
                                                                         x
    z’ = z cos(q) – x sin(q)                            +
                                                    z
    x’ = z sin(q) + x cos(q)
    y’ = y

 x'   cos( )  q      0 sin(q )0  x 
                                                  x
 y'  0               1   0    0  y 
 z '     sin(q )   0 cos( ) 0  z 
                              q
                                 
1  0                          1  1                        z
                     0   0                +
                                            y
      glRotatef(q, 0,1,0)
                                                                    15
        Rotation
                                                                y
   หมุนรอบแกน x (z -> x, y -> z, x->y)
                                                                             x
    y’ = y cos(q) – z sin(q)                                +
                                                        z
    z’ = y sin(q) + z cos(q)
    x’ = x

       x'   1       0      0      0  x 
                                                      z
                         q
       y '   0 cos( )  sin(q )   0  y 
       z '    0 sin(q ) cos( )
                                q    0  z 
                                     
       1  0                       1  1        +               y
                    0      0         
                                                x
       glRotatef(q, 1,0,0)
                                                                        16
       Rotation
   หมุนรอบแกนใดๆ


           glRotatef(q, nx,ny,nz)




                                    17
                                     ตัวอย่ าง

• หมุนรอบแกน Y ด้วยมุม 90 องศาตามเข็มนาฬิกา

    (-5,6,3)        (-3,6,3)                                   (3,6,5)
                       y                             (3,6,3)

                                                     (3,2,3)
    (-5,2,3)                     x                             (3,2,5)
               (-3,2,3)
                   z

    cos q     0 sin q         0  x   0      0 1 0  x   z   x 
                                                       
    0         1       0       0  y   0      1 0 0  y   y   y 
                                                                   
     sin q   0 cos q         0  z   1     0 0 0  z    x   z  
   
    0                                                  
              0       0       1  1   0
                                             0 0 1  1   1   1 18
                                                            
                                                                            
                     Translation

• (Tx,Ty,Tz)



         1    0 0 Tx  x   x  Tx   x 
                                     
         0    1 0 Ty  y   y  Ty   y 
         0    0 1 Tz  z    z  T    z  
                                 z
                                          
         0            1   1   1 
              0 0 1                  

                                                     19
                                      ตัวอย่ าง

• (Tx,Ty,Tz) = (8,-2,0)
               (-3,6,3)
    (-5,6,3)
                        y                             (3,4,3)
                                                                (5,4,3)

    (-5,2,3)                      x
               (-3,2,3)
                                                                (5,0,3)
                    z                                 (3,0,3)


                   1       0 0 8  x   x  8   x 
                                               
                   0       1 0 2  y   y  2   y 
                                                  
                   0       0 1 0  z   z   z  
                   
                   0                           
                           0 0 1  1   1   1 
                                                                   20
                           Scaling

• (Sx,Sy,Sz)



                Sx   0    0    0  S x x   x 
                                          
               0     Sy   0    0  S y y   y 
               0     0    Sz   0  S z    z  
                                  z   
               0               1  1   1 
                     0    0               

                                                       21
                                  ตัวอย่ าง

• (Sx,Sy,Sz) = (2, 0.5, 1)
               (-3,6,3)
    (-5,6,3)
                      y                  (-10,3,3)   (-6,3,3)

    (-5,2,3)                  x
               (-3,2,3)
                                         (-10,1,3) (-6,1,3)
                          z

                    2 0 0 0  x   2 x   x 
                                           
                    0 0.5 0 0  y   0.5 y   y 
                                              
                    0 0 1 0  z   z   z  
                    0 0 0 1  1   1   1 
                                           
                                                        22
                                 ตัวอย่ าง


y                    Rotation y                  Translation y

    x                                        x                     x

z                                z                             z
         cos 90      0 sin 90   0              1   0 0 5
                                                        
             0       1    0     0              0   1 0 0
          sin 90    0 cos 90   0              0   0 1 0
                                               
                                                 0        
        
             0       0    0     1
                                                    0 0 1
                                                           




                                                                       23
                               ตัวอย่ าง

y               Rotation y                  Translation y

         x                            x                         x

z                        z                              z
         Translation             Rotation

    1    0 0 0   cos 90       0 sin 90    0   x   x 
                                               
    0    1 0 0       0        1    0      0   y   y 
                                                      
    0    0 1 5    sin 90     0 cos 90    0   z   z 
    
    0                                          
         0 0 1
                      0        0    0      1 1   1 
                                                  
                                 ่
                อันไหนทาก่อนจะอยูขวา
                                                                    24
                                   ตัวอย่ าง

y               Translation y                   Rotation    y

            x                            x                            x

z                          z                               z
    y                               Rotation            Translation
        x
                       cos 90       0 sin 90    01      0 0 0  x   x 
            z                                                    
                           0        1    0      00      1 0 0  y   y 
                                                                       
                        sin 90     0 cos 90    00      0 1 5  z   z 
                                                                 
                      
                           0        0    0      10
                                                         0 0 1  1   1 
                                                                    



                                                                             25
                                      ตัวอย่ าง

       y              Translation y               Rotation   y

                x                           x                        x

      z                          z                           z
          Rotation          Translation
 cos 90   0 sin 90    0   1 0 0 0  x   cos 90     0 sin 90   5   x   x 
                                                                  
     0    1      0    0   0 1 0 0  y       0      1    0     0   y   y 
                                                                            
  sin 90 0 cos 90    0   0 0 1 5  z    sin 90   0 cos 90   0   z   z 
                          0 0 0 1  1  
                                                                   

     0    0      0    1                    0      0    0     1 1   1 
                                                                         


                                                                               26
                                    ตัวอย่ าง

       y               Rotation y                  Translation y

               x                           x                           x

      z                        z                             z
   Translation        Rotation
 1 0 0 0   cos 90    0 sin 90    0   x   cos 90     0 sin 90   0   x   x 
                                                                    
 0 1 0 0       0     1      0    0 y         0      1    0     0   y   y 
                                                                              
 0 0 1 5    sin 90 0 cos 90     0   z    sin 90   0 cos 90   5   z   z 
0 0 0 1
                                     
                                    1 1  
                                                                           
                                                                      1 1   1 
               0     0      0                0      0    0          


                                                                                 27
    Affine Transformation



y                  y
                                   y
             A             x
       x
                       z
z             1   z
             A                 x




                                       28
          Coordinates Transformation

• Model  Camera
            ่                      ั ่
  – วัตถุอยูที่ตาแหน่ง (-10,0,4)พิกดอยูทิศทางเดียวกับ world co.
  – กล้องหมุนรอบแกน Y 90องศา ตาแหน่ง(8,2,3)


                                    y
                            y                   y
                                            x
                                        x
                                                (8,2,3)
            (-10,0,4)           x                         z
                                    z
                        z

                                                                  29
      Coordinates Transformation

• Model  World
       1   0 0 10 
                   
       0   1 0 0 
       0   0 1 4               (0,0,0)  (-10,0,4)
       
       0           
           0 0 1  
        Translation
                                 y
                         y                     y
                                           x
                                       x
                                               (8,2,3)
         (-10,0,4)           x                           z
                                 z
                     z                                       30
       Coordinates Transformation

• World  Camera
       cos  90      0 sin  90        01       0    0 8 
                                                              
             0         1       0           00       1    0 2 
                                            
        sin  90    0 cos  90        00
                                               
                                                       0    1 3 
                                                                 
                                            0            0 1
             0         0       0           1        0         

                                    y
                            y                              y
                                                   x
                                            x
                                                           (8,2,3)
        (-10,0,4)               x                                    z
                                    z
                    z
                                                                         31
          Coordinates Transformation

• World  Camera
         cos  90      0 sin  90       01    0   0 8 
                                                           
               0         1      0           00    1   0 2 
                                             
          sin  90    0 cos  90       00
                                                
                                                     0   1 3 
                                                              
                                             0        0 1
               0         0      0           1     0        

                    y            xy
                                             x
   (-18,-2,1)             x                      z
                z                    z

                                                                  32
           Coordinates Transformation

• Model  World
  cos  90       0 sin  90       01       0   0 8  1 0 0 10  x   x 
                                                                      
        0          1          0       00       1   0 2  0 1 0 0  y   y 
                                                                            
   sin  90     0 cos  90       00
                                          
                                                  0   1 3  0 0 1 4  z   z  
                                       0
                                                           
                                                            0 0 0 1  1   1 
                                                                           
        0          0          0       1        0   0 1                

                    World  Camera                          Model  World
                                              y
                                   y                           y
                                                           x
                                                       x
                                                               (8,2,3)
                   (-10,0,4)             x                               z
                                              z                                   33
                               z
           Coordinates Transformation

• Model  World
  cos  90      0 sin  90      01   0   0 8  1 0 0 10  x   x 
                                                                
        0         1      0          00   1   0 2  0 1 0 0  y   y 
                                                                      
   sin  90    0 cos  90      00
                                        
                                            0   1 3  0 0 1 4  z   z  
                                     0
                                                     
                                                      0 0 0 1  1   1 
                                                                     
        0         0      0          1    0   0 1                

       World  Camera                                     Model  World



                                            y
                                 (0,0,0)        x
                                                                            34
                                       z
                  3D Viewing


• 3D  เหมือนการถ่ายรูป




                               35
                    3D Viewing

• ซับซ้อนกว่า 2 มิติ
• เรื่องยากคือทาอย่างไรที่จะวาดภาพ 3 มิติลงบนจอ 2 มิติ
• การมองวัตถุ 3 มิติในมุมมองที่ต่างกัน  ภาพที่ได้บนจอ 2
  มิติต่างกัน
• position, orientation, field of view ต่างกันภาพต่างกัน




                                                           36
Different Views




                  37
                   The Viewing Process

• สิ่งที่จาเป็ นในการสร้างภาพ
   – กาหนด scene geometry
   – กาหนด view (camera)
• วาดวัตถุ 3 มิติลงบนระนาบ 2 มิติ
 (Transform the 3D objects onto a 2D plane )
• กาหนด real-world window บนระนาบ 2 มิติ
• real-world window  viewport(2D viewing)



                                               38
              การกาหนด Camera

• การกาหนด View :
  – ตาแหน่ งของกล้องใน
    world co-ordinate
  – ทิศทางที่ส่องกล้อง
                   ้
  – มุมของกล้อง(ขึน ลง )
  – ขนาดของ view
                                39
                        Projections
• หลังกาหนด view แล้ว  ฉายภาพลงบนจอ 2 มิติ (2D Viewplane)
• การฉายภาพของวัตถุ 3 มิติลงบนจอ 2 มิติ เรียกว่า Planar Geometric
  Projections
• มี 2 ประเภท :
   – Perspective Projection
   – Parallel Projections



                                                                    40
Perspective Projections




                y

                    x
            z




                          41
Perspective Projection




                         42
              Perspective Projection

• วัตถุที่อยู่ไกลจะเล็กเหมือนกับ Real World
• สิ่งที่ต้องกาหนด:
   – จุดศูนย์กลางที่จะทาการ Projection
   – Plane ของการ Projection
•                                         ุ
    Projection: เชื่อมวัตถุให้ไปรวมกันที่จดศูนย์กลางของ Projection

                      camera




                            projection plane
                                                                     43
 Parallel(Orthographic) Projection


• No effect เกี่ยวกันความใกล้ไกล –ไม่สนใจว่าระยะทางจาก
  กล้องถึงวัตถุ
• จุดศูนย์กลางของ Projection  Infinity
• Projection calculation  ไม่สนใจแกน Z




                                                         44
             Field of View


• กาหนดขนาดของโลก 3 มิติ
                              center of projection
              field of view
       y                          y

   z          q           z

                                       x




                                                     45
     Projection Transformation


• สิ่งที่ต้องกาหนด
   – Perspective or Orthographic
   – Field of view and image aspect ratio
   – Near and far clipping planes




                                            46
        Near and Far Clipping Planes


• ภาพที่อยู่ระหว่าง near กับ far เท่านันที่จะถูกวาด
                                       ้
                   Near plane                         Far plane
                     y

               z

                         x

•   Near plane + far plane + field of view = Viewing Frustum




                                                                  47
              Viewing Frustum

• วัตถุที่อยู่นอก frustum จะถูก clip ออก


             Near plane                    Far plane
              y

         z

                  x

                                    Viewing Frustum


                                                       48
           Projection Transformation


• Projection –
     map the object from 3D space to 2D screen



       y                            y

 z                              z

           x                            x

Perspective: gluPerspective()               Parallel: glOrtho()
                                                                  49
         Perspective Projections
glFrustrum(xmin, xmax, ymin, ymax, zmin, zmax);




                                                  50
     Perspective Projections

gluPerspective(fov, aspect, near, far);




                                          51
Perspective Projections




                          52
             Lens Configurations




fov = 122°                 fov = 84°




fov = 54°                 fov = 10°
                                       53
               Perspective Projection

• Parameters:
   – centre of projection (COP)
   – field of view (q, f)
   – projection direction
   – up direction




                                        54
               Perspective Projection


(-1, -1)
                                  (1, 1)

                                                               far
           y
  z                                                     near
               x                           eye
                                                 (top view)
                   Z = -1   Z=1




                                                               55
            Perspective Projection



                                                (1, 1, -1)

    y

z
                       (-1, -1, 1)
        x
                             Canonical View Volume




                                                             56
Parallel Projection

   (Xp, Yp)




           y
               (x,y,z)
       z
           x




                         57
                     Parallel Projection (2)


    • OpenGL: ทุกอย่าง  canonical view volume
             glOrtho(xmin, xmax, ymin, ymax, near, far)


                        (xmax, ymax, far)
                                                                     (1, 1, -1)




(xmin, ymin, near)                          (-1, -1, 1)

                                                  Canonical View Volume
                                                                                  58
        Projection Transformation


• In OpenGL:
   – Set the matrix mode to GL_PROJECTION
   – Perspective projection:
     • gluPerspective(fovy, aspect, near, far) or
     • glFrustum(left, right, bottom, top, near, far)
  – Orthographic:
     • glOrtho(left, right, bottom, top, near, far)

                                                        59
    Projection Transformation


void display()
{
   glClear(GL_COLOR_BUFFER_BIT);
   glMatrixMode(GL_PROJETION);
   glLoadIdentity();
   gluPerspective(fove, aspect, near, far);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   gluLookAt(0,0,1,0,0,0,0,1,0);
   display_all(); // your display routine
}                                             60

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:22
posted:8/17/2011
language:English
pages:60