기본 콘텐츠로 건너뛰기

[라이노 파이썬] 동일한 옵티마이저를 이용해 여러 오브젝트 자동 최적화

옵티마이제이션 자동화 하기(라이노 + 그래스호퍼)

이런분들께 유용합니다.


  1. 이미 라이노 + 그래스호퍼에서 갈라파고스 등으로 최적화를 할 수 있는분
  2. 같은 최적화 템플릿으로 여러 오브젝트를 최적화를 효율적으로 하길 원하는 분

장점

  1. 수동조작 시간을 줄여주기 때문에, 업무를 효율화 할 수 있음
  2. "얼마나 많은 작업자가 필요한가" -> "얼마나 많은 컴퓨터(또는 컴퓨터 파워)가 필요한가"

Summary

 이 글에선, 동일한 옵티마이제이션 탬플릿을 통해 여러 오브젝트를 자동으로 최적화하는 방법론에 대해 다루겠습니다.

Main

 지난 회사에서 하던 프로젝트 중, 동일한 옵티마이제이션 템플릿을 이용해서 여러 오브젝트(지오메트리)를 최적화하는 업무가 있었습니다. 그 당시 CATIA(또는 3DEXPERIENCE)를 이용했습니다. CATIA는 Geometrical set이라는 독특한 구조를 가지고 있고, 이 안에 geometry 뿐만 아니라 다양한 정보 및 optimizer도 포함 할 수 있습니다. 그래서 각 오브젝트에 옵티마이저를 넣고, 나중에 트리거 버튼을 통해 동시에 최적화가 가능합니다.

 프로젝트가 끝나고 이런 질문을 해봤습니다 "같은 방법론을 라이노 + 그래스호퍼로 할 수 있을까?" 만약 가능하다면, 다윗과 골리앗의 싸움에 큰 실마리를 제공할 수 있다고 생각했습니다. 다른 글에서도 쓴 것 같은데, CATIA는 최소 라이노 보다 10배는 비싼 도구입니다. 그만큼 많은 기능들도 있겠지만, geometry만 다루는 측면에서 같은 작업을 해보고 싶었습니다.

라이노 가격. G마켓 등에선 90만원 이하로도 구입 가능합니다.
카티아 가격. 약 10배를 지불해야하며, 유지비용은 별도입니다.


 제가 원하는 시나리오를 하기 위해선 그래스호퍼의 기본 최적화 도구인 Galapagos로는 어림도 없습니다. 왜냐하면 사람이 직접 Galapagos를 더블클릭해서 조작해야기 때문입니다. 그래서 방법을 찾던중, Octopus라는 플러그인에서 단서를 얻을 수 있었습니다.

갈라파고스 일반적인 방법론
우측 상단이 갈라파고스이며, 직접 조작해줘야합니다.


 예제에서 제공한 것은, Anemone라는 Looping에 특화된 플러그인과, Octopus내의 옵티마이제이션과 관련된 컴포넌트들을 조합해서 사람의 직접적인 조작이 거의 없이 자동으로 최적활르 해주는 것이었습니다. 기본 예제는 하나의 오브젝트에 대한 얘기였어서 Loop in Loop를 만든다면 여러 오브젝트에 대해서도 가능하리라 생각했습니다.(큰 Loop는 오브젝트를 선택, 작은 Loop는 옵티마이제이션을 담당). 상당히 오랜 기간 테스트를 했습니다.

 그리고 간신히 되도록 만드는데 성공했지만, 약 1000회의 반복작업이 이뤄지면 갑자기 멈췄습니다. 1000번이면 많다고 생각할 수 있지만 최적화시, 한 오브젝트에대해 200번의 반복설정을 걸면 약 5개 정도 하면 끝나는 수준입니다. 제가 목표로 삼았던 오브젝트의 갯수는 80개였기 때문에, 한참 미치지 못하는 수준이었습니다.

 아쉬움을 뒤로하고 다른 방법을 찾기 시작했습니다. 다행히도 Octopus내의 다른 컴포넌트들이 열쇠를 쥐고 있었습니다. Octopus도 여러 업데이트를 거치며 다양한 컴포넌트가 추가되었고, 그중 하나를 사용할 수 있었습니다. 최초 Octopus에 포함되어있던 컴포넌트는 Multi-target optimization과 Boolean값을 넣을 수 있지만 여전히 수동조작에 의존하는 단점이 있습니다. 하지만 새로 나온 컴포넌트의 경우 SVM(Support Vector Machine), ANN(Artificial Neural Network) 등 최근 개념등을 기반으로 작동해 이해하기 어려운 점은 있지만, 수동조작 없이 사용 가능한 장점이 있습니다.

 이 컴포넌트들은 다음과 같은 사항을 충족했습니다.

  1. 더블클릭 없이 작동 가능
  2. 루프 등을 통해 여러 오브젝트에 대해 사용가능


