UDN
Search public documentation:

SettingUpWeaponsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 게임플레이 엘리먼트 > 웨폰 셋업하기

웨폰 셋업하기


문서 변경내역: James Golding, Laurent Delayen 작성; Jeff Wilson 수정; 홍성진 번역.

무기 모델링 - 셋업과 리깅(Rigging)


언리얼 엔진 3에서 무기는 1인칭과 3인칭 둘 다 렌더링하는 데 스켈레탈 메시를 사용합니다. 1인칭 메시는 보통 가까이서 보이기 때문에 일반적으로 폴리곤을 많이 사용합니다. 1인칭에서 사용되는 무기의 배치에 따라서, 어떤 폴리곤은 절대 안보일 수가 있어서 생략하여 렌더링 시간을 절약할 수도 있습니다. 3인칭 메시는 보통 3인칭 모드에서 플레이어를 볼 때나 픽업 메시로써 사용됩니다. 그렇기에 모든 방향에서 보이게 되며, 폴리곤을 생략할 수가 없습니다. 그래도 가까이서 볼 일은 거의 없을테니 디테일을 낮춰서 폴리곤 수를 가급적 낮게 유지하는 게 좋겠습니다.

firstpersonmesh.jpg thirdpersonmesh.jpg

어떤 무기의 1인칭 메시에 대한 스켈레톤을 셋업하는 방법은 적절한 애니메이션을 셋업하는 데 필요한 것에 따라 달라지게 됩니다. 일반적으로 플레이어가 무기를 쥐는 위치에 루트 본이, 총구 섬광(muzzle flash)이 튀는 곳에 자식 본이 위치하게 됩니다. 총구 섬광이나 다른 효과에 바로 본이 쓰이지는 않으나, 그 위의 소켓이 사용되기에 제대로 위치를 잡아줘야 소켓 셋업이 훨씬 쉬워지게 됩니다.

3인칭 메시에 대해서는, 1인칭 모드에서의 무기 애니메이션 대부분은 3인칭에서 불필요하여 생략되기에 아마도 스켈레톤이 훨씬 간단해 질 겁니다. 무기가 쥐어지는 자주 쓰는 손에 루트 본을 놓아야 할 겁니다. 자식 본은 반대쪽 손 무기 쥐는 위치에 놓으면, 특정 무기에 대해서나 게임에서 일반적으로 지원하고자 할 경우에 좋겠습니다. 1인칭 메시와 마찬가지로, 자식 본은 총구 섬광 위치에 두는 게 좋습니다.

무기 스켈레톤의 예는 이와 같습니다:

firstpersonskeleton.jpg

아마도 스크립트를 통해 바로 접근하게 될 본이나 소켓용으로 사용할 이름은 미리 결정해 두는 게 바람직하겠으며, 아니면 프로그래머를 통해 사용되는 본 이름을 지정할 수 있는 기능을 꼭 넣어 달라고 하시기 바랍니다.

무기 내보내기


무기 스켈레탈 메시를 엔진에 내보내는 작업은 표준 스켈레탈 메시와 완전히 똑같은 식으로 수행됩니다. ActorX 를 사용하여 메시와 애니메이션을 .PSK나 .PSA 파일로 내보낼 수도, 또는 3D 어플리케이션의 내장 내보내기 툴로 메시와 애니메이션을 .FBK 파일로 내보내는 식으로 언리얼의 FBX 가져오기 파이프라인 을 사용할 수도 있습니다. 어떤 무기에 필요하게될 메시와 각각의 애니메이션을 내보내야 합니다.

무기 가져오기 및 셋업


무기용 .PSK( 또는 선호하는 파일 포맷에 따라 .FBX) 파일은 스켈레탈 메시로 콘텐츠 브라우저에 가져와야 합니다.

meshimportpsk.jpg meshimport_fbx.jpg

그 무기용 텍스처와 머티리얼도 가져와야 하며, 셋업한 뒤 스켈레탈 메시에 할당해야 합니다. 애님셋 에디터의 파일 메뉴에서 새 애님셋... 을 선택하고 패키지, 그룹(옵션), 이름을 지정하면 무기용 애님셋을 새로 만들 수 있습니다.

newanimset.jpg

그리고서 다시 애님셋 에디터의 파일 메뉴에서 PSA 가져오기... 를 선택하여 무기용 애니메이션을 포함하는 .PSA 파일을 무기의 애님셋으로 가져와야합니다.

newanimation.jpg

.FBX 파일 포맷의 경우는 여기서 FBX 애니메이션 가져오기... 를 대신 선택해야 애니메이션을 가져올 수 있겠습니다.

소켓 셋업하기

소켓은 전에도 말씀드렸듯이 총구 섬광은 물론 무기에 필요할 수도 있는 부가 효과용 부착점으로 사용됩니다. 소켓은 본질적으로 특정한 본을 부모로 두는 위치 입력기(locator)로, 이름을 짓고 오프셋 값을 받으며 자체 회전값도 주어집니다. 이를 통해 쉽게 특정 위치에 아이템을 스폰시키거나 부착할 수 있게 됩니다.

소켓은 언리얼 에디터 내부의 애님셋 에디터를 통해 스켈레탈 메시에 추가됩니다. 소켓 매니저를 열려면 툴바에 있는 toolbar_socket.jpg 버튼을 누르시면 됩니다.

