E D R , A S I H C RSS

3DGraphics Foundation Summary


1.  œ 1 žฅ ธ๋ž˜”ฝ ธฐดˆ ด๋ก 

1.1. ˆ˜•™  ธฐดˆ ด๋ก 

1.1.1. ขŒ‘œ„

  • ˜ค๋ฅธ† ขŒ‘œ„ : šฐ๋ฆฌฐ€ ˆ˜•™ฑ…—„œ ๋งŽด ๋ณด๋˜ ขŒ‘œ„‹ค. œ„•„๋ž˜ฐ€ Z, •ž๋’คฐ€ X, ขŒšฐฐ€ Y, ธ๋ž˜”ฝŠค—„  ž˜ •ˆ“ด๋‹ค.
  • ™ผ† ขŒ‘œ„ : ณต„œ๋… ••˜ธฐ ‰ฝธฐ ๋•Œ๋ฌธ— ธ๋ž˜”ฝŠค—„œ ๋งŽ‚ฌšฉ•œ‹ค. •ž๋’คฐ€ Z, ขŒšฐฐ€ X, œ„•„๋ž˜ฐ€ Y
  • ตฌ๋ฉด ขŒ‘œ„ : ฃผ๋กœ ‹œ „ ‘œ˜„• ๋–„ ž˜ “ฐธ๋‹ค. › —„œ๋ถ€„˜ ฑฐ๋ฆฌ ฯ, z•ณผ˜ ฐ ฮธ, x•ณผ˜ ฐ ฯ† ๋กœ ตฌ„ฑ๋œ‹ค. ฑธ ธ๋ฆผ— ๋”ฐ๋’€–ด๋ณด๋ฉด,
    • x = ฯsinฮธcosฯ†
    • y = ฯsinฮธsinฯ†
    • z = ฯcosฮธ

1.1.2. ๋ฒก„

  • ๋ญ.. ๋ณ„๋กœ ๋ณผฑฐ —†๋‹ค. ๋‹ ๋“ฑ•™ต ๋•Œ –ˆ๋˜ ฑฐ๋‹ค. ƒ†Œ•œฑฐ๋งŒ ๋ช‡œ  –ด๋ณด๋ฉด..
  • ๋ฒก„‘œ˜„„.. ›๋ฌธž๋กœ •• ‹ค. ™”‚ด‘œ ธ๋ฆด๋ผ๋‹ˆนŒ —ด๋€ฐฎ๋‹ค.
  • ™ธ € โ“Xโ“‘ ด๋ ‡ฒŒ ‘œ˜„•œ‹ค. ๋ฐฉ–ฅ€ ๋ฒก„ฐ โ“—„œ ๋ฒก„ฐโ“‘ชฝœผ๋กœ 180๋„๋ณด๋‹ž‘€ ฐœผ๋กœ ๋Œ๋ฆด๋•Œ ๋‚˜‚ฌฐ€ „–‰•˜๋Š” ๋ฐฉ–ฅด๋‹ค. ฒŒ ๋ญ” œ†Œ๋ฆฌ๋ƒ--;
  • ๋ฒก„˜ ฌธฐ : |โ“Xโ“‘| = |โ“||โ“‘|sinฮธ
  • ™ธ ˜ „งˆ : ๋‘ ๋ฒก„™€ ๋™‹œ— ˆ˜งธ ๋ฒก„

1.1.3. –‰๋ 

  • 3X3˜ –‰๋ ‹

~cpp 
     | a1 b1 c1 |      | b2 c2 |      | b1 c1 |      | b1 c1 |
 D = | a2 b2 c2 | = a1 |       | - a2 |       | + a3 |       |
     | a3 b3 c3 |      | b3 c3 |      | b3 c3 |      | b2 c2 |

  • ๋ฒก„˜ ™ธ „ –‰๋ ฌ๋กœ ‘œ‹œ•˜ธฐ(i,j,k๋Š” ฐฐ x,y,z๋ฐฉ–ฅ˜‹œ„๋ฒก„ฐ)

