게임이나 영화, 건축 시각화에서 숲과 가로수는 흔히 등장하지만, 자연스러운 나무를 일일이 손으로 모델링하는 일은 품이 많이 든다. 그래서 규칙 기반으로 나무를 자라게 하는 절차적(procedural) 생성 기법이 꾸준히 쓰여 왔다. 최근 한 개발자가 공개한 구현 사례는 2009년 SIGGRAPH에 발표된 Palubicki 등의 논문 'Self-organizing tree models for image synthesis'를 토대로 한 것이다. 이 접근의 매력은 수형(樹形)을 직접 그리는 것이 아니라, 빛을 둘러싼 눈들의 경쟁이라는 단순한 규칙에서 수관(crown)의 형태가 스스로 창발하도록 만든다는 데 있다.
눈의 경쟁과 성장 자원의 분배
기본 단위는 '메타머(metamer)'다. 짧은 줄기 조각인 절간(internode)과 잎, 그리고 윗마디에 달린 눈들로 구성된다. 줄기 끝의 정아(terminal bud)는 기존 축을 계속 뻗게 하고, 곁에 달린 측아(axillary bud)는 새 곁가지를 틔운다. 알고리즘의 한 번의 반복은 한 번의 생장기, 즉 한 해에 대응한다.
빛의 가용량을 근사하는 방법 중 하나는 복셀(voxel) 격자다. 각 눈은 자기 아래로 넓어지는 피라미드 형태의 복셀들에 그림자를 드리우며, 그 기여도는 깊이가 깊어질수록 감쇠한다. 모든 눈의 그림자가 누적되므로 나무가 커질수록 안쪽은 자연히 어두워진다. 각 눈은 이 격자에서 두 가지 값을 읽는다. 쓸 수 있는 빛의 양 Q와, 자신의 지각 원뿔 안에서 가장 덜 가려진 복셀을 향하는 방향 벡터 V다. 논문은 이 방식 외에 공간 채움(space colonization)도 지원한다. 외곽 형태를 마커 점으로 채운 뒤 눈들이 가까운 마커를 두고 경쟁하고, 생장이 그 자리를 차지하면 마커를 제거하는 방식으로, 성장 기계장치는 같되 '어디에서 자랄 수 있는가'를 정하는 방법만 다르다.
작은 편향이 만드는 큰 차이
빛 값은 먼저 가지 구조를 따라 아래로 합산된다. 밑동에 모인 총량 Q_base는 v=αQ_base라는 성장 자원이 되고, 이 자원은 다시 위로 거슬러 올라가며 가지가 갈라지는 지점마다 나뉜다. 확장된 보르헤르트-혼다(Borchert-Honda) 모델에서는 주된 연장 방향과 측면 가지가 자원을 나눠 갖는데, 분배 계수 λ가 0.5이면 자원이 빛을 그대로 따라가고, 값이 커지면 주축이, 작아지면 곁가지가 유리해진다. 이 작은 편향 하나가 전체 수형에 놀랄 만큼 큰 영향을 준다.
자원을 1단위도 받지 못한 눈은 휴면 상태로 남는다. 그 이상을 받으면 설정된 상한 안에서 ⌊v⌋개의 메타머로 이뤄진 새 싹을 낸다. 새 메타머에는 다시 저마다의 눈이 달리고, 같은 과정이 반복된다. 각 새 마디의 방향은 이전 방향, 빛을 좇는 방향 V, 위나 아래로 향하는 굴성(tropism), 그리고 약간의 잡음을 가중 합한 뒤 정규화해 결정된다. 수평 성분을 섞으면 곁가지가 평평한 층을 이루며 펼쳐지게 할 수 있다. 줄기 둘레에 눈이 배열되는 방식, 즉 잎차례(phyllotaxis)도 중요한 제어 수단이다. 나선형, 마주나기, 해마다 돌려나는 윤생 배열은 서로 전혀 다른 가지 패턴을 낳으며, 좌표틀이 싹을 따라 평행 이동하므로 줄기가 휘어도 배열의 일관성이 유지된다.
가지 떨구기와 굵기, 그리고 렌더링
그림자 모델을 쓰면, 어떤 곁가지가 모은 빛을 그 하위 구조의 메타머 수로 나눈 값이 임계치 아래로 떨어질 때 그 가지가 떨어져 나간다. 어린 가지에는 유예 기간이 주어진다. 이 가지치기가 없다면 수관 안쪽에 굶주린 잔가지가 계속 쌓이게 된다. 가지의 굵기는 성장이 끝난 뒤에 파이프 모델로 계산한다. 가지 끝에서 고정된 반지름으로 시작해 뿌리 쪽으로 누적하는데, 지수 n=2이면 분기점에서 단면적이 보존되고, 지수가 커지면 더 가느다란 몸통이 나온다. 이미 떨어져 나간 가지도 그 아래 둘레에는 여전히 기여하므로, 가지를 잃었다고 해서 몸통이 가늘어지지는 않는다. 폭과 자중에 의한 처짐은 다 자란 골격에서 계산되며, 성장 과정으로 되먹임되지는 않는다.
이렇게 완성된 골격은 축을 따라 관을 쓸어내는 방식으로 나무껍질 메시가 된다. 잎은 작은 잔가지와 여러 장의 잎을 그린 '트위그 스프레이 카드'로 표현하며, 절차적으로 그린 아틀라스의 변형을 가져다 쓴다. 카드의 법선을 수관 주변의 타원체 쪽으로 섞으면 잎 덩어리가 하나의 부피처럼 음영을 받아 더 자연스러워진다. 세부 수준이 낮아지면 더 적고 큰 카드만 남기고 껍질도 단순화하며, 멀리서는 미리 구워둔 방향성 임포스터가 그 자리를 대신한다. 나아가 다 자란 나무를 깊이 필드 뷰로 구워두면 숲 전체를 렌더링할 때 하나의 린든(보리수) 인스턴스를 크기만 달리해 여러 번 배치하는 식으로 활용할 수 있다.
실무에서 읽을 점과 한계
이 기법이 실무자에게 주는 교훈은, 복잡한 결과를 복잡한 규칙으로 직접 기술하기보다 단순한 국소 경쟁과 피드백 루프를 설계하는 편이 종종 더 효과적이라는 점이다. 빛-자원-싹-그림자로 이어지는 되먹임 하나가 λ나 굴성, 잎차례 같은 소수의 파라미터만으로 전혀 다른 수종의 느낌을 만들어낸다. 반대로 한계도 분명하다. 폭과 처짐이 성장에 되먹임되지 않는다는 설계상의 단순화는 계산을 가볍게 하지만, 하중에 반응해 형태가 달라지는 실제 나무의 역학과는 거리가 있다. 또한 복셀 그림자 누적과 생장기 단위의 반복은 나무 한 그루 수준에서는 다룰 만하지만, 숲 규모에서는 그대로 쓰기 어렵고, 글에서도 숲 표현과 조명은 별도의 주제로 남겨두었다. 절차적 생성을 도입하려는 팀이라면, 이처럼 생성 단계와 렌더링용 경량화 단계를 분리하고 어느 요소를 되먹임에서 제외해 비용을 통제할지 먼저 가늠해 보는 것이 출발점이 될 만하다.