• 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

Computer Graphics Project 3: Bvh Viewer

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

์ œ์ถœ ๊ธฐํ•œ: 2025๋…„ 6์›” 6์ผ (23:59)
(๊ธฐํ•œ ์ดˆ๊ณผ ์ œ์ถœ์€ ์ ์ˆ˜ ์—†์Œ)

  • LMS ์ฝ”์Šค ํ™ˆ > Weekly Learning (์ฃผ์ฐจ๋ณ„ ํ•™์Šต) > Week 11 > Project 3
  • ํŒŒ์ผ์„ zip์œผ๋กœ ์••์ถ•ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์˜ ํŒŒ์ผ๋ช…์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    • ํŒŒ์ผ๋ช…์€ ์ž์œ ๋กญ๊ฒŒ ์ง€์ •ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.
submission.zip
 โ”œโ”€ main.py
 โ”œโ”€ ...
 โ””โ”€ report.pdf
  • ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Python ์†Œ์Šค ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ํ•˜์ง€๋งŒ main.py๊ฐ€ ๋ฉ”์ธ ๋ชจ๋“ˆ์ด์–ด์•ผ ํ•˜๋ฉฐ, ์‹คํ–‰ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
python3 main.py

1. ๊ตฌํ˜„ ๋‚ด์šฉ

์ž์‹ ๋งŒ์˜ bvh ๋ทฐ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜์„ธ์š”.

  • ๋‹จ์ผ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ชจ๋“  ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    ์ด Project๋Š” ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์ฐฝ์˜ ํ•ด์ƒ๋„๋Š” (800, 800)์ผ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.
    ์„ธ๋ถ€์‚ฌํ•ญ์ด ์ž˜ ๋ณด์ด๋„๋ก ์ถฉ๋ถ„ํžˆ ํฐ ํ•ด์ƒ๋„๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

C. OpenGL 3.3 Core Profile์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

  • Python ์ฝ”๋“œ์— ๋‹ค์Œ์„ ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•˜์„ธ์š”:
glfw.window_hint(GLFW_CONTEXT_VERSION_MAJOR, 3)
glfw.window_hint(GLFW_CONTEXT_VERSION_MINOR, 3)
glfw.window_hint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE)
  • ์‰์ด๋” ์ฝ”๋“œ์˜ ์ฒซ ์ค„์€ ๋ฐ˜๋“œ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค:
#version 330 core
  • OpenGL 3.3 Core Profile์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด (์˜ˆ์™ธ: ๋ฆฌํฌํŠธ๋งŒ ์ œ์ถœ ์‹œ) ์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

2. Requirements

A. ์นด๋ฉ”๋ผ ์กฐ์ž‘ (10์ )

  • Project1์—์„œ ๊ตฌํ˜„ํ•œ ๋ฐฉ์‹๋Œ€๋กœ ์นด๋ฉ”๋ผ๋ฅผ ์กฐ์ž‘ํ•˜์„ธ์š”.
  • ๋ ˆํผ๋Ÿฐ์Šค ๊ทธ๋ฆฌ๋“œ ํ‰๋ฉด๋„ ํ•จ๊ป˜ ๊ทธ๋ฆฌ์„ธ์š”.

