나는 튜토리얼을 볼때 생각없이 아무것도 모른다고 그대로 따라치면서 배우는걸 매우 싫어한다.

옛날에 유니티 처음배울때야 그랬지만 결국 외우기밖에 안됐으니까.

 

문제의 원인은 이것.

튜토리얼의 소스는 UUserWidget을 상속받은 자식을 또 상속받아서 손주뻘의 클래스를 만들어서

스크린샷과 같이 초기화하면 잘 되는데.

 

내 프로젝트에선 그럴 필요가 없어서 손주를 안만들고 그냥 한번만 상속해서 하려니 저렇게 된것이다.

 

UuserWidget을 상속받아 메인메뉴 페이지를 만들고있는데.

분명 엔진소스에도 저렇게 생성자쓰라고 명시되어있는데 가져다 쓰려니.

기본생성자가 없다고 저렇게 컴파일 에러가 난다.

 

그래서 기본생성자 만들어서 넣어보고

기본생성자 없애서 안쓸거라고 delete해보고 

별지롤을 다해봤는데 해결이 안되더라.

 

그래서 X나게 구글링했다.

 

https://answers.unrealengine.com/questions/252844/view.html

 

Which (const FObjectInitializer& ObjectInitializer) is correct? - UE4 AnswerHub

Hello, Jibberish Keyword class in this context means that the class being used may not be defined at this point, but there is a definition, so compiler won't classify class name as undefined. However, FObjectInitializer is usually defined in your Unreal En

answers.unrealengine.com

 

https://answers.unrealengine.com/questions/58854/error-c2512-no-appropriate-default-constructor-ava.html

 

error C2512 no appropriate default constructor available - UE4 AnswerHub

Attachments: 첨부는 (이미지 포함) 5 개까지, 각각 최대 5.2 MB 씩 총 5.2 MB 만큼 사용할 수 있습니다.

answers.unrealengine.com

 

 

 

https://www.slideshare.net/secret/EywLl7Qd2CWYkc

 

프로그래머를 괴롭히는 ue4의 함정들

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy. Slideshare uses c

www.slideshare.net

 

해결방법은 주석친 부분을 삭제하는것이었고

 

저 부분의 정의를 보면  cpp로 가게된다.

 

알아보니 언리얼클래스를 상속받아 쓸때

 엔진소스에서 만들어놓은 초기화내용을 프로그래머가 임의로 덮어쓰지 못하게 막아놓은것이다.

그니까 : Super(ObjectInitializer)을 붙여서 부모생성자의 초기화는 그대로 받아와서 초기화 한 후에

내가 하고싶은 초기화를 추가 하도록 만들어 놓았다는 것 이다.

 

주로 컴포넌트추가 설정할때 쓴다고 줏어들음

 

버전은 4.22

그리고 헤더파일에 있는 생성자도 삭제해줘야한다. 

 

의도는 알았고 문제 해결도 되었는데.

뭔가 또 엿먹은 기분은 뭘까..

한 동안 블로그 업데이트를 안했는데 이유는 두가지.

 

1. 참고자료보면서 코드 따라치던거를 제 프로젝트에 이식시켜서 제걸로 만드려고 삽질했습니다

2. 일주일정도 미친듯이 게임만 했습니다.(이제 질림)

 

 

본론으로 돌아가서.

 

세션이 무엇이냐하면.

 

서버를 놀이동산이라 가정했을때. 

세션은 놀이기구를 예로 들을 수 있습니다.

그리고 그 세션에 유저들이 들어가서 노는거죠.

그냥 카드라이더같이 방만들고 플레이하는거라 보면 쉽습니다. 

 

UI 버튼이랑 텍스트입력을 받아올 수 있는 위젯이 있다는 가정하에 씁니다.

 

 

 

물론 구글링하면 나오지만 까먹을만해서. 업로드

 

OpenLevel이 호출할 함수이름이다.

 

유니티는 그냥 코루틴쓰면 되는데..X

'언리얼엔진 > c++' 카테고리의 다른 글

