전체 글 275

중화TV - 사마의 미완의 책사

야심한 밤에 케이블 TV 채널들을 돌리고 있었는데 중화TV에서 삼국지 광팬인 나에게 눈길을 끄는 드라마를 방영하고 있었다. "사마의 미완의 책사" 사실 삼국지의 팬이라고 하면 대부분 촉한정통론과 제갈량에 깊이 빠져있는데 (심지어 본인은 "가장 존경하는 인물"이라는 질문이 나오면 항상 제갈량이라고 답하곤 함) 제갈량의 숙적인 사마의가 주인공이라고? 낭고의 상을 보여주는 장면. 개인적으로 이 장면에서 소름. 소년시절부터 쌓아왔던 가치관이 흔들릴 것 같았지만, 드라마 퀄리티가 너무 좋아보여서 정주행을 시작했다. 그런데 삼국지에 무슨 "급포"라는 강호 무림고수가 나오고, 화타와 길평을 바꿔놓고... 1편부터 무언가 마음에 들지 않았는데 정신을 차려보니 4편까지 보고 있는게 아닌가!? 그리고 어느 순간부터는 조조..

Daily 2018.06.09

Windows 화면 비율이 1:1이 아닐 경우 UE 에디터 이상 현상 수정

4K 모니터와 같이 모니터의 해상도가 높을 경우 글씨, 아이콘 등이 작아보이기 때문에 윈도우에서 크기 비율을 조정하곤 한다. (하단의 이미지 참고) 잘 사용하고 있었는데 UE 4.18부터 High DPI 설정이 추가되면서 에디터 동작이 이상해지는 현상이 나타났다.에디터를 로딩할 때 Splash Image가 매우 작게 보임 (큰 문제는 아님)에디터가 실행된 이후 보이기는 정상으로 보임PIE 모드로 게임을 시작하면 마우스 포인터가 Viewport와 맞지 않음 (문제)해결 방법은 다음과 같다.UE Install 폴더로 이동한다.Engine/Binaries/Win64/UE4Editor.exe 파일을 우클릭한다.호환성 탭에서 "높은 DPI 조정 동작을 재정의한다."를 켜고 "시스템"으로 조정한 사람을 변경한다.단..

Unreal Engine v4.17.0 업데이트 이후 고통

1. 컴파일 에러가끔 Visual Studio에서 "error : System.ArgumentNullException: Value cannot be null." 메세지가 나오면서 컴파일이 되지 않는다. 이 경우 해결책은 Rebuild 밖에 없었다. UE Forum을 검색하니 개발자께서 친절하게 HotFix를 배포해주셨으니 다음 링크에서 HotFix를 설치하자.HotFix Click 2. Nox, Bluestacks 등에서 Android 어플리케이션 실행 불가능이 경우는 기계에 직접 설치할 경우 잘 동작한다. 나는 괜히 힘 안 빼고 4.17.1 업데이트를 기다리기로 했다.

UE4 게임이 정지되었을 때 카메라 움직이기

UE4에서는 다음 코드를 통해 게임을 일시 정지할 수 있다. UGameplayStatics::SetGamePaused(GetWorld(), true); 때로는 게임을 일시정지 해놓고 멋진 카메라 앵글로 바꾸고 싶을 때가 있는데 SetGamePaused 함수는 모든 Tick을 정지시키기 때문에 카메라의 Transform을 변경해도 바로 반영되지 않는다. (Pause를 풀었을 때 반영 됨) 해결책으로 게임이 정지되었을 때 APlayerController::UpdateCameraManager() 함수를 호출해주면 카메라가 바로바로 업데이트 된다. 단 매번 UpdateCameraManager 함수를 호출하기는 쉽지 않을 것이기 때문에 간단한 Actor를 만들어서 자동으로 불리게 해보았다. AMyActor::AM..

Hexagon Grid Material 제작

