반응형

 

*본 가이드는 4.6때 작성된것으로 최신버전과는 다소 차이가 있을수 있습니다.

**주인공 캐릭터 만들기 2번째

애니메이션 블루 프린트 만들기​



1. 주인공이 사용할 모션을 임포트해 옵니다.

​- 필수적으로 필요한 모션은 이동 모션(상,하,좌,우)과 대기모션과 발사모션입니다.

애니메이션 관련 문서

https://docs.unrealengine.com/latest/KOR/Engine/Animation/Sequences/index.html







2. 캐릭터 블루프린트를 제작하면서 사용된 원본 모델의 스켈레톤을 설정합니다.

블루프린트를 생성하려고 하면 스켈레톤 설정 화면이 나옵니다.

- 애니메이션 블루 프린트 파일. 이 녀석은 특이하게 주황색입니다. 

 

 


3. 주인공의 이동모션에 사용될 앞,,,우 모션을 블렌드 스페이스로 만들어 설정해 준다.


이미지를 클릭하시면 원본으로 보실수 있습니다.


- 필요한 모션들을 드래그앤 드랍으로 블렌드 제어창으로 넣을 수 있습니다. 여기에 필요한 대기, 이동관련 모션들을 넣어줍니다.


 



4. 주인공의 총구겨냥포즈에 사용될 앞,,,우 모션을 Aim Offset으로 만들어 설정해 준다.

 

- AimOffset은 강력한 포즈 저장기능이라 MeshSpace 형식으로 되어 있는 모션만 불러와서 사용할수 있다. 사용할 모션들을 전부 MeshSpace 형태로 바꿔줍니다.


 - 여기서도 필요한 모션들을 드래그앤 드랍으로 블렌드 제어창으로 넣을 수 있습니다. 여기에 필요한 각 방향별 Aim 모션을 불러옵니다.

 



 

5. 위 두가지 제어가 끝나면 다시 애니메이션 블루프린트로 가서 애님 스테이트를 만들어 준다.

(1) 기본 스테이트 머신 추가​

스테이트머신이 만들어진다.

생성 완료후 서로 이어준다.


 

 (2) New State Machine 을 더블클릭후 스테이트머신 제어창으로 들어간다.

- 그러면 비어있는 Entry라는 스테이트 연결고리가 나온다.​


(3) Entry에서 화살표방향으로 마우스를 드래그앤 드랍을 한 후 MOVE 라는 스테이트를 추가한다.


-Move에 대한 스테이트를 제작할거라 Move라고 이름지어줍니다.(이름은 자유입니다~)​



 (4) Move로 제작된 스테이트 머신을 다시 더블클릭해서 스테이트 제어창으로 들어와 위에서 제작했던 블렌드 스페이스와 에임 오프셋을 드래그앤 드랍으로 창에 올려 넣는다.

이미지 클릭하시면 원본으로 보실수 있습니다.



-여기까지 들어오면 이제 스테이트머신에서 모션 연결의 최종단계까지 왔습니다.


6. 블렌드 스페이스와 에임 오프셋에 사용된 변수값을 블루프린트에서도 선언하여 같은 구조로 움직이도록 설정한다.

  

방향, 속도, z축(Yaw),y축(pitch)에 대한 변수를 Float형으로 선언~


- 선언된 변수들을 스테이트창으로 드래그 하여 GET으로 얻어온다.


- 이제 마지막으로 아래 그림처럼 서로 연결해 주면 마무리 된다.




이동속도와 회전 의 변수값을 넣어보면서 캐릭터가 프리뷰창에서 원하는 대로 움직이는지 확인한다.


 

 

 

7. 애님 스테이트 제작이 끝났다면 이벤트 그래프로 가서 캐릭터 블루 프린트 값을 형변환으로 불러와 위치 제어 함수를 블루프린트로 제작해 준다. 

 


- 이동과 회전에 대한 블루프린트

(블루프린트의 제작 공정에 대한 자세한 코멘트는 생략합니다.)

이미지 클릭하시면 원본으로 보실수 있습니다.



- 캐릭트 블루프린트에서 움직임이 일어났을때 방향과 속도에 어떤식으로 영향을 끼칠지에 대한 함수입니다. 속도와 방향을 벡터로 변환해주고 기존에 선언했던 변수들의 값을 얻어온 값으로 SETTING해 줍니다.




- 총구 겨냥에 대한 블루프린트

