• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • Algorithm

    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ
    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
  • Ubuntu

    • ๋ฆฌ๋ˆ…์Šค ์šฐ๋ถ„ํˆฌ GRUB ํฐํŠธ ๋ณ€๊ฒฝ
    • ์šฐ๋ถ„ํˆฌ ์ด๋ฏธ์ง€ ๋น„๋””์˜ค ์ธ๋„ค์ผ(๋ฏธ๋ฆฌ๋ณด๊ธฐ) ์•ˆ ๋ณด์ž„ ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Wine ํ™˜๊ฒฝ์—์„œ ์นด์นด์˜คํ†ก ์‹คํ–‰ ์‹œ explorer.exe ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฒ•
    • ์šฐ๋ถ„ํˆฌ Wine ์นด์นด์˜คํ†ก ์‚ฌ์ง„ ์ด๋ฏธ์ง€ ์Šคํฌ๋ฆฐ์ƒท ๋ถ™์—ฌ๋„ฃ๊ธฐ
    • Wine ์นด์นด์˜คํ†ก ์ด๋ชจ์ง€ ๊นจ์ง ๋ฌธ์ œ ํ•ด๊ฒฐ
    • Ubuntu ์œˆ๋„์šฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋„๊ธฐ
  • Wellness

    • ์ฐจ์ „์žํ”ผ (Psyllium Husk)
    • ์—‘์ŠคํŠธ๋ผ ๋ฒ„์ง„ ์˜ฌ๋ฆฌ๋ธŒ์œ  (Extra Virgin Olive Oil)
    • ์ž๊ฐ€๋น„๊ฐ•์„ธ์ฒ™ (Nasal Irrigation)
    • QCY HT08 (MeloBuds Pro Plus)
    • ์ฝ˜์„œํƒ€ (Concerta)
    • ์ธ๋ฐ๋†€ (Inderal)
    • ์„คํŠธ๋ž„๋ฆฐ (Sertraline)
    • ๋ฉœ๋ผํ† ๋‹Œ (Melatonin)
    • ์น˜๊ฒฝ๋ถ€ ๋งˆ๋ชจ์ฆ
    • ๋ฐ”๋ฒจ ์Šค์ฟผํŠธ (Barbell Squat)
  • Humanities

    • Nordvik, Russia
    • North Sentinel Island
    • ๋กฑ๊ณ ๋กฑ๊ณ (Rongorongo)
    • ๋ฐ”๋กœํฌ ์Œ์•… (Baroque Music)
  • Design

    • ๊ตฌ๊ธ€์˜ ์•„์ด์ฝ˜ ๋Œ€๊ฐœํŽธ โ€” 6๋…„ ๋งŒ์˜ ์‹ค์ˆ˜ ์ธ์ •
    • ์ œ๋Ÿด๋“œ ์  ํƒ€ โ€” ๋Ÿญ์…”๋ฆฌ ์Šคํฌ์ธ  ์›Œ์น˜์˜ ์ฐฝ์‹œ์ž
    • ๋ฐ”์šฐํ•˜์šฐ์Šค โ€” ํ˜„๋Œ€ ๋””์ž์ธ์˜ ์›์ 
  • Brands

    • NOMOS Glashรผtte
    • Frรฉdรฉrique Constant
    • KZ (Knowledge Zenith)
    • ์—์ŠคํŠธ๋ผ (AESTURA)
    • JINHAO (้‡‘่ฑช)
    • Herman Miller
    • ๋ฐ์Šค์ปค (DESKER)
    • ๋ฌด์‹ ์‚ฌ ์Šคํƒ ๋‹ค๋“œ (Musinsa Standard)
  • Finance

    • ํ˜„๋Œ€์นด๋“œ ZERO โ€” Edition2 vs Edition3 ๋น„๊ต
    • ์‹ ํ•œ์นด๋“œ ์ฒ˜์Œ
    • S&P 500 ETF ํˆฌ์ž ๊ฐ€์ด๋“œ
    • ํŒŒํ‚นํ†ต์žฅ vs CMA ํ†ต์žฅ
    • ๋ฒ„ํฌ์…” ํ•ด์„œ์›จ์ด (Berkshire Hathaway)
    • ๋น„ํŠธ์ฝ”์ธ(Bitcoin)
  • Products

    • ์˜ค๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค (Audio Interface)
    • ์ฟ ๋ฃจํ† ๊ฐ€ (KURUTOGA)
    • CX31993 DAC ๋™๊ธ€
    • ํด๋ Œ์ง• ๋ฐ€ํฌ (Cleansing Milk)
    • ํ”ผ์ ฏ ํ† ์ด (Fidget Toy)
    • ThinkPad
  • Programming Languages

    • 8.0. Statement Level Control Structures
    • 8. Subprogram
    • 9. Implementing Subprogram
    • 10.1. Abstract Data Types and Encapsulation Constructs
    • 10.2. Support for Object Oriented Programming
    • 11. Concurrency
    • 12. FPL (1)
    • 13. FPL (2)
    • 14. Exception Handling and Event Handling
    • Final Exam