DebugDrawLine의 압박을 이기지 못하고 드디어 Hexagon Grid의 Material을 만들었다. http://aker.tistory.com/570 : DebugDrawLine 실패 사례http://aker.tistory.com/574 : UDecalComponent 실패 사례 우선 Hexagon Grid는 다음 링크를 참고하여 만들었고 내 프로젝트에서 사용하는 Hexagon 모양은 Pointy Topped 이다.http://www.redblobgames.com/grids/hexagons/ Hexagon의 선분을 그리기 위해 Radius(=r), LineThickness(=thickness)를 외부에서 전달한다. 우선 UE Material에서 현재 그려지는 Pixel의 WorldPosition..

UE4 ACharacter의 RootComponent 변경

UE4에서 일반적으로 게임 캐릭터를 생성하려면 ACharacter를 그대로 이용하거나 상속하게 된다. 다 좋은데 가장 당황스러웠던 것 중 하나가 캐릭터의 Pivot이 발끝이 아닌 전체 Mesh의 중심이었다는 점이다. (엄밀하게 말하자면 CapsuleComponent의 중심) 즉 아래 그림처럼 보이는 것인데 이 때문에 ACharacter::SetActorLocation을 하면 캐릭터가 지면에 파뭍힌다. 이후 CapsuleComponent 물리에 의해서 Solving 되기는 하지만 경우에 따라서는 Spawn 자체가 안 될 때도 있다. 우선 이런 상황에서도 Spawn을 하기 위해서는 FActorSpawnParameters::SpawnCollisionHandlingOverride를 AlwaysSpawn으로 전달..

Landscape에 맞닿는 Line 만들기 (N/N)

Polygon과 만나는 점에 대해서도 vertex를 추가하였다. 회색 : Landscape의 Polygon / 붉은색 : Grid Line 파란색 : Line이 지나는 Landscape Patch 하늘색 : Patch의 Min~Max까지의 직선 알고리즘은 다음과 같다. Landscape의 Polygon을 2개 모은 사각형을 Patch라고 한다. (위 그림의 파란색)Patch를 지나는 Grid Line의 교점 p1, p2를 구한다.Patch의 Min, Max Point인 q1, q2를 구한다.p1-p2 선분과 q1-q2 선분의 교점을 구한다.http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect..

Landscape에 맞닿는 Line 만들기 (1/N)

Landscape에만 그려지는 Decal에 대해 포럼에 질문을 올렸는데 한달 정도 답이 없다. 앞에서 얘기했듯이 Mesh마다 Receive Decal을 끄는 것은 원하는 바가 아니다. 그렇다면 대안은... Landscape를 따라다니는 Line Segment를 만든다.Landscape의 Material에 Grid 격자를 포함한다.이 경우 Grid 크기가 변경될 때 Material에 그려진 Grid 크기도 변경되어야 함그렇다면 Material의 Texture를 프로그램으로 만들어주는 것이 가장 편할듯Landscape를 그릴 때 Stencil을 써주고 Landscape Stencil 위에만 그려지는 Decal을 만든다. 우선은 1번을 구현해봤다. 구현 목적을 간단히 그림으로 설명하면 아래 그림에서 시작점~목..

GridLine을 UDecalComponent로 변경

DebugDrawLine으로 그리던 GridLine을 Decal을 사용하여 그리도록 수정하였다. 외관상으로는 깔끔하게 잘 나온다. 고생했던 점은 사용자가 원하는 Material을 UDecalComponent에 설정하려면 해당 Material의 Material Domain이 "Deferred Decal"이어야 한다는 점이다. 아쉬운 점은 UDecalComponent 개수가 너무 많이 생성된다는 것... 그런데 잘 생각해보니 인접 그리드가 있을 때는 라인이 겹치기 때문에 한번만 그려도 될 것 같다. 아주 외곽일 때는 다 그려야겠지만... 어쨌던 이렇게 하면 UDecalComponent 개수는 절반으로 줄어들 수 있을 것 같다. 수정 이전 : 1 Grid Cell = 6 Line = 6 UDecalCompon..