(블루프린트의 제작 공정에 대한 자세한 코멘트는 생략합니다.)

이미지 클릭하시면 원본으로 보실수 있습니다.


- 캐릭트 블루프린트에서 마우스 회전이 일어났을때 총구 방향에 어떤식으로 영향을 끼칠지에 대한 함수입니다. 여기서도 방향을 벡터로 변환해주고 기존에 선언했던 변수들의 값을 얻어온 값으로 SETTING해 줍니다.

 

 

여기까지 제작후 컴파일후 에러가 없으면 완료된겁니다.

 


8. 애님블루 프린트 제작이 끝나면 캐릭터 블루 프린트에서 사용할수 있도록 디폴트 창을 열어 방금 제작한 애님 블루 프린트를 연결해 준다.

 이미지를 클릭하시면 원본으로 보실수 있습니다.


 

처음 해보시는분은 워낙 절차가 많아서 어렵고 복잡하게 느끼실수 있으실거 같네요..


블루 프린트 설정에 대해서는 언리얼 문서를 참조하시면 많은 도움 받으실거에요~

https://docs.unrealengine.com/latest/KOR/Engine/Animation/AnimBlueprints/index.html

여기까지 애니메이션 블루 프린트의 제작 방식이었습니다.

반응형
반응형

**본 가이드는 언리얼4.6에서 제작한거라 최신버전과는 다소차이가 있을수 있습니다.

 

언리얼엔진의 강력한 기능중 하나가 주인공 캐릭터 제작이 타 엔진보다 간편하다는 점입니다.

하지만, 언리얼엔진을 자주 접해 보지 않은 사람에게는 결코 쉽지 않아 보이기도 합니다.

항상 느끼지만 알기 전까진 어렵다가 알고 나면 쉬운게 언리얼엔진인거 같아요..ㅎㅎ

주인공 캐릭터 제작방식에 대해서 3개의 카테고리로 나눠 살펴보고자 합니다.

**메시 임포트 같은 기본적인 사항은 문서를 참조하도록 하고 넘어가도록 하겠습니다.

**총알 발사나 무기 장착 같은 테크닉에 대해서는 잠시 예외로 하고 추후에 다루도록 하겠습니다.


주인공 캐릭터를 만들기 위해 필요한 파일은 3가지입니다.

  

캐릭터 블루 프린트

 

애니메이션 블루 프린트

 

게임모드 블루 프린트



이 시간에는 주인공 캐릭터를 만들기 위해 가장 뼈대가 되는

캐릭터 블루 프린트 제작 방식 에 대해서 살펴 보겠습니다.



1.주인공으로 사용될 스켈레탈 메시 파일을 임포트 합니다.

기본적으로 메쉬, 피직스 에셋, 스켈레톤 세개의 파일이 생성됩니다.


스켈레탈 메시 임포트에 대한 언리얼 문서 -

https://docs.unrealengine.com/latest/KOR/Engine/Content/FBX/SkeletalMeshes/index.html


2.주인공 스켈레탈 메시를 제어할 캐릭터 블루프린트를 생성해 줍니다.

파일을 생성할 창에서 오른쪽 마우스 -> 블루프린트-> 캐릭터로 들어가 생성후 보기 편한 이름으로 지정해 줍니다.



이 예제에서는 여자주인공을 사용하기 때문에 Women_BP 라는 이름으로 설정합니다.

프리뷰에서 색깔별로 어떤 에셋인지 구분하도록 되어 있습니다.

블루프린트는 이름답게 파란색으로 되어 있네요~





 


3. 블루프린트 -> 컴포넌트 에서 사용할 메쉬와 카메라를 설정해 줍니다.


(1) 캐릭터 설정

​- 메시에 대상 캐릭터를 선택후 화살표 버튼을 눌러서 넣어줍니다.


- 메시가 바운더리 박스와 같은 위치에 있도록 위치값을 맞춰 줍니다.

- 메시가 Arrow(하늘색 화살표 방향)와 일치하도록 회전해 줍니다.



(2) 카메라 설정

컴포넌트 추가 -> 스프링 암

스프링암을 부모로 하여 하위에 카메라를 연결해 줍니다.

스피링암 추가후 카메라 추가


-  일반 카메라를 넣어도 되고 스프링 암 카메라를 넣어도 되지만, 스프링 암 컴포넌트는 부모와 자손에 일정한 거리를 유지해주며 충돌이 생기면 벽을 뚫고 나가는 것을 방지해주는 컴포넌트입니다.