주요 컴포넌트들

 각각 Octopus, Treesloth, 그리고 그래스호퍼에 내장된 컴포넌트들입니다. 방법론은 다음과 같습니다. 가장 왼쪽의 컴포넌트와 "Run"을 인풋으로 받는 컴포넌트들은 "0"이외의 숫자를 넣음으로서 작동시킬 수 있습니다. 따라서 넘버슬라이더를 오브젝트의 인덱스, 더 구체적으로는 "List item" 컴포넌트와 옵티마이저에 연결시키면 오브젝트를 선택하는 동시에 최적화를 시작할 수 있습니다.

 이렇게 한개에 대한 최적화가 끝나면 이에 대응되는 파라미터들이 있을 것입니다. 저는 이들을 파일로 내보내기 한 후 나중에 모든 오브젝트에 대한 작업이 끝난후 다시 불러오기를 통해 결과를 보는 방식을 채택했습니다. 혹시나 모를 중간 오류로 모든 작업이 날아가기보단 각각을 하나씩 파일로 저장해서 오류가 난 부분부터 다시 시작할 수 있게 하기 위해서 였습니다.

 이 시나리오를 위해 C#이나 Python을 이용해서 내보내는 방법도 있지만 Treesloth안의 "Unpack / Pack"이라는 컴포넌트를 사용하였습니다. 사실 Unpack / Pack을 사용한건 실수였습니다. 내장 컴포넌트로 착각했죠. 사용하는 플러그인을 줄이시고 싶다면 C# 이나 Python을 하나정도 추가되도 상관없으시다면 Treesloth를 이용하시면 될 것 같습니다.

옵티마이제이션 그래스호퍼 코드
 위의 시나리오 중 넘버슬라이더를 자동으로 움직이는게 중요한 기술 중 하나입니다. 사실 제일 중요하죠. 그 방법론 자체는 다음의 사이트에 있기 때문에 제가 설명하기 보다는 사이트 링크를 걸어둡니다. site http://designalyze.com/automate-grasshopper-python/automating-grasshopper-part-3.

 모든 오브젝트에 대해서 작업을 끝내는건 여러 요인에 따라 다를 겁니다. 단순히 컴퓨터의 속도 문제일 수도 있고, 같은 결과를 얻기 위한 모델링 프로세스를 얼마나 합리적으로 구성했느냐도 있을 겁니다. 서버나 드랍박스를 기반으로 하신다면 여러 컴퓨터를 이용, 0~9 구간은 컴퓨터 1이, 10~19구간은 컴퓨터 2가...n~m까지 구간은 컴퓨터 l이 담당하는 방식으로 파라미터만 모아서 나중에 한번에 확인해보는 방법도 가능할 것입니다.


저장된 파라미터들
 이후 마지막 작업은 다시 파라미터를 불러온 후 결과를 확인하는 것입니다.

파라미터를 불러온 후 결과 확인.
 몇몇 민감한 사항들 때문에 결과물 자체를 보여드리기는 어렵지만 위와 같이 파일로 저장된 파라미터들을 다시 불러와서 최종 결과물을 확인 할 수 있습니다.
 확인 후에 옵티마이제이션이 충분히 되지 않은 오브젝트들도 있을텐데 이들에 대해 추가작업을 하는 등의 작업을 할 수 있습니다.

 위 시나리오는 로컬파일을 기준으로 짜여졌지만, 위에 언급했듯 드랍박스, 서버 또는 클라우드를 이용해서 숫자정보인 파라미터를 업로드하여 사용하는 방식도 가능할 것입니다.

댓글

이 블로그의 인기 게시물

