언리얼 기초 13 블루프린트 개념

기본 블루프린트

컨텐츠 브라우저 -> Content 폴더 -> ThirdPerson -> Blueprints -> BP_ThirdPersonCharacter 오픈 -> 경우에 따라 Open Full Blueprint Editor -> EventGraph 탭

EventGraph 탭이 닫혀있을 경우 좌측 My Blueprint 탭 -> GRAPHS -> EventGraph 항목 클릭

언리얼 에디터는 다양한 노드와 선을 이어 붙여 가면서 로직을 짜는 것으로 코드를 대체한다.

지금 보이는건 그중 하나, 현재는 아무 로직없이 비어있다. 노드대신 C++코드로 짜여져 있는 것.

화면 우측 상단에 부모 클래스가 Umzark01Character이라고 명시 되어있다. (Umzark01은 필자의 언리얼 프로젝트 명), 클릭해보면 C++문법으로 정의된 Umzark01Character 클래스가 보인다

어두에 A가 붙는데 ‘Actor 클래스의 차일드들’이라는 뜻

이 클래스의 부모는 ACharacter으로 명시되어있다. 이는 우리가 언리얼 에디터 컨텐츠 브라우저에서 우클릭 -> Blueprint Class 클릭 했을때 보였던 그 Character 이다

따라서 Actor -> (A)Pawn -> (A)Character -> (A)Umzark01Character -> 캐릭터 블루프린트 의 상속 관계를 가진다

위에 보이는 선택창은 생성하려는 블루프린트의 부모 클래스가 뭐가 될지 선택하는 옵션인 것, 선택창 하단에 ALL CLASSES 클릭시 더 많은 부모 클래스들이 보인다.

블루 프린트는 이 부모 클래스의 수만큼 다양할 역할을 수행할 수 있다.

경계의 의미

노드와 선으로 연결된 블루프린트 로직은 대게 C++코드로 짜여질 수 있다. 많은 경우 C++코드가 더 간결하며 노드형 로직보다 10배정도 빠르다고 한다.

C++ 코드는 코어 로직을 위한 개발자의 영역, 노드형 로직은 디자이너의 영역(테크니컬 아티스트 TA, 기획)

블루프린트의 강점

두개의 애니메이션 동작을 섞어 보거나, 부드럽게 이어 붙여주는 로직을 짠다고 가정해보자

이를 C++로 작업할 땐, 일단 코드의 초안을 만들고 -> 테스트해보고 -> 다시 보정하고를 반복할지 모르겠다.

블루 플린트로 작업할 땐 로직과 데이터를 바꾸는 족족, 결과가 좌측에 보인다.

컨텐츠 브라우저 -> Content -> Characters -> Mannequins ->Animations -> ABP_Manny 애니메이션 블루프린트 -> AnimGraph 탭의 선들에는 동그라미가 흐르고 있고 노드 연결 부위에 사람 모양 아이콘이 있다.

위에서 본(그리고 앞으로 보게될) 기본 EventGraph의 모습과 다르다

이는 캐릭터가 움직일땐(Locomotion State) 애니메이션 관련해서 어떤 처리를 하고, 서있을 땐(Main State) 어떤 처리를 하는지에 대한 명세이며, 캐릭터의 메쉬 정보(3D 모델 뼈와 살의 위치정보)가 이 흐름을 타고 실시간으로 흐르면서 가공되고 있다는 의미.

결과로 좌측 마네킹의 어깨가 미세하게 들썩이고 있다

이런 추상적인 내용을 단순히 C++코드나 EventGraph의 노드들로 표현한다면 한눈에 알아보기 어렵다.

소요 시간을 고려했을 때, 현실적으로 이런 작업을 C++로 하긴 거의 불가능한 것.

블루프린트는 이처럼 더 편리하고 다양한 개발 환경을 제공해준다.

Leave a Comment