~cpp 
         | i   j   k  |
 โ“Xโ“‘ = | Xa  Ya  Za | 
         | Xb  Yb  Zb |

  • ผญง€  ๋ฐฉ–ฅ Œ๋ณ„? ฑด –ด๋”ฐ “ฐ๋Š” ฑฐง€..

1.2. ๋™ฐจ ขŒ‘œ„™€ 3ฐจ› ๋ณ€™˜ –‰๋ 

  • ๋™ฐจ ขŒ‘œ„? ธ๋ƒฅ •Œธฐ ‰ฝฒŒ ๋ง•˜ž๋ฉด, ‰–‰ด๋™„ ผ๋ฐ˜ ฐจ๋ณ€™˜œผ๋กœ ๋‚˜ƒ€๋‚ดธฐฐ€ ๋ถˆฐ€๋Šฅ•„œ, •˜๋‚˜˜ „ฑ๋ถ„„ ถ”ฐ€•„œ ฑธ๋กœ ๋‚˜ƒ€๋‚ด๋Š” ฑฐ๋‹ค.
  • 3ฐจ› ขŒ‘œ๋ฅผ ๋‚˜ƒ€๋‚ผ๋•Œ๋Š” x,y,z ธ๋ฆฌ  w๋ผ๋Š” ฐ’„ ถ”ฐ€๋กœ จค€๋‹ค. ธ๋ƒฅ 1๋กœ จฃผ๋ฉด ๋œ‹ค.

1.2.1. ž„˜˜ •„ ‘‹œผ๋กœ šŒ „ด๋™ •˜ธฐ(—‰ ฒƒ€ ˆ˜˜•„ ‹œ—˜๋ฌธ œ?)

  • šŒ „•› „ ง€๋‚˜ฒŒ ‰–‰ด๋™ ‹œ‚จ๋‹ค.
  • šŒ „•ด xz‰๋ฉดณผ ๋งŒ๋‚˜๋„๋ก x•„ ‘‹œผ๋กœ šŒ „ด๋™ ‹œ‚จ๋‹ค.
  • šŒ „•ด z•ณผ ˜•˜ฒŒ y•„ ‘‹œผ๋กœ šŒ „ด๋™ ‹œ‚จ๋‹ค.
  • ›•˜๋Š” ๋งŒผ z•„ ‘‹œผ๋กœ ๋Œ๋ ค€๋‹ค.
  • œ„˜ œ„˜ ฒƒ˜ —ญ๋ณ€™˜
  • œ„˜ œ„˜ œ„˜ ฒƒ˜ —ญ๋ณ€™˜
  • œ„˜ œ„˜ œ„˜ œ„˜ ฒƒ˜ —ญ๋ณ€™˜
  • š” –‰๋ ฌ๋“ค„‹ณฑ•˜๋ฉด

~cpp 
 T(-x1, -y1, -z1) Rx(ฯ†) Ry(-ฮธ) Rz(ฮฑ) Ry(ฮธ) Rx(-ฯ†) T(x1, y1, z1)
  ˆ๋ผ ๋ณตžก•ด ๋ณดธ๋‹ค. ผ๋ฐ ง ‘ †œผ๋กœ ๋”ฐ๋•ด๋ณด๋ฉด ๋ณ„๋ฃจ •ˆ ๋ณตžก•˜‹ค.

1.3. œˆ๋„šฐ™€ ๋ฌŠธ

  • ฌŠธ : ™”๋ฉดƒ— ๋‚˜ƒ€๋‚ผ ๋ถ€๋ถ„„ ฐ€๋ฅด‚ด
  • œˆ๋„šฐ œ„—„œ xฐ’˜ œ†Œฐ’„ x(min), œ๋Œ€ฐ’„ x(max), yฐ’˜ œ†Œฐ’„ y(min), œ๋Œ€ฐ’„ y(max) ๋•˜ž.
  • ฌŠธ˜ ‚ฌฐ˜•˜ œ†Œ,œ๋Œ€ฐ’„ X(min), X(max), Y(min), Y(max) ๋•˜ž.
  • ™•๋Œ€/ฐ€๋Ÿ‰ ตฌ•˜๋Š” ณต‹
    • delx = (X(max) - X(min)) / (x(max) - x(min))
    • dely = (Y(max) - Y(min)) / (y(max) - y(min))
    • x(c) = (x(max) + x(min)) / 2
    • y(c) = (y(max) + y(min)) / 2
    • X(c) = (X(max) + X(min)) / 2
    • Y(c) = (Y(max) + Y(min)) / 2
    • c1 = X(c) - x(c) * delx
    • c2 = Y(c) - y(c) * dely

    • X = delx * x + c1
    • Y = dely * y + c2

