전체 글

개발 내용과 지식을 정리한 블로그입니다.
문제 링크 문제 설명 현대모비스에서 전기차로 경사로 주행 테스트를 하려고 합니다. 경사로 테스트는 n×m 크기의 격자 형태의 공간에서 진행되며, 각 칸에 적힌 숫자는 높이를 나타냅니다. 전기차는 격자 내의 모든 칸에서 출발 가능하며, 상하좌우로 인접한 칸으로만 이동 가능하고 격자 밖을 벗어날 수는 없습니다. 전기차가 인접한 칸으로 이동하는 길의 경사는 이동하려는 칸의 높이에서 현재 칸의 높이를 뺀 값입니다. 예를 들어 높이가 5인 칸에서 7인 칸으로 이동하는 길의 경사는 2(= 7 - 5)이고, 높이가 6인 칸에서 높이가 1인 칸으로 이동하는 길의 경사는 -5(= 1 - 6)입니다. 경사 수열 d가 주어집니다. 경사 수열은 테스트에서 전기차가 이동할 길의 경사를 나타내며, d[i]는 전기차가 i+1번째로..
· 언리얼
루트 모션(Root Motion) 보통 애니메이션은 프로그램 상에서 이동시키지 않고, 자체적으로 이동하는 경우가 많습니다. 예를 들어, 걷는 애니메이션이 있는데 애니메이션 상에서도 위치가 변한다거나, 점프 애니메이션에서 높이가 변동하는 경우 등이 존재합니다. 이러한 애니메이션은 보기엔 좋으나 실제로 적용할 경우 문제가 발생할 수가 있습니다. 예를 들어, 캐릭터가 이동하면서 걷기 애니메이션을 실행한다고 가정해보겠습니다. 캐릭터의 캡슐 컴포넌트, 즉 콜리전은 플레이어가 원하는 방향으로 이동하는데, 걷기 애니메이션이 재생하니 캐릭터 메시가 콜리전을 벗어납니다. 그리고 애니메이션 재생이 완료되면 캐릭터는 다시 콜리전 위치로 미끄러져 돌아갈 것입니다. 이는 비쥬얼적인 면에서도 보기 안좋고, 충돌 체크 등의 계산이..
· 언리얼
IK 리타겟팅(IK Retargeting) IK 리타겟팅(IK Retargeting)은 3D 애니메이션 소프트웨어나 게임 엔진에서 IK(역운동학)를 사용하여 한 캐릭터 모델에서 다른 캐릭터 모델로 애니메이션을 전송하는 프로세스를 의미합니다. 언리얼에서는 IK 리타겟팅을 적용할 수 있도록 IK 리타게터(IK Retargeter)로 리타겟팅할 수 있습니다. 리타겟팅의 작동 원리 1. 스켈레톤 설정 : 먼저 두 개의 캐릭터 스켈레톤, 즉 원본 애니메이션이 적용되는 소스 스켈레톤과 애니메이션을 받을 대상 스켈레톤을 준비합니다. 2. 휴머노이드 리그 : 언리얼 엔진은 일반적으로 리타겟팅을 용이하게 하기 위해 휴머노이드 리그를 중개자로 사용합니다. 즉, 소스 및 대상 뼈대 모두 공통 휴머노이드 리그 구조에 매핑되어..
· 언리얼
애니메이션(Animation) 언리얼의 애니메이션 시스템은 복잡하고 상호작용적이며, 사실적인 캐릭터 애니메이션을 제작하기 위해 설계되었습니다. 언리얼 엔진에선 캐릭터의 다양한 애니메이션을 체계적으로 관리하는 도구인 **애니메이션 블루프린트(Animation Blueprint)**를 제공합니다. 애니메이션 블루프린트의 주요 구성 애님 인스턴스(Anim Instance) 클래스에서 애니메이션 블루프린트를 다루는 기반이 되는 형태입니다. 스켈레탈 메시는 기본적으로 애니메이션 기능이 탑재되어 Mesh 에 사용해야 할 애니메이션 블루프린트를 지정한다. 클래스에서 사용하기 위해 애니메이션 블루프린트 클래스를 인스턴스 하는 것이 애님 인스턴스(Anim Instance) 입니다. 애님 그래프(Anim Graph) 애님..
· 언리얼
언리얼 오브젝트(UObject) UCLASS() class SLASH_API ABaseCharacter : public ACharacter, public IHitInterface { GENERATED_BODY() public: ABaseCharacter(); virtual void Tick(float DeltaTime) override; // ... 중략 ... // } 언리얼 오브젝트는 언리얼 엔진이 설계한 새로운 시스템의 단위 오브젝트입니다. 기존의 C++ 오브젝트에 모던(Modern) 객체 지향 설계를 위한 다양한 기능을 추가하였습니다. 언리얼 오브젝트에서는 C++ 오브젝트와 언리얼 오브젝트는 사용할 수 있습니다. 두 오브젝트의 구분을 위해 C++ 오브젝트는 접두사로 F를 사용하고, 언리얼 오브젝트..
· 언리얼
블루프린트 시스템 (Blueprint System) 블루프린트로 구현한 floating 시스템 블루프린트(Blueprint)는 언리얼 엔진에서 제공하는 비쥬얼 스크립팅(Visual Scripting) 시스템으로, 노드 기반 인터페이스를 이용하여 함수, 이벤트, 변수 또난 기타 게임 관련 요소를 나타내는 노드를 와이어로 연결하여 관계와 데이터 흐름 및 제어를 정의합니다. ※ 노드 기반 인터페이스 : 사용자가 "노드"와 해당 연결의 시각적 표현을 통해 복잡한 시스템을 생성하고 관리할 수 있는 사용자 인터페이스. 흐름과 노드 제어를 자유롭게 변경할 수 있다. 블루프린트 특징 장점 1) 시각적 표현 블루프린트는 드래그 앤 드롭 방식으로 동작을 표현합니다. **이벤트 그래프(Event Graph)**에서 노드와 ..
· 언리얼
언리얼 엔진의 블루프린트 시스템은 시각적 스크립팅과 전통적인 코딩을 독특하게 혼합한 놀라운 도구다. 블루프린트의 작동 방식을 이해하려면 코드를 작성하지 않고도 복잡한 게임 로직을 구축할 수 있는 시각적 인터페이스라고 상상해 보라. 이 시스템은 시각적 스크립팅의 유연성과 기존 프로그래밍의 기능을 결합하므로 C++로 작성된 메서드와 통합할 때 특히 유리하다. 예시 슈팅 게임에서 C++와 블루프린트 통합 총을 쏘고 적에게 피해를 주는 것과 같은 핵심 기능을 처리하기 위해 C++로 작성된 메서드가 있는 슈팅 게임 시나리오를 고려해 보자. 이러한 메서드는 게임 로직의 중추를 형성한다. C++ ShootGun Method 이 메소드은 총 발사 메커니즘을 처리한다. 여기에는 탄약 사용, 반동, 총이 현재 발사 가능한..
방문자 패턴 객체의 구조와 객체에 수행되는 작업을 분리한다. 기존 클래스를 변경하지 않고도 새로운 작업을 정의할 수 있게 한다. 구조 Visitor - 방문자 클래스들이 구현해야 할 인터페이스. 각 구체적인 요소 클래스(Element)를 방문(visit)하는 메소드를 선언한다. Concrete Visitor - Visitor 인터페이스를 구현하는 클래스. 구체적인 요소(Element)들에 대한 방문 동작을 구현한다. 각 요소에 대해 수행할 작업을 정의한다. Element - 요소 클래스들이 구현해야 할 인터페이스. 이 인터페이스는 Accept 메소드를 선언하여, 방문자 객체가 요소 객체를 방문할 수 있게 한다. Concrete Element - Element 인터페이스를 구현하는 클래스. 실제 데이터와 ..
NewtronVania
Newtron의 프로그래밍 블로그