본문 바로가기
GameMaker강좌[GMS2]/3D기능강좌

[게임메이커 강좌-3D강좌][GMS2]3D 기본 모델

by 타락카얀 2018. 7. 21.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

◈ 3D 기본 모델

게임메이커 스튜디오 2에서는 스튜디오 1 이전 버전과 달리 3D 기본 모델을 지원하지 않게 되었기

때문에 모델을 직접 구성해야 됩니다.

강좌에서 첨부한 스크립트들을 게임메이커 스튜디오2에 추가하면, 이전 버전과 같은 기본 모델을

사용할 수 있습니다.

 


 

 

- 스크립트 모음 -

 

draw_3d_script.yymps
0.02MB

 

[Tools] 메뉴 ▶ [Import Local Package] 로 파일을 열어 추가하시면 됩니다.

 



 

 


◈ 텍스쳐

3D 텍스쳐의 크기는 가로X세로의 크기가 같아야 하고, 모두 2의 제곱의 크기여야 제대로 표시가 됩니다.

만약 크기가 2의 제곱이 아니면 실제 화면에서 일부가 잘려서 제대로 표시 안 될 수도 있습니다.

그리고 스프라이트 설정의 Separate Texture Page를 체크해야 지정한 스프라이트 이미지를 텍스쳐로

적용 시킬 수 있습니다.

 


(▲ 스프라이트 설정)


일단 강좌에서 사용되는 텍스쳐는 아래의 그림(64X64)을 사용하도록 하겠습니다.

 


(▲ 텍스쳐)


이것을 텍스쳐로 사용하려면 아래의 함수를 사용해야합니다.

 



   sprite_get_texture(spr,subimg)
 
      spr : 스프라이트
     subimg : 서브이미지



   예) texid=sprite_get_texture(sprite0,0);

 

 

 

 
 


◈ 기본 모델 시작

강좌의 3D 기본 모델을 표시하려면, draw_3d_start 스크립트로 먼저 기능을 활성화 시켜야 합니다.

1. 기본모델 시작

 



   draw_3d_start( )
 


모델을 사용하기 전에 draw_3d_start 스크립트를 게임 시작(Game Start 이벤트)할 때나,
Room Start이벤트 또는, Create 이벤트에서 1번만 실행해주면 됩니다.

게임을 종료할 때는, 아래의 스크립트를 사용하여 버텍스 버퍼 및 버텍스 포맷을 파기합니다.

2. 기본모델 종료

 



   draw_3d_end( )
 



 

 

◈기본모델 - 벽

아래 스크립트는 벽으로 활용할 수 있는 3D 모델입니다.

 



   draw_3d_wall(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)
 




(▲ 벽)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).

 



   예) draw_3d_wall(-10,0,10,10,0,-10,texid,1,1);
 

 

 

 

 

 

◈ 기본 모델 - 바닥

아래 스크립트는 바닥으로 활용할 수 있는 3D 모델입니다.

 



   draw_3d_floor(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)
 




(▲ 바닥)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).

 



   예) draw_3d_floor(-10,-10,0,10,10,0,texid,1,1);
 



◈ 기본모델 - 블럭

아래 스크립트는 육면체를 표시할 수 있는 3D 모델입니다.

 



   draw_3d_block(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat)
 




(▲ 블럭)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).

텍스쳐 모양대로 표시하려면 아래처럼 하시면 됩니다.

 



   예) draw_3d_block(-10,-10,10,10,10,-10,texid,1,1);
 


아래 스크립트는 위의 스크립트와 모양이 같지만, x, y, z축 3방향으로 텍스쳐를 반복시키는 것이
추가된 스크립트입니다.

 



   draw_3d_block_ext(x1,y1,z1,x2,y2,z2,texid,xrepeat,yrepeat,zrepeat)


      texid : 사용할 텍스처 ID를 지정,
      xrepeat : 텍스쳐를 x 축으로 몇번 반복시킬지를 지정(값은 1이상).
      yrepeat : 텍스쳐를 y 축으로 몇번 반복시킬지를 지정(값은 1이상).
      zrepeat : 텍스쳐를 z 축으로 몇번 반복시킬지를 지정(값은 1이상).

 





◈ 기본모델 - 실린더

아래 스크립트는 실린더 모양으로 표시할 수 있는 3D 모델입니다.

 



   draw_3d_cylinder(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps)

 




(▲ 실린더)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).
closed : 모델의 위와 아래를 닫을지를 지정. 0(false)이면 위와 아래의 원부분을 면으로 막지 않고

      열린상태가 됩니다.
steps : 모델의 각을 지정합니다. 예를 들어 8이면 8각 실린더가 됩니다.

 


(▲ closed가 0일 경우)

 



   예) draw_3d_cylinder(-10,10,10,10,-10,-10,texid,2,1,0,12);
 

 

 

 



◈ 기본모델 - 원뿔

아래 스크립트는 원뿔 모양으로 표시할 수 있는 3D 모델입니다.

 



   draw_3d_cone(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,closed,steps)
 




(▲ 원뿔)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).
closed : 모델의 원부분을 닫을지를 지정. 0(false)이면 원부분을 면으로 막지 않고 열린상태가 됩니다.
steps : 모델의 각을 지정합니다. 예를 들어 8이면 8각 원뿔가 됩니다.

 



   예) draw_3d_cone(-10,10,10,10,-10,-10,texid,2,1,1,100);
 




(▲ 텍스쳐 모양대로 하려면 뒤집어야함)

 

 

 

 



◈ 기본모델 - 구형

아래 스크립트는 구형 모양으로 표시할 수 있는 3D 모델입니다.

 



   draw_3d_ellipsoid(x1,y1,z1,x2,y2,z2,texid,hrepeat,vrepeat,steps)
 




(▲ 구)


texid : 사용할 텍스처 ID를 지정,
hrepeat : 텍스쳐를 수평으로 몇번 반복시킬지를 지정(값은 1이상).
vrepeat : 텍스쳐를 수직으로 몇번 반복시킬지를 지정(값은 1이상).
steps : 모델의 각을 지정합니다. 값이 클수록 부드럽게 됩니다.

 



   예) draw_3d_ellipsoid(-10,10,-10,10,-10,10,texid,2,1,50);
 

 

 

 

 

300x250

댓글