언리얼 엔진 - Object를 통해서 Texture 추출하기
처음으로 적어보는 문장형 주제... 실제로 저것 외에는 뭐라고 설명을 해야할 지 모르겠다.
오늘은 UI에 필요한 Icon을 어떻게 해야할까 고민했다가 검색을 오랜시간 거쳤음에도 마음에 드는 Icon이 없어서
SceneCapture2D를 이용해서 만들 생각으로 바꿔먹었다.
애니메이터나 아트쪽 지인이 없다면 그냥 나처럼 날로 해먹자.
외국에 많은 라이브러리 + 에셋 판매를 보면 이것을 이용하여 데이터를 뽑는 것이 많다.
일단 그것을 구매하거나 라이브러리 전체적으로 데이터를 뽑을 수는 없고,
리얼타임으로 작동하는 SceneCapture를 이용하여 모습을 이리저리 이동해보고 이것을 텍스쳐로 뽑아볼 생각이다.
전체적인 구현 루트는 다음의 영상으로 대체.
요약형태로 보여주자면
3d 에셋(스태틱 메시) + 빛이 없다면 깜깜해서 하나도 안 보일테니 라이트 하나 붙여준다. 포인트 라이트 정도.
디렉셔널해도 상관은 없다. 어차피 빛의 방향은 스태틱 메시의 직교방향이고 광량은 줄여버릴 생각이라서.
그리고 새로운 레벨을 만들어서 마음에 드는 형태로 찍힐 때까지 광량을 줄이고 늘이고 한다.
그리고 랜더 타깃으로 새로운 랜더 타깃을 만들거나
만들어진 랜더 타깃으로 데이터를 뽑아낸다.
빛 데이터를 뽑아냈기 때문에 alpha, 즉 불투명도가 역산되어있다.
랜더 타깃 자체로는 이것을 건들 방법이 없다.
그리고 랜더 타깃이기 때문에 우연히 데이터를 잘못 바꾸면 사라져버린다.
스태틱 텍스쳐를 통해 텍스쳐라이징을 하고.
우리는 이 데이터를 기준으로 불투명도를 역산해야 한다.
방법은 두 가지 있는데, 처음에는 외국인들 루트를 따라하다보니 머티리얼을 사용해서 만들었다.(영상도 이와 같다.)
하지만 텍스쳐라이징을 한 텍스쳐 설정에는 alpha값을 설정하는 값이 존재한다.
min alpha / max alpha 값이다.
이 두 개의 값은 리소스 파일로부터 alpha를 읽어 최소값과 최대값을 지정한다.
따라서 1/0으로 대입하면 모든 데이터가 역산된다는 뜻이다.
이후 랜더 타깃은 없애도 텍스쳐가 된 애들한테는 영향이 없다.
물론, 여러 개 만들어야 하니 랜더 타깃 하나로 굴려 써먹는 게 편할 것이다.