UDN
Search public documentation:
SettingUpVehiclesKR
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
日本語訳
中国翻译
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 작성. Jeff Wilson 업데이트. 홍성진 번역.
비히클 모델링 - 셋업과 리깅
- 루트 본은 메인 리짓 섀시에 웨이팅되어 있어야 합니다.
- 비히클의 아래쪽은 +X축을, 위는 +Z 축을 향해야 합니다. 그리고 루트 '섀시' 본도 아래쪽은 +X축을, 위는 +Z 축을 향해야 합니다. 본을 추가하기 전에 비히클 방향을 바르게 하는 것이 좋습니다.
- 다른 바퀴 및 서스펜션 본은 섀시 본의 직계 자손이어야 합니다. 바퀴 본을 서스펜션 본의 자식으로 만들지 말고 섀시의 자식으로 놔두십시오.
- 바퀴를 회전(rotate=roll+steer) 시키고자 하는 곳에 각 타이어 본을 배치하십시요. 본의 한 축은 roll 축을, 다른 한 축은 steering 축을 향하게 해야 합니다 (메시를 임포트한 다음 애님트리 셋업시 엔진에 어떤 축을 사용할지 알려야 합니다).
- 비히클을 익스포트할 때는, 서스펜션이 최대로 뻗친 곳까지 바퀴 본이 내려가는지 확인하십시요.
- 어떤 무기도 (같은 본이든 별도의 본이든) Pitch와 Yaw 로 회전 가능한 본을 필요로 합니다. 좌석 수가 여럿인 비히클에 대해서는, 각 좌석에 본이 있어야 (표시되는 경우) 탑승자를 부착시키는 기준이 될 수 있습니다. 또한 비히클이 사용하는 카메라와 (총구 섬광, 발사체 스폰, 분출 효과, 피해 효과 등의) 효과에도 부착시킬 소켓이 필요합니다. 많은 경우 소켓이 위치할 딱 그 위치에 본이 필요하지는 않지만, 그렇게만 되어 있다면야 소켓 셋업이 훨씬 빨라집니다.
비히클 익스포트
비히클 임포트와 셋업
피직스 애셋 만들기
일단 엔진에 비히클 메시를 임포트하고나면, 그에 대한 콜리전 모양을 정의하기 위한 피직스 애셋을 만들어야 합니다. 그 작업은 PhAT(Physics Asset editing Tool)를 사용해야 합니다. 비히클과 관련해서 피직스 애셋에 중요한 딱 하나의 바디는 루트 '섀시' 본입니다. 다른 본에 대해서는 피직스 바디를 만들 필요가 없습니다. 즉 바퀴에 대해서는 조인트를 만들 필요가 없는 것입니다. 바퀴 시뮬레이션은 전부 비히클 피직스 코드에 의해 처리됩니다. 섀시 바디만 피직스 오브젝트로 만들어지며, Vehicle 콜리전으로 사용되는 것입니다. 피직스 애셋은 선 검사와 Vehicle에 대한 플레이어 콜리전 용으로 사용되기에, 다른 본에 대한 콜리전 모양이 좀 더 정확한 콜리전을 갖도록 만드는 것이 좋을 것입니다. 그 본이 (문, 뚜껑, 터렛 등) 움직이는 것이라면 더욱 그러합니다. 게임에서 Vehicle의 질량과 관성은 섀시 콜리전 지오메트리의 볼륨, 섀시 BodySetup 에 적용된 PhysicalMaterial 의 Density 프로퍼티에 따라 달라집니다. 게임 내에서 Vehicle의 질량을 변경하려면 PhysicalMaterial 을 변경하거나, 섀시 BodySetup 의 MassScale 프로퍼티를 조절하면 됩니다.애님 트리 만들기
Vehicle에 애니메이션을 재생할 계획이 없더라도, 정상 작동하게 만들려면 애님트리를 만들어 줘야 합니다. 왜냐하면 애님트리는 게임에서 순차적으로 개별 본을 움직이는 데 필요한 SkelControl 도 포함되어 있기 때문입니다. UE3 Vehicle 시스템은 내재된 시뮬레이션에 일치시키고자 바퀴 본을 움직이는 특수형태의 본 콘트롤러를 사용합니다. SkelControl 에 대한 세부 정보는 스켈레탈 콘트롤러 사용하기 페이지를 참고하시기 바랍니다. 기본 AnimTree 셋업 및 에디터 사용법에 대한 세부 정보는 애님트리 에디터 유저 가이드 페이지를 참고해 주시기 바랍니다.바퀴 셋업하기
`WheelDisplacement', `WheelRoll', `WheelSteering' 세팅은 단지 시각적인 것들이어서, 에디터에서는 사물들이 바른 축의 바른 방향으로 움직이는 것을 볼 수 있습니다. Vehicle의 퍼포먼스나 한계를 실제로 변경하지는 않습니다. `WheelMaxRenderDisplacement' 세팅은 Z 축으로의 옮기기(translation) 한계를 설정합니다. 이는 서스펜션의 이동 범위를 결정합니다. 그래서 `WheelDisplacement' 에 값을 입력하면 바퀴가 이동가능한 상한선을 시각적으로 결정하는 것입니다. 그리고 `WheelMaxRenderDisplacement'에 그 최종 값을 입력하면 이 값이 한계로 설정됩니다. 게임에서 Vehicle을 사용하는 동안 바퀴는 0에서 `WheelMaxRenderDisplacement'에 지정된 값 사이를 오르락 내리락 합니다. 나머지 설정들을 사용해서 Roll축과 Steering축을 변경하거나 거꾸로 만들 수 있습니다. SkelControlWheel의 ControlName 프로퍼티도 설정해야 합니다. 이 값은 시뮬레이션에 전달되며, 그럼으로써 시뮬레이션은 Vehicle이 운행될 때 어떤 콘트롤을 업데이트 할 지 알게 됩니다.서스펜션 본 셋업하기
Vehicle을 운전하면서 바퀴를 움직이기 위한 콘트롤은 물론, 서스펜션 암을 제어하는 본에도 콘트롤을 추가시키면 좋을 것입니다. `look at' 콘트롤러라 불리는 SkelControl 타입이 있는데, 이는 본이 항상 한 축을 가리키면서 공간상의 다른 오브젝트, 본, 지점을 향하도록 하는 것입니다. 이 노드는 서스펜션 본을 제어하는 데 사용됩니다. 파란 다이아몬드 모양이 조준 대상입니다. `TargetLocationSpace' 세팅은 조준 대상이 다음 중 어디에 상대적인지를 나타냅니다: 자신, 부모, 액터 공간, 월드 공간, (여기서는) 다른 본. 조준하려는 본 이름을 `TargetSpaceBoneName' 에 입력하십시오. `Target Location' 설정은 그 `Target Location Space' 설정과 관계된 조준 대상의 위치를 오프셋합니다. 또한 SkelControlSingleBone 노드를 LookAt 노드 뒤에 연결함으로써 조준을 오프셋시켜 서스편션 본의 회전을 오프셋시킬 수도 있습니다. LookAtAxis 또는 UpAxis 가 3D 패키지에서와는 달리 align 되어 있다면, 바꾸거나 반전시킬 수 있습니다. 서스펜션의 복잡도에 따라 LookAt 노드와 SingleBone 노드를 사용하여 피스톤과 달리 연결된 이동 부속을 만들 수 있습니다. 또 LookAt 노드는 휀더처럼 바퀴에 연결되어 있는, 스티어링과 함께 회전하고 서스펜션와 함께 움직이기는 해야 하지만, 앞으로 또는 뒤로 맴돌아(spin)서는 안되는 부품의 회전을 취소하는데도 쓰입니다. 이를 위해서는 바퀴본을 부모로 가지고 있지만 정확히 같은 장소에 있는 본을 추가합니다. 휀더 메시를 이 본에 바인드합니다. 또 하나의 본을 바퀴본의 바로 위에 추가합니다. 이 본이 휀더가 겨냥할 대상입니다. AnimTree에서 휀더 본에 LookAt 제약을 추가, 휀더를 겨냥하는 본을 겨냥하도록 합니다. LookAt 노드의 설정에서, LookAt Axis 와 Up Axis 를 둘 다 Z로 설정합니다. 휀더 본은 이제 서스펜션이 이동하는 동안 바퀴 본와 함께 움직이고 돌아가지만 맴돌지는 않습니다.Damage 노드 셋업하기
UTVehicle 클래스를 확장하는 Vehicle 은 현지화된 대미지 시스템을 활용할 수 있습니다. 이를 통해 차량 피해가 생긴 곳에 점진적인 대미지 표시가 가능합니다. 이 시스템은 모프 타겟은 물론 특수 스켈레탈 콘트롤러 UTSkelControl_Damage, UTSkelControl_DamageHinge, UTSkelControl_DamageSpring 노드를 활용합니다.Morph 노드
피해를 입어가며 멀쩡한 메시와 피해입은 메시를 혼합하는 식으로, 모프 타겟을 Vehicle 외형을 변경하는 데 사용할 수 있습니다. 보통 대미지를 개별적으로 입히려는 각각의 부분의 각 부분마다 하나의 모프 타겟을 둡니다. 예를 들어 차량형 Vehicle 의 경우 후드, 양쪽 휀더, 후면, 각 문짝 등에 대해 모프 타겟을 두는 것이 좋습니다. 이런 식으로 다른 차량이 전면 좌측 휀더에서 달려든 경우, 대미지 시스템은 그 모프 타겟으로 블렌드 인 시켜, 그 휀더만 피해입은 것처럼 보이게 만들 수 있습니다. 모프 타겟 임포트에 대한 것은 Vehicle 임포트와 셋업 부분에서 다루었습니다. 비히클에 모프 타겟을 임포트하고 준비가 되면, 애님트리에서 셋업해 줘야 합니다. 먼저 각 모프 타겟에 대해 MorphNodePose 를 만들어야 합니다. 이 노드의 Morph Name 프로퍼티는 어떤 모프 타겟을 제어하는지를 나타냅니다. 다음으로 MorphNodeWeight 를 추가해야 합니다. 이 노드는 MorphNodePose의 모프 타겟이 일정 시간에 얼마만큼이나 블렌딩되는지 나타냅니다. MorphNodePose 는 MorphNodeWeight 로 연결해야 하며, 또 차례로 베이스 AnimTreenode 상의 Morph 링크로 연결해야 합니다. MorphNodeWeight 에 NodeName 프로퍼티를 사용하여 이름도 지어줘야 하는데, 프로그래머가 스크립트에서 참조할 것이기 때문입니다. 이 프로세스는 대미지 시스템에서 사용된 모프 타겟마다 해 줘야 합니다.Damage 노드
스켈레탈 콘트롤러는 Vehicle 일부가 피해를 입어 파손될 때는 물론, 파괴될 때 폭발하게 하는 데도 사용 가능합니다. 기본 대미지 콘트롤러는 UTSkelControl_Damage 입니다. 이 뉴ㅗ드는 주로 Vehicle 이 죽을 때 파손된 비히클 부속 스폰을 담당하나, vehicle 에 피해가 누적되어감에 따라 파손 부품을 스폰하는 데도 쓸 수 있습니다. UTSkelControl_DamageHinge 및 UTSkelControl_DamageSpring 노드는 주로 Vehicle에 피해가 쌓이면서 일부가 떨어져 나가도록 하는 데 사용됩니다. 관련된 차량 부속이 떨어져 나가기 전에 (사용되는 노드형이 힌지냐 스프링이냐에 따라) 덜그럭거리거나 느슨해 보이도록 하는 기능도 가능합니다. 노드가 특정 본에 연결되고, 그 본 위치에 (또는 다른 본보다 여기에 가깝게) 대미지가 발생하면 관련된 대미지 콘트롤러에 적용될 것입니다. UTSkelControl_Damage, UTSkelControl_DamageHinge, UTSkelControl_DamageSpring 노드에 관련된 프로퍼티가 여럿 있습니다: Damage 대미지- On Damage Active 대미지시 활성화 - 참이면 damage and breaking 함수성이 이 콘트롤에 켜집니다.
- Control Str Follows Health 제어력이 체력을 따름 - 참이면 활성화된 제어력은 콘트롤러의 현재 체력에 의해 결정됩니다. 거짓이면 활성화시 제어력은 항상 최대 크기입니다.
- Damage Bone Scale 대미지 본 스케일 - 콘트롤러가 분리될 때 연결된 본에도 설정할 스케일입니다. 보통 (0,0,0)이면 부속을 완전히 숨깁니다.
- Damage Max 최대 대미지 - 사망 전까지 버틸 수 있는 대미지 양이며, 본질적으로 콘트롤러의 최대 체력입니다.
- Activation Threshold 활성 한계치 - 콘트롤러가 활성 상태로 있을 수 있는 체력 비율 (현재 체력 / 최대 체력) 입니다.
- Break Mesh 파손 메시 - 이 콘트롤러가 파손될 때 스폰시킬 스태틱 메시입니다.
- Break Threshold 파손 한계점 - 이 이상의 제어력이어야 콘트롤러가 파손되어 보이기 시작합니다.
- Break Time 파손 시간 - 파손 시작서부터 완전히 파손될 때까지 걸리는 총 기간입니다.
- Default Break Dir 디폴트 파손 방향 - 파손된 부분의 속도를 결정하는 데 사용되는 방향입니다.
- Damage Scale 대미지 스케일 - 스폰된 비히클 부속에 사용할 스케일입니다. 비히클 반대편의 여러 부속에 사용되는 동일 스태틱 메시를 미러링하는 데 좋습니다.
- PS_Damage On Break PS_파손시 대미지 - 콘트롤러 파손시 스폰시킬, 작은 폭발효과같은 피티클 시스템입니다.
- PS_Damage Trail PS_대미지 흔적 - 떨어져 나간 부속에 흔적으로 부착시킬, 연기 흔적 효과같은 파티클 시스템입니다.
- On Death Active 사망시 활성화 - 참이면 이 콘트롤러에 death breaking 함수성이 켜집니다.
- On Death Use For Secondary Explosion 사망시 두 번째 폭발에 사용 - 참이면 이 대미지 콘트롤은 비히클의 첫 번째 사망이 아닌 두 번째 사망 폭발시 사용됩니다.
- Death Percent To Actually Spawn 실제 사망 스폰율 - 비히클이 죽을 때 이 콘트롤이 파손된 부위를 실제로 스폰시킬 확률(0 에서 1)입니다.
- Death Bone Scale 사망 본 스케일 - 콘트롤러가 분리될 때 연결된 본에도 설정해 줄 스케일입니다. 보통 (0,0,0)이면 부속을 완전히 숨깁니다.
- Death Static Mesh 사망 스태틱 메시 - 이 콘트롤러가 죽을 때 스폰시킬 스태틱 메시입니다.
- Death Impulse Dir 사망 충격 방향 - 파손된 조각의 속도를 결정하는 데 사용되는 방향입니다.
- Death Scale 사망 스케일 - 스폰된 비히클 부속에 사용할 스케일입니다. 비히클 반대편의 여러 부속에 사용되고 있는 동일 스태틱 메시를 미러링하는 데 좋습니다.
- PS_Death On Break PS_파손시 사망 - 사망시 콘트롤러가 분리될 때 스폰시킬, 작은 폭발 효과같은 파티클 시스템입니다.
- PS_Death Trail PS_사망 흔적 - 떨어져나간 부분에 흔적으로 부착시킬, 연기 흔적 효과같은 파티클 시스템입니다.
소켓 셋업하기
소켓이란 이미 앞서 말한바와 같이, 플레이어 카메라나 총구 섬광은 물론 비히클에 필요할 수도 있는 다양한 부가 효과를 추가하기 위한 부착점으로 사용됩니다. 소켓이란 본질적으로 특정 본에 부모가 되는 로케이터로, 이름을 짓고 오프셋시켜 개별적으로 회전을 줄 수도 있습니다. 이를 통해 특정 위치에 아이템을 쉽게 부착하거나 스폰시킬 수 있습니다. 소켓은 언리얼 에디터 내 애님세트 에디터에서 스켈레탈 메시에 추가합니다. 툴바의 버튼을 누르면 소켓 매니저가 열립니다. 버튼으로 메시에서 사용가능한 본이 전부 나열되는 대화창이 새로 열립니다. 메시의 총신 끝에 추가된 본을 선택하고 OK 를 누릅니다. 그러면 코드에서 새 소켓 식별용으로 사용되는 이름을 지을 수 있는 창이 열립니다. 이름을 입력하고서 OK 를 눌러 새 소켓을 추가합니다. 애님세트 에디터의 미리보기 패널과 소켓 매니저의 소켓 목록에 나타날 것입니다. 보여드린 예제는 터렛을 제어하는 탑승자용 카메라에 부착시킬 로케이터로 사용될 것입니다. 다른 소켓은 각 무기 배럴 끝과 효과가 필요할 수도 있는 다른 곳에 추가될 것입니다. 아래의 예제 Vehicle 은 필수 소켓을 전부 추가한 모습입니다.발사체 만들기
발사체(프로젝타일)란 무기 발사를 물리적으로 표현한 것입니다. 언리얼에서 발사체의 시각적 성분은 단지 파티클 시스템입니다. 발사체용 파티클 시스템 만들기란 여타 파티클 시스템 만들기와 다를 바 없는 단순한 작업입니다. 본질상 발사체의 비행중 모습을 나타내도록 파티클 시스템을 셋업하고 싶을 것입니다. 원하는 효과를 내는데 필요한 만큼의 이미터로 파티클 시스템을 구성할 수 있습니다. 발사체 파티클 시스템의 예제는 아래와 같습니다:총구 섬광 셋업하기
총구 섬광(Muzzle flash)은 무기의 총신에서 뿜어져 나가는 발사체를 흉내내는 데 사용됩니다. 현실에서도 총을 발사할 때 보게 되는 섬광처럼 말입니다. 언리얼의 웨폰 시스템은 총구 섬광의 시각 성분으로 파티클 시스템을 사용합니다. 발사체와 마찬가지로, 총구 섬광용 파티클 시스템도 필요한 만큼의 이미터로 구성할 수 있습니다. 총구 플래시 파티클 시스템의 예제는 아래와 같습니다:프로그래머용
- SkeletalMesh 이름.
- PhysicsAsset 이름.
- AnimTree 이름.
- 각 바퀴 본 이름.
- 각 SkelControlWheel 이름.
- 각 바퀴 반경.
스크립트 파일 작성
다음은 Vehicle에 필요한 모든 정보를 어떻게 UnrealScript 클래스 파일(.uc)에 기록하는지 보여주는 예입니다.// MyVehicle.uc 로 저장 class MyVehicle extends SVehicle; defaultproperties { Begin Object Name=SVehicleMesh SkeletalMesh=SkeletalMesh'VehiclePackage.VehicleMesh' AnimTreeTemplate=AnimTree'VehiclePackage.VehicleAnimTree' PhysicsAsset=PhysicsAsset'VehiclePackage.VehiclePhysAsset' End Object Begin Object Class=SVehicleWheel Name=RRWheel BoneName="R_R_Tire" SkelControlName="R_R_Tire_Cont" WheelRadius=25 End Object Wheels(0)=RRWheel }
퍼포먼스: 비히클 튜닝
비히클을 다루는 콘트롤은 많이 있습니다. 일부는 각 SVehicleWheel 오브젝트에 있는 바퀴별 파라미터인 반면, 전체 비히클에 영향을 끼치는 것들은 SVehicle 및 SVehicleSim 오브젝트에 있습니다. 각 파라미터에 대한 설명은 Vehicles Technical Guide KR 페이지를 참고하시기 바랍니다.유용한 콘솔 명령
비히클 튜닝에 매우 유용한 언리얼 엔진 기능 중 하나는editactor
콘솔 명령입니다. 비히클을 운전하면서 콘솔에 editactor class=svehicle
이라 치면 프로퍼티창이 뜹니다. 운전하면서 거의 대부분의 파라미터를 조정할 수 있으니 반복처리가 매우 빨라집니다.