UDN
Search public documentation:
DevelopmentKitGemsCreatingAModularPawnKR
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
모듈식 폰(ModularPawn) 만드는 법
문서 변경내역: James Tan 작성. 홍성진 번역.
UDK 2011년 6월 버전으로 최종 테스팅, PC 와 iOS 호환
개요
방법
- 액터당 여러 스켈레탈 메시 컴포넌트 - 런타임에 스켈레탈 메시를 변경할 수 있어 가장 유연한 방법입니다. 그러나 각 스켈레탈 메시당 드로 콜이 추가되므로 퍼포먼스에 영향을 끼칠 수 있습니다.
- 메시 합성하기 (라이선시 전용) - 여러 메시를 합성하여 하나의 메시를 생성하는 방법입니다. 여기서는 이 방법을 다루지 않겠습니다.
관련 토픽
모듈식 폰 스크립팅
class ModularPawn extends UTPawn Placeable; // 머리를 나타내는 스켈레탈 메시. 부모 스켈레탈 메시 컴포넌트. var(ModularPawn) const SkeletalMeshComponent HeadSkeletalMesh; // 몸통을 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent TorsoSkeletalMesh; // 팔을 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent ArmsSkeletalMesh; // 허벅지를 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent ThighsSkeletalMesh; // 부츠를 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent BootsSkeletalMesh; // 왼쪽 숄더 패드를 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent LeftShoulderPadSkeletalMesh; // 오른쪽 숄더 패드를 나타내는 스켈레탈 메시. 머리 스켈레탈 메시 컴포넌트의 자식 입니다. var(ModularPawn) const SkeletalMeshComponent RightShoulderPadSkeletalMesh; defaultproperties { // UTPawn 에 정의된 스켈레탈 메시 제거 Components.Remove(WPawnSkeletalMeshComponent) // 애니메이션 시퀸스 생성 Begin Object class=AnimNodeSequence Name=AnimNodeSequence End Object // 머리 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=HeadSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false AnimTreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human' bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 애니메이션을 테스트할 수 있도록 애니메이션 노드 시퀸스 설정 Animations=AnimNodeSequence End Object HeadSkeletalMesh=HeadSkeletalMeshComponent Components.Add(HeadSkeletalMeshComponent) // 몸통 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=TorsoSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object TorsoSkeletalMesh=TorsoSkeletalMeshComponent Components.Add(TorsoSkeletalMeshComponent) // 팔 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=ArmsSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object ArmsSkeletalMesh=ArmsSkeletalMeshComponent Components.Add(ArmsSkeletalMeshComponent) // 허벅지 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=ThighsSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object ThighsSkeletalMesh=ThighsSkeletalMeshComponent Components.Add(ThighsSkeletalMeshComponent) // 부츠 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=BootsSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object BootsSkeletalMesh=BootsSkeletalMeshComponent Components.Add(BootsSkeletalMeshComponent) // 왼쪽 숄더 패드 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=LeftShouldPadSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object LeftShoulderPadSkeletalMesh=LeftShouldPadSkeletalMeshComponent Components.Add(LeftShouldPadSkeletalMeshComponent) // 오른쪽 숄더 패드 스켈레탈 메시 컴포넌트 생성 Begin Object Class=SkeletalMeshComponent Name=RightShoulderPadSkeletalMeshComponent bCacheAnimSequenceNodes=false AlwaysLoadOnClient=true AlwaysLoadOnServer=true bOwnerNoSee=true CastShadow=true BlockRigidBody=true bUpdateSkelWhenNotRendered=false bIgnoreControllersWhenNotRendered=true bUpdateKinematicBonesFromAnimation=true bCastDynamicShadow=true RBChannel=RBCC_Untitled3 RBCollideWithChannels=(Untitled3=true) LightEnvironment=MyLightEnvironment bOverrideAttachmentOwnerVisibility=true bAcceptsDynamicDecals=false bHasPhysicsAssetInstance=true TickGroup=TG_PreAsyncWork MinDistFactorForKinematicUpdate=0.2 bChartDistanceFactor=true RBDominanceGroup=20 MotionBlurScale=0.0 bUseOnePassLightingOnTranslucency=true bPerBoneMotionBlur=true // 부모 애니메이션 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. // 스켈레탈 메시 컴포넌트가 하나인 것처럼 폰이 애니메이팅할 수 있도록 해 줍니다. ParentAnimComponent=HeadSkeletalMeshComponent // 그림자 부모 컴포넌트를 머리 스켈레탈 메시 컴포넌트에 할당. 그렇게 하는 이유는 // 이 폰의 그림자 렌더링 속도를 높이고 그림자가 겹치지 않도록 하기 위해서 입니다. ShadowParent=HeadSkeletalMeshComponent End Object RightShoulderPadSkeletalMesh=RightShoulderPadSkeletalMeshComponent Components.Add(RightShoulderPadSkeletalMeshComponent) }