[건축][소프트웨어] 프로그램 비교

 실무를 하면서 라이노와 그래스호퍼를 많이 쓰게된다. 그러다보니 관련 지식도 쌓이고, 나 나름대로 정리도 하며 공유를 위해 글을 쓰기 시작했다. 앞으로 계획은 라이노와 라이노 안의 파이썬 스크립트 또는 그래스호퍼 연동으로 자동화 관련해서 다루려고 한다.  그 전에 왜 라이노, 그래스호퍼 그리고 파이썬을 쓰게 되게 됬는지 프로그램들 비교 후에얘기하고자 한다. 비교하려는 프로그램들은 다음과 같다. Rhino(RobertMcNell & Associates) 3d experience (Dassault Systemes) Revit (Autodesk)  세 프로그램 모두 써볼 기회가 있었고, 사용 빈도는 다음과 같다 Rhino >= 3d experience(CATIA) >>>>Revit HTML 소프트웨어 비교 Rhino 3dExpereince Revit 가격 995$ (영구 라이센스) 9,000~65,000$(유지비 6,246$ / 년) 2,642,640원 / 년 첫 프로젝트 1994년 3월/ 25m 크기 보트 1977년 / 미라주 전투기 정확하지 않음 파라메트릭 모델링 x(그래스호퍼로 가능) O(자체 모델링 + EKL(내부언어) 등) O(자체 모델링 + Dynamo) Rhino : 최고의 가성비 프로그램 장점 : NURBs 모델링 가능, 가장 저렴한 가격, API/SDK를 통한 개발환경 제공 단

일본 / 신오쿠보 / 도장집

신오쿠보에서 도장 만들기 1. 장소이전 이미 몇몇 블로그에서 정보를 찾아서 갔다. 하지만 문제는 장소를 이전했다는 사실이다. 또한 가격도 바꼈다. 다른 블로그에서 봤을 그 3층에 있고, 돈키호테 맞은편에 있는 도장집 겸 부동산집 2. 찾아가기 위치 〒160-0021 Tōkyō-to, Shinjuku-ku, Kabukichō, 2 Chome−19−11 新宿シャロームビル9F 다음과 같다. 히가시 신주쿠 역에서 서쪽(신주쿠방향)으로 걸어오는게 제일 빠르다고 나온다. 1층에 홍콩반점이 보이면 제대로 온 것. 3. 가격 변경 가격은 다음과 같다. 다른 블로그에서 엄청 쌋던거 같은데 조금 올랐다. 나 같은경우 한자로된 3글자 도장을 만들었고, 가격은 1000엔 들었다. 가격은 다음과 같은데 잘 나온느지 모르겠다. 여튼 이렇게 도장을 해결했다.

[건축]파사드 컨설팅이야기 - 1편: 파사드 컨설팅은 왜 필요한가?

 나의 약 1년 9개월간의 파사드 컨설팅을 중심으로 파사드 컨설팅 이라는 분야를 이야기 해보겠다.  파사드 컨설팅이란?  파사드 컨설팅은 우리나라에 다소 생소한 개념이다. 우선 Facade가 무엇인지 간략히 짚고 넘어갈 필요가 있다.  구글 검색에 facade를 치면 다음과 같은 정의가 나온다.  건물의 얼굴, 열린 장소 또는 거리에서 보이는 주 입면.  아주 간단하게 건물의 입면이라고 생각하면 된다. 그럼 왜 건물 입면에 컨설팅이 필요할까?  내가 참여하게 되었던 프로젝트를 생각해보며 적어보겠다. 파사드 컨설팅이 필요한 이유 1. 복잡해지는 형태  파사드는 건물의 외관이다.   즉, 누군가 건물을 봤을때 첫인상을 좌우하게 된다. 그래서 랜드마크나 기업 사옥을 건설할때 자주 건드리는 수단이 된다. 그리고 그 방향은 주로 DDP와 같이 유기적이거나 독특한 방향으로 가는 경우가 꽤나 있다. 박스에서 형태가 조금만 벗어나도 그것을 실체화 시키는데 큰 어려움이 따르게 된다. 특히 모든 프로젝트는 정해진 예산과 시간이 있기 때문에 이 제약조건 안에서 문제를 해결하려면 기존의 방법으론 불가능한 경우가 많다. 동대문 디자인 플라자. BIM과 비정형 사례로 항상 빠지지 않는다.  이 문제를 가장 깊이 고민하게 된 프로젝트는 <동대문 디자인 플라자>가 아닐까 생각한다. 업계가 좁은지라 이 프로젝트에 연관된 몇몇 분들을 만날 기회가 있었고, 그 중 외관(Facade)을 시공한 '스틸라이프' 대표님과는 영종도 프로젝트를 한적도 있다.  좌우지간, DDP는 삼성이 시공한 것으로 알려져 있지만 그 뒤엔 비정형 패널을 제작 설치하는데 특화된 '스틸라이프' 라는 업체와 파사드 컨설팅을 한 GT(Gehry Technologies)가 있었다.  프랭크 게리와 게리 테크놀로지스   수업시간에 들어봤을지 모르겠지만 게리는 Frank Gehry의 그 게리다.    어느 공식석상에서 법규를 날린것으로 유명한 게리 아저씨는 요상한 형태를 디자인 할 뿐만 아니