오늘의 핵심은 치환이다.
그전에 어제 작업한 내용에 대해 노드 정리를 해줬다.
현재 가지고 있는 데이터를 확인해 보자.
1212개의 packing 된 조각과 s@roompart라는 이름의 정보를 가지고 있다.
이 건물을 큰 빌딩으로 묘사하게 된다면, 높은 확률로 보라색 벽면들의 스타일이 같을 것이다. 마찬가지로 그 옆의 청록색 또한 높은 확률로 청록색 벽들끼리 스타일이 같을 것이다.
벽을 하나 예쁘게 만들어주고, 같은 색의 벽면들을 치환해 줄 것이다.
치환을 위해서 필요한 노드는 transform pieces 노드이다.
치환의 조건이 되는 attribute에 name이 적혀있다는 것은 name이 같은 조각끼리 치환을 하겠다는 것인데, 현재 있는 정보로 치환을 한다면, roompart가 같은 조각끼리 치환을 해줄 수 있을 것이다.
작업자가 해야 할 것은 치환되기를 원하는 벽면을 미리 꾸미고, @roompart의 이름을 통일시킨 다음 교환을 진행하면 된다.
일단 이런 식으로 벽을 꾸며줬다.
꾸며준 벽면 데이터는 transform piece 노드를 사용해서 치환한다.
매우 간단하게 치환을 적용해 보았다.
간단한 방법이지만, 모르면 시도하기가 쉽지 않다.
이번에는 바닥에 teapot을 올려보자.
치환된 정보와 아직 안된 정보들을 한 번에 확인해 보자.
parameter가 겹치면 안 되기 때문에 잘 확인해 준다.
이제 분기점에 도달했다.
지난 시간까지는 방을 디자인한다고 표현하고, bottom, mid, top 중 어떠한 조각을 사용할지에 대한 노드를 만들었었다.
이제는 조금 다르게 이해해서, 방의 어떠한 조각을 사용할 것인지 '고르겠다' 정도로 이해하면 좋다.
진정한 디자인, 즉 건물이 어떻게 생기기를 바라는지에 대한 것은 지금부터 하나하나 만들어가면서 치환해 주는 과정이 필요하다.
예를 들어, 바닥을 나무바닥으로 만든다면, 나무바닥을 꾸며주고, 치환을 진행하면 된다.
현재는 방을 빈 공간으로 표현하였지만, 만약 사무실로 꾸며주겠다고 한다면, 방 한 칸을 사무실 모양으로 꾸며준 뒤, mid_5를 치환해 주면 사무실 공간의 나열처럼 묘사할 수 있을 것이다.
도심 속에 있을법한 어마어마하게 커다란 빌딩을 붕괴시키는 것과 사이즈가 작은 건물을 붕괴시키는 것은 서로 완전히 다른 방식의 과정을 필요로 한다.
위와 같은 63 빌딩을 붕괴시킨다고 한다면, 어디까지 디테일을 신경 써줘야 할 것인가?
만일 작업자가 콘크리트 묘사까지도 표현해주고 싶다고 해서 조각들 사이의 노이즈까지 표현해주겠다고 한다면 조각의 수량이 감당할 수 없을 만큼 늘어나게 될 것이다.
또한 보이지도 않을 디테일에 자원을 낭비하게 된다.
반면에, 위와 같은 사이즈를 가늠할 수 있을 수준의 건물을 붕괴시킨다면, 이 때는 접근을 달리 해서 디테일에 신경 쓰는 정도가 확 높아져야 한다.
당연한 이야기이지만, 건물 조각에 대한 디테일도 신경 써줘야 하고, 벽도 지금보다 더 두껍고 현실적이 될 수 있도록 준비해줘야 한다.
더 깊게 들어가는 디테일로, 벽 안쪽에 철근이 박혀있다면 콘크리트의 부서지는 것이 버티는 힘이 존재하고 찌그러지는 듯, 부서지는 그런 느낌적인 묘사까지 모조리 표현하겠다는 마음으로 작업을 진행해야 할 것이다.
요약해 보자면, 정말 커다란 건물을 멀리서 보면서 붕괴시킬 것인지, 작은 건물을 디테일을 살려서 부술 것인지를 정해야 하고, 이것이 명확하게 정해졌다면, 서로 다르게 concept을 잡고 작업을 시작해야 한다.
다음시간에는 우선 커다란 빌딩을 어떻게 부수는지 공부해 볼 것이다.
작은 건물을 부수는 작업은 자동차 작업과 어느정도 유사성이 있다.
바로 메가스캔 데이터 가져와서 벽면 냅다 치환해보기 성공
high poly 데이터를 사용할 일은 없을지도...(순식간에 무거워진다 ㄷㄷ)