1.4. Polygon Mesh ๋ฐ„ตฌกฐ


1.4.1. กฐฑด

  • ๋ชจ๋“  ๋ฉด€  ‘•••œ‹ค.
  • Šน ••œ‹ฐ˜•„ mesh ๋‚ด—„œ ฐพ„ˆ˜ žˆ–ด••œ‹ค.
  • •˜๋‚˜˜‹ฐ˜•„ ด๋ฃจ๋Š” ๋ชจ๋“  ๋ชจ„œ๋ฆฌ๋Š”  •™••˜ฒŒ ‘œ˜„๋˜–ด••œ‹ค.
  • •˜๋‚˜˜ ๋ชจ„œ๋ฆฌ๋ฅผ ณตœ •˜๋Š” ๋‹ฐ˜•๋“ค„ ง ‘ ฐพ„ˆ˜ žˆ–ด••œ‹ค.
  • mesh  „ฒด๋ฅผ ๋ฐ”พธฑฐ๋‚˜ ๋””Šค”Œ๋ ˆ• ˆ˜ žˆ–ด••œ‹ค.

1.4.2. Explicit Polygons Mesh

  • ผญง€ „ vertex table—  €žฅ›„‹ฐ˜•„ ผญง€ ˜ —ฐ†๋œ ˆœ„œ๋กœ ๋‚˜ƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•
  • ๋ฆฌŠคŠธ™€ ๋ฐฐ—ด„ “ธ ˆ˜ žˆ๋Š”๋ฐ, ๋ฆฌŠคŠธฐ€ ข€๋” Žธ•˜‹ค.
  • ๋งŒ•— P1 ๋‹ฐ˜•„ ด๋ฃจ๋Š” Vertex๋“ค„ ๋ฐ˜‹œ„ ๋ฐฉ–ฅ ˆœœผ๋กœ v1,v3,v4,v6ด๋•˜๋ฉด v1->v3->v4->v6 ด๋ ‡ฒŒ ฐ€๋ฅด‚คฒŒ ๋ฆฌŠคŠธ๋ฅผ ตฌ˜„•˜๋ฉด ๋œ‹ค.
  • ‹ 
    • ๋ชจ๋“  ๋ชจ„œ๋ฆฌฐ€ ๋‘๋ฒˆ”ฉ ธ๋ ง€ฒŒ ๋œ‹ค.
    • –ด๋–ค ๋ชจ„œ๋ฆฌ๋ฅผ ณตœ •˜  žˆ๋Š” ๋‹ฐ˜•„ ฐพธฐฐ€ –ด๋ ต๋‹ค.
    • •Œ๋ฌธ— †๋„ฐ€ กธ๋ผ ๋А๋ฆฌ๋‹ค.

1.4.3. Explicit Edges Mesh

  • ฑด ž˜ •ฐ€ •ˆฐ€๋Š”ตฐ. ๋‚˜‘—

2. 3ฐจ› ธ๋ž˜”ฝ