ObjectInitializer 생성자가 하루를 버리게하다.  (0) 2019.05.22
Const 위치마다 헷갈려서 정리.  (0) 2019.04.16
스마트포인터  (0) 2019.04.10

이런상황이 발생했다.

저 IOnlineSubsystem이 헤더파일참조는 되고 빌드는되는데

 

저 안의 내용물들을 가져다 쓸라고하면 일단 빨간줄로 막히고 컴파일에러를 낸다.

 

프로젝트변경->솔루션다시검사. 해도 안된다.

 

먼가해서 구글링했더니 언리얼에서 핫리로드를 쓰다보면 모듈 dll이 쌓여서 예전 설정을 가져다쓴다고한다.

 

이것들 다 지우고 빌드 하랬더니 해결됨.

 

동시에, 내가 쓰던 창설정도 다 날라가서 다시 갖다놔야된다. ^ㅗ^

'언리얼엔진 > 네트워크' 카테고리의 다른 글

세션생성하기  (0) 2019.05.21
서버에서 나오기, 게임종료하기.  (0) 2019.04.15
IP를 입력받아서 로컬에 접속하기.  (0) 2019.04.15
UMG 셋팅하고 적용하기  (0) 2019.04.11
서버 트래블링  (0) 2019.04.10

구글링해본 결과 

 

아웃라인그리는 방법은 네가지정도 찾았다.

 

1. 같은메쉬를 한번더 그려서 노말 뒤집은후 조금 부풀린다음 겹치기 (보편적)

 

제일 쉽고 자료가 많지만 메쉬를 한번 더 그리는것과 같은 연산이 들어감.

근데 내가 사용하는방법은 포스트 프로세싱을 사용한 씬 전체에 입히는 후처리방식이고.

이걸쓰면 아웃라인 그릴캐릭터의 매트리얼 인스턴스를 일일이 또 설정해주는 노가다를 해야되서 탈락.

(유니티처럼 매트리얼마다 쉐이더코드 공유하는방법 없나요 ㅠㅠ)

 

2.월드노말맵을 가져와서 좌표값 1씩 오프셋 준다음 외곽선그리기 (Vroid)

 

월드노말맵을 사용한다는말은 캐릭터가 움직일때 노말맵을 계속해서 재연산해줘야해서 

이것도 나름대로 무거워보임.

 

3. 씬뎁스로 외곽선 그리기. (언리얼피셜)

 

구현방식은 2번과 비슷하지만 월드노말맵보다 카메라와 오브젝트간의 거리를 사용하는

흑백으로 출력되는 순수 뎁스값만 사용방법도 괜찮은 방법이지만.

씬뎁스인만큼 카메라에서 거리가 멀어지면 외곽선이 지워지는 문제가 있어서 고민해봅시다.

 

4.윤곽선을 검출하는 sobel알고리즘 사용하기. (지금은 다 까먹은 학식때 배운 영상처리 알고리즘)

 

이게 제일 윤곽선이 깔끔하게 나오지만 제일 무거워보임.

특수한 상황 연출할때빼곤 픽셀연산에 for문을 사용하는건

다른 방식중에 그나마 가벼울때쓰는 매우 특수한경우인데.

뇌피셜로 머리굴려봤을때 이건 추가로 stencil 뎁스값도 써야해서 탈락.

 

 

5.하프램버트 * 그림자색깔.

 

길티기어에서 쓴 방법인데 이것도 간단해서 좋아보입니다.

언리얼 포스트프로세스에서 월드전체에 적용하는거랑 방식이 좀 달라서 어떻게 해야할지 고민중..

 

참고자료.

 

유니티 Vroid 툰쉐이딩 코드(코드저작권때문에 미첨부)

 

이전 포스트 유튜브

 

https://replay.unrealsummit.co.kr/data/usmp2016/pre002.pdf

불러오는 중입니다...

https://www.parallelcube.com/2017/12/02/hlsl-introduction/

 

How to use HLSL and UE4. Introduction – Parallelcube

