Generative Algorithm 027

아래와 같은 형상을 가진 면이 있다고 하자. 이것을 주어진 하나의 면에 그려보도록 하겠다.

만들고자 하는 면의 스케치


위와 같은 개구부를 가진 면을 만들기 위해서는 먼저 면의 위쪽과 아래쪽의 모서리를 잘게 잘라야 한다. 이를 이용하면 위와 같은 세장형의 면을 만들어낼 수 있다. 이제 아래쪽 선들의 방향을 조절하여 위와 같이 회전의 정도가 서서히 커지도록 해보자.

<surface>를 이용하여 rhino 상의 surface를 연동한 뒤 이것을 <BRep Components> (Surface>Analysis)에 연결하여 edge를 output으로 내보낸다. 위의 경우 아래 edge와 위쪽edge의 index number가 0과 2이다.[1] <list item>를 이용하여 각각의 edge를 찾아준다.

이제 아래쪽 edge를 <offset> (Curve>Util) 하고 위쪽 edge를 <Flip>(Curve>Util)해준다. 이는 아래쪽 edge와 위쪽 edge의 방향이 다르기 때문이다.[2]

<divide>를 이용하여 각각의 edge에 같은 수의 point를 만들어준다. 아래쪽의 경우 offset 된 curve 또한 <divide>를 이용하여 나눈 뒤 나온 data list (point)와 아래쪽 curve를 나눈 data list(point)를 <line>을 이용하여 연결해준다. 위쪽 edge의 경우 <divide>를 이용해 나눈 점과 그 점의 list를 <shift>해준 점들을 <line>을 이용하여 연결해준다.


이제 이 두 <line>을 연결해야 하는데 위와 같이 그냥 연결하여도 <weave>를 이용하여도 원하는 결과가 나오지 않게 된다. 위의 그림처럼 loft를 하는 경우 아래쪽 <line>과 위쪽 <line>이 하나의 data list 내에 있게 되기 때문이다. <weave>를 이용하는 경우 각각의 list에 있는 line을 번갈아 가며 input할 수 있지만 두 개씩 쌍으로 묶여 분절되는 것이 아닌 연속하는 data list가 되기 때문에 역시 원하는 결과물이 아니게 된다.

<param viewer>를 이용하여 두 <line>을 살펴보면, 각각의 list가 하나의 가지 안에 들어있고 다시 이 두 가지가 하나의 리스트로 결합되어 input되기 때문에 위와 같은 결과가 일어나는 것이다. 우리가 원하는 것은 바로 각 list에 있는 데이터들이 1대1로 data matching 되는 것이다.

이러한 문제를 해결하기 위해서는 각 데이터를 <Graft> (Logic>Tree>Graft Tree)를 이용하여 tree 구조로 만들어줘야 한다. 이렇게 하면 두 data list안에 있는 각 data 들이 다시 하나의 list로 변하게 된다. 즉 data list 안에 하나의 data를 가지는 data list가 연속되고 다시 이 하부 data list들이 1대1로 data matching 되며 위와 같은 형상을 그리게 되는 것이다.
즉 위에서 살펴본 예들은 그 결과들이 모두 하나의 surface 이다. 하지만 <graft>를 이용하여 생성된 결과물은 여러 surface의 연속이 되는 것이다.

이렇게 생성된 면들 위에서 하나의 point를 evaluate 하고 다시 이것을 연결하여 <interpolate curve>를 생성해보자. 이 때 각 point들은 모두 다른 data list 속에 있으므로 <interpolate curve>를 <evaluate surface>에 직접 연결할 경우 아무것도 생기지 않는다. 기본적으로 curve란 최소한 두 개의 point가 있어야 생성될 수 있는데 각 data list에는 하나의 점 밖에 없기 때문이다. 이제 이것을 <flatten>을 이용하여 하나의 data list안에 들어있게 바꿔주면 이 point들을 통과하는 interpolate curve를 그릴 수 있다.
이 tree 구조로 생성된 data들을 바꾸기 위해서는 (logic> Tree)에 있는 component들을 사용할 수 있다.

최종 3d 모델


 
 


[1] 하나의 면에는 4개의 edge가 있다. 이 0과 2번의 경우 면을 생성한 방식에 따라 달라질 수 있다.

[2] Rhino에서 한 면을 4개의 점으로 정의한다고 생각했을 때 점의 순서는 시계방향 혹은 그 반대방향일 것이다. 그러면 위쪽 edge와 아래쪽 edge의 시작점과 끝점의 위치가 엇갈리게 된다. 그러므로 각 edge의 방향이 다르게 된다.

 

2 thoughts on “Generative Algorithm 027

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