본문 바로가기
그래스호퍼/스터디

그래스호퍼 스터디 | 서피스 평탄화

by 한동주 2024. 8. 26.
반응형

개요

 

건축 관련 톡방에서 이러한 형상을 스케치업으로 어떻게 만드냐고 질문이 올라왔다.

스케치업은 잘 모르니 패스하고, 라이노로 어떻게 만들까 곰곰이 생각해보는데 이게 생각보다 어려울 것 같은 거다.

얼추 비슷하게 만드는 건 가능하겠지만 정확히 똑같이 따라 하려면 어려울 것 같았다.

 


문제 상황 및 해결 방안

 

단순히 일정한 간격으로 잘라주기만 하는 contour 명령어만 사용해서는 이렇게 라인들의 간극이 갑자기 좁혀지는듯한 효과를 낼 수 없다.

처음에는 서피스를 rebuild 하여 컨트롤 포인트를 조정한 다음 extractwireframe 명령어를 통해 isocurve 들을 추출하면 되지 않을까 했지만 실패했다.

결국 종래엔 애초부터 커브를 그려놓고, networksrf를 통해 isocurve가 꼬인 서피스를 만든 후 extractwireframe을 사용하였다.

networksrf에 사용할 커브를 그리는 게 중요한데, 끝 부분이 꼬여 있어야 저러한 느낌이 난다.

 

 

이렇게 끝부분의 커브가 휘어 있어야 아이소커브들이 꼬이게 된다.

 

난 커브를 추출할 때 extractisocurve 명령어에서 direction = U로 설정한 뒤 ExtractAll을 통해 U 방향의 커브만 추출하였다.

 

그렇게 나온 커브가 위의 사진인데, 이제 이걸 어떻게 처리해야 하는지가 문제다.

 

 

그냥 단순히 한 방향으로 extrude 시키면 사진과 같이 커브 사이의 간격이 큰 부분은 빈공간이 생기고 반대로 간격이 작은 부분은 겹치게 된다.

 

해당 문제는 간단히 기존에 있던 서피스를 추출한 커브로 split 해주면 해결된다. 하지만 이제 또 다른 문제가 생겼다.

서피스들의 높이가 전부 같게 된다. 그런데 이건 당연한 결과다. 지금 내가 취한 행동은 연속적인 서피스를 split 한 것밖에 안 되기 때문이다.

 

 

또 하나의 문제는 이렇게 각 서피스의 윗면이 굴곡져 있다는 것이다. 이것도 역시 당연한 게, 굴곡진 서피스를 그대로 split 한 결과이기 때문이다. 하지만 처음의 레퍼런스 이미지를 보면 윗면이 평평하다는 걸 알 수 있다.

 

 

앞의 두 문제는 뒤의 문제를 해결하면 자연스럽게 해결된다. 윗면을 평탄화시키면 굴곡진 느낌도 살면서 높이 차이가 생기게 된다.

이 과정은 그래스호퍼로 진행하였다.

 

스터디를 위해 마구잡이로 작성한 코드라 정리가 전혀되어 있지 않다.

인풋인 서피스에는 앞에서 split 했던 서피스들을 넣어주면 된다. 최종 결과물은 마지막의 loft 컴포넌트이다.

이 코드를 만들면서 힘들었던 것은 두가지다.

첫번째로 서피스를 평탄화 하는 방법을 구상하는 초기 단계가 힘들었다.

두번째로는 모든 서피스를 동시에 reference 하여 한번에 평탄화 할 수 있도록, 데이터 구조를 짜는 부분이 힘들었다.

 

처음 코드를 짤 땐 하나의 서피스에 대해서만 진행하였다. 가장 처음의 아이디어는 서피스의 중간을 지나는 iso curve를 따라 z축이 일정한 라인들을 그리고 그 라인을 따라 평탄화하면 되지 않을까? 였다. 그게 결국에는 옳았고 먹혔다.

모든 서피스를 동시에 참조하여 평탄화 할 수 있도록 서피스를 graft 하여 코드를 작동시키니 오류가 나더라. 뒤쪽에서 그냥 flatten과 graft를 이용했던 부분에서 path mapper를 통해 데이터 구조를 맞춰주니 잘 작동하였다.

 


향후 활용 방안

 

이 서피스를 평탄화 하는 부분은 향후 콘타 생성 코드에서도 활용될 수 있을 것 같다는 생각이 든다.

현재 내가 사용하고 있는 코드, 혹은 유튜브나 여러 강의에서 콘타를 만드는 방식은 지형 서피스를 만든 뒤 도로 커브를 project 한 뒤 split 하여 사용하는 식이다. 하지만 이 방식은 이 글에서 그냥 서피스를 split 했을 때 나왔던 문제인 서피스가 굴곡져 있다는 문제를 그대로 가진다. 도시의 콘타를 만들 때는 큰 문제가 없겠지만 산지처럼 지형의 굴곡이 심한 대지에서 도로를 만들면 모습이 많이 비현실적으로 보일 것이다. 현실의 도로는 거의 대부분이 평탄화되어 있으니 만약 도로를 평탄화 시켜준다면 렌더링 시에 좀 더 현실적으로 보일 것이다.

 

연속수치지형도 등에는 보통 도로의 아웃라인 뿐만 아니라 중심선도 포함되어 있기에 그것을 활용하여 도로를 평탄화 하면 가능할 것 같다는 생각이 든다. 하지만 도로를 평탄화하면, 그에 맞춰 주변 서피스도 처리를 해주어야 한다는 문제가 발생한다. 이에 대해서는 향후 많은 고민이 필요할 것이다.

반응형

댓글