반응형

unity water 쉐이더 만들기!

 

 여러가지 튜토리얼을 참고, 조합해서 만든 water 쉐이더로, 파도 노말을 블랜드 시켜서 양쪽으로 흘러가게 만들어 주었다. 'Fresnel' 은 바다의 색을 두가지로 (겉면과 안쪽면) 혼합할 수 있어 겉은 노란빛의 색, 깊은 속은 푸른빛으로 설정해 주었다. 

*단, 투명도를 많이 높이게 되면 두가지 혼합 색이 많이 나오지 않음. 

모든 조절이 필요한 fresnel, normal power, glass 등등 property로 설정 후, inspector 창에서도 조절이 가능하게 만들었다. 그 외에도 추가적으로 필요한 쉐이더 그래프를 짰을 경우, proprety로 추가 가능하다. (왠만하면 property로 설정해 inspector에서 조정 가능하게 만드는 것이 좋음) 만약, property로 설정 해주지 않는다면, 매번 shader graph를 켜서, 변경 후 저장해야만 확인 가능하다. 특히 color나 바로바로 변경하면서 확인해야 하는 것들은 이런 과정이 굉장히 번거로워지기 때문에 property를 꼭 사용하는 것이 좋다. 

①lit master -  여기서 사용한 릿 마스터 라는 쉐이더 그래프는 HDRP(고해상도 렌더 파이프라인)로, Pack Manager에서 update 해서 사용 가능하다. (Create → Shder → Lit Graph)

Material Type 도 변경이 가능하며, Standard, Subsurface Scattering, Anisotropy, Iridescene, Specular Color, Translucent 등이 있고 원하는 타입으로 맞춰 사용하면 된다.

②Base Color - Lerp를 이용해서 color 두가지를 더해주고, property로 두가지 색을 지정. Fresnel로 물의 겉과 속으로 컬러로 나눈다는 것을 지정해준다.

③Normal - 파도 치는 것을 현실감 있게 주기 위해 파도 노말 텍스쳐를 불러온다. 같은 텍스쳐 노말을 두번 사용한다. Tilling And Offset으로 uv를 원하는 만큼 타일링 해준다. (x,y 값으로 조정) 

vector와 time 노드를 사용 multiply로 엮어 준다. (vector 값을 property로 만들어 스피드를 제어한다)

④Smoothness - glass 농도를 조절해 준다(property로 꼭 빼놓을 것**)

⑤Alpha - 투명도 조절을 해준다. 이때, Fresnel 을 가져와서 겉-속 까지 자연스럽게 투명하게 만들어 준다.

(이때, One Minus 로 반대로 뒤집어준다**, Fresnel Effect 노드를 보게 되면 겉이 화이트, 속이 블랙이므로 반대로 뒤집어서 사용해야함***)

 더 많은 노드를 효율적으로 사용할 수 있는 'lit master' 노드를 선택하게 되었고, HDRP가 좋은 퀄의 사실적인 어셋을 만들 수있어서 사용하게 되었다. Lit master 안에 많은 옵션 설정이 있고, 그 때문에 water 같은 여러 노드가 필요한 쉐이더 그래프를 짤때는 Lit master가 좋은 것 같다. 여러 튜토리얼을 따라하다 보면 원하는 property가 없어서 주춤할 때가 많다. 어떤 렌더 파이프라인을 선택할지, 어떤 쉐이더 그래프를 사용할지 고민 후에 시작하는 것이 좋다.

 

반응형
반응형

 회사 프로젝트로 유니티 작업을 해보면서, 3D로 구현하는데 필요했던 자료들을 공유하려고 합니다.

 순서는 마야로 시작해서 substance painter 로 텍스쳐, 그 후에 유니티로 가져와 마무리 하는 등으로 작업. 섭스로 작업한 것들은 텍스쳐를 이용해 어느 정도 퀄리티를 낼 수 있지만, 유니티 환경도 섭스 환경과 비슷하게 맞춰 줘야 한다는 점이 한계였다. 유니티에서 좋은 환경을 만들어 내려면 Light 부터 Probe 까지 기본 지식이 필요하고, Inspector 창을 이해하고 사용할 줄 알아야 한다. 애니메이션 같은 경우는 유니티에서 시도해 보았지만, 마야보다 떨어지는 유니티 자체 환경 탓에 마야에서 모두 작업하는 방식을 사용하였다.

 그래프 에디터 등 그래프를 만들어 쉐이더를 구현할 때는 여러가지 유튜브 튜토리얼을 보고 참고 하였으며, 여러가지 필요한 쉐이더들을 조합하여서 구현해 내는 작업을 하였다. 

 ① 이미지에 Water ball + Shark , 두가지 애니메이션을 사용하고 싶을 때 = Update Mode 를 조정. 

 

② unity_gizmos - 작업 할때 불필요한 기지모는 체크를 해제하여 꺼줄 수 있다. 

(translate 사용시 선택되는 불편함, scene 에서의 아이콘 이미지로 인해 작업 불편함)

 

