캐릭터
개요
OVERDARE는 ODA(OVERDARE Deformable Avatar) 기반의 아바타 시스템을 제공합니다. 크리에이터는 ODA를 활용하여 별도의 캐릭터 구현 없이 게임을 제작할 수 있습니다. 오버데어는 Cage Mesh Deformer 기술을 이용해 다양한 신체 Part와 호환되는 의상 및 액세서리를 제작하고 적용할 수 있습니다.
캐릭터 유형
오버데어 UGC에는 두 가지 주요 캐릭터 유형이 존재합니다:
기본 캐릭터: 리그빌더(RigBuilder)로 생성되거나 외부에서 가져온 ODA 기반 캐릭터.
플레이어 캐릭터: 사용자가 오버데어 플랫폼에서 커스터마이즈한 의류와 액세서리를 장착하고 조작 가능한 아바타 캐릭터.
두 캐릭터 모두 ODA 기반으로 동작하며, 플레이어가 오버데어 플랫폼에서 제작한 캐릭터인지, 또는 크리에이터가 게임 내에서 생성한 캐릭터인지의 차이를 가집니다. 플레이어는 기본적으로 UGC 월드에서 자신의 아바타로 모험을 즐길 수 있습니다.
크리에이터는 게임의 특성과 콘셉트에 맞춰 NPC를 제작하거나, 플레이어 캐릭터를 크리에이터가 생성한 캐릭터로 대체할 수도 있습니다.
캐릭터 모델 구조
오버데어 캐릭터 모델은 다음과 같은 구조를 가지고 있습니다:
Model: 캐릭터 전체를 포함하는 최상위 오브젝트.
Humanoid: 캐릭터의 행동 및 상태를 관리.
HumanoidRootPart: 캐릭터 중심 역할을 하는 RootPart.
6개의 MeshPart: 머리(Head), 몸통(Torso), 양팔(RightArm/LeftArm), 양다리(RightLeg/LeftLeg).
Skeleton: 22개의 Bone으로 구성된 스켈레톤 구조.
캐릭터의 Part와 Skeleton 구조
오버데어 아바타는 6개의 BodyPart(머리, 몸통, 양팔, 양다리)와 Skeleton 구조를 기본으로 합니다.
6개의 MeshPart: 블록처럼 간단히 조립 가능하며, OVERDARE Studio에서 복잡한 리깅 작업 없이 외형을 교체할 수 있습니다.
스켈레탈 메시 변환: 게임 실행 시 6개의 메시가 하나로 병합되고, 22개의 Bone을 가진 스켈레탈 메시로 변환됩니다.
이를 통해 레고 블록처럼 외형을 손쉽게 조립하면서도 부드럽고 다이내믹한 애니메이션 구현이 가능합니다.
오버데어 아바타의 Bone 구조는 다음과 같습니다:
1
Root
캐릭터 중심의 바닥 위치
2
LowerTorsor
허리
3
UpperTorsor01
하복부
4
UpperTorsor02
상복부
5
Neck
목
6
Head
머리
7
LeftClavicle
좌측 쇄골
8
LeftUpperArm
좌측 상박
9
LeftLowerArm
좌측 하박
10
LeftHand
좌측 손
11
LeftItem
좌측 장비 위치
12
RightClavicle
우측 쇄골
13
RightUpperArm
우측 상박
14
RightLowerArm
우측 하박
15
RightHand
우측 손
16
RightItem
우측 장비 위치
17
LeftUpperLeg
좌측 허벅지
18
LeftLowerLeg
좌측 종아리
19
LeftFoot
좌측 발
20
RightUpperLeg
우측 허벅지
21
RightLowerLeg
우측 종아리
22
RightFoot
우측 발
Humanoid 시스템
Humanoid는 캐릭터의 행동과 상태를 정의하는 핵심 클래스입니다.
속성
DisplayDistanceType
Health
캐릭터의 현재 체력
JumpPower
캐릭터 점프 파워. 중력과 계산을 통해 최대 점프 높이가 결정됩니다.
MaxHealth
캐릭터의 최대 체력
RootPart
캐릭터 기준 Part (HumanoidRootPart)
WalkSpeed
캐릭터 걷는 속도
Humanoid State
Humanoid는 여러 상태(HumanoidStateType)를 지원하며, 각 상태에 따라 기본 애니메이션이 재생됩니다. 예를 들어, 점프 시 "Jumping", 낙하 시 "FreeFall" 상태가 활성화됩니다.
스크립트를 통해 상태를 강제로 변경하거나 특정 상태로 전이 되는 것을 막을 수 있습니다.
Humanoid의 주요 상태
1
Running
기본 상태이며, 이 상태에서 이동 또는 점프가 가능합니다.
2
Jumping
캐릭터가 점프하여 상승 중인 상태.
3
Freefall
캐릭터가 공중에서 하강 중인 상태.
4
Landed
캐릭터가 공중에서 바닥으로 내려온 상태.
5
Climbing
캐릭터가 물체를 등반 중인 상태.
6
Swimming
캐릭터가 수영 중인 상태.
8
Ragdoll
Ragdoll이 활성화된 상태.
9
Dead
캐릭터가 체력이 0이 되어 사망한 상태.
Humanoid State 제약
Humanoid:SetStateEnabled
함수를 통해 특정 상태의 전이를 제한할 수 있습니다.
예를 들어, Climbing이 가능한 Part 근처에 캐릭터가 접근하더라도 아래 코드로 해당 상태 전이를 방지할 수 있습니다
Humanoid State 변경
기본적으로 Humanoid State는 플레이어의 입력이나 Humanoid 속성에 따라 자동으로 전이됩니다.
예를 들어, Health
가 0이면 Dead 상태로 변경되고, 점프 버튼 입력에 따라 Jumping → Freefall → Landed → Running으로 상태가 전이됩니다.
Ragdoll State
Ragdoll은 "봉제인형"처럼 축 늘어진 캐릭터의 모습을 나타냅니다. 이 상태에서는 기존 애니메이션이나 플레이어 입력이 적용되지 않으며, 캐릭터는 Skeleton 구조를 기반으로 물리적인 힘에만 반응합니다.
Ragdoll 상태는 자동으로 전이되지 않으며, 스크립트를 통해 수동으로 전환해야 합니다. 상태 변경은 Humanoid:ChangeState
함수를 사용합니다:
Ragdoll 상태에서 다시 원래 상태로 돌아가려면 다음과 같이 강제로 상태를 변경해야 합니다.
Attachment
각 Bone에 매칭된 Attachment를 통해 이펙트 위치 지정, 액세서리 부착, 물리적 Constraint 적용 등이 가능합니다. Attachment는 Bone의 동적 움직임을 기준으로 작동하며, 크리에이터는 이를 통해 캐릭터 모델과 상호작용하는 아이템을 손쉽게 배치할 수 있습니다.
캐릭터 애니메이션
ODA 기반의 Bone(Skeleton) 구조를 통해 외부 프로그램에서 제작한 애니메이션을 사용할 수 있습니다.
애니메이션 제작
Blender 등 외부 프로그램에서 애니메이션을 제작할 때는 반드시 ODA Bone 구조와 일치하는 Skeletal Mesh를 사용해야 합니다. 제작한 애니메이션은 FBX 형식으로 내보내서 OVERDARE Studio에서 사용할 수 있습니다.
외부 애니메이션 가져오기
Import3D
버튼을 눌러 제작한 애니메이션 FBX 파일을 가져옵니다.
FBX 파일을 Import하면 스튜디오가 해당 애니메이션을 Creator Hub로 전송한 뒤 Asset ID를 발급하여, Workspace에 Animation 인스턴스로 추가합니다.
애니메이션 플레이
애니메이션을 재생하려면 Humanoid
의 Animator
를 이용하여 아바타의 애니메이션 트랙을 생성하고, 해당 트랙을 재생하면 됩니다.
Last updated