High Level Shading Language (HLSL) is a programming language that can be used to program modern graphics cards, supports the shader construction with C-like syntax, types, expressions, statements, and functions. UE4 material editor is a good tool to create

www.parallelcube.com

https://blog.felixkate.net/2017/01/19/toon-shading/

 

Overview to “Toon/Cel shading” | FelixK development blog

For the last couple of weeks I often had discussions about toon / anime esque shading. In this post I want to list a few approaches I tried out. Shading Methods Flat shading / Unlit This is not directly shading but it should still be mentioned since this i

blog.felixkate.net

https://m.blog.naver.com/PostView.nhn?blogId=mnpshino&logNo=221541025516&proxyReferer=http%3A%2F%2Fm.facebook.com%2F

 

마둠파님의 블로그!

 

저도 붕괴처럼 해보고싶은데.. 맵 여러개 그려서 표현할만한 내공은 못됩니다 ㅠ

 

붕괴3 방식의 카툰렌더링 구현하기

안녕하세요 마둠파입니다. 간만의 게시글이네요. 한동안 NDC준비하느라고 정신없었고 끝나고나선 여행도...

blog.naver.com

다 만들어보고 프로파일러 돌려보는게 제일 정석이겠지만 시간이 부족하니 뇌피셜 판단으로 끝.

 

 

 

언제 한번 그득하게 언리얼엔진이 어떻게 렌더링하는지 코드분석해보고 싶다.

그전에 다렉을 먼저 봐야한다는 벽부터 부숴야하는데

다른것도 하고싶은게 많고 시간이라는게 너무 유한해서 스텟찍기가 너무 힘들다.

 

월드노말베이스 아웃라인을 만들려고했는데 

 

오늘 안좋은일이 있어서 공부가 손에안잡혔습니다 그래서 그냥 알고있는거를 복습+노가다했습니다.

 

브라우저창에서 임포트한 vroid의 스켈레탈 메쉬창을 열고.

다음과같이 본이름과 본이 표시되도록 설정합니다.

 

두 메쉬의 본을 서로 일치시켜줘야합니다. 

 

vroid는 T포즈지만 언리얼 마네킹은 A포즈네요.

upperArm을 z축으로 45도 내려서 A포즈를 만들어줍니다.

 

그리고 포즈변경  -> 현재포즈 사용을 누릅니다.

 

리타깃 매니저로가서 

다음과같이 

인간형 릭으로 설정 -> 각 본마다 맞는뼈에 매칭시켜줘야합니다 (상당히 노가다)

또한 고급표시로 들어가서 손가락, 트위스트본도 똑같이 매핑시켜준후 

 

제발 꼭 저장을 해줍니다. 나중에 그러면 다른 vroid를 가져와서도 저 매핑파일만 로드해주면 됩니다.

댓글 남겨주시면 매핑파일 보내드리겠습니다.

 

 

자 그리고 마네킹의 애니메이션을 가지고 오고싶으니 리타게팅창을 엽니다.

 

자 그리고 이렇게 하면.

 

 

마네킹의 애니메이션이 제대로 실행되지 않을겁니다.

 

동그라미친것과 같이 본이 전부 뒤틀려있을거에요.

 

원인은 두가지입니다.

 

1.본 매칭이 정확하게 안되어있다.

2.애니메이션을 받는 본이아닌 것까지 다 애니메이션이 들어가버렸다.

 

 

 

 

루트부터 시작해서 여러개의 뼈들이 자식으로 나뉘어져있는것을 볼수있는데.

애니메이션은 캐릭터의 뼈가 기준이고 그것을 움직이므로서 실행됩니다.

 

애니메이션이 필요없는 본들이 애니메이션 때문에 위치가 이리저리 바뀌는것이죠.

 

예를들면 손의 좌표가 애니메이션에 의해 바뀌는데 손만 적용되야할것이 손가락까지 다 들어가버리는겁니다.

 