7 - Hierarchical Modeling, Mesh

์ž‘์„ฑ 2026. 6. 12.ยท์ˆ˜์ • 2026. 6. 12.

Midterm Exam Announcement

  • ์ผ์‹œ: 5์›” 7์ผ (์ˆ˜) ์˜คํ›„ 6:30 ~ 7:30
  • ์žฅ์†Œ: ์ถ”ํ›„ ๊ณต์ง€
  • ๋ฒ”์œ„: Lecture 2~7, Lab 2~7
  • ์‹œํ—˜ ์‹œ์ž‘ ํ›„ 30๋ถ„ ์ด๋‚ด ํ‡ด์‹ค ๋ถˆ๊ฐ€
  • ์‹œํ—˜ ์‹œ์ž‘ ํ›„ 30๋ถ„์ด ์ง€๋‚˜๋ฉด ์ž…์‹ค๋„ ๋ถˆ๊ฐ€ (์ ˆ๋Œ€ ์ง€๊ฐ ๊ธˆ์ง€)
  • ํ•™์ƒ์ฆ ํ•„์ˆ˜ ์ง€์ฐธ

Outline

  • Hierarchical Modeling
    • ๊ณ„์ธต์  ๋ชจ๋ธ๋ง ๊ฐœ๋…
      • ์˜ˆ: ์‚ฌ๋žŒ ๋ชจํ˜•
    • ๊ณ„์ธต ๋ชจ๋ธ ๋ Œ๋”๋ง
    • ์ผ๋ จ์˜ ๋ณ€ํ™˜ ํ•ด์„
  • Mesh
    • ๊ฐœ๋ณ„ ์‚ผ๊ฐํ˜•
    • ์ธ๋ฑ์Šค ์‚ผ๊ฐํ˜• ์ง‘ํ•ฉ

Hierarchical Modeling

  • ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ(์ž์‹)๋ฅผ ์ƒ์œ„ ๊ตฌ์„ฑ ์š”์†Œ(๋ถ€๋ชจ)์— ์ค‘์ฒฉํ•˜์—ฌ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„
  • ๊ฐ ํŒŒํŠธ๋Š” ๊ณ ์œ ํ•œ body frame์„ ๊ฐ€์ง
  • ๊ฐ ํŒŒํŠธ์˜ ์›€์ง์ž„์€ ๋ถ€๋ชจ์˜ body frame ๊ธฐ์ค€์œผ๋กœ ๊ธฐ์ˆ ๋จ

Example - Human Figure

  • ๊ฐ ํŒŒํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง:
    • Hips โ†’ Spine โ†’ Head / ํŒ” / ๋‹ค๋ฆฌ โ†’ ์†๋ฐœ

Human Figure - Frames

  • ๊ฐ ํŒŒํŠธ๋Š” ๊ณ ์œ ํ•œ body frame์„ ๊ฐ€์ง

Human Figure - Movement of rhip & rknee and more joints

  • ๊ฐ ํŒŒํŠธ์˜ ์›€์ง์ž„์€ ๋ถ€๋ชจ์˜ frame ๊ธฐ์ค€์œผ๋กœ ๊ธฐ์ˆ ๋จ
    • ๊ฐ ํŒŒํŠธ๋Š” ๋ถ€๋ชจ frame ๊ธฐ์ค€์˜ ๋ณ€ํ™˜ ํ–‰๋ ฌ(โ€‹transformation) ์„ ๊ฐ€์ง
  • ์ด๋Š” ํ•˜์œ„ ํŒŒํŠธ๋ฅผ "๋ฌถ์–ด์„œ(group)" ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์คŒ

Hierarchical Model

  • ๊ณ„์ธต์  ๋ชจ๋ธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ(tree structure)๋กœ ํ‘œํ˜„๋จ
  • ์ „์ฒด ์žฅ๋ฉด(scene)์„ ํ‘œํ˜„ํ•˜๋Š” ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ scene graph๋„ ์˜ˆ์‹œ
  • ๊ฐ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ frame ๊ธฐ์ค€์˜ ๋ณ€ํ™˜์„ ๊ฐ€์ง