B. bvh ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ฐ ๋ Œ๋”๋ง (80์ )

  • ๋ทฐ์–ด ์ฐฝ์— bvh ํŒŒ์ผ์„ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญํ•˜๋ฉด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋งŒ ๋กœ๋”ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ๋“œ๋กญํ•ด๋„ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ๋งŒ ๋กœ๋“œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • bvh ํŒŒ์ผ์„ ์ฝ๊ณ  skeleton (์ •์ง€ ํฌ์ฆˆ)๋งŒ ๋ Œ๋”๋งํ•˜์„ธ์š” (10์ )

    1. ํŒŒ์ผ์„ ์—ด ๋•Œ ์บ๋ฆญํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ํ•˜์ง€ ๋งˆ์„ธ์š”.

      • skeleton (์ •์ง€ ํฌ์ฆˆ)๋งŒ ๋ Œ๋”๋งํ•˜์„ธ์š”.
    2. HIERARCHY ์„น์…˜์˜ ๋ฐ์ดํ„ฐ๋งŒ ์‚ฌ์šฉํ•ด์„œ ์บ๋ฆญํ„ฐ๋ฅผ ๊ทธ๋ฆฌ์„ธ์š”.

      • translation์€ (0,0,0), rotation์€ ์—†๋„๋ก (๋‹จ์œ„ ํ–‰๋ ฌ)
    3. ๋ฐ•์Šค ๋ Œ๋”๋ง(box rendering) ์‚ฌ์šฉ

      • ์ ์ด๋‚˜ ์„ ์ด ์•„๋‹ˆ๋ผ ๋ฐ•์Šค๋กœ ๋ Œ๋”๋ง
      • ์กฐ๋ช…์€ Phong shading ์‚ฌ์šฉ
      • "End Site" ๋งํฌ๋Š” ์‹ค์ œ ๊ด€์ ˆ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๋ฌด์‹œํ•˜์„ธ์š”
  • ์˜ˆ์‹œ ์ด๋ฏธ์ง€๋กœ๋Š” sample-walk.bvh์˜ ์ •์ง€ ํฌ์ฆˆ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

iii. ์ŠคํŽ˜์ด์Šค๋ฐ”๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ (30์ )

  • ์ŠคํŽ˜์ด์Šค๋ฐ”๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ์…˜์„ ์žฌ์ƒํ•˜์„ธ์š”.

    • ๊ฐ ํ”„๋ ˆ์ž„์ด ์ง€๋‚˜๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋‹ค์Œ ํฌ์ฆˆ๋ฅผ ๋ฐ•์Šค๋กœ ํ‘œ์‹œ
    • ๋ฃจํ”„๋งˆ๋‹ค ํ”„๋ ˆ์ž„์„ ํ•˜๋‚˜์”ฉ๋งŒ ์ง„ํ–‰
    • ๋งˆ์ง€๋ง‰ ํ”„๋ ˆ์ž„์ด ์ง€๋‚˜๋ฉด ๋‹ค์‹œ ์ฒซ ํ”„๋ ˆ์ž„๋ถ€ํ„ฐ ๋ฐ˜๋ณต
    • ๋ฐ•์Šค ๋ Œ๋”๋ง ์œ ์ง€

iv. bvh ํŒŒ์ผ ๋กœ๋“œ ์‹œ stdout(์ฝ˜์†”)์— ๋‹ค์Œ ์ •๋ณด ์ถœ๋ ฅ (10์ )

  1. ํŒŒ์ผ ์ด๋ฆ„
  2. ํ”„๋ ˆ์ž„ ์ˆ˜
  3. FPS (1/frameTime)
  4. ๊ด€์ ˆ ์ˆ˜ (root ํฌํ•จ)
  5. ๋ชจ๋“  ๊ด€์ ˆ ์ด๋ฆ„ ๋ฆฌ์ŠคํŠธ

C. OBJ ๋ Œ๋”๋ง ๋ชจ๋“œ ์ œ๊ณต (30์ )

  • T ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด OBJ ๋ Œ๋”๋ง ๋ชจ๋“œ ์ง„์ž…

    1. ๊ฐ ๋งํฌ๋Š” ๋ณ„๋„์˜ OBJ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฉ”์‰ฌ๋กœ ๋ Œ๋”๋ง

      • ๋™์ผํ•œ OBJ ํŒŒ์ผ์„ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋จ
    2. T ํ‚ค๊ฐ€ ๋ˆŒ๋ ธ์„ ๋•Œ:

      • ๋ฏธ๋ฆฌ ์ •์˜๋œ BVH ํŒŒ์ผ (์˜ˆ: run.bvh)์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ 
      • ๊ฐ ๋งํฌ์— ํ•ด๋‹นํ•˜๋Š” OBJ ํŒŒ์ผ๋กœ ๋ Œ๋”๋ง
      • ๋งํฌ ์ด๋ฆ„๊ณผ ๊ณ„์ธต ๊ตฌ์กฐ๋Š” BVH๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ
    3. .bvh์™€ .obj ํŒŒ์ผ์€ Python ์†Œ์Šค์™€ ๊ฐ™์€ ํด๋”์— ๋‘์„ธ์š”

      • os.path.join() ์‚ฌ์šฉ ๊ถŒ์žฅ
# ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ์‹
file = open(os.path.join('data', 'run.bvh'))
  • OBJ ๋ฉ”์‰ฌ๋„ ์กฐ๋ช…์€ Phong shading ์‚ฌ์šฉ

3. Report (15์ )

  • ์ตœ๋Œ€ 2ํŽ˜์ด์ง€ ๋ถ„๋Ÿ‰์˜ docx ํ˜•์‹ ๋ฌธ์„œ ์ œ์ถœ

B. ๋ฆฌํฌํŠธ์— ํฌํ•จํ•  ๊ฒƒ

  1. ๊ตฌํ˜„ํ•œ ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์‹œ (5์ )
  2. ๋น„๋””์˜ค ๋งํฌ ์ฒจ๋ถ€ (10์ )
    • ์œ ํŠœ๋ธŒ, Vimeo ๋“ฑ

    • ์• ๋‹ˆ๋ฉ”์ด์…˜๋˜๋Š” skeleton ๋ชจ๋ธ์„ ์บก์ฒ˜ํ•œ ์˜์ƒ

    • ๋‹ค์Œ ์‚ฌ์ดํŠธ๋“ค์—์„œ bvh ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅ:

      • http://motion.hahasoha.net/
      • http://mocap.cs.sfu.ca/
      • http://dancebci.eu/main/performances
    • **์˜ˆ์‹œ ํŒŒ์ผ(sample bvh)**์€ ์ด ํ•ญ๋ชฉ์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

    • ์˜์ƒ์€ ๊ณต๊ฐœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์•ผ ์ ์ˆ˜ ๋ถ€์—ฌ

  • ๋ฆฌํฌํŠธ๋Š” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑ (์˜์–ด ๋˜๋Š” ํ•œ๊ตญ์–ด)

4. ์‹คํ–‰ ํ™˜๊ฒฝ

  • Python 3.8์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ,
    ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์€ ๋‹ค์Œ์œผ๋กœ ์ œํ•œ๋จ:

    • NumPy
    • PyOpenGL
    • glfw
    • PyGLM
  • ๊ธฐํƒ€ Python ๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

  • glfw๋งŒ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ OpenGL context ์šฉ๋„๋กœ ์‚ฌ์šฉ

  • ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด TA PC์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ
    ๋ฆฌํฌํŠธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

5. ํ…Œ์ŠคํŠธ์šฉ ํŒŒ์ผ

  • sample-walk.bvh: ๊ฑท๋Š” ๋ชจ์…˜
  • sample-spin.bvh: ์ˆ˜์ง์ถ• ์ค‘์‹ฌ ํšŒ์ „

6. ์ œ์ถœ๋ฌผ ๋ชฉ๋ก (์••์ถ•๋œ zip ํŒŒ์ผ)

  • .py ํŒŒ์ผ (main.py ํฌํ•จ)
  • .pdf ๋ฆฌํฌํŠธ
  • .bvh, .obj ํŒŒ์ผ (OBJ ๋ Œ๋”๋ง์šฉ)
  • .pdf ๋ฆฌํฌํŠธ

7. ์ถ”๊ฐ€ ์ •๋ณด

A. drop_callback ํ•จ์ˆ˜ ์ฃผ์˜์‚ฌํ•ญ

  • glfw Python ๋ฐ”์ธ๋”ฉ์—์„œ๋Š” C ๋ฒ„์ „๊ณผ ๋‹ค๋ฅด๊ฒŒ
    drop_callback(window, paths)๋กœ๋งŒ ํ˜ธ์ถœ๋จ
    (paths๋Š” ํŒŒ์ผ ๊ฒฝ๋กœ ๋ฆฌ์ŠคํŠธ)

B. ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ํŒ

  • Python์˜ split() ๋“ฑ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ํ•จ์ˆ˜๋Š”
    bvh ํŒŒ์‹ฑ ์‹œ ๋งค์šฐ ์œ ์šฉํ•จ
์ตœ๊ทผ ์ˆ˜์ •: 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