- 카메라의 위치값을 설정하여 주인공을 바라보는 뷰를 정해 줍니다.



수치로 설정해 주면 되는데 실시간으로 화면을 보면서 설정하고 싶다면, 현재까지 설정한 캐릭터 블루 프린트 파일을 컴파일 후 저장한 다음 레벨(씬)에 올려 실시간으로 카메라 위치를 변경할 수 있습니다.


 

 


4. 편집 -> 프로젝트 셋팅 -> 입력으로 가서 키보드입력에 대한 설정을 해줍니다.

​- 입력에 대한 정보를 얻어 오기 위해 키보드 입력을 직접 설정할 수 있습니다.

-MoveForward의 Scale 값은 캐릭터의 움직이는 값입니다.



- 전부 만들기 힘들다면 다른 프로젝트에서 구성된 입력을 익스포트하여 임포트로 불러와서 사용해도 무방합니다.



5. 블루프린트 코딩 - 아래 그림을 참조하셔서 코딩해 줍니다.


 

전진버튼을 누르면 Action Mappings의 입력제어에 캐릭터의 새로운 벡터값을 구해 무브먼트를 설정하는 구조.


 


마우스를 회전하면 Axis Mapping의 축 변환에 따라 캐릭터의 새로운 로테이션값을 구해 무브먼트를 설정하는 구조.

 

오른쪽 마우스를 눌렀을때 화면이 변경하도록 하는 설정 - 바이오하자드 방식을 따라했습니다.



스마트폰 화면 터치 입력 - 모바일 컨트롤러 지정 

터치를 실행하기 위해서는 회전과 전진에 대한 Float형 변수를 먼저 선언해야 합니다.




 그 외에 총알 발사나 무기 변경 같은 함수도 캐릭터 블루 프린트에서 지정할수 있지만, 그 부분에 대해서는 마지막 시간에 다뤄보도록 하겠습니다.


여기까지 캐릭터 블루 프린트의 제작방식이이었습니다.

다음에는 애니메이션 블루프린트 제작에 대해서 살펴보겠습니다.  To be Continue..

 

반응형
반응형

언리얼 튜토리얼에 올라온 비헤이비어 트리 쿽스타트 가이드를 토대로

평소에는 천천히 돌아 다니다가 주인공을 만나면 속도를 내서 달려올수 있도록 함수를 추가해 봤습니다.

https://docs.unrealengine.com/latest/KOR/Engine/AI/BehaviorTrees/QuickStart/index.html

 

 

블루프린트 함수 추가 내용

1. AI 캐릭터 추가 내용 - 일반 속도를 60으로 규정하는 함수 추가. speed rate 값을 캐싱하여 속도 조절 가능

 

2. 일반이동 BTT 추가내용

-문서에서는 기본으로 제공하는 노드로 구성되어 있는데, 그 부분을 제거하고 아래 내용을 추가해주면 됩니다.

원본 - https://docs.unrealengine.com/latest/KOR/Engine/AI/BehaviorTrees/QuickStart/12/index.html

 

 

3.  주인공을 만났을때의 BTT 추가내용

원본 - https://docs.unrealengine.com/latest/KOR/Engine/AI/BehaviorTrees/QuickStart/10/index.html

원본BTT에 아래 내용만 추가하면 됩니다.

 

 

4. 원본에서 비헤이비어 트리 구조 변경

원본에는 기본 트리를 사용하기 때문에 여러가지 조건문이 붙지만, 함수안에 이동 조건을 걸어놨기 때문에

필요없는 부분들이 생겼습니다.

원본 구조 - https://docs.unrealengine.com/latest/KOR/Engine/AI/BehaviorTrees/QuickStart/12/index.html

변경 구조


 

 

완료영상

 

 

반응형
반응형

스켈레탈 메시를 처음 생성하면 피직스 에셋이 자동 생성됩니다.

자동 생성이 안됐어도 스켈레탈 메시를 누르고 피직스 추가를 하면 피직스를 새로 만들수 있습니다.

 

자동 생성된 피직스는 모양과 크기가 제대로 설정되어 있지 않아 시뮬레이션 결과가 엉망으로 나옵니다.

처음 생성했을때의 피직스 모양 - 모양과 크기가 엉망입니다..

피직스 셋팅이 안된 상태의 시뮬레이션 영상 -  아 흉해라.. 

 