2.1. 3ฐจ› ธ๋ž˜”ฝด๋ž€?

  • –ด๋–ค ๋ฌผฒด๋ฅผ ง„ ณผ ณก„ ˜ ‘•ฒด๋กœ ‘œ˜„•œ‹Œ ˆฌ˜„ †ต•…Œ๋‘๋ฆฌ๋ฅผ ‘œ‹œ•˜๋Š” 'Wire frame ๋ชจ๋ธ'
  • –ด๋–ค ๋ฌผฒด๋ฅผ ฒƒ„‘˜๋Ÿฌ‹  žˆ๋Š” ๋ฉดœผ๋กœ ๋‚˜ƒ€๋‚ธ ๋‹Œ €„ , €๋ฉด œฑฐ •Œ ๋ฆฌ˜ด๋‚˜ Shading •Œ ๋ฆฌ˜„ ฐ€๋ฏธ•˜—ฌ ๋ณด๋‹˜„‹ฐ žˆฒŒ ธ ๋ฌผฒด๋ฅผ ‘œ˜„•˜๋Š” 'Surfaced ๋ชจ๋ธ'
  • ˆ˜•™  ฒด๋กœ –ด๋–ค ๋ฌผฒด๋ฅผ ‘œ˜„•˜๋Š” 'Solid ๋ชจ๋ธ'
  • ฐ€žฅ ฐ ๋ฌธ œ  : นŠฐ ‘œ˜„

2.1.1. ˆฌ˜

  • 3ฐจ›„ 2ฐจ›œผ๋กœ ‘œ˜„•˜๋Š” ฐ€žฅ ธฐดˆ ธ ๋ฐฉ๋ฒ•
  • ‰–‰ˆฌ˜ (Parallel projection, orthogonal projection) : ๋ฌผฒด˜ ๋ชจ๋“   „ ™”๋ฉดƒ— ˆฌ˜. นŠฐ...€ ๋ณ„๋ฃจ๋‹ค.
  • ›ˆฌ˜ (Perspective projection) : šฐ๋ฆฌ ๋ˆˆ— ๋ณดด๋Š” ๋Œ€๋กœ(›ฐ ‚ด๋ „œ) นŠฐ ‚ด๋ฆฌ๋Š”๋ฐ ‹‹ค.

2.1.2. €„ /€๋ฉด  œฑฐ

  • ๋งธ๋Œ€๋กœ •ˆ๋ณดด๋Š” ๋ถ€๋ถ„ —†• ธฐ

2.1.3. ๋ฉด˜ ƒ‰

  • ‘› ๋ชจ๋ธ ‚ฌšฉ(Ray-Tracing๋ฒ• ๋งŽ‚ฌšฉ)

2.1.4. ธ๋ฆผž

  •  ‘› : „‚ฐ•˜ธด ‰ฝง€๋งŒ ˜„‹ฐ ๋–จ–ดง
  • ๋ถ„‚ฐ‘› : „‚ฐ•˜ธด –ด๋ ง€๋งŒ ˜„‹ฐ ‹Œ

2.2. ‹œฐ๋ณ€™˜ณผ ›ˆฌ˜

  • ‹ขŒ‘œ„(Xw,Yw,Zw) -> ‹œฐขŒ‘œ„(Xe,Ye,Ze) -> Šคฌ๋ฆฐ ขŒ‘œ„(X,Y)

2.2.1. ‹œฐ๋ณ€™˜

  • ‹œฐขŒ‘œ๋Š” •ž—„œ ๋ง–ˆ๋“ฏตฌ๋ฉดขŒ‘œ„๋ฅผ “ด๋‹ค.
  • Xe, Ye, Ze, 1 = Xw, Yw, Zw, 1 V : V๋Š” ‹ขŒ‘œ„๋ฅผ ‹œฐขŒ‘œ„๋กœ ๋ฐ”พธธฐ œ„•œ –‰๋ 
  • –‰๋ ฌ V ตฌ•˜ธฐ
    • ‹ขŒ‘œ„˜ ‘‹ฌ O๋ฅผ ‹œ  E๋กœ ‰–‰ด๋™‹œ‚จ๋‹ค. T( -Xe, -Ye, -Ze )
    • y•„ ‹œ„ ๋ฒก„˜ xy‰๋ฉด„ฑ๋ถ„˜ ๋ฐฉ–ฅณผ ˜‹œœ••œ‹ค. Z•„ ‘‹œผ๋กœ (ŒŒด/2-ฮธ) šŒ „ (ฮธ๋Š” x•ณผ˜ ฐ)
    • z•‹œ„ ๋ฒก„˜ ๋ฐฉ–ฅด ๋˜–ด••˜๋ฏ€๋กœ x•„ ‘‹œผ๋กœ (ฯ†-ŒŒด) šŒ „ (ฯ†๋Š” z•ณผ˜ ฐ)
    • x•˜ ๋ฑก–ฅ„ ๋ฐ”พผ๋‹ค.
    • ฒฐ๋ก (ง€ธˆ ๋ณด๋‹ˆน šฐ๋ฆฌฐ€ ผ๋ฐ˜ œผ๋กœ “ฐ๋Š” –‰๋ ด๋ž‘ ข€ ๋‹ค๋ฅด๋‹ค. –‰ณผ —ดด ๋ฐ”ปดžˆ๋‹ค.)