Rendering Hierarchical Models

  • ๊ณ„์ธต ๋ชจ๋ธ์„ ๋ Œ๋”๋งํ•˜๋ ค๋ฉด,
    ๊ฐ ๋…ธ๋“œ์˜ frame์„ world frame ๊ธฐ์ค€์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•จ โ†’ ๊ฐ ์ •์ ์˜ global ์œ„์น˜ ๊ณ„์‚ฐ
  • ๋ณต์Šต:

    p{0}=Mp{1}\mathbf{p}^{\{0\}} = \mathbf{M} \mathbf{p}^{\{1\}} p{0}=Mp{1}

    • {1}\{1\}{1}์— ์„œ์„œ p\mathbf{p}p๋ฅผ ๋ด„ โ†’ p(1)\mathbf{p}^{(1)}p(1)
    • {0}\{0\}{0}์— ์„œ์„œ p\mathbf{p}p๋ฅผ ๋ด„ โ†’ p(0)\mathbf{p}^{(0)}p(0)

Rendering Hierarchical Models

  • ๊ฐ ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ ๊ธฐ์ค€์˜ ๋ณ€ํ™˜(local transformation)์„ ๊ฐ€์ง
    โ†’ Local transformation
  • ์˜ˆ:
    • Hip ์œ„์น˜ ๋ฐ ์ž์„ธ: M_hips
    • LeftUpLeg ์œ„์น˜ ๋ฐ ์ž์„ธ: M_leftupleg (hips ๊ธฐ์ค€)

Rendering Hierarchical Models

  • ๊ฐ ๋…ธ๋“œ์˜ frame์„ world frame ๊ธฐ์ค€์œผ๋กœ ํ‘œํ˜„ํ•ด์•ผ ๋ Œ๋”๋ง ๊ฐ€๋Šฅ
    โ†’ Global transformation
  • ์งˆ๋ฌธ:
    • ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ local ๋ณ€ํ™˜์„ ์ด์šฉํ•ด์„œ ์–ด๋–ป๊ฒŒ global ๋ณ€ํ™˜์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์„๊นŒ?