이 상태로 게임에 쓸수 없기에 각 관절마다 피직스 셋팅을 해줘야 합니다.

 

설정가이드

1. 각 관절이 전부 Sphyl 형태로 되어 있는데, 계산이 많이 필요한 허벅지나 양쪽 팔등만 설정하고 나머지는 Box 형태로

설정해 줍니다.

 

2. 관절형태를 설정후 크기 및 방향등을 재설정해 줍니다.

-각 관절이 겹치게 될경우 물리 계산이 꼬이게 되므로 서로 겹치지 않도록 하고 사이즈가 너무 크지 않고 설정해 줍니다.

 


3. 각 관절별 사이즈 조절이 끝나면 컨스트레인트 각도 설정을 해줘야합니다.

- 관절 사이즈보다 컨스트레인드 각도와 위치가 더 큰영향을 끼치게 되므로 많은 테스트가 필요한 부분입니다.

여기서 각 관절이 얼마만큼 꺽이도록 할것인지 설정하고, 방향은 어느 쪽으로 향하는지 등을 설정할 수 있습니다.

여기서 주의할 점은 컨스트레인트는 한번 삭제하면 복구하기가 굉장히 까다롭기 때문에(거의 다시 만들어야함..)

삭제할때 신중을 기해야 합니다.

 

4. 새로 셋팅된 피직스형태

 

 

위와 같이 셋팅을 마치고 나면 아래처럼 시뮬레이션이 출력됩니다. 아직 완벽하진 않지만, 점점 좋아질것을 기대하며.. 

 

오늘 처음 해본거라 아직 셋팅이 완벽하지 않아 여전히 부족한 부분이 있지만, 앞으로 많은 테스트를 거치다 보면

이쁜 결과물을 충분히 만들어 낼수 있을거라 기대합니다.

앞으로 배포될 APK에 일단 주인공만 포함될 예정이며 좀더 연구해 본후 몬스터에도 적용시킬지 검토중입니다.

 

반응형
반응형

 

 

 

 

 

 

 

언리얼 파츠 작업시 유의사항

- 스켈레탈 메시인경우 맥스에서 여러개의 모델로 디테치가 되어 있어도 언리얼로 임포트를 하면 메시가 전부 컴바인되어 임포트 됩니다.(스태틱 메시는 나뉘어서 부르는게 가능)

따라서 파츠를 나눌 부분은 맥스에서 익스포트시 따로 선택하여 익스포트 한후 언리얼로 임포트 해 올때 원본 모델의 스켈레톤과 피직스를 공유 받으면 파츠별로 붙혔다 뗐다가 가능해 집니다.

- 그리고 모델링 주실때 링크 구조로 주셨는데, 모델링은 링크 구조 없이 주셔야 문제가 없습니다.

스켈레탈 메시를 링크구조로 익스포트 하면 제일 상위 메시만 익스포트 되고 나머지는 익스포트 되지 않습니다.

 

 

파츠 분리 익스포트 방식

1. 메인 바디가 될 부분을 먼저 익스포트 한다.

 

 

2. 파츠로 나뉘어질 모델과 메인 바디와 똑같은 본을 선택후 각각 익스포트 한다.

 


 

3. 메인 바디를 언리얼로 임포트 한다.

-원본 모델이므로 스켈레톤과 피직스를 새로 생성한다.

 

-임포트후 생기는 파일들 : 메시, 스켈레탈, 피직스, 메터리얼

 

 

4. 그리고 파츠모델들을 각각 임포트해 온다.

-임포트시 기존에 생성된 메인 바디와 스켈레탈과 피직스를 상속받도록 설정한후 임포트한다.

 

5. 그렇게 불러진 파츠 모델들은 아래 그림처럼 몸에 붙혔다 뗐다 하는것이 가능해집니다.


 

 

반응형
반응형

언리얼4에는 블렌딩 스페이스, 몽타주, 에임오프셋 이 세가지의 강력한 모션 믹싱 기능이 내장되어 있습니다.

이 세가지만 잘 숙지하고 사용이 가능해 진다면 디자이너가 직접 캐릭터 움직임을 설정할 수도 있을거 같습니다.

하지만, 아직까지 버그가 좀 있고 프로그램의 기본적인 로직을 알아야 구성 가능하므로 협업이 반드시 필요할 거

같습니다. 저도 프로그래머의 도움으로 한 단계 한 단계 알아가고 있습니다..;; 혼자서는 불가능..ㅠ

 

 

1. 블렌딩 스페이스


