Generative Algorithm 031

6_4_하나의 면에 여러 모듈을 적용하기 On Responsive Modulation

이번 장에서 다뤄볼 디자인 개념은 하나의 surface에 여러 종류의 module을 적용하는 것이다. 이 때 각 module의 배치가 종류별로 사용자가 지정하는 특정 기준에 의해서 정해지게 된다. 이러한 배치의 기준은 시간에 따른 주변 환경의 변화나 module의 기능 혹은 시각적인 효과 등 module의 반응을 필요로 하는 여러 가지가 될 수 있다.
이번 예제에서는 건물의 외피가 주변 환경의 변화에 따라 반응하는 것을 살펴보려고 한다. 이 때 환경의 변화요인은 바로 태양의 빛이다. 이는 물론 바람이나 비 혹은 둘 이상의 조합도 가능하다.
건물의 표면을 덮고 있는 하나의 면이 있다. 이것은 다른 두 종류의 module에 의해 감싸지게 된다. 첫 번째 종류는 닫힌 것으로 태양 빛의 투과를 막는 역할을 한다. 다른 한 종류는 열린 것으로 태양의 빛이 들어올 수 있는 것이다. Surface 위에서 이 둘의 배치는 태양의 위치에 따라 변하게 된다. 즉 태양의 고도를 각도 값으로 치환하고 이것을 module 배치의 기준으로 삼는 것이다.
물론 이러한 개념은 일반 건물에도 적용된 것으로 완전히 새로운 것이라고 할 수는 없다. 하지만 기존의 입면과 다르게 그 구성을 다양하게 실험해보고 이것의 변화를 살펴볼 수 있을 것이다. 기본적으로 surface는 자유로운 형태를 가지고 있으며 각 지점에서의 방위가 모두 다르다. 즉 각 지점이 태양빛을 받게 되는 각도가 모두 다른 것이다. 이러한 입면의 구성은 마치 하나의 system을 만드는 것과 같다.

입면 system의 다양한 변화에 대한 개념


이것이 필요한 요소들은 다음과 같다.

Panelization에 필요한 Surface


panelization에 사용되는 두 종류의 module



첫 번째 단계는 이전의 예제들과 유사하다. 먼저 <surface>와 <divide interval2>를 이용하여 UV 방향으로 surface를 나눌 개수를 정해준 뒤 <isotrim; subsrf>과 <surface box>를 이용하여 그 수에 맞는 box와 면을 각각 생성해준다. 또한 <isotrim>에 <Brep area>(위 그림에서 초록색으로 표시되어 있다.) 를 연결하여 각 면의 중심점을 찾아준다.
또한 rhino에서 선을 그린 뒤 이를 <curve>를 이용하여 grasshopper에 연동시킨다. 이는 태양의 입사각으로 사용 될 것이다. 이 <curve>에 <end point>를 연결하여 시작점과 끝점을 찾아주고 다시 이것을 <vector 2pt>의 시작점과 끝점으로 이용해준다. 이러면 선과 그 방향을 vector화 하여 태양의 방향을 정해줄 수 있다. 이제 rhino에서 그려진 선을 이동시키거나 회전 시키면 각 surface로 들어오는 태양의 입사각을 표현해줄 수 있다.
이 surface들로 들어오는 입사각은 바로 <vector 2pt>와 각 면들이 그 중심점에서 가지는 법선vector(normal vector)에 의하여 계산할 수 있다. 법선(Normal)이란 surface위의 특정 점에 수직으로 만나는 vector를 의미한다. 각 면의 중심점 위에 생기는 normal값과 <vector 2pt>사이의 각도를 각 면에서의 입사각으로 사용해준다.

이 각도를 계산하기 위해서는 먼저 면의 중심점에서 생기는 normal vector들을 찾아줘야 한다. 이를 이용하여 잘려진 면의 각 중심점이 원래 <surface>상에서 가지는 UV값을 찾아줘야 한다. 즉 <brep area>에서 나오는 중심점들 <surface>를 <surface CP>를 이용하여 data matching을 시키면 각 점의 UV값을 찾아줄 수 있다. 이제 다시 <evaluate surface>를 이용하여 앞에서 찾은 각 점의 UV값을 <surface>에 다시 적용시켜주면 이 점에서의 normal값을 찾을 수 있다.

이제 이 <angle>(Vector > Vector > Angle)을 이용하여 태양빛의 입사 방향<vector 2PT>을 각 normal값에 data matching시키면 각각 잘린 surface들 중심에서 태양의 입사각을 찾아줄 수 있다. 이때 이 결과 값은 radian 값이다. 이것을 <function 1>을 이용하여  x*180/pi를 적용시켜주면 각도 값으로 변하게 된다. 이렇게 나온 값을 <function 2>에 x>y를 적용시켜준다. 이것의 x값에는  <number slider>를 연결하여 사용자가 원하는 최대 각도값을 입력해줄 수 있다. 이렇게 비교된 결과물은 boolean data로 나오게 된다.

이렇게 나온 Boolean data의 pattern을 <dispatch>를 이용하여 <surface box>에 적용시켜주면 이 최대 각도 값을 기준으로 더 큰 입사각을 가지는 위치의 box와 이보다 더 작은 입사각을 가지는 위치의 box들을 나눌 수 있다. 나머지 algorithm은 우리가 이때까지 해왔던 그것과 크게 다르지 않다. <morph>를 두 개 가져온 뒤 앞에서 분류된 box들을 각각의 target box로 연결시켜준다.

위의 그림처럼 입사각이 더 작은 경우에는 닫힌 component를 적용시켜 주고 더 큰 경우에는 열린 component를 적용시켜 준다.

그러면 위의 그림처럼 닫히고 열린 component들이 surface위에 적용되는 것을 볼 수 있다. 이러한 배치는 위에서 사용자가 설정한 논리에 의거하게 된다.

위는 마지막 모형의 그림이다. 이러한 algorithm을 응용하면 surface에 적용되는 module의 종류를 두 개 이상으로 늘릴 수 있다.
이러한 입면 module의 열리고 닫힘은 내부의 기능이나 태양 이 외의 다른 외부요인에 의하여 결정될 수 있다. 이러한 algorithm을 이용하면 면의 모든 위치에 같은 module이 적용되는 것을 피하고 각 부분에 적용되는 design에 변화를 줄 수 있다. 이제 surface를 조절하면 전반적인 형상을 조절할 수 있고 태양의 위치와 각도가 되는 curve를 조절하면 component의 적용 범위를 변화시켜줄 수 있다.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s