Recall: Post-(right) Multiplication

  • pโ€ฒ=M1M2p\mathbf{p'=M_1M_2p}pโ€ฒ=M1โ€‹M2โ€‹p (Mโ‚‚์— post-multiply)
    โ†’ L-to-R
  1. M1\mathbf{M_1}M1โ€‹: body frame {0} โ†’ {1} ๋ณ€ํ™˜
  2. M2\mathbf{M_2}M2โ€‹: body frame {1} โ†’ {2} ๋ณ€ํ™˜
  3. p\mathbf{p}p: {2}์˜ ์  โ†’ {0} ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜ ๊ณ„์‚ฐ

์˜ˆ:

pโ€ฒ=TRp\mathbf{p}' = \mathbf{T} \mathbf{R} \mathbf{p} pโ€ฒ=TRp

Interpretation of a Series of Transformations

  • p0=Ip0\mathbf{p}_0 = \mathbf{I} \mathbf{p}_0p0โ€‹=Ip0โ€‹ (์ฒ˜์Œ ์ƒํƒœ๋Š” ๋‹จ์œ„ํ–‰๋ ฌ ๊ธฐ์ค€)

  • {0}์— ์„œ์„œ ๋ฌผ์ฒด๋ฅผ ๊ด€์ธกํ•˜๋ฉฐ
    {0} โ†’ {1} โ†’ {2} โ†’ ... โ†’ {4} ์ˆœ์œผ๋กœ body frame์ด ๋ณ€ํ•จ

  • p1=M1p0\mathbf{p}_1 = \mathbf{M}_1 \mathbf{p}_0p1โ€‹=M1โ€‹p0โ€‹

    • ํ˜„์žฌ body frame: {1}, ๊ธฐ์ค€: {0}
    • {1}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p0\mathbf{p}_0p0โ€‹
    • {0}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p1\mathbf{p}_1p1โ€‹
  • p2=M1M2p0\mathbf{p}_2 = \mathbf{M}_1 \mathbf{M}_2 \mathbf{p}_0p2โ€‹=M1โ€‹M2โ€‹p0โ€‹

    • ํ˜„์žฌ body frame: {2}, ๊ธฐ์ค€: {0}
    • {2}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p0\mathbf{p}_0p0โ€‹
    • {0}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p2\mathbf{p}_2p2โ€‹
  • p3=M1M2M3p0\mathbf{p}_3 = \mathbf{M}_1 \mathbf{M}_2 \mathbf{M}_3 \mathbf{p}_0p3โ€‹=M1โ€‹M2โ€‹M3โ€‹p0โ€‹

    • ํ˜„์žฌ body frame: {3}, ๊ธฐ์ค€: {0}
    • {3}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p0\mathbf{p}_0p0โ€‹
    • {0}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p3\mathbf{p}_3p3โ€‹
  • p4=M1M2M3M4p0\mathbf{p}_4 = \mathbf{M}_1 \mathbf{M}_2 \mathbf{M}_3 \mathbf{M}_4 \mathbf{p}_0p4โ€‹=M1โ€‹M2โ€‹M3โ€‹M4โ€‹p0โ€‹

    • ํ˜„์žฌ body frame: {4}, ๊ธฐ์ค€: {0}
    • {4}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p0\mathbf{p}_0p0โ€‹
    • {0}์—์„œ ๊ด€์ฐฐ ์‹œ โ†’ p4\mathbf{p}_4p4โ€‹
  • ๋ฐ˜๋ณต ๊ตฌ์กฐ ์ •๋ฆฌ

    • p4=M1M2M3M4p0\mathbf{p}_4 = \mathbf{M}_1 \mathbf{M}_2 \mathbf{M}_3 \mathbf{M}_4 \mathbf{p}_0p4โ€‹=M1โ€‹M2โ€‹M3โ€‹M4โ€‹p0โ€‹
    • {4}์—์„œ p0\mathbf{p}_0p0โ€‹๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ด€์ฐฐ ๊ฒฐ๊ณผ โ†’ p4\mathbf{p}_4p4โ€‹
    • {0}์—์„œ p4\mathbf{p}_4p4โ€‹๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ด€์ฐฐ ๊ฒฐ๊ณผ ๊ทธ๋Œ€๋กœ โ†’ p4\mathbf{p}_4p4โ€‹
  • ๋™์ผ ๋‚ด์šฉ ์‹œ๊ฐํ™”:

    • M1,ย M2,ย M3,ย M4\mathbf{M}_1,\ \mathbf{M}_2,\ \mathbf{M}_3,\ \mathbf{M}_4M1โ€‹,ย M2โ€‹,ย M3โ€‹,ย M4โ€‹ ์ˆœ์„œ๋กœ ์ ์šฉ
    • ๊ฐ ๋ณ€ํ™˜์€ ์ด์ „ ๋…ธ๋“œ์˜ body frame ๊ธฐ์ค€์œผ๋กœ ์ ์šฉ๋จ
    • ๋งˆ์ง€๋ง‰์œผ๋กœ p0\mathbf{p}_0p0โ€‹๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ p4\mathbf{p}_4p4โ€‹ ํš๋“

Computing Global Transform from Series of Local Transforms

  • p4=M1M2M3M4p0\mathbf{p}_4 = \mathbf{M}_1 \mathbf{M}_2 \mathbf{M}_3 \mathbf{M}_4 \mathbf{p}_0p4โ€‹=M1โ€‹M2โ€‹M3โ€‹M4โ€‹p0โ€‹
    • node 4์˜ global transformation: M1M2M3M4\mathbf{M}_1 \mathbf{M}_2 \mathbf{M}_3 \mathbf{M}_4M1โ€‹M2โ€‹M3โ€‹M4โ€‹
  • ๊ฐ Mi\mathbf{M}_iMiโ€‹: iii๋ฒˆ์งธ ๋…ธ๋“œ์˜ local transformation
  • ์ ์šฉ ์ˆœ์„œ:
    • node 1์˜ body frame ๊ธฐ์ค€ โ†’ node 2 โ†’ node 3 โ†’ node 4
Node iiiGlobal Transform Gi\mathbf{G}_iGiโ€‹
HipsMhips\mathbf{M}_{\text{hips}}Mhipsโ€‹
SpineMhipsย Mspine\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}Mhipsโ€‹ย Mspineโ€‹
HeadMhipsย Mspineย Mhead\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}~\mathbf{M}_{\text{head}}Mhipsโ€‹ย Mspineโ€‹ย Mheadโ€‹
RightArmMhipsย Mspineย MrightArm\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}~\mathbf{M}_{\text{rightArm}}Mhipsโ€‹ย Mspineโ€‹ย MrightArmโ€‹
RightForeArmMhipsย Mspineย MrightArmย Mrfa\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}~\mathbf{M}_{\text{rightArm}}~\mathbf{M}_{\text{rfa}}Mhipsโ€‹ย Mspineโ€‹ย MrightArmโ€‹ย Mrfaโ€‹
RightHandMhipsย Mspineย MrightArmย Mrfaย Mrha\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}~\mathbf{M}_{\text{rightArm}}~\mathbf{M}_{\text{rfa}}~\mathbf{M}_{\text{rha}}Mhipsโ€‹ย Mspineโ€‹ย MrightArmโ€‹ย Mrfaโ€‹ย Mrhaโ€‹
LeftArmMhipsย Mspineย MleftArm\mathbf{M}_{\text{hips}}~\mathbf{M}_{\text{spine}}~\mathbf{M}_{\text{leftArm}}Mhipsโ€‹ย Mspineโ€‹ย MleftArmโ€‹
  • ํŠธ๋ฆฌ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ๋…ธ๋“œ์˜ global ๋ณ€ํ™˜ ๊ณ„์‚ฐ ๊ฐ€๋Šฅ