③ 오른쪽 Hierachy 에서 ▼부모 /그아래 - 자식 관계, 맨 왼쪽 pivot 을 center 로 바꿀 시 (부모, 자식 중간 지점에 기준점), povot 으로 바꿀 시 (부모 오브젝트에 기준점)

 

④ Project → Create  클릭 하여 원하는 폴더를 추가 (or 원하는 경로안에서 마우스 오른쪽 버튼 클릭 후 폴더를 추가)

 텍스쳐, Fbx 등 모델링 파일들은 바탕화면에서 드래그 앤 드롭으로 생성 가능.

 

 

<노드 만들때, 가장 많이 사용하는 것>

float - shader 계산 상수 값 정의, min/max 값 정의, texture 따로 없을 경우 color, min/max 로 name 바꿔서 역할, property로 변경 가능

add - texture 2개를 합치는 역할

one minus - 값을 반전 시키는 역할(texture 반전), 1~0,0~1 바꿔줌

 ⑤ Normal 값을 줄 때, 조정 - Default Texture 확인, Unpack Normal Map 확인 

 - subs 에서 작업한 텍스쳐일 경우, Default Texture - White, Unpack Normal Map 체크 해제

 

⑥ Float 노드를 이용해서, 제어 - 반사, 투명, 노말.. 등 최소, 최대값 설정 후 → property로 변경 → 원하는 name변경

 

⑦ 쉐이더 그래프 - Add를 이용해서 추가 할때, R G B 는 각각 X Y Z 값을 뜻함.

 주의) R G B 중 한가지만 연결 하고, 나머지를 연결 안해줄 경우 제데로 쉐이더가 만들어 지지 않음.

 

- Time : 가장 많이 사용하게 되는 property 로, 속도 조절 : Time(t/20) < Time(t) < Time(t*2)

 

⑧ Alpha - 깔끔하게 알파가 빠지지 않을 때, Surface Type - Transparent, Alpha Cutoff 체크 

반응형
반응형

 

 유니티 작업을 할 때, 애니메이션을 유니티로만 주기가 힘들다는 사실을 느끼게 됩니다. 그래프도 보기 어렵게 되어있을뿐더러 

직접 하나하나 조정하기 힘들기 때문에

 마야에서 애니메이션 작업 후, fbx 파일로 임포트 시켜주는 방법이 가장 편한 방법입니다.

마야는 워낙 애니메이션 잡기에 편한 툴이므로 다룰줄만 안다면, 마야와 함께 사용하는 것이 좋습니다.

생각보다 굉장히 간단하고 쉬운 maya에서 애니메이션이 든 fbx 익스포트 법을 해보겠습니다.

 

 

유니티로 가져가기전 가장 먼저 해야 할 것은 마야에서 가져갈 어셋을 선택 후,  File→Export selection  

아래와 같은 창이 뜨게 됩니다. 

빨간 박스가 애니메이션을 베이크 할 수 있는 체크 박스입니다.

 

 

Bake Animation을 체크해서 활성화해주고

 start - end에 작업한 애니메이션 프레임만큼 숫자를 적어줍니다.

 맞게 적어주었으면, 아래 Export Selection을 눌러서

원하는 경로에 파일을 넣어줍니다.

 

 

 

 

 

 원하는 버전에 unity를 열어서, 원하는 폴더에 fbx를 임포트 시켜줍니다.

 

 

 

임포트 시킨 파일을 눌러 확인하면, 왼쪽 빨간 체크와

마찬가지로 Take001이라고 애니메이션이 따라온 것을

확인할 수 있습니다. (Take 001이 존재하지 않을 시,

MAYA를 다시 열어서 BAKE 체크했는지 확인 후 다시

익스포트 시켜줘야 합니다**)

 

 

 

 

 

 

이제 유니티에서도 내가 잡은 애니메이션을 정상 작동시키기 위한 작업들이 필요합니다. hierarchy 창에서 내가 임포트 한 어셋을 클릭 (아래 이미지 참고). Inspector 창에 Add Component에서 'animator'라고 검색

***Animator를 클릭하여 추가해 줍니다. (오른쪽 이미지 확인)

 

다음은, Project 창에서 원하는 경로에 마우스 오른쪽 클릭 → Create → Animator Controller를 만들어 줍니다.

만들게 되면 New Animator Controller라고 만들어진 것을 볼 수 있습니다. 여러 애니메이션을 넣게 될 경우를 대비해서 

이름을 바꿔줍니다. 

 

아래 순서에 맞게 클릭하여 줍니다.  

① New Animator Controller (이름 임의 변경 Shark) 클릭 

② Animator 창 클릭 

 

순서에 맞게 클릭 시, 위 이미지와 같은 창이 뜨게 됩니다.

이때, 맨 처음 fbx 불러왔을 시에 만들어진 Take001을 드래그하여 넣어줍니다 **

 

Animator 창으로 Take 001을 드래그하게 되면 오른쪽 이미지와 같이 저절로 노란선이 연결됨을 확인할 수 있습니다.

이제 재생 버튼을 누르면 애니메이션이 적용됨을 확인할 수 있습니다.