socketmanager.jpg

newsocket_button.jpg 버튼으로는 메시에서 사용 가능한 본이 전부 나열되는 대화창이 새로 뜨게 됩니다.

newsocket_bone.jpg

메시의 총신 끝에 추가된 본을 선택하고 OK 를 누르십시오. 새 소켓에 코드내 식별용으로 사용될 이름을 지을 수 있는 대화창이 또 뜨게 됩니다.

newsocket_name.jpg

이름을 입력하고 OK 를 누르면 새 소켓이 생깁니다. 애님셋 에디터의 미리보기 패널과 소켓 매니저의 소켓 목록에 나타날 것입니다.

newsocket_complete.jpg

발사체 만들기

발사체는 무기 발사의 물리적 표현입니다. 언리얼에서 발사체의 시각적 요소는 단순히 파티클 시스템입니다. 발사체에 대한 파티클 시스템 만들기는 다른 파티클 시스템 만들기와 비슷한 단순 작업입니다. 본질적으로, 발사체가 날아가는 모양이 어땠으면 좋겠는지 재생성하는 파티클 시스템을 셋업하고 싶을 겁니다. 원하는 효과를 내기 위해 필요한 수만큼의 에미터를 구성하여 파티클 시스템을 만들 수 있습니다.

발사체 파티클 시스템의 몇 가지 예제는 아래와 같습니다:

projectile_link.jpg projectile_rocket.jpg projectile_shock.jpg

총구 섬광 셋업하기

총구 섬광은 현실에서 총을 발사할 때 볼 수 있는 섬광처럼, 무기의 총신에서 방출되는 발사체를 시뮬레이션하기 위해 사용됩니다. 언리얼의 무기 시스템은 총구 섬광의 시각 요소로써 파티클 시스템을 사용합니다. 발사체와 마찬가지로 총구 섬광에 대한 파티클 시스템은 원하는 효과를 내는 데 필요한 수만큼의 에미터로 구성할 수 있습니다.

총구 섬광 파티클 시스템의 몇 가지 예제는 아래와 같습니다:

mf_link.jpg mf_rocket.jpg mf_shock.jpg

프로그래머용


모든 애셋을 알맞게 셋업하고 나면, 구현을 위해 프로그래머에게 몇 가지 정보를 줘야 합니다. 프로그래머가 필요하게 될 정보는:

  • 1인칭 메시의 이름
  • 애니메이션 세트의 이름
  • 픽업 메시의 이름
  • 픽업, 장착, 내려놓기, 발사 사운드 이름
  • (발사체가 발사되는 경우) 발사체 파티클 시스템의 이름
  • 총구 섬광 파티클 시스템의 이름
  • 조준선 텍스처 및 좌표의 이름

효율적인 반복처리를 위해, 이와 같은 정보에 대한 표준 세트를 준비하는 게 좋습니다.

스크립트 파일 만들기

무기용 기본 UnrealScript.uc 파일에 필요한 정보를 전부 입력하는 법은 이와 같습니다:

MyWeapon.uc

class MyWeapon extends UTWeapon;

defaultproperties
{
   Begin Object class=AnimNodeSequence Name=MeshSequenceA
      bCauseActorAnimEnd=true
   End Object

   // Weapon SkeletalMesh
   Begin Object Name=FirstPersonMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_Linkgun_1P'
      AnimSets(0)=AnimSet'WP_LinkGun.Anims.K_WP_LinkGun_1P_Base'
      Animations=MeshSequenceA
      Scale=0.9
      FOV=60.0
   End Object

   // Pickup SkeletalMesh
   Begin Object Name=PickupMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_LinkGun_3P'
   End Object

   WeaponFireTypes(0)=EWFT_Projectile
   WeaponProjectiles(0)=class'UTProj_LinkPlasma'

   WeaponEquipSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_RaiseCue'
   WeaponPutDownSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_LowerCue'
   WeaponFireSnd(0)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_FireCue'
   WeaponFireSnd(1)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_AltFireCue'
   PickupSound=SoundCue'A_Pickups.Weapons.Cue.A_Pickup_Weapons_Link_Cue'

   MuzzleFlashSocket=MuzzleFlashSocket
   MuzzleFlashPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Primary'

   CrosshairImage=Texture2D'UI_HUD.HUD.UTCrossHairs'
   CrossHairCoordinates=(U=384,V=0,UL=64,VL=64)
}

무기 튜닝

무기 동작법을 조절하는 파라미터는 weapon 클래스 자체는 물론 사용되는 발사체 클래스를 포함한 여러 클래스에 많이 있습니다. 일반적으로 사용되는 파라미터나 코드측의 무기 함수등에 대한 설명은 Weapons Technical Guide KR 페이지를 참고하십시오.

유용한 콘솔 명령

무기 튜닝에 아주 쓸만한 언리얼 엔진 기능 중 하나는, editactor 콘솔 명령입니다. 무기를 사용하면서 콘솔에 editactor class=weapon 명령을 치면 속성창이 뜹니다. 여기서 무기를 사용하면서 볼 수 있는 파라미터를 거의 전부 만져볼 수 있으며, 반복처리를 매우 빠르게 할 수 있습니다.