Rendering Hierarchical Models

  • iii๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๋‹จ์œ„ ํ๋ธŒ๋กœ ๋ Œ๋”๋ง๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ,
    • ๋‹จ์œ„ ํ๋ธŒ์˜ ์ •์  p0p_0p0โ€‹๋Š” world frame์—์„œ pi=Giโ‹…p\mathbf{p_i= G_i \cdot p}piโ€‹=Giโ€‹โ‹…p๋กœ ํ‘œํ˜„๋จ
Node iiiGlobal Transform Gi\mathbf{G}_iGiโ€‹
HipsM_hips\mathbf{M}\_{\text{hips}}M_hips
SpineM_hipsย M_spine\mathbf{M}\_{\text{hips}}~\mathbf{M}\_{\text{spine}}M_hipsย M_spine
HeadM_hipsย M_spineย M_head\mathbf{M}\_{\text{hips}}~\mathbf{M}\_{\text{spine}}~\mathbf{M}\_{\text{head}}M_hipsย M_spineย M_head
RightArmM_hipsย M_rightArm\mathbf{M}\_{\text{hips}}~\mathbf{M}\_{\text{rightArm}}M_hipsย M_rightArm
RightForeArmM_hipsย M_rightArmย M_rfaย M_rh\mathbf{M}\_{\text{hips}}~\mathbf{M}\_{\text{rightArm}}~\mathbf{M}\_{\text{rfa}}~\mathbf{M}\_{\text{rh}}M_hipsย M_rightArmย M_rfaย M_rh
LeftArmM_hipsย M_leftArm\mathbf{M}\_{\text{hips}}~\mathbf{M}\_{\text{leftArm}}M_hipsย M_leftArm
โ‹ฏ\cdotsโ‹ฏ

Rendering Hierarchical Models - Shape Transformation

  • ๋งŒ์•ฝ iii๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๋‹จ์œ„ ํ๋ธŒ๊ฐ€ ์•„๋‹ˆ๋ผ ํŠน์ • shape SijS_ijSiโ€‹j๋กœ ๋ Œ๋”๋ง๋œ๋‹ค๋ฉด,
    • pij=Giโ‹…Siโ‹…p0\mathbf{p_ij = G_i \cdot S_i \cdot p_0}piโ€‹j=Giโ€‹โ‹…Siโ€‹โ‹…p0โ€‹
  • ํŠน์ • ๋…ธ๋“œ iii์˜ jjj๋ฒˆ์งธ shape์— ๋Œ€ํ•ด shape ๋ณ€ํ™˜ SijS_ijSiโ€‹j๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

Rendering Hierarchical Models

  • iii๋ฒˆ์งธ ๋…ธ๋“œ๋งˆ๋‹ค global transform GiG_iGiโ€‹๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ Œ๋”๋ง ์‹œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Quiz 1

Many ways to digitally encode geometry

  • EXPLICIT
    • point cloud
    • polygon mesh
    • subdivision, NURBS
    • L-systems
    • ...
  • IMPLICIT
    • level set
    • algebraic surface
    • ...
  • ๊ฐ ํ‘œํ˜„ ๋ฐฉ์‹์€ ๊ณผ์ œ/๊ธฐํ•˜ ์œ ํ˜•์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์„ ํƒ์ง€๊ฐ€ ๋‹ค๋ฆ„

The Most Popular Representation: Polygon Mesh

  • ๋‹จ์ˆœํ•œ ํ‘œํ˜„์œผ๋กœ ๋ณต์žกํ•œ 3D ํ˜•์ƒ์„ ๋ชจ๋ธ๋ง ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ Œ๋”๋ง ์†๋„๋„ ๋น ๋ฆ„
  • Polygon: ์ง์„ ์œผ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ โ€œ๋‹ซํžŒโ€ ๋„ํ˜•
  • Polygon mesh: ์—ฌ๋Ÿฌ polygon์ด ์ด์–ด์ ธ์„œ ํ˜•์ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ตฌ์กฐ
    • ์ฃผ๋กœ triangle ๋˜๋Š” quad ์‚ฌ์šฉ

