E D R , A S I H C RSS

C++3DGame

1. 3D ๊ธฐ์ดˆ

1.1. 1. ์ขŒํ‘œ๊ณ„ ์‚ฌ์šฉํ•˜๊ธฐ

3D ์˜์—ญ์—์„œ์˜ ์ž‘์—…์„ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์šฉํ•  ์ขŒํ‘œ๊ณ„๋ฅผ ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ขŒํ‘œ๊ณ„์ธ ๋ฐ์นด๋ฅดํŠธ ์ขŒํ‘œ๊ณ„๋Š” ์›์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ ๊ณผ ์›์ ์„ ์ง€๋‚˜๋ฉฐ ์„œ๋กœ ์ง€๊ฐ์ธ ์„ธ ๊ฐœ์˜ ์ถ•์ด ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ์ด๋Ÿฐ ๋ฐ์นด๋ฅดํŠธ ์ขŒํ‘œ๋ฅผ ํ‘œํ˜„ํ• ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋Š”.. ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
~cpp 
struct Point3D
{
   float x;
   float y;
   float z;
}

1.1.1. 1.1 ํด๋ผ ์ขŒํ‘œ๊ณ„

"์›์ ์—์„œ ๋™์ชฝ์„ ๋ฐ”๋ผ๋ณด๋ฉฐ ์ฃฝ์ชฝ์œผ๋กœ 38๋„ ํšŒ์ „ํ•˜๊ณ , ์œ„๋กœ 65๋„ ํšŒ์ „ํ•œ ํ›„์— ์ด ์„ ์„ ๋”ฐ๋ผ 7.47ํ”ผํŠธ๋กœ ์ด๋™"ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์œ„์น˜๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ˆ˜ํ•™์ ์œผ๋กœ ํ’€ ๊ฒฝ์šฐ, ์ ์„ ์ด๋ฆฌ์ €๋ฆฌ ์›€์ง์ด๋ฉด ์ฒ˜๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋”์šด ์–ด๋ ค์›Œ์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ํด๋ผ ์ขŒํ‘œ๊ณ„๋Š” ์ œ์–ด๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— 3D์—”์ง„์—์„œ๋Š” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

1.1.2. 1.2 ๋‹ค์ค‘ ์ขŒํ‘œ๊ณ„ ์‚ฌ์šฉํ•˜๊ธฐ

3D ์˜ค๋ธŒ์ ์œผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…ํ•˜๋‹ค ๋ณด๋ฉด ํ•˜๋‚˜์˜ ์ ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์—ฌ๋Ÿฌ ์ ์„ ๋ฌถ์–ด ์ž‘์—…ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ž„์„ ์•Œ๊ฒŒ ๋œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ปดํ“จํ„ฐ๋ฅผ ๋ชจ๋ธ๋งํ•  ๊ฒฝ์šฐ ๋‹ค์Œ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ์ €์žฅํ• ์ˆ˜ ์žˆ๋‹ค.
~cpp 
struct CPU
{
 Point3D center; // the center of CPU. in world coordinates
 Point3D coord[8]; // the 8 corners of the CPU box relatives to the center point
};
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒŒ์ž„์—์„œ CPU๋ฅผ ์›€์ง์—ฌ์•ผ ํ•  ๊ฒฝ์šฐ, CPU๋ฅผ ๊ทธ๋ฆฌ๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ ์ ์— ๋Œ€ํ•œ ์ปดํ“จํ„ฐ ์ค‘์•™ ๋งŒ ์›€์ง์ด๋ฉด ๋œ๋‹ค.

ํ•˜๋‚˜์˜ code[] ์ ˆ๋Œ€ "์„ธ๊ณ„"์ขŒํ‘œ๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
~cpp 
struct CPU
{
 Point3D center;
 Point3D coord[8];
 Point3D GetWorldCoord (int index)
 {
   Point3D result;
   result.x = center.x + coord[index].x;
   result.y = center.y + coord[index].y;
   result.z = center.z + coord[index].z;
   return result;
 }
};

CPU::GetWorldCoord(int index)๋Š” ๊ทธ ์„ธ๊ณ„์˜ ์›์ ์— ๋Œ€ํ•ด CPU ์—ฌ๋Ÿ๊ฐœ ์  ์ค‘์˜ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋‹จ์ง€ coordindex๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋ฉด, CPU์ค‘์•™์— ํ•ด๋‹นํ•˜๋Š” CPU์ ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— CPU๋ฅผ ๊ทธ๋ž  ๋•Œ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ทธ๋ฆด ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ์ค‘์•™์„ ์›€์ง์ด๋ฉด์„œ๋„ CPU์  ์—ฌ๋Ÿ๊ฐœ๋ฅผ ๋ชจ๋‘ ์˜ฎ๊ธฐ๋Š” ํšจ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.

1.2. 2. 3D์˜์—ญ์—์„œ 2D์ปดํ“จํ„ฐ ํ™”๋ฉด์œผ๋กœ

์—ญ์‹œ๋‚˜ ๋‚˜์˜ ์ˆ˜ํ•™์˜ ํ•œ๊ณ„๋กœ. ๊ทธ๋ƒฅ ์“ฐ์œฝ ๋ณด๋ฉด์„œ ๋„˜์–ด ๊ฐ”๋‹ค. ๋ญ”์†Œ๋ฆฌ์ธ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๊ณ . ใ…‹ใ…‹ใ…‹ ๊ทธ๋ƒฅ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๋˜์ง€. ๋‚˜์ค‘์— ๊ถ๊ธˆํ•˜๋ฉด ๋” ํŒŒ๋ณผ๊ฒƒ์ด๋‹ค.

ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ ์“ฐ๋“ฏ์ด. ์ผ€์ผ€.. ใ…กใ…ก; ์–ด๋ ค์›Œ.. ํ•ด์„ฑ์ดํ˜•ํ•œํ…Œ ๋ฌผ์–ด๋ด์•ผ์ง€.. --;

1.3. 3. ๊ทธ๋ž˜ํ”ฝ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ์š”


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:44
Processing time 0.0055 sec