이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜μœΌλ‘œ, 이에 λ”°λ₯Έ μΌμ •μ•‘μ˜ 수수료λ₯Ό μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•

κ·Έλž˜ν”½μŠ€ μˆ˜μ—… 5번째 과제인 3D Viewingμž…λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같은 것을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
[1] 3D objects듀이 μ •μ§€ν•˜κ³  μžˆλŠ” μƒνƒœμ—μ„œ
1. 카메라가 μ œμžλ¦¬μ—μ„œ νšŒμ „
2. 카메라가 VPN을 κ³ μ •μ‹œν‚¨ μ±„λ‘œ μ˜†μœΌλ‘œ 이동
3. μ •μ§€ν•œ μΉ΄λ©”λΌμ˜ 쀌인, μ€Œμ•„μ›ƒ
4. 카메라가 νŠΉμ •ν•œ 물체λ₯Ό μ€‘μ‹¬μœΌλ‘œ νšŒμ „ν•˜λ©΄μ„œ κ·Έ 물체λ₯Ό 바라보며 카메라가 νšŒμ „ μ΄λ™ν•˜λŠ” 경우
[2] 카메라와 물체가 λ™μ‹œμ— μ΄λ™ν•˜λŠ” 경우





*μ£Όμš”μ†ŒμŠ€μ½”λ“œ

  • μ™Έμ μ˜ λŒ€μˆ˜μ  계산(Algebraic operation of cross product)

  • 3Dμ’Œν‘œμƒμ—μ„œμ˜ Vector 클래슀 μ •μ˜


  • λ·°μž‰μ’Œν‘œ 계산

    1. λ·°μž‰μ’Œν‘œμ˜ Z좕은 μΉ΄λ©”λΌμ˜ EyeX,Y,Z μ—μ„œ CenterX,Y,Z의 μ°¨λ₯Ό κ³„μ‚°ν•˜λ©΄ λ‚˜μ˜΅λ‹ˆλ‹€.(μΉ΄λ©”λΌμœ„μΉ˜μ—μ„œ 카메라가 λ³΄λŠ” 점 λΉΌκΈ°)
    2. View-Up VectorλŠ” λ‹¨μˆœνžˆ μ›”λ“œμ’Œν‘œμƒμ˜ YμΆ•(0,1,0)에 ν•΄λ‹Ήν•˜κ² κ΅¬μš”...
    3. VUPκ³Ό Zλ₯Ό μ™Έμ ν•˜λ©΄ X좕을 ꡬ할 수 있고
    4. λ‹€μ‹œ zμΆ•κ³Ό X좕을 μ™Έμ ν•˜λ©΄ Y좕을 ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€.
    * λ‹¨μœ„λ²‘ν„°λŠ” κ·Έλƒ₯ μ—°μ‚°μ‹œμ— 크기λ₯Ό λ‚˜λˆ μ£Όλ©΄ λ©λ‹ˆλ‹€.



*κ΅¬ν˜„λœ 결과의 λΉ„λ””μ˜€ 캑쳐 (μŒμ„± μ„€λͺ… 포함)




Discussion
이번 κ³Όμ œμ—μ„œ 제일 κ³ μ‹¬ν–ˆλ˜ 뢀뢄이 "카메라 제자리 νšŒμ „" 및 "물체λ₯Ό μ€‘μ‹¬μœΌλ‘œ νšŒμ „"ν•˜λŠ” 뢀뢄을 κ΅¬ν˜„ν•˜λŠ” 것 μ΄μ—ˆμŠ΅λ‹ˆλ‹€.
λ‹¨μˆœνžˆ μ›”λ“œμ’Œν‘œκ³„κΈ°μ€€μ—μ„œ X,Y,Z μΆ• νšŒμ „μ„ ν•˜λŠ” 것인지 μΉ΄λ©”λΌμ˜ λ·°μž‰μ’Œν‘œμ˜ κΈ°μ€€μœΌλ‘œ X,Y,Z좕인지 λͺ…μ‹œλ˜μ–΄μžˆμ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ›”λ“œμ’Œν‘œκΈ°μ€€μ—μ„œ "물체λ₯Ό 바라보며 μ΄λ™νšŒμ „"을 ν•˜λŠ”κ²ƒμ΄λ©΄ κ·Έλ¦Ό1(ZμΆ•κΈ°μ€€ νšŒμ „μ˜ ꢀ적그림은 μƒλž΅ν–ˆμŠ΅λ‹ˆλ‹€) κ³Ό 같이 카메라가 ꢀ적을 그리게 λ˜μ§€λ§Œ μΉ΄λ©”λΌμ˜ λ·°μž‰μ’Œν‘œμ—μ„œ μ΄λ™νšŒμ „μ„ ν•˜κ²Œλ˜λ©΄ κ·Έλ¦Ό2(YμΆ•κΈ°μ€€ νšŒμ „μ˜ ꢀ적만 λͺ…μ‹œν–ˆμŠ΅λ‹ˆλ‹€)와 되기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