- 각 모션별로 알아서 블렌딩 해줘서 방향과 위치별로 모션을 지정하고 수치값을 넣어주면
자동으로 블렌딩해주는 시스템입니다.
앞뒤 좌우 움직임 총 4종의 모션만 있으면 전진, 후진, 45도 우로 전진, 45도 좌로 전진, 45도 백좌로 후진, 45도 백우로 후진, 우측전진, 좌측 전진 총 8종의 모션을 알아서 블렌딩 해줍니다. 아래 동영상 참조.


이렇게 제작해준 블렌드 스페이스 파일을 애니메이션 블루 프린트에서 불러와 애니 스테이트 머신에 연결해 준후
방향과 속도값에 대한 변수 설정후 이벤트 그래프에서 설정하면 사용할 수 있습니다.
움직임을 줄 캐릭터에게는 입력값에 대한 움직임에 대해 블루프린트나 c++에서 코딩후 사용할 수 있습니다.

 

2. 몽타주


- 본을 슬롯으로 지정해 이름을 정한 후 다양한 모션에서 원하는 본의 애니만 넣어줄 수 있다.
가령 예를 들어 무기를 장전하는 애니에서 상체에만 애니를 주고 뽑은후 몽타주로 지정을 해주면
다리는 뛰거나 앉거나 하면서 상체는 장전하는 애니가 나올수 있다.
여기서 몽타주로 지정한 슬롯 이름이 'UpperBody'일 경우 몽타주내에서 지정한 슬롯 이름이 'UpperBody'로
설정한 몽타주들은 다 공통으로 사용할 수 있다.


아래 동영상은 뛰기 모션에서 총을 장전하는 모션과 칼질하는 모션을 몽타주를 이용하여 믹싱한 영상이다.
몽타주 파일 역시 캐릭터 블루 프린트와 애니메이션 블루 프린트에서 간단한 설정후에 사용할 수 있다.

 

 

 

 

3. 애임 오프셋

- Aim Offset, 에임 오프셋은 캐릭터의 무기 조준시 도움이 되는 블렌딩가능 포즈 시리즈가 저장된 애셋입니다.

 

애니메이션 도중, 에임 오프셋 결과를 달리기, 걷기, 점프 등과 같은 다른 모션과 블렌딩하여 캐릭터가 어느 방향을 보더라도 부드럽게 보이도록 만드는 것입니다.

에임 오프셋 배후의 핵심 개념은, 기존 애니메이션 위에 애디티브(더하기식) 블렌딩할 수 있도록 디자인된 것입니다.

예를 들어 에임 오프셋을 사용해서 캐릭터가 무기 조준을 하고자 한다면, 그 애디티브 모션이 캐릭터의 다른 모션에

방해받지 않도록 할 수 있습니다.(블렌드스페이스보다 강력하게)

다른 말로 하자면, 달리기, 빈둥거리기, 점프 등의 동작을 할 때 팔 부분은 에임 오프셋을 통해 더하기식으로 제어할 수 있도록 비교적 엄격하게 다뤄집니다.

여러가지 면에서 에임 오프셋은 BLend Space(블렌드 스페이스)와 비슷합니다. 블렌드 스페이스는 모션위주 블렌딩

이라면 에임오프셋은 포즈위주의 블렌딩으로서 캐릭터가 벽에 기대거나 특수 포즈를 취한다고 하더라도 에임오프셋에

기억되어있는 메시 스페이스를 기억해주는 특수한 기능입니다.

따라서 에임오프셋으로 설정할 모션들은 메시스페이스로 설정해줘야 합니다.(보통은 전부 로컬스페이스로 설정되어

있음)

메시 스페이스는 애니메이션 시퀀스의 프로퍼티로 설정됩니다. Additive Settings (애디티브 세팅) 카테고리 아래

Additive Anim Type (애디티브 애님 타입) 프로퍼티가 있습니다.

이것을 Mesh Space (메시 스페이스)로 설정하면 설명한 대로 메시 좌표계가 활용됩니다. 이 블렌딩은 비용이 꽤

들기 때문에, 일반적으로 에임 오프셋처럼 일정한 방향으로 계속해서 움직이는 애니메이션이 필요한 블렌드

스페이스 유형에만 사용해야 할 것입니다.

 

 

 

아래는 위 세가지 시스템을 사용하여 간략히 제작해 본 모션 시스템입니다.

 

 

 

반응형

+ Recent posts