그러니 뒤틀리는 본들을 다 저렇게 스켈레톤으로 설정해서 부모본의 좌표를 그대로 따라가도록  해줘야합니다.

 

손가락뼈도 다 포함해서요.

 

 

 

 

 

 

 

 

 

 

 

 

잘 된거같긴한데 주먹쥐어야하는데도 엄지손가락이 계속 따봉을 하고있네요 ㅠㅠ

 

 

 

자세히 보니까 vroid의 본과 마네킹의 엄지손가락 본의 개수가 다릅니다 ㅠㅠ 

 

이부분은 맥스로 뜯어다가 손부분만 따로 애니메이션 블렌드 넣어줘서 해결해야겠습니다 

 

 

손꾸락 주먹쥐는건 실패했지만 대략적인 애니메이션은 잘 따라오네요 

 

지금까지 구현한 라이팅은 순수하게 빛을 받는것만 계산하기때문에

 

포인트라이트에 색을 입혀줘도 먹질 않습니다

 

때문에 저는 색깔을 입혀주고 싶었어요 

 

 

주석달았으니 글로 쓰는 것보다  이해하기 쉬울거라 생각합니다.

 

이해안되면 핀만 따로 빼다가 연결해서 하나하나 과정 보시면 됩니다.

 

 

 

RGB 모두 잘 영향을 받는것을 확인할 수있습니다.

 

이정도면 충분히 가볍고 원하는 때깔은 나오는것 같습니다 

 

 

https://www.youtube.com/watch?v=5u-pyWSpoxw&t=30s

 

이것을 참고해서 만들었습니다만 

 

뜯어보니 안에있는 노드 구성이 엄청 복잡하고 필요없는 기능까지 많이들어있어서 무겁습니다.

필요한 기능만 추려서 만들었어요.

 

다행히 노드정리 정말 잘되있어서 분석하는데

오래걸리지 않았습니다 

 

 

 

 

 

 

 

 

 

저같은 이것저것하는거 좋아하는 제너럴리스트는 반반속성이라서 

이런싸움이 안나게 조절가능하는게 없는장점중에 하나인듯합니다ㅜ

(포토샵키기 귀찮아서 그림판으로) 

 

어디 이런 잡부 데려갈 회사 없습니까 ㅠㅠ 

 

제가 덕질하고있는 프린세스커넥트라는 게임의 모션캡쳐

애니메이션(?) 입니다

 

이것처럼 만들려면 어떻게 해야할까 엄청 고민했습니다.

아무래도 만화같은것들은 머리카락에 가려지는 눈썹을 왠만하면 

표시해주는게 더 이쁘거든요.

 

처음에 그냥 뎁스값주고 겹쳐졌을때 lerp로 알파값 적당히 

조절해줘서 섞으면 되겠지 하고 시도했는데 

 

 

 

 

 

 

구현과 삽질의 흔적..

캐릭터 메쉬두개띄우고 겹친다음에

머리메쉬랑 얼굴메쉬를 서로 없애는것부터 시작해서

 

 온갖 삽질을 다해보다가 어찌어찌 비슷하게 만들기는했으나 

캐릭터를 보이는데에만 집중한 콘텐츠 에만 쓸 수 있다는 

사용처가 제한되어있는 것이 단점이었습니다.

 

Z버퍼 뎁스값을 조절해서 통과해보이게 하고싶었으나 

쉬운일이 아니더라구요.

 

 

보통 눈썹은 얼굴메쉬랑  한꺼번에 붙어있도록 모델링되어있고 

얼굴 자체에다가 뎁스값을 넣어버리면 얼굴이 머리카락을

먹어버리는 문제도 있었습니다. 

 

구현은 그냥 저 눈썹 머티리얼만 따로뺴서 뎁스계산을 안한다고 설정해줘서 했습니다 ㅠㅠ 

 

이거는 그냥 구라치는거라 생각하므로 자랑만 하겠습니다 

 

유니티였으면 이런 꼼수 안쓰고 될거같다는 생각이 들었습니다. (하일 유니티드라)

 

 

+ Recent posts