λ·°μž‰μ’Œν‘œκΈ°μ€€μœΌλ‘œ νšŒμ „μ„ ν•˜λ €λ©΄ λ‹€μ‹œ glLookatν•¨μˆ˜μ˜ λ‚΄λΆ€κ΅¬ν˜„, 즉, Cross Productλ“±μ˜ 연산을 톡해 λ·°μž‰μ’Œν‘œλ₯Ό μ•Œμ•„λ‚΄μ•Ό ν–ˆμœΌλ©°, νšŒμ „μ‹œμ—λ„ 훨씬 더 λ³΅μž‘ν•œ 연산이 λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€. μ—°μ‚° 였차 λ•Œλ¬ΈμΈμ§€ κ·Έλ¦Ό2와 같이 κ΅¬ν˜„μ„ ν•˜κ²Œ 되면 νΌν¬λ¨ΌμŠ€κ°€ λ–¨μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.(Center<λ°”λΌλ³΄λŠ”μ >의 μ’Œν‘œκ°€ 계속 λ°”λ€Œλ”κ΅°μš” λΉ„λ””μ˜€μΊ‘μ³ λ§ˆμ§€λ§‰λΆ€λΆ„μ— "μŠ€νŽ˜μ…œν¬μŠ€"처럼 μ›€μ§μ΄λŠ” μž₯λ©΄μ„€λͺ…μ—μ„œ μžμ„Ένžˆ 보면 λ°”λΌλ³΄λŠ”μ μ΄ μ‘°κΈˆμ”© μ›€μ§μ΄λŠ” κ±Έ κ΄€μ°°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.) κ·Έλž˜μ„œ 마우슀λͺ¨μ…˜ 섀정은 κ·Έλ¦Ό2와 같이, ν‚€λ³΄λ“œ 섀정은 κ·Έλ¦Ό1. κ³Ό 같이 κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. μ΄λŠ” 3Dμƒμ—μ„œμ˜ νšŒμ „μ΄μ§€λ§Œ 2D μ„ΈλΆ€λΆ„μœΌλ‘œ λΆ„ν• ν•˜μ—¬ κ°„λ‹¨ν•œ 2DνšŒμ „ λ³€ν™˜ 곡식을 톡해 κ΅¬ν˜„ν•  μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

κ·Έ 외에 3Dλ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이닀 λ³΄λ‹ˆ, μ œκ°€ λ™μ˜μƒμ„ λ§Œλ“€μ–΄ 놓고도 μ–΄λ–»κ²Œ μž‘λ™λ˜λŠ” 것인지 λ„ˆλ¬΄ ν˜ΌλˆμŠ€λŸ¬μ›Œμ„œ x,y,zμ’Œν‘œλ₯Ό κ·Έμ—ˆκ³  λ”λΆˆμ–΄ xy,yz,xz평면에도 버티컬 처럼 싀선을 λ“œλ¬Έλ“œλ¬Έ κ·Έμ—ˆμŠ΅λ‹ˆλ‹€(빽빽히 μ±„μš°λ©΄ CPU점유율이 λ„ˆλ¬΄ λ†’μ•„μ Έμ„œ νΌν¬λ¨ΌμŠ€κ°€ 떨어지기 λ•Œλ¬Έμ— μ΄λ ‡κ²Œ ν–ˆμŠ΅λ‹ˆλ‹€.)

μž¬λ―Έμ‚Όμ•„ "μΉ΄μš΄ν„°μŠ€νŠΈλΌμ΄ν¬"λ‚˜ "μŠ€νŽ˜μ…œν¬μŠ€"와 같은 FPS 3Dκ²Œμž„μ—μ„œμ˜ μ‘°μž‘μ„ λΉ„λ””μ˜€μΊ‘μ³ λ§ˆμ§€λ§‰ λΆ€λΆ„μ—μ„œ Demonstrationν•˜μ˜€μŠ΅λ‹ˆλ‹€.

이번 과제λ₯Ό 톡해 μˆ˜μ—…μ‹œκ°„μ— 이둠으둜 λ°°μ› λ˜ 뢀뢄을 μ’€ 더 λͺ…ν™•ν•˜κ²Œ 이해할 수 μžˆμ—ˆκ³  3Dκ²Œμž„μ œμž‘μ„ ν•˜κ³  싢은 마음이 λ“€ μ •λ„λ‘œ ν₯미둜운 κ³Όμ œμ˜€μŠ΅λ‹ˆλ‹€. ^^


κ·Έλ¦Ό1. μ›”λ“œμ’Œν‘œ κΈ°μ€€


κ·Έλ¦Ό2. μΉ΄λ©”λΌμ˜ λ·°μž‰μ’Œν‘œ κΈ°μ€€



* μ†ŒμŠ€λŠ” ν•˜κΈ° 링크에 μžˆμŠ΅λ‹ˆλ‹€.

http://goo.gl/VH3UU




λ°˜μ‘ν˜•