Triangle Mesh

  • ์ผ๋ฐ˜์ ์ธ NNN๊ฐํ˜•์€
    • ํ‰๋ฉด์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ๊ณ 
    • ์˜ค๋ชฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ
    • ๋ Œ๋”๋ง์— ์ ํ•ฉํ•˜์ง€ ์•Š
  • ๋ฐ˜๋ฉด triangle์€ ํ•ญ์ƒ ํ‰๋ฉด์ด๋ฉฐ convex ํ˜•ํƒœ
    • ๋”ฐ๋ผ์„œ GPU๋Š” ๋ชจ๋“  ๋ฌผ์ฒด๋ฅผ triangle๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ์ฒ˜๋ฆฌ
  • NNN๊ฐํ˜•๋„ triangle๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ
  • ๊ฒฐ๋ก : Triangle mesh ์ค‘์‹ฌ์œผ๋กœ ํ•™์Šต

Representation for Triangle Mesh

  • ์ด ์ฃผ์ œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ •์ ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ๊ฒƒ
    • ์ •์ ์˜ ์œ„์น˜
    • ์ •์  ๊ฐ„ ๊ด€๊ณ„(์‚ผ๊ฐํ˜• ๊ตฌ์„ฑ)
  • ๊ธฐ๋ณธ์ ์ธ ๋‘ ๊ฐ€์ง€ ํ‘œํ˜„ ๋ฐฉ์‹:
    • Separate triangles
    • Indexed triangle set

Vertex Winding Order

  • Vertex winding order๋Š” ๋‹ค๊ฐํ˜•์˜ ์ •์ ๋“ค์ด ๋‚˜์—ด๋˜๋Š” ์ˆœ์„œ
  • ์ด ์ˆœ์„œ๋กœ ๋‹ค๊ฐํ˜•์˜ ์•ž๋ฉด์„ ๊ฒฐ์ •ํ•จ
    • OpenGL: ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ(CCW)์ด ์•ž๋ฉด
    • Direct3D: ์‹œ๊ณ„ ๋ฐฉํ–ฅ(CW)์ด ์•ž๋ฉด

Separate triangles

  • counter-clockwise ์ˆœ์„œ๋กœ ์ •์  ๋‚˜์—ด
  • ์˜ˆ์‹œ:
    • vertex array:

    tri[0]โ†’(x0,y0,z0),ย (x1,y1,z1),ย (x2,y2,z2)tri[1]โ†’(x0,y0,z0),ย (x2,y2,z2),ย (x3,y3,z3)\begin{aligned} \text{tri[0]} &\rightarrow (x_0, y_0, z_0),\ (x_1, y_1, z_1),\ (x_2, y_2, z_2) \\ \text{tri[1]} &\rightarrow (x_0, y_0, z_0),\ (x_2, y_2, z_2),\ (x_3, y_3, z_3) \end{aligned} tri[0]tri[1]โ€‹โ†’(x0โ€‹,y0โ€‹,z0โ€‹),ย (x1โ€‹,y1โ€‹,z1โ€‹),ย (x2โ€‹,y2โ€‹,z2โ€‹)โ†’(x0โ€‹,y0โ€‹,z0โ€‹),ย (x2โ€‹,y2โ€‹,z2โ€‹),ย (x3โ€‹,y3โ€‹,z3โ€‹)โ€‹

Separate Triangles

  • ๋‹จ์ :
    • ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„
    • ๋ฐ˜์˜ฌ๋ฆผ ์˜ค์ฐจ๋กœ ์ธํ•œ ํ‹ˆ ๋ฐœ์ƒ
    • ์ธ์ ‘ ์‚ผ๊ฐํ˜• ํƒ์ƒ‰ ์–ด๋ ค์›€
      • t2t_2t2โ€‹์˜ ์ด์›ƒ ์‚ผ๊ฐํ˜•์„ ์ฐพ๊ธฐ ์œ„ํ•ด, t2t_2t2โ€‹์˜ ์ •์  ์ค‘ ๊ฑฐ๋ฆฌ 000์ธ ์ •์ ์„ ์ „๋ถ€ ๋น„๊ตํ•ด์•ผ ํ•จ

Example: a cube of length 2

  • ์ •์  ์ธ๋ฑ์Šค ๋ฐ ์œ„์น˜ ์˜ˆ:
indexposition
0(โˆ’1,ย โˆ’1,ย 1)(-1,~-1,~1)(โˆ’1,ย โˆ’1,ย 1)
1(1,ย โˆ’1,ย 1)(1,~-1,~1)(1,ย โˆ’1,ย 1)
2(1,ย 1,ย 1)(1,~1,~1)(1,ย 1,ย 1)
3(โˆ’1,ย 1,ย 1)(-1,~1,~1)(โˆ’1,ย 1,ย 1)
4(โˆ’1,ย โˆ’1,ย โˆ’1)(-1,~-1,~-1)(โˆ’1,ย โˆ’1,ย โˆ’1)
5(1,ย โˆ’1,ย โˆ’1)(1,~-1,~-1)(1,ย โˆ’1,ย โˆ’1)
6(1,ย 1,ย โˆ’1)(1,~1,~-1)(1,ย 1,ย โˆ’1)
7(โˆ’1,ย 1,ย โˆ’1)(-1,~1,~-1)(โˆ’1,ย 1,ย โˆ’1)

Example Cube in Separate Triangles

  • Separate triangle ํ‘œํ˜„ ๋ฐฉ์‹์—์„œ๋Š”
    • ์ •์  36๊ฐœ๋กœ cube์˜ 12๊ฐœ ์‚ผ๊ฐํ˜• ํ‘œํ˜„
    • vertex array์—์„œ ๋™์ผ ์ •์ ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณต๋จ

Indexed triangle set

  • ๊ฐ ์ •์ ์„ ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ
  • ๊ฐ ์‚ผ๊ฐํ˜•์€ 3๊ฐœ์˜ ์ •์  ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ด
  • counter-clockwise ์ˆœ์„œ
  • ์˜ˆ์‹œ:
    • vertex array:

    verts[0]=(x0,ย y0,ย z0)verts[1]=(x1,ย y1,ย z1)verts[2]=(x2,ย y2,ย z2)โ‹ฎ\begin{aligned} \text{verts[0]} &= (x_0,\ y_0,\ z_0) \\ \text{verts[1]} &= (x_1,\ y_1,\ z_1) \\ \text{verts[2]} &= (x_2,\ y_2,\ z_2) \\ &\vdots \end{aligned} verts[0]verts[1]verts[2]โ€‹=(x0โ€‹,ย y0โ€‹,ย z0โ€‹)=(x1โ€‹,ย y1โ€‹,ย z1โ€‹)=(x2โ€‹,ย y2โ€‹,ย z2โ€‹)โ‹ฎโ€‹

    • index array:

    tInd[0]=(0,ย 2,ย 1)tInd[1]=(0,ย 3,ย 2)โ‹ฎ\begin{aligned} \text{tInd[0]} &= (0,\ 2,\ 1) \\ \text{tInd[1]} &= (0,\ 3,\ 2) \\ &\vdots \end{aligned} tInd[0]tInd[1]โ€‹=(0,ย 2,ย 1)=(0,ย 3,ย 2)โ‹ฎโ€‹

Indexed Triangle Set

  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ : ๊ฐ ์ •์  ์œ„์น˜๋Š” ํ•œ ๋ฒˆ๋งŒ ์ €์žฅ๋จ
  • ์œ„์ƒ(topology)๊ณผ ๊ธฐํ•˜(geometry)๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ํ‘œํ˜„
    • Topology: ์ •์ ๋“ค์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์‚ผ๊ฐํ˜•์„ ๊ตฌ์„ฑํ•˜๋Š”์ง€
    • Geometry: ์ •์ ๋“ค์ด ๊ณต๊ฐ„์— ์œ„์น˜ํ•˜๋Š” ์‹ค์ œ ์ขŒํ‘œ
  • ์ธ์ ‘ ์‚ผ๊ฐํ˜• ํƒ์ƒ‰์ด ๋ช…ํ™•ํ•จ
    • ์ธ์ ‘ ์‚ผ๊ฐํ˜•์€ ๋™์ผํ•œ ์ •์  ์ธ๋ฑ์Šค๋ฅผ ๊ณต์œ ํ•จ

Example Cube in Indexed Triangle Set

  • Indexed triangle set ๋ฐฉ์‹์—์„œ๋Š”
    • ์ •์  8๊ฐœ์™€
    • ์‚ผ๊ฐํ˜• 12๊ฐœ์˜ ์ •์  ์ธ๋ฑ์Šค๋กœ cube๋ฅผ ํ‘œํ˜„ํ•จ

Quiz 2

