brunch

You can make anything
by writing

C.S.Lewis

by 코드아키택트 May 26. 2024

Three.js Journey 66강

D+56

Three.js Journey. 근본 있는 수업이며 내용도 엄청나게 많다. 초반껄 듣다가 다소 지루한 감이 있어 뒷부분 내용을 도전해 봤다. 내용을 들으며 느낀 점을 적어본다.


66강 : 게임 만들기

66강의 내용은 게임을 만드는 것이다. 공을 굴려서 햄버거까지 도착하면 그때까지 시간을 재는 방식이다. 그냥 굴러가면 재미없으니 중간중간 방해물도 등장한다. 엄청나게 간단한 게임이지만 프로그래밍으로 구현하기 위해서는 꽤나 손이 가는 작업이다. 보다 보면 중간중간 재밌는 점과 한계도 종종 마주하게 된다.


최적화를 위한 다양한 기술

개발자가 여러 가지 설정을 다룰 수 있다는 것은 여러 가지 장점을 약속한다. 물론 잘 알고 쓰지 못하면 더 안 좋은 이야기가 되지만 그래도 일반적으로는 좋은 것이 더 많다. 컴퓨터 자원을 쓰는 제품들은 자원을 알맞게 쓰면서 본인의 제품이 눈에 띄도록 만들어야 한다. 그런 과정을 최적화라고 부른다. 가령 React를 제대로 쓸 줄 모르면 나와 같이 한 화면이 시작과 동시에 두 번씩 랜더링 되도록 만들어 버리곤 한다. 

Three.js의 경우 성능 최적화를 위해 여러 가지 설정을 만져볼 수 있었다. 그 대표적인 것이 "그림자"였다. 그림자는 그래픽에서 필수로 들어가는 요소이다. 그림자가 있으면 그만큼 사실적이고 그림자를 없애면 굉장히 어색하다. 하지만 그림자를 계산하는 과정이 컴퓨터에게는 연산 부하로 다가오는 것도 사실이다. 그렇기 때문에 가능하다면, 개발자는 어색하지 않은 선에서 그림자를 표현해야 한다. 

Three.js에서 모든 형상은 결국 mesh로 치환된다. 그리고 해당 mesh에 그림자와 관련된 두 가지 설정을 할 수 있다. 하나는 "castShadow" 해당 형상이 다른 형상에게 그림자를 드리울 것인지 선택하는 부분이다. castShadow만 하면 그림자가 생길 줄 알았는데, 그림자를 받는 지오메트리도 'receiveShadow'를 설정해 줘야 그림자가 드리워진다. 굉장히 기본적이 내용이지만 강조하고자 하는 내용에 따라 해당 설정을 잘 조절한다면 성능이 좋으면서도 괜찮은 게임을 만들 수 있을 것으로 보인다.


간단한 물리엔진 시뮬레이션도 가능

물리 시뮬레이션은 누구나 탐내는 물건이다. 건축계에서도 몇몇 프로그램이 쓰이는 것으론 알고 있지만 아주 제한적으로 쓰이는 것으로 알고 있다. 근본에 근본으로 가면, 건물의 구동을 살펴보기 위해선 물리시뮬레이션을 제대로 돌려봐야 하지만, 내가 알기론 그만한 모델링이 제대로 되는 프로젝트가 없기 때문에 건물에 들어가는 몇몇 중요 부분만 시뮬레이션을 하는 것으로 알고 있다. 

그런 복잡한 시뮬레이션이 아니더라도 물리 기반 시뮬레이션은 여럿 있다. 대표적으로는 충돌 시뮬레이션이고, 이런 충돌 후 거동을 살펴보기 위해 각 물건의 관절의 구속조건을 설정해야 한다. Three.js를 이용한 r3f에서는 이런 시뮬레이션을 할 수 있다. 정확히는 r3f에 물려있는 rapier를 통해 할 수 있다. 이런 내용들을 보고 있으면 확실히 Three.js는 꽤나 좋은 프로그램임을 볼 수 있다. 다만 늘 그렇듯 제대로 쓰기 위해선 공학적 지식도 어느 정도 필요할 것으로 보인다. 


사소한 그래픽 버그는 존재

수업 중간에도 계속 언급되는 부분이다. 그래픽이 완전히 제대로 표현되진 않는다. 그게 무슨 말이냐면, 1m짜리 벽에 castShadow옵션을 설정해 놔도 0.5m만큼만 그림자가 표현되는 것이다. 회사에서도 프로젝트를 할 때 예상치 못한 버그를 몇 번 마주했는데, 그런 것들이 아직 좀 남아 있는 것으로 보인다. webgl을 편하게 쓰는 게 three.js니까 three.js 또는 webgl의 버그라고 보면 될 것 같다. 


3D에서 전망을 본다면 들어보길

3D는 몇 년 주기로 여러 분야의 메인 주제로 떠오르곤 한다. 몇 년 전 메타버스가 그 중심이었고, 몇 년째 건축계의 떡밥인 스마트시티에서도 등장한다. 하지만 산업적으로 3D가 제대로 잡은 분야는 미디어 아니면 제조업 정도인 것으로 보인다. 나머지는 유행처럼 나타났다 사라졌다를 반복하고 있다.

나는 3D를 만드는 것이 재밌기도 하고 여러 가지 다양한 표현이 가능해 전망이 있다고 본다. 또한 책이나 2D가 전해주는 정보의 효율성도 있지만 3D가 전해주는 생동감도 여전히 믿고 있기 때문에 계속해나가고 있다. 어쨌든 꾸준히 해보는 것으로.

이전 26화 결혼식장과 건축
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari