동적 3D 메쉬를 위한 스크립트 기반 생성·애니메이션 시스템

동적 3D 메쉬를 위한 스크립트 기반 생성·애니메이션 시스템
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 Lua 스크립트를 이용해 실시간으로 동적 삼각형 메쉬를 생성·조작하고, L‑system과 일반화 실린더를 결합해 복잡한 유기 형태를 손쉽게 모델링·애니메이션할 수 있는 Fugu 시스템을 소개한다. 인터페이스는 코드 편집창과 3D 뷰를 통합해 즉시 피드백을 제공하며, VCGLib 기반의 메쉬 구조와 프록시 메커니즘을 통해 안전하고 효율적인 다중 스크립트 실행을 지원한다.

상세 분석

Fugu는 Lua를 핵심 스크립팅 언어로 채택함으로써 가벼운 문법과 높은 임베딩 용이성을 확보하고, C++ 로 구현된 런타임 엔진과 직접 바인딩한다. 스크립트는 setup()update(dt) 두 개의 콜백만 정의하면 되며, setup에서는 초기 메쉬와 씬 그래프를 구성하고, update에서는 매 프레임마다 시간 간격 dt를 받아 동적 변형을 수행한다. 메쉬는 VCGLib을 기반으로 삼각형, 정점, 에지 정보를 관리하며, 정점·면을 프록시 객체로 래핑해 메모리 재배치 시에도 안전하게 참조할 수 있게 설계되었다. 이는 다중 스크립트가 동시에 동일 메쉬를 조작하거나, 한 스크립트가 정점을 삭제하고 다른 스크립트가 이를 참조하는 상황에서도 valid() 검사를 통해 오류를 방지한다.

Fugu는 기본적인 기하학 연산(T, S, R, Rv)과 고수준 메쉬 생성 함수(cube, sphere, icosahedron, iso) 등을 제공한다. 특히 iso 함수는 임의의 스칼라 필드 함수를 마칭 큐브 알고리즘으로 샘플링해 등가면을 생성하므로, 복잡한 형태를 수식으로 정의할 수 있다. 일반화 실린더 생성은 “거북이” 인터페이스를 사용해 이동·회전 명령으로 캐리어 곡선과 단면 곡선을 정의하고, 이를 베지어 곡선으로 보간해 삼각 메쉬로 변환한다. 이 방식은 L‑system과 결합해 가지 구조, 대칭 매니폴드, 시간 기반 성장 모델 등을 손쉽게 구현한다.

사용자 인터페이스는 코드 창, 3D 뷰, 콘솔 창으로 구성돼 실시간 구문 강조와 오류 메시지를 제공한다. 3D 뷰는 트랙볼 조작, 와이어프레임·AO·텍스처 등 다양한 렌더링 모드를 지원하며, 버터플라이 서브디비전으로 부드러운 표면을 확인할 수 있다. 또한 pos 객체를 이용해 <정점, 에지, 면> 튜플을 기반으로 메쉬를 탐색하고, flip 연산으로 인접 요소를 이동할 수 있어 복잡한 로컬 편집이 직관적이다.

Fugu는 LuaBind를 통해 C++ 객체와 Lua 사이의 바인딩을 자동화하고, 고성능 연산은 C++에서, 고수준 로직은 Lua에서 구현하도록 설계돼 확장성이 뛰어나다. 현재는 메쉬 조작 대부분을 Lua 레벨에서 수행할 수 있도록 API를 제공하고 있으며, 향후 사용자 정의 라이브러리 공유를 위한 패키징 시스템을 도입할 계획이다. 전체적으로 Fugu는 프로시저적 모델링과 실시간 인터랙션을 결합한 워크플로우를 제공함으로써 건축·디자인 분야에서 복잡한 유기 형태를 빠르게 탐색하고 프로토타이핑하는 데 유용한 도구임을 입증한다.


댓글 및 학술 토론

Loading comments...

의견 남기기