[blender node] 03. Texture Coordinate node (4)
Texture Coordinate node
그런데 막상 아래처럼 재질에 변화를 주려고 하면 쉽지 않다는 걸 알 수 있습니다.
이런 식으로 변하는 재질을 만들려면 재질 안에서 마스크에 변화를 줘야 하는데, 마스크를 바꾸려면 컬러램프로 마스크를 바꿔야 합니다.
주로 높이를 표현하는 A, B 마스크를 조절할 수 있겠네요.
아래처럼 컬러램프의 컬러값을 움직여 주면 재질이 바뀌는 걸 볼 수 있습니다. 컬러램프를 조절한다는 거는 결국 마스크를 바꿔준다는 거죠. 마스크를 쉐이더에서 변화시켜서 재질을 직접 조절하는 겁니다. 문제는... 직접 해보면 이 방법이 꽤 까다롭다는 거죠.
이미 잘 만들어 놓은 마스크를 또 여기저기서 만지면 전체적인 모양이 바뀔 수도 있고, 무엇보다 직관적이지 않습니다.
아래 노드를 보면 이미 컬러램프가 사방에 깔려 있습니다. 이걸 나중에 보면, 아무리 내가 만든 노드라고 해도 어떤 걸 건드려야 하는지 헷갈립니다. 물론 노드가 복잡해질수록 그룹별로 묶어 보기 좋게 만들어줄 필요는 있겠죠. 하지만 그래도 여전히 복잡합니다.
이렇게 재질 안에서 특정 노드를 조절하게 되면 이리저리 얽혀있는 노드들이 연쇄적으로 다 바뀔 수 있습니다. 그래서 다 만들어진 재질은 아래처럼 그룹으로 묶어, 그룹 외부에서 움직여 변화를 주는 방법을 고민해야 할 필요가 있습니다.
일단 이 글에서는 texture coordinate 노드를 알아보고 있는 만큼, texture coordinate에서 응용할 수 있는 방법을 하나 살펴보겠습니다.
아래 그림처럼 plane을 하나 만들고 벽돌 이미지를 연결해 줬습니다.
texture coordinate에 object 좌표를 연결해 주면 Plane 오브젝트 좌표를 따라 텍스쳐가 표현됩니다.
이때, 텍스처를 repeat이 아니라 clip으로 바꿔주면, Generated와는 달리 Object에서는 텍스처 표현 범위를 벗어나는 영역은 텍스처가 표현되지 않는다고 했었습니다. 이미지의 변화를 알아보기 쉽게 하기 위해 clip으로 바꿔주었습니다.
그리고 shift + a >>> empty 오브젝트를 하나 만들어 줍니다.
Texture Coordinate에서 아래 박스 친 곳에서 Object 항목을 이 empty 오브젝트로 설정해 줍니다.
그러면 이 Object 좌표가 Plane의 좌표를 따라 표현되는 게 아니라, Empty의 좌표를 따라 표현됩니다.
그냥 이렇게 보면 잘 모르겠는데, 3d view에서 Empty를 움직여보면 Empty를 따라 텍스처가 움직이는 걸 볼 수 있습니다.
empty 오브젝트를 이동하거나, 회전하거나, 스케일 조절을 해보면... Plane에 재질 설정을 했음에도 empty 오브젝트의 변화를 따라 변하는 것을 볼 수 있습니다.
Texture Coordinate는 오브젝트에 이미지를 표현할 수 있는 좌표를 만들어 줍니다. 여러 옵션에 따라 각각의 방법으로 좌표를 만들어 주면, 그 좌표에 이미지를 표현할 수 있는 겁니다.
그런데 이 object 항목에 다른 오브젝트를 연결해 주면, 연결된 오브젝트의 object 방식을 따라 좌표를 표현해 주게 됩니다.
바로 여러 오브젝트 중 특정 오브젝트의 텍스처 좌표를 가져와 사용할 수 있게 해주는 겁니다. 이는 특정 오브젝트의 텍스처나 좌표를 공유할 수 있도록 해주죠.
이러한 기능은 텍스처 좌표를 더 유연하게 다룰 수 있도록 해주며, 복잡한 쉐이더 작업이나 렌더링 효과를 더 쉽고 유연하게 구현할 때 활용할 수 있습니다.
이 전에, 블렌더는 이미지를 움직이는 노드를 제공하지 않기 때문에 이미지를 움직이는 게 아니라, mapping 노드에서 이미지가 표현될 좌표를 움직여 이미지의 변화를 표현해야 한다고 했었습니다. 그런데 이런 방식을 사용하여 empty 오브젝트를 보조 도구로 이용하면, 마치 텍스처를 오브젝트에서 자연스럽게 움직여 매핑하는 것처럼 직관적으로 사용할 수 있습니다.
다시 원래 재질로 돌아와 비교해 보겠습니다. 아래 그림처럼 오브젝트의 generated를 이용해서 높이 마스크를 만들어 눈과 돌 재질을 표현할 범위를 만들어 주었습니다.
empty 오브젝트를 하나 만들어 아래처럼 texture coordinate의 설정을 바꿔주었습니다. 이제 마스크 표현 범위를 컬러램프에서 표현하는 게 아니라, empty 오브젝트로 표현할 수 있습니다.
이제 empty 오브젝트를 z 축으로 올려보면, 마스크 범위를 바꿔줄 수 있습니다. 재질 내부에서 컬러램프를 만지지 않아도 재질 외부의 empty 오브젝트의 위치를 움직여 마스크를 조절해 줄 수 있게 됩니다. 컬러램프는 마스크의 콘트라스트를 조절하기 위해서 처음 설정한 뒤에는, 이제 다시 건들 필요가 없죠.
참고로 이때, empty를 선택할 때마다 쉐이더 창이 사라져서 불편하다면 아래처럼 핀 버튼을 눌러 화면을 고정할 수 있습니다. 블렌더는 선택한 오브젝트에 연동해 화면 창을 자동으로 바꿔줍니다. 그래서 empty 오브젝트를 선택하면 쉐이더 화면도 empty의 재질을 자동으로 표현해 주는데, 사실 empty는 산의 재질을 표현해 주기 위한 보조 도구로 사용할 뿐이죠. 핀 버튼을 누르면 쉐이더 창이 고정됩니다.
이제 재질 변화를 컬러램프가 아닌 empty 오브젝트를 움직여서 표현할 수 있습니다. 그러면 3d 상에서 직관적으로, 눈으로 재질의 변화를 직접 보면서, 표현해 나갈 수 있습니다. 직관적인 작업이 굉장히 중요한데, 블렌더는 이렇게 쉐이더를 유연하게 다룰 수 있는 여러 가지 방법들을 제공해 줍니다.
이거뿐만 아니라 geometry 노드를 사용하면, 또 다른 다양한 방법으로 쉐이더와 오브젝트를 연결하는 방법을 제공합니다.
씬을 절차적인 방식으로 다룰 수 있도록 해주는 정말 유연한 프로그램입니다.
보조 도구로 사용할 수 있는 empty 오브젝트도 여러 가지 모양으로 제공하니 구별해서 사용하시면 됩니다.
여러 개의 empty 오브젝트를 texture coordinate에 각각 달아서 입맛대로 조절할 수 있습니다.
눈 재질의 전체 높이, 산의 표면을 따라 눈이 녹는 표현 등, 블렌더에서는 재질을 원하는 대로 표현할 수 있습니다.
[blender node] 03. Texture Coordinate node (4)
[blender node] 03. Texture Coordinate node (4) - 연결된 글입니다.
03. Texture Coordinate node (1)
03. Texture Coordinate node (2)
03. Texture Coordinate node (3)
03. Texture Coordinate node (4)
03. Texture Coordinate node (5)
03. Texture Coordinate node (6)
'블렌더 > 쉐이더' 카테고리의 다른 글
[blender node] 03. Texture Coordinate node (6) (0) | 2024.01.09 |
---|---|
[blender node] 03. Texture Coordinate node (5) (0) | 2024.01.08 |
[blender node] 03. Texture Coordinate node (3) (1) | 2024.01.04 |
[blender node] 03. Texture Coordinate node (2) (1) | 2024.01.03 |
[blender node] 03. Texture Coordinate node (1) (1) | 2024.01.02 |