융합 미디어아트 디렉터 & 에듀케이터
김 상 준 지음
현장의 노하우를 담은 실무 밀착형 가이드
FROM LOGIC TO ART
Sang Jun Kim
지난 10여 년간 국내 정상급 포스트 프로덕션과 미디어 그룹을 거치며, 한국 CG 및 VFX 업계의 최전선에서 밀도 높은 실무 경험을 축적해 왔습니다. 글로벌 표준으로 사용되는 하이엔드 소프트웨어들을 깊이 있게 다루며, 머릿속의 상상을 스크린 위의 현실로 완벽히 구현해 내는 기술적 기반을 다졌습니다.
그러나 고도화된 기술적 성취가 곧 작업의 완성을 보장하지는 않음을 현장에서 체감했습니다. 단순한 기술적 오퍼레이터를 넘어 기획력과 예술적 철학을 갖춘 크리에이티브 디렉터로 도약하고자, 시각 예술의 본질과 미디어 융합에 대한 학문적 연구를 거듭해 왔습니다.
이러한 탐구는 저의 CG 기술을 '미디어아트(Media Art)'라는 새로운 공간적 캔버스로 이끌었습니다. 후디니(Houdini)의 절차적 알고리즘과 거대한 데이터 통제력은 단순한 영화 효과를 넘어, 제너레이티브 비주얼을 구현하는 미디어아트의 핵심 동력이 됩니다. 세종문화회관 정면에 선보인 미디어 파사드 '천지창조'부터 재즈와 영상의 인터랙션을 시도한 'Cinema in Jazz'에 이르기까지, 장르를 넘나드는 융합 예술 시도를 통해 기술과 예술의 접점을 증명해 왔습니다.
현재는 경희대학교와 청강문화산업대학교에서 현장의 생생한 노하우를 후학들에게 전수하며, 문제 해결을 위한 논리적 사고와 융합적 시각을 지닌 차세대 미디어 크리에이터들을 양성하는 데 열정을 쏟고 있습니다.
3D 그래픽스, 특히 후디니(Houdini)를 배운다는 것은 단순히 툴의 버튼 위치를 외우는 과정이 아닙니다. 컴퓨터의 언어로 사물의 형태와 움직임을 수학적, 절차적으로 통제하는 '파이프라인 설계자(Technical Director)'가 되는 과정입니다. 현장에서 진정으로 요구하는 것은 변수에 유연하게 대처할 수 있는 뼈대 있는 설계 능력입니다.
방대한 후디니의 세계는 데이터의 뼈대를 논리적으로 설계하는 <3D FX Ⅰ : 프로시저럴 모델링>과, 그 위에 물리적 생명력을 불어넣는 <3D FX Ⅱ : 다이내믹스> 두 과정으로 나뉩니다.
본 교재(Vol.1)는 그 첫 번째 여정으로서 화려한 겉모습보다는 '왜 이 노드를 달아야 하는가?', '수치가 변했을 때 시스템이 유기적으로 어떻게 대응하는가?'와 같은 본질적인 논리에 집중했습니다.
이 책을 통해 어떠한 클라이언트의 요구 상황에서도 능동적으로 시스템을 통제할 수 있는 진정한 전문가로 성장하기를 바랍니다.
Chapter 01. 후디니(Houdini)의 이해와 기본 인터페이스
과거에는 후디니가 영화의 물, 불, 연기, 바람 등 FX(특수효과) 전용 툴로만 알려져 있었습니다. 하지만 최근에는 유저층이 다양해지면서 모델링, 렌더링, 모션 그래픽 등 여러 파이프라인에서 후디니가 핵심 툴로 사용되고 있습니다. 그 중심에는 바로 '프로시저럴 모델링(Procedural Modeling)'이 있습니다.
이 장에서는 후디니가 다른 3D 툴과 어떻게 다른지, 그리고 왜 '프로시저럴' 워크플로우가 강력한 무기인지 배웁니다.
하나의 완성된 결과물을 찰흙처럼 빚어내는 개념이 아니라, 규칙과 패턴을 만들어 '수정이 용이하고 적용이 편리하게' 프로그램을 짜는 것을 의미합니다.
| 비교 요소 | 기존 3D 툴 | 프로시저럴 (Houdini) |
|---|---|---|
| 작업 방식 | 결과물을 직접 깎는 방식 | 결과를 도출하는 '설계' 방식 |
| 클라이언트 수정 |
처음부터 다시 만들어야 함 | 파라미터 조절로 즉각 변형 |
계단 개수나 높이를 슬라이더 하나로 조절할 수 있게 설계합니다.
출처: https://rart.gumroad.com/l/
완성된 세팅으로 형태가 다른 수백 개의 건물을 뿌릴 수 있습니다.
출처: https://www.youtube.com/
CG를 공부하면서 툴의 기술만 익히는 것은 반쪽짜리 공부입니다. 내가 가고 싶은 회사가 어디인지 파악하고 있어야 방향성이 잡힙니다. 좋아하는 영화의 CG를 어느 스튜디오에서 만들었는지 IMDb를 통해 확인하는 습관을 들이세요.
후디니의 뷰포트를 제어하는 기본 조작법입니다. 마야(Maya)를 사용해 보셨다면 익숙한 단축키일 것입니다.
* 후디니 고유 단축키인 Spacebar 조합과 동일
노드를 짜는 창(Network Editor)과 수치를 조절하는 창(Parameters)을 동시에 여러 개 비교하기 위해 화면을 세팅합니다.
패널 모서리 아이콘을 클릭하거나 Alt + [ 를 눌러 화면 단축키 화면을 좌우로 나눕니다.
패널 우측 상단의 📌 아이콘을 우클릭합니다. 좌측 탭 그룹은 모두 1번, 우측 탭 그룹은 모두 2번으로 맞춰 독립적으로 움직이게 합니다.
출처: imdb.com
화면 분할 및 핀 링크 고정 모습
정석적인 노드 생성 방법은 상단 아이콘 클릭이 아닌, 네트워크 에디터에서 검색하여 생성하는 것입니다.
최상위 레벨에서 바로 오브젝트를 만들면 독립된 그룹이 되어 관리가 힘듭니다. 빈 껍데기를 먼저 만듭니다.
geo를 검색하여 Geometry 노드 생성생성된 노드를 더블클릭하거나 Enter를 눌러 내부로 들어갑니다.
(나갈 때는 U 키)
여러 개의 노드를 생성했다면, 뷰포트에 어떤 것을 띄울지 노드 우측의 링 버튼(Flag)으로 결정합니다.
노드의 가장 오른쪽 클릭. "이 노드의 결과를 보여주겠다"는 의미입니다. 디스플레이 플래그는 하나의 흐름에서 단 한 개만 켤 수 있습니다.
노드의 가장 왼쪽 클릭. 현재 Display를 보면서, 다른 오브젝트 위치를 라인 형태로 참고하고 싶을 때 사용합니다.
상단의 아이콘을 Ctrl + 좌클릭하면 화면에 직접 그릴 필요 없이 즉시 원점(0,0,0)에 노드가 생성됩니다.
Tube에 Display(파랑)를 켜고, Sphere에 Template(분홍)을 켠 모습.
여러 오브젝트를 뷰포트에 동시에 띄우려면 합쳐야 합니다.
merge 생성
기본 도형 내부에서 위치를 직접 옮겨도 되지만, 후디니의 정석은 오브젝트 변형을 전담하는 Transform 노드를 따로 달아서 조절하는 것입니다.
🤔 왜 굳이 따로 쓸까요?
원본 데이터는 0,0,0 위치 그대로 보존해 두고, "이동시켰다"는 '행위(노드)'만 추가하는 것이 프로시저럴의 핵심입니다. 언제든 이동 노드를 끄거나 지우면 원본으로 안전하게 돌아올 수 있습니다.
노드가 많아질수록 정리가 중요합니다. 다음 단축키를 활용해 네트워크를 깔끔하게 유지하세요.
키보드 Y 키를 누른 채로 드래그하여 연결된 라인을 자릅니다.
정리할 노드 선택 후 A 키를 누른 채로 마우스를 살짝 끌면 정렬됩니다.
Transform 노드를 새로 달면 피봇이 오브젝트 중심이 아닌 월드 원점(0,0,0)에 생깁니다. 오브젝트의 중앙을 기준으로 회전시키려면 피봇을 이동시켜야 합니다.
Transform 노드의 하단 Pivot Transform 입력칸에 다음 코드를 넣습니다.
이제 이 오브젝트는 항상 자신의 중앙을 기준으로 회전 및 크기 조절이 됩니다.
피봇이 큐브 중앙으로 이동한 모습
프로시저럴 모델링과 Expression 기초
블록 장난감을 쌓기 전, 가장 중요한 규칙이 있습니다. 바로 노드의 이름을 알아보기 쉽게 바꾸는 것입니다. 이름이 box4, tube2처럼 방치되어 있으면 나중에 수식을 적을 때 치명적인 에러가 발생하기 쉽습니다.
기준이 되는 바닥 박스를 생성하고 base_box로, 위에 올릴 다른 박스를 top_box, 옆에 세울 튜브를 side_tube 등으로 명확히 변경하고 시작하세요.
ch() 채널 참조하나의 수치를 바꾸면 다른 오브젝트도 연동되어 같이 바뀌게 설정해 봅시다. 튜브(원기둥)의 높이를 박스의 크기에 맞춰보겠습니다.
base_box) 우측 패널에서 Size Y 파라미터 위를 우클릭 -> Copy Parameterside_tube)의 Height 파라미터 위에서 우클릭 -> Paste Relative References
이번 챕터의 최종 목표 이미지
📌 `ch()` 결과 확인 및 응용
붙여넣기를 완료하면 입력창이 녹색으로 변하며 다음과 같은 코드가 들어갑니다.
.. 은 밖으로 나가서 base_box를 찾아 그 안의 sizey 값을 가져오라는 뜻입니다.
가져온 값에 사칙연산을 바로 추가할 수 있습니다. 튜브의 높이가 항상 박스의 2배가 되도록 하려면?
bbox() 바운딩 박스
이제 바닥 박스(base_box) 위에 다른 박스(top_box)를 딱 맞게 올려보겠습니다. 눈대중이 아닌, 수학적으로 정확하게 물체 위에 다른 물체를 쌓아 올리려면 bbox() 함수가 필수적입니다.
위에 올릴 top_box의 Transform 노드에서 Translate Y 입력칸에 다음 코드를 타이핑해 넣습니다.
(주의: 경로나 문법이 틀리면 노드에 빨간 에러 표시(느낌표)가 뜨고 제대로 작동하지 않습니다.)
bbox("../base_box", D_YMAX) :
도착지가 될 아래쪽 박스(base_box)의 가장 위쪽 Y 좌표값을 구합니다. (올라탈 바닥 면)
bbox("../top_box", D_YSIZE) * 0.5 :
위에 올릴 박스 전체 높이(YSIZE)의 절반입니다. (피봇이 박스의 정중앙에 있으므로 절반만 올려야 땅에 딱 맞게 올라갑니다.)
centroid()
수직(Y축)으로는 bbox를 이용해 정확히 올렸습니다. 하지만 X축과 Z축도 아래쪽 박스의 정중앙에 딱 맞게 정렬하려면 centroid() 함수를 사용해야 합니다.
올려놓은 top_box의 Transform 노드에서 Translate X와 Z에 각각 아래 코드를 입력합니다.
박스 높이 끝점(YMAX)과 상단 박스 절반 높이의 수학적 결합
X, Z축이 base_box의 정중앙에 완벽히 정렬된 모습
"마야(Maya)에서도 스냅(Snap) 기능을 이용해 이렇게 쌓아 올릴 수는 있습니다. 하지만 Constraint를 복잡하게 엮지 않는 이상, 아래쪽 박스의 크기나 위치가 바뀌면 위의 물체들은 공중에 붕 뜨거나 땅에 파묻히게 됩니다."
👇 지금 당장 직접 테스트 해보세요! 👇
가장 밑에 있는 base_box 노드를 선택하고, 파라미터 창에서 Size(크기) 수치를 마구 줄였다 늘렸다 변경해 보세요.
후디니에서는 bbox와 centroid 수식으로 '이 물체는 무조건 저 물체의 위쪽 중앙에 있어라'라는 절대 규칙을 코드로 설계해 두었기 때문에, 베이스 블록의 형태를 아무리 변경해도 위의 블록들이 스스로 비율을 계산해 완벽하게 따라 움직이는 마법을 볼 수 있습니다. 이것이 바로 프로시저럴 모델링의 진짜 파워입니다.
아래 박스 크기를 키워도 상단의 블록들이 떨어지지 않고 비율에 맞게 자동으로 따라갑니다.