나중에 애니메이션을 다른 파일로 변경할 경우, Animator 창에 take001을 삭제 후,

원하는 파일을 드래그하신 후, 연결하여 주시면 됩니다.

반응형
반응형

 
Unity로 alembic 파일(abc)을 작업하기 위한 방법!

 
Maya 에서 작업한 파일을 alembic cash로
구워 export 시켜줍니다.


cache -> alembic cash -> export selection to alembic(or all)

 

 

unity에서 alembic 파일 불러오기

 

Maya에서 export 시킨 alembic 파일을 원하는 위치에 드래그앤 드롭 시킵니다.

 

 

 

 

 Material 적용이 되지 않은 alembic 파일이 들어오게 됩니다.


Inspector 창에 'Alembic stream player(Script)' 라는 스크립트가 들어와 있는 것을 보게 됩니다.

 

준비 된 쉐이더 적용 후

 

 

 


Timeline 창에서 create 버튼을 눌러줍니다.

원하는 경로를 선택한 후 PLAYBLE 파일을 만들어 주면 됩니다.

 

 

 

 

왼쪽 하단에 + 버튼을 클릭하여, Alembic track 을 추가합니다.

 

 

 

 

 

Alembic track 이 추가되고 위 이미지와 같이 마우스 오른쪽 버튼을 클릭하여 Add Alembic Shot를 추가하여 줍니다.

 

 

 

 

 

 위 이미지 빨간 상자 속 'AlembicShotAsset'을 클릭하여 Inspector 창을 확인하게 되면

Alembic Shot Asset -> Stream Player 에 None (Alembic Stream Player)라고 뜨게 됩니다.

 

 

 

 

 

Stream Player None이라고 뜨는 곳에  Hierachy 창 안에 있는 Alembic 파일을

드래그 앤 드롭 해주면 정상적으로 들어오게 된 것을 확인 하실 수 있습니다.

 

 

 

 

 

추 후 애니메이션 loop 를 원할 시, Timeline에 AlembicShotAsset 을 클릭후,

Inspector 창 -> Animation Extrapolation -> Post-Extrapolate -> None 을 Loop로 변경하면 됩니다.

 

 

 

 

 

 

 

 

 

 

반응형
반응형

light 

 

- 동적 조명 (realtime lighting)

  기본적인 방법, 실시간 속성에 따른 계산, 움직이는 조명과 오브젝트 즉시 반영, 반사되지 않는다

- 베이크드 라이트 (baked lightmaps)

  빛과, 그림자를 미리 구워 게산 후 텍스쳐에 반영, 게임 플레이 중엔 변경 불가능 (정적-static), 직접 광선과

  간접 광선 포함 가능

 * 직접 광선 - 직접 표면에 닿는 광원, *간접 광선 - 다른 오브젝트 표면에 부딪혀 반사되는 광원

- 전역 조명 (GI), 사전 계산된 동적 전역 조명 (precomputed realtime GI)

 

light 종류

 

(1) Directional Light 
- 햇빛, 거리 x, 방향만 존재 (빛의 시작점, 끝점 모두 없음)
- 물체와 거리가 가까워져도 밝아지지 않음 (멀어져도), 감쇠 효과 x
(감쇠 효과란 : 빛이랑 물체가 가까우면 밝아지고, 멀어지면 약해짐)
- 그림자 생성
- 작업할 때, 불편하지 않게 구석에 놓음 됨
(2) Point Light
- 전구
- 사방으로 뻗어나감, 감쇠 효과
- 방향 x, 거리 o
- 그림자 생성 x
(3) Spotlight
- 창문으로 비치는 햇살, 손전등
- 감쇠 효과
- 거리 o, 방향 o 
- 그림자 생성 x
(4) Area Light
- 사각형 영역

 

shadows

 

- cast shadows - 그림자가 그려짐
- receive shadows - 다른 오브젝트의 그림자가 생기게

 

bake / realtime / mix

 

무거운 정도

realtime > mix > bake

bake - 미리 구워 반영, 씬의 다이내믹한 변화 반영 x, 실시간 반영 x

mix -  오브젝트나 라이트를 움직여야 할 때, 실시간 반영

realtime - 프레임 당 한 번씩 실시간 조명에 대한 조명 계산

 

이 외에 필요한 구성요소

 

(1) scene settings

(2) volume setting

 - hirachy에 있는 volume setting, 전체 volume 제어 (light 안에 volume setting 은 light 마다 제어 가능) 

(3) post-process volume

(4) light probe group

 - 선 계산해주는 역할 (렌더 무거운 것을 미리 계산), 라이트가 중요한 부분 or 오브젝트엔 모두 배치

(5) reflection probe

 - 뷰를 모든 방향에서 캡처하는 카메라, hdri 환경 만드는 것과 비슷, 오브젝트 반사 or 주변 환경에 따라 사실적으로 

 변경 가능하게 도와주는 역할

(6) planar reflection probe

 - 정확한 반사 재질을 내는데 도움 (평면) , ex) 거울

반응형

+ Recent posts