Grasshopper Set 기본개념 이해하기


— 그래스하퍼 없이 설명하는 Set (List & Tree) 쌩기초 


Jeeyong Shin, jul 29, 2019






Grasshopper는 대중적으로 널리 활용되고 있는 3D 모델링 프로그램인 Rhinoceros(이하 Rhino)의 애드온 프로그램이다. 하지만 Grasshopper는 Rhino를 기반으로 하고 있음에도 Rhino와는 전혀 다른 디자인 방법론을 바탕으로 하므로 UI에서 활용 방법에 이르기까지 많은 것들이 서로 다르다.

Rhino를 포함한 일반적인 3D 모델링 프로그램에서는 가이드라인을 그리고 점을 찍은 다음 선을 그리고 마침내 면을 만드는 것처럼 처음과 끝이 명확한 방식으로 작업이 진행된다. 따라서 프로그램마다 다소 차이는 있더라도 어느 정도 이미 지나가버린 과거의 작업의 경우 다시 그 시점으로 돌아가서 수정을 하기 어렵다. 따라서 3D 모델링에 앞서 완벽한 디자인이 선행되어야 하며, 불가피하게 3D 모델링을 하는 도중에 디자인을 변경하게 되면 지금까지 진행된 작업 과정을 버리고 한참 전의 시점으로 회귀해야 한다.

이는 두 가지 측면에서 일반적인 3D 모델링 프로그램의 약점을 드러낸다. 첫째, 앞선 작업이 모두 무효화되기 때문에 3D 모델링 진행 중에 디자인이 변경될 때마다 작업 시간이 비약적으로 늘어나게 된다. 둘째, 분명히 상상이나 스케치 안에 있던 것을 3D 모델링을 통해 구체적으로 표현하는 과정 중에서 디자인이 개선될 수 있음에도 앞선 이유로 인해 3D 모델링 중에는 더 나은 디자인을 모색하려는 창의적 사고는 아예 접어두게 된다.

그러나 Grasshopper에서는 모든 개별 작업은 컴포넌트라는 것들을 통해 이루어지고 컴포넌트들을 서로 잇는 방식으로 전체 작업이 진행된다. 학창 시절 수학 시간에 배운 알고리즘과 정확히 동일한 방식이다. 여기에서는 작업의 처음 활용된 컴포넌트부터 마지막 컴포넌트까지 모든 컴포넌트들이 캔버스라고 불리는 대지 위에서 서로 연결된 채 남아있다. 따라서 Grasshopper에서는 앞서 설명한 다른 프로그램들과 달리 과거의 어떤 시점의 작업도 언제든지 수정이 가능하다.

이를 통해 Grasshopper는 앞서 설명한 일반적인 3D 모델링 프로그램의 두 가지 약점을 완벽하게 극복한다.
첫째, 3D 모델링을 하는 과정 중에 언제든지 이미 지나가버린 과거의 컴포넌트를 조작하면 디자인을 변경할 수 있기 때문에 디자인이 변경되더라도 작업시간이 전혀 늘어나지 않는다. 컴포넌트의 수치 값만 변경하는 것이라면 단지 1-2초의 시간만 소요될 뿐이다. 설령 전격적으로 디자인이 변경되더라도 수정이 필요한 부분만 잘라서 새로운 컴포넌트들로 대치하면 되기 때문에 변경 작업과 무관한 것 때문에 작업시간이 늘어나지 않는다.

둘째, 디자인 변경에 따른 작업 효율성이 매우 높기 때문에 3D 모델링을 하면서도 언제든지 디자인을 개선하기 위한 창조적인 생각을 할 수 있고 실제로 손쉽게 디자인에 반영할 수 있다.  그리고 단순히 특정 컴포넌트의 수치 값만 다양하게 변경하더라도 동일한 디자인 정체성을 가진 다양한 변주를 만들어낼 수도 있다.  더 나아가 연관 없는 두 개의 디자인을 이루는 컴포넌트들을 서로 잘 연결해서 두 디자인의 정체성을 동시에 내포하는 새로운 디자인을 만들어낼 수 도 있다.

하지만 이러한 강력한 장점들에도 불구하고 일반적인 3D 모델링 프로그램과 UI, 활용방법 등 모든 것이 다르기 때문에 Grasshopper의 진입장벽은 매우 높은 편이다. 그리고 그 진입장벽을 더욱 공고히 하고 학습하는 와중에 포기하게끔 만드는 것이 이 글에서 기본 개념을 설명하려는 데이터 처리 관련 컴포넌트들이다. 사실 이 글을 쓰게 된 계기도 이와 관련 있다. 글쓴이에게는 간헐적으로 학교나 기관들을 통해 Grasshopper를 강의할 기회가 있는데 많은 학생들이 이 컴포넌트들을 배울 때 가장 많이 좌절하거나 포기한다.

Set이라는 컴포넌트 카테고리 안에 있는 이 문제의 컴포넌트들은 지오메트리부터 스칼라, 벡터, 텍스트 등 모든 종류의 데이터를 분류하거나 조작하는 기능을 담당한다. 데이터를 내 입맛에 맞게 잘 조작을 해야 원하는 형태의 디자인을 구현할 수 있기 때문에 매우 어려움에도 이 컴포넌트들은 반드시 완벽하게 이해해야 한다. 사실 전문적인 프로그래머나 프로그래밍에서 데이터를 처리하는 방식에 대한 약간의 지식이 있는 사람들이라면 그리 어렵지 않게 이해할 수 있다. 왜냐하면 프로그래밍에서는 순수 텍스트를 통해 코딩 스크립트를 작성해야 하지만 Grasshopper에서는 동일한 작업을 하더라도 상대적으로 예쁘게 시각화된 컴포넌트들을 잇는 방식으로 하기 때문이다. 하지만 안타깝게도 Grasshopper를 활용하고자 하는 사람들은 데이터 처리에 대한 지식이 전무한 디자이너가 대다수이다.

이 글에 포함된 자료에서는 Set 컴포넌트 카테고리 내의 데이터 처리와 관련된 List와 Tree 그룹의 컴포넌트들의 아주 기본적인 개념들을 Grasshopper 없이 “학교”와 “나무”의 개념에 빗대어 설명한다. 하지만 글쓴이의 설명력 부재 때문이기도 하지만 자료의 내용들만으로는 해당 컴포넌트들을 충분히 이해할 수 없다. 반드시 Grasshopper를 켜고 해당 컴포넌트들을 실습하는 과정 중에 보다 이해도를 높이는데 이 글을 활용하기를 바란다.

이 글 아래에 이어지는 몇 장의 이미지는 자료의 일부 페이지를 발췌한 것이다. 전체 자료는 아래의 링크를 통해 다운로드하면 된다.

첨부자료 다운로드 링크 ︎