이 ν¬μŠ€νŒ…μ€ 쿠팑 νŒŒνŠΈλ„ˆμŠ€ ν™œλ™μ˜ μΌν™˜μœΌλ‘œ, 이에 λ”°λ₯Έ μΌμ •μ•‘μ˜ 수수료λ₯Ό μ œκ³΅λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°˜μ‘ν˜•

****μ†ŒμŠ€ μ›ν•˜μ‹œλŠ”λΆ„μ€ λŒ“κΈ€μ— λ‚¨κ²¨μ£Όμ‹œκΈΈ.


λ™μ˜μƒ μ„€λͺ…

ν”„λ‘œκ·Έλž¨μ„ μ‹œμž‘ν•˜λ©΄, 두 개의 νλΈŒκ°€ κ²Ήμ³μžˆμŠ΅λ‹ˆλ‹€.

ν•œ 개의 μ€‘μ‹¬νλΈŒλ₯Ό κΈ°μ€€μœΌλ‘œ 3D T,R,Sλ³€ν™˜μ„ ν•©λ‹ˆλ‹€.

ν‚€λŠ” μœ„μ˜ μ„€λͺ…κ³Ό κ°™μŠ΅λ‹ˆλ‹€.

카메라가 (300, 600, 600)μ—μ„œ 원점을 λ°”λΌλ³΄κ²Œ ν•˜μ˜€μœΌλ©°,

μΉ΄λ©”λΌμ˜ 이동 및 νšŒμ „μ€ λ‹€μŒμˆ™μ œλ₯Ό μœ„ν•΄ κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

3Dλ³€ν™˜μ„ μ‰½κ²Œ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ x,y,zμΆ•μ˜ 선을 κ·Έμ—ˆμŠ΅λ‹ˆλ‹€.

μ˜ν˜„μž¬μ˜ μƒνƒœλ₯Ό μ •λŸ‰μ μœΌλ‘œ λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ ν˜„μž¬ λ³€ν™˜μ˜
μ•‘μ…˜ 및 μ’Œν‘œλ₯Ό ν‚€λ₯Ό λˆ„λ₯Όλ•Œ λ§ˆλ‹€ μ½˜μ†”μ°½μ— λ”°λ‘œ 좜λ ₯ν•˜μ˜€μŠ΅λ‹ˆλ‹€.(κ·Έλ¦Ό1κ³Ό κ°™μŒ)




ν‚€ μ„€λͺ…


 

 

 


λ””μŠ€μ»€μ…˜

3Dλ³€ν™˜μ„ μœ„ν•œ Composite MatrixλŠ” μ‹€μŠ΅μžλ£Œλ₯Ό μ°Έκ³ ν•˜μ˜€κ³ , λ‹€μ–‘ν•œ 퍼포먼슀λ₯Ό λ‚΄κΈ° μœ„ν•΄ μ€‘μ‹¬νλΈŒλ„ 이동 κ°€λŠ₯ ν•˜λ„λ‘ ν•˜μ˜€μŠ΅λ‹ˆλ‹€. DisplayFunc ν•¨μˆ˜μ— κ·Έλ¦¬λŠ” μˆœμ„œλ₯Ό μœ μ €κ°€ μžμ—° μƒνƒœμ—μ„œ 보듯이 ν•˜κΈ°μœ„ν•΄ μ€‘μ‹¬νλΈŒμ™€ λ¬΄λΉ™νλΈŒμ˜ μ€‘μ‹¬μ’Œν‘œλ₯Ό 비ꡐ ν•˜λ €κ³  ν–ˆμœΌλ‚˜, λ¬΄λΉ™νλΈŒμ˜ ν¬κΈ°κΉŒμ§€ κ³ λ €ν•΄μ•Ό ν•˜λ©° 이번과제의 μ΄μŠˆκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ°¨ν›„ 고민거리둜 λ‚¨κ²¨λ‘μ—ˆμŠ΅λ‹ˆλ‹€. μ†Œμˆ˜μ μ— μ˜ν•΄ μ’Œν‘œλ“€μ˜ 값이 λ―Έμ†ŒλŸ‰ λ³€ν•˜κΈ° λ•Œλ¬Έμ— 3Dλ³€ν™˜ μˆ˜ν–‰μ„ μ•„μ£Ό 많이 ν•˜κ²Œ 되면(ν˜Ήμ€ νšŒμ „ν›„μ— 크기변화을 ν•  경우), 강체가 ν‹€μ–΄μ§€λŠ” ν˜„μƒμ΄ λ°œμƒν•©λ‹ˆλ‹€. 이번 과제λ₯Ό 톡해 λ‹€μ†Œ 직관적이지 μ•Šμ€ 3D λ³€ν™˜μ˜ 계산 및 원리λ₯Ό μˆ™λ‹¬ν•  수 μžˆμ—ˆμœΌλ©°, μ‹œκ°„μ΄ ν—ˆλ½ν•˜λ©΄ OPENGL자체 3Dλ³€ν™˜ ν•¨μˆ˜λ“€κ³Ό νš¨μœ¨μ„±μ„ 비ꡐ해볼 κ³„νšμž…λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.

λ°˜μ‘ν˜•

+ Recent posts