~cpp 
 V = T( -Xe, -Ye, -Ze) Rz(ŒŒด/2-ฮธ) Rx(ฯ†-ŒŒด) Myz
     | -sinฮธ  -cosฯ†cosฮธ  -sinฯ†cosฮธ  0 |
     | cosฮธ   -cosฯ†sinฮธ  -sinฯ†sinฮธ  0 |
   = | 0       sinฯ†      -cosฯ†      0 |
     | 0       0                      1 |

2.2.2. ›ˆฌ˜

  • ธ๋ฆผ ๋ด••• ˆ˜ žˆ๋Š”๋ฐ.. ธ๋ƒฅ ‹๋งŒ จ๋ณด๋ฉด..
  • X = d*x/z + c1, Y = d*y/z + c2 (d๋Š” ‹œ ณผ Šคฌ๋ฆฐ ‚ฌ˜ ฑฐ๋ฆฌ, Šคฌ๋ฆฐ˜ ฐ€๋กœ 2c1, „ธ๋กœ 2c2)

3. ˜•ฉ(Blend)

  • —ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„  „ฐ๋„—„œ ฐพ•„๋„ ๋ณ„๋กœ ž„žˆ •ˆ๋‚˜™”ธธ๋ž˜  —ˆŒ.
  • ›๋ณธ(source) : ƒˆ๋กœ ธ๋ ง€๋Š” ”ฝ…€
  • ๋Œ€ƒ(destination) : ”„ ˆž„ ๋ฒ„ผ— ด๋ฏธ ธ๋  žˆ๋Š” ”ฝ…€
  • ‚ฌšฉ•˜๋Š” •ˆ˜ : glEnable(GL_BLEND), glBlendFunc(›๋ณธ ”ฝ…€— ๋Œ€•œ ๋ธ”๋žœ๋”ฉ „ˆ˜๋ฅผ „‚ฐ•˜๋Š” ๋ฐฉ‹, ๋Œ€ƒ ”ฝ…€— ๋Œ€•œ ๋ธ”๋žœ๋”ฉ „ˆ˜๋ฅผ „‚ฐ•˜๋Š” ๋ฐฉ‹)
›๋ณธ(๋Œ€ƒ) ˜••ˆ˜๋“ค
  • ›๋ณธ ”ฝ…€— ๋Œ€•œ „‚ฐ ๋ฐฉ‹
๋ฐฉ‹ „ค๋ช…
GL_ZERO ›๋ณธ ƒ‰ƒ„ 0,0,0,0 œผ๋กœ•œ‹
GL_ONE ›๋ณธ ƒ‰ƒ„ ธ๋Œ€๋กœ ‚ฌšฉ•œ‹
GL_DST_COLOR ›๋ณธ ƒ‰ƒณผ ๋Œ€ƒ ƒ‰ƒ„ ณฑ•œ‹
GL_ONE_MINUS_DST_COLOR ›๋ณธ ƒ‰ƒณผ ((1,1,1,1)-๋Œ€ƒ ƒ‰ƒ)„ ณฑ•œ‹
GL_SRC_ALPHA ›๋ณธ ƒ‰ƒ— ›๋ณธ •ŒŒŒ ฐ’„ ณฑ•œ‹
GL_ONE_MINUS_SRC_ALPHA ›๋ณธ ƒ‰ƒ— (1-›๋ณธ •ŒŒŒฐ’)„ ณฑ•œ‹
GL_DST_ALPHA ›๋ณธ ƒ‰ƒ— ๋Œ€ƒ •ŒŒŒ ฐ’„ ณฑ•œ‹
GL_ONE_MINUS_DST_ALPHA ›๋ณธ ƒ‰ƒ— ((1,1,1,1)-๋Œ€ƒ ƒ‰ƒ •ŒŒŒฐ’)„ ณฑ•œ‹
GL_SRC_ALPHA_SATURATE ›๋ณธ ƒ‰ƒ— ›๋ณธ•ŒŒŒ ฐ’ณผ (1-๋Œ€ƒ •ŒŒŒฐ’)‘ ž‘€ ฒƒ„ ณฑ•œ‹
  • ๋Œ€ƒ ”ฝ…€— ๋Œ€•œ „‚ฐ ๋ฐฉ‹