Creating Polygon Meshes

  • ์ผ๋ฐ˜์ ์œผ๋กœ polygon mesh๋Š” 3D ๋ชจ๋ธ๋ง ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ƒ์„ฑ๋จ
    • ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ํŒŒ์ผ์„ object file ๋˜๋Š” model file์ด๋ผ ๋ถ€๋ฆ„
  • ์‘์šฉํ”„๋กœ๊ทธ๋žจ(์˜ˆ: ๊ฒŒ์ž„)์€ ์ด object file์—์„œ ์ •์ ๊ณผ ์ธ๋ฑ์Šค๋ฅผ ๋กœ๋“œํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๊ทธ๋ฆผ

3D Model File Formats

  • DXF โ€“ AutoCAD
    • 2D, 3D ๋ฐ”์ด๋„ˆ๋ฆฌ ์ง€์›
  • 3DS โ€“ 3DS MAX
    • ์œ ์—ฐํ•œ ์ด์ง„ ํ˜•์‹
  • VRML โ€“ Virtual reality modeling language
    • ASCII ๊ธฐ๋ฐ˜, ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Œ
  • OBJ โ€“ Wavefront OBJ format
    • ASCII ๊ธฐ๋ฐ˜ (์‚ฌ๋žŒ์ด ์ฝ๊ณ  ํŽธ์ง‘ ๊ฐ€๋Šฅ)
    • ๋งค์šฐ ๋‹จ์ˆœํ•˜๊ณ  ๋„๋ฆฌ ์‚ฌ์šฉ๋จ
  • ์ด ์Šฌ๋ผ์ด๋“œ์—์„œ๋Š” OBJ ํฌ๋งท์„ ์ž์„ธํžˆ ์‚ดํŽด๋ด„

OBJ File Format

# ์ฃผ์„

# vertex positions: (x, y, z)
v 0.123 0.234 0.345
v 0.2 0.5 0.3
...

# vertex normals: (x, y, z)
vn 0.707 0.000 0.707
...

# vertex texture coordinates (u, v)
vt 0.500 1
...

# ๋ฉด(faces) ์ •์˜ (๋ชจ๋“  ์ธ๋ฑ์Šค๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘)

# ์ •์  ์ธ๋ฑ์Šค๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ
f 1 2 3
f 2 3 4

# ์ •์ /ํ…์Šค์ฒ˜/๋…ธ๋ฉ€ ์ธ๋ฑ์Šค
f 6/4/1 3/3/7 6/3/6

# ์ •์ /๋…ธ๋ฉ€ ์ธ๋ฑ์Šค
f 1//1 8//2 9//3

# ์ •์ /ํ…์Šค์ฒ˜ ์ธ๋ฑ์Šค
f 3/1 4/2 5/3
  • ๊ธฐํƒ€ ์ง€์› ๊ธฐ๋Šฅ:

    • ์„ (Polyline)

      l 1 5 8 2 4 9
      
    • ์žฌ์งˆ(Materials)

      mtllib [์™ธ๋ถ€ .mtl ํŒŒ์ผ ์ด๋ฆ„]
      usemtl [์žฌ์งˆ ์ด๋ฆ„]
      
  • ๋ณธ ์ˆ˜์—…์—์„œ๋Š” ์œ„ ๊ธฐ๋Šฅ๋“ค์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

An OBJ Example

# A simple cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000  1.000000
v -1.000000 -1.000000  1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000  1.000000 -0.999999
v 0.999999  1.000000  1.000001
v -1.000000  1.000000  1.000000
v -1.000000  1.000000 -1.000000

f 1 2 3 4
f 5 8 7 6
f 1 5 6 2
f 2 6 7 3
f 3 7 8 4
f 5 1 4 8

OBJ Sources

  • free3d.com

  • cgtrader.com/free-3d-models

  • ์œ„ ์‚ฌ์ดํŠธ๋“ค์—์„œ .obj ๋ชจ๋ธ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ Blender์—์„œ ์—ด ์ˆ˜ ์žˆ์Œ

  • OBJ ํŒŒ์ผ ํ˜•์‹์€ ๋งค์šฐ ๋ณดํŽธ์ ์ž„:

    • ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋ธ๋ง ํ”„๋กœ๊ทธ๋žจ์ด OBJ ํฌ๋งท์œผ๋กœ export ๊ฐ€๋Šฅ
    • ๋Œ€๋ถ€๋ถ„์˜ ๋ Œ๋”๋ง ํŒจํ‚ค์ง€๊ฐ€ OBJ ํฌ๋งท์„ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
์ตœ๊ทผ ์ˆ˜์ •: 26. 6. 12. ์˜คํ›„ 3:28
Contributors: kmbzn, Claude Sonnet 4.6

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2026 kmbzn ยท MIT License