๋ฐฉ‹ „ค๋ช…
GL_ZERO ๋Œ€ƒ ƒ‰ƒ„ 0,0,0,0 œผ๋กœ•œ‹
GL_ONE ๋Œ€ƒ ƒ‰ƒ„ ธ๋Œ€๋กœ ‚ฌšฉ•œ‹
GL_SRC_COLOR ๋Œ€ƒ ƒ‰ƒณผ ›๋ณธ ƒ‰ƒ„ ณฑ•œ‹
GL_ONE_MINUS_SRC_COLOR ๋Œ€ƒ ƒ‰ƒณผ ((1,1,1,1)-›๋ณธ ƒ‰ƒ)„ ณฑ•œ‹
GL_SRC_ALPHA ๋Œ€ƒ ƒ‰ƒ— ›๋ณธ •ŒŒŒ ฐ’„ ณฑ•œ‹
GL_ONE_MINUS_SRC_ALPHA ๋Œ€ƒ ƒ‰ƒ— (1-›๋ณธ •ŒŒŒฐ’)„ ณฑ•œ‹
GL_DST_ALPHA ๋Œ€ƒ ƒ‰ƒ— ๋Œ€ƒ •ŒŒŒ ฐ’„ ณฑ•œ‹
GL_ONE_MINUS_DST_ALPHA ๋Œ€ƒ ƒ‰ƒ— ((1,1,1,1)-๋Œ€ƒ ƒ‰ƒ •ŒŒŒฐ’)„ ณฑ•œ‹
GL_SRC_ALPHA_SATURATE ๋Œ€ƒ ƒ‰ƒ— ›๋ณธ•ŒŒŒ ฐ’ณผ (1-๋Œ€ƒ •ŒŒŒฐ’)‘ ž‘€ ฒƒ„ ณฑ•œ‹

4. TextureMapping

  • …Šคณ ๋งต•‘•˜๋Š” ณผ •

~cpp 
Define the LoadBMPfile(char *filename) function
declare GLuint tex[n]
declare AUX_RGBImageRec *texRec[n]
assign LoadBMPFile("filename.bmp") to each texRec[i]
glGenTextures(count,&tex[0])
glBindTexture(GL_TEXTURE_2D,tex[i])
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D,0,3,texRec[i]->sizeX
		,texRec[i]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE,texRec[i]->data);

if(texRec[i])
	if(texRec[i]->data) 
		free(texRec[i]->data);
	free(texRec[i]);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
Example of using the texturemapping
  glBindTexture(GL_TEXTURE_2D, tex[0]);
  DrawQuad(1,1,1,normal);




5. Thread

  • ธ๋ฆฌŠค ๋ฌธž “ฐ๋Š”๋ฒ• ใ…Ž ๋ˆ„๋ฅด  •œž‚ค
  • ›๋ฌธž ใ…‡ ๋ˆ„๋ฅด  •œž‚ค
  • ใ…Š ๋ˆ„๋ฅด  •œž‚ค ˜๋ฉด ๋ถ„ˆ˜ “ธˆ˜ žˆ๋‹ค.
  • „น ๋ˆ„๋ฅด  •œž‚ค ˜๋ฉด ๋‹œ„๋„ ๋‚˜˜จ๋‹ค.
3DGraphicsFoundation
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:14
Processing time 0.0368 sec