요약
Blender의 UI 코드를 떼어 내 여러 언어에서 쓰게 만든 독립 UI 라이브러리 BUI가 공개됐습니다.
개발자 ppmpreetham이 GitHub에 올린 프로젝트입니다. Blender를 설치하지 않아도 Blender의 위젯 그리기와 입력 처리를 쓸 수 있도록 핵심을 작은 C 런타임으로 옮겼습니다.
왜 중요한가
- 같은 C 런타임 위에 얇은 바인딩을 얹은 구조라서, 언어가 달라도 같은 위젯과 조작감을 쓸 수 있습니다.
- 작성자가 잰 결과로는 Zed 편집기의 GPUI보다 프레임 속도, 메모리, 첫 화면 표시가 모두 앞섰습니다.
- 다만 측정은 노트북 한 대에서 직접 한 것이고, GPL-3.0이라 BUI를 넣은 프로그램은 소스를 공개해야 합니다.
핵심 내용
- 위젯 그리기와 상호작용 규칙은 Blender 소스를 C로 옮긴 것이고, 글꼴도 Blender와 같은 Inter를 씁니다.
- 애니메이션 셀 3,000개 시험에서 BUI(GPU)는 초당 59.9프레임, GPUI는 19.9프레임이었습니다.
- Python은 tkinter 문법과 Dear ImGui를, Rust는 HTML·CSS를, JS는 React·Svelte를 지원합니다.
- 기본 렌더러는 바뀐 영역만 다시 그리는 CPU 방식이라 화면에 변화가 없으면 CPU를 거의 쓰지 않습니다.
- 접근성 기능과 윈도 밖의 IME(한글처럼 글자를 조합해 입력하는 장치) 지원은 아직 없습니다.
HN 반응
- 무엇을 하는 프로젝트인지 바로 알려 주는 README라는 칭찬과, LLM이 쓴 듯 장황하고 예제와 그림이 맞지 않는다는 비판이 갈렸습니다.
- Blender UI를 다른 앱에서 보고 싶지 않다는 반응에, 게임 에디터 같은 도구에는 유용하다는 반론과 GPUI보다 imgui와 비교해야 한다는 지적이 이어졌습니다.
README 정말 잘 쓰셨다고 칭찬드리고 싶어요. 이게 뭔지, 내가 왜 관심을 가질 만한지 금방 알려 주거든요. 세상에는 그렇게 안 쓰는 README가 너무 많잖아요. 기술 구현 세부사항을 늘어놓고, 자기네 언어 선택이 얼마나 대단한지 떠들다가, README의 3분의 1쯤 읽었는데도 "그래서 이 프로젝트가 뭘 하는 건데?" 하고 갸웃거리게 되는 경우 말이에요.
저는 헷갈리는 LLM 스팸처럼 보이던데요. Qt API랑 dearimgui 얘기를 한참 하는데, 대부분 별도 페이지로 빼도 될 내용이에요.
그런데 제일 별로인 건, 코드 스니펫마다 뒤에 코드와 상관없는 이미지가 붙어 있다는 점이에요. 그 코드를 입력한다고 나오는 화면이 아니라 완전히 다른 물건이거든요.
1부는 건너뛰신 거예요?
제 오래된 GitHub 프로젝트 중 별이 1천 개 넘는 것들도 사실 그리 대단한 건 아니었지만, README만은 늘 가장 깔끔하고 단순하게 쓰려고 신경 썼습니다. Python requests 라이브러리 문서( https://github.com/psf/requests ) 같은 것을 본보기로 삼았습니다. 그게 성공에 큰 도움이 됐다고 생각합니다.
한번은 누군가 README를 API 문서까지 다 갖춘 장황한 기술 문서로 바꿔 달라는 GitHub 이슈를 올린 적이 있습니다. 그런데 여러 사람이 "소개 + 개략적인 예제" 방식이 훨씬 좋다는 답글을 달았습니다.
README를 LLM 없이 쓰셨다면 좋았을 텐데요.
맞습니다. 정말 중요한데도 신경 쓰지 않는 경우가 많습니다. 이 README는 꽤 훌륭했고, 꼼꼼하면서 모호한 구석도 없었습니다. 자기네 난해한 아이디어가 뭔지 당연히 안다는 듯이 쓴 프로젝트가 정말 많은데, 대개 저자가 독자의 처지에서 생각하지 못해서 그렇습니다.
Blender UI의 기본 발상은 정말 좋아해요.
특히 최신 버전에서 훨씬 나아졌고, 그만큼 공들인 노력도 높이 평가하고요.
그래도 Blender 말고 다른 데에는 그 UI가 절대, 절대, 절대, 정말 절대 안 쓰였으면 좋겠어요.
제발 그러지 말아 주세요.
기존 프레임워크나 플랫폼 없이 작은 게임 프로젝트를 하면, 보통 게임과 함께 아주 허접한 게임 에디터를 만들게 됩니다. 그 에디터에 시간이 오래 걸리는데, 대부분 UI를 배치하는 데 들어가죠.
이미 Blender로 에셋을 만들고 있다면, 게임 에디터에도 Blender의 UI를 그대로 가져다 쓰는 게 이득일 수 있습니다.
그런 경우라면 imgui, egui 같은 라이브러리와 경쟁하게 될 텐데, 이 글은 GPUI와 비교하고 있잖아요.
imgui나 egui에 이 정도 수의 인터페이스 객체와, 모양과 동작을 조절하는 매개변수가 있나요? 여기서 내놓는 건 Qt급 인터페이스 같은데, 둘 중 어느 쪽도 그 대안으로 추천하지는 못하겠어요.
이제 AI 시대에는 아닙니다.
이 모든 걸 손으로 코딩하고 싶다는 마음은 이해합니다. 하지만 그건 선택이에요. 선택이라면 "허접한 게임 에디터"에 Blender UI를 억지로 끼워 넣는 일(그리고 애초에 "허접한 게임 에디터"를 만드는 일)은 사실 필요가 없습니다. UI 배치에 많은 시간을 쓸 필요가 전혀 없어요.
게임 툴링은 이제 꽤 사소한 일이고, 사용자에게 보이는 부분도 아닙니다. 다시 말하지만, 직접 하고 싶은 사람의 마음은 충분히 이해하지만, 이제는 그게 선택이라는 사실을 부인하진 맙시다.
당신과 다른 분이 "UI 배치"를 무엇으로 보느냐에 따라, AI가 문제를 해결해 줄 수도 있고 더 큰 문제를 만들 수도 있습니다. 특히 기술이나 UI에 확고한 의견이 없다면 더 그렇습니다.
그냥 궁금해서 그러는데요, 정말 그렇다면 왜 굳이 특정 UI 프레임워크를 두고 댓글까지 달며 고민하시는 거예요? 아직도 코드를 손으로 쓰고 게임을 만드는 저 같은 멍청이는 이게 왜 흥미로운지 알지만, 당신에게는 이미 고리타분한 주제 아닌가요? 이 라이브러리냐 저 라이브러리냐에서 얻거나 배울 게 실제로 뭐가 있죠? 이제는 높은 수준의 개념과 순수한 아이디어만 생각하면 되는 것 아닌가요? 나머지는 돈을 써서 해결하고요?
인터넷 댓글 게시판에서 남의 동기를 캐묻는 것만큼 이상한 일도 드물다고 생각합니다. 저도 GP의 게임 툴링 의견에 동의하지만, 제가 여기 있는 이유는 여전히 좋은 소프트웨어를 만드는 일에 관심이 있기 때문입니다. 그러려면 기술이 변해 가는 과정을 지켜보고 익히며 따라가야 하니까요. 이 정도면 충분한 이유가 됩니까?
수정: 제가 답하던 빈정거림은 그 사이 편집돼서 사라졌네요.
그런데 이 경우에는 개발 도구 자체가 "사용자에게 보일" 필요가 없다는 게 바로 전제 아닌가요? 어차피 그 도구를 직접 쓸 일이 더는 없다면, 왜 개발 도구용 UI 개발 동향을 따라가야 하죠? 어차피 쓰이지도 않을 슬라이더를 AI에게 추가시키느라 돈을 쓸 이유는 또 뭐고요?
잘못 읽으신 것 같습니다. 그분 말씀은 "사용자"가 아니라 "고객"에게 보이지 않는다는 뜻 같아요. 즉 플레이어는 레벨 에디터가 좀 엉성해도 신경 쓰지 않습니다. 볼 일이 없으니까요.
동료들이 업무로 쓰는 종류의 도구라면, 분위기만으로 초안을 뽑아 놓고 거기서 발전시키는 편이 손으로 쓰는 것보다 시간과 돈이 훨씬 덜 듭니다. 툴링 예산을 다르게 쓴다면 어리석은 거죠.
저는 그렇게 읽었습니다. 도구를 쓸 사람은 여전히 필요하고, Claude가 Mass Effect 4를 한 번에 만들어 낸다고 말하는 사람은 아직 없습니다.
Blender를 20년 가까이 써 봤는데도 UI/UX는 여전히 끔찍하다고 생각합니다. 요즘 Blender 세대 중 상당수는 각인 효과(baby duck syndrome)에 빠져 있는 것 같고요.
Blender는 예전에 UI가 완전히 달랐다가 크게 개편됐기 때문에, 대부분 사람들은 옛 디자인과 새 디자인에 대해 의견이 서로 다릅니다. 그런데 당신은 둘 다 끔찍하다고 느끼는 것 같네요. 저는 그게 놀랍고, 어떤 3D 프로그램의 UI가 좋다고 보시는지 궁금합니다.
Blender는 모든 버전을 써 봤는데, 늘 필요 이상으로 어렵게 느껴졌습니다.
3Ds max, maya, lightwave, cinema4D, milkshape, wings, Houdini, unreal engine 1~5, Hammer, Threejs editor, 그 밖에 더 있을 겁니다. Blender UI는 위에 나열한 전부보다 나쁩니다.
Blender의 옛 UI 시절에 3Ds max는 메뉴가 5~6단계씩 중첩돼 있어서, 그에 비하면 gimp가 아주 훌륭한 디자인으로 보일 정도였습니다. 3Ds max를 칭찬하시고, 옛 Blender UI와 새 Blender UI를 뭉뚱그리시고, Blender가 왜 그렇게 나쁜지 구체적인 이유도 대지 않으셨으니(저는 3D max에 대해 몇 가지 댔습니다) 근거가 없다고 볼 수밖에 없습니다. 서로 생각이 다르다는 데 동의하죠. 저는 Blender UI가 훌륭하다고 생각하지만, 3D 에디터는 전문 앱입니다.
질문은 어느 쪽 UI가 좋다고 보느냐였는데요... 저도 당신 의견이 궁금해요. 지금 3D 디자인 소프트웨어 UI의 최고 수준이 뭐라고 보시나요? 아니면 전부 형편없고 Blender가 제일 형편없을 뿐인가요?
저는 Blender로 배웠더니 이제 다른 에디터는 전부 못 쓰겠어요. 더 표현력 있게 쓰고 싶은 사람을 위해 왜 아직도 Blender 모드를 안 넣는지 궁금해요.
Zbrush는 괜찮아요.
그런 사람도 있겠지만, 저는 처음엔 UI가 싫었어도 익히면서 점점 좋아하게 됐습니다. 다른 대부분의 소프트웨어와 방식이 다를 뿐이고, 그래서 마찰이 생기는 건 당연합니다. 하지만 익히고 나면 꽤 괜찮은 체계라고 생각합니다. 익숙함과 신규 사용자에 맞출지, 숙련 사용자에게 최적화된 경험을 줄지 사이에는 트레이드오프가 있습니다.
저는 전문 디자이너나 3D 모델러는 아니지만 Blender를 꽤 써 봤습니다. 무슨 말씀인지는 알겠는데, 개편 이후의 최신 UI는 나쁘지 않아요.
Blender는 하는 일이 정말 많아서, UI를 만들기 쉬운 제품이 아닙니다. 그래도 다른 3D 패키지를 쓰다 넘어올 때가 처음부터 배울 때보다 문제가 훨씬 크다고 봅니다.
제 십대 아이들은 Blender가 태어나서 처음 배운 3D 패키지인데, 영상을 보고 서로 배우면서 금세 늘어서 감탄했어요.
왜 안 되죠? 비슷한 애플리케이션이라면, 오랜 시간 다듬어진 사소한 UI 상호작용을 일일이 다시 구현하지 않아도 되니 정말 유용할 텐데요.
Blender UI 하면 "잘 다듬어졌다"는 말은 제일 먼저 떠오르지 않는데요.
그건 흔한 밈을 되풀이하는 말일 뿐입니다. Blender의 UI 레이아웃과 구성은 괜찮고, 게다가 이건 UI 라이브러리예요. Blender UI는 기술적으로 문제가 없고, 오히려 전반적으로 꽤 훌륭합니다.
저는 정말 질색입니다(솔직히 최근 2년쯤은 안 써 봤지만). 그래도 이게 정말 어려운 문제 영역이고 뚜렷한 정답이 없다는 건 압니다. 도구 자체가 본질적으로 복잡하고 줄일 수도 없으며, 자원이 극히 제한된 무료 프로젝트인 데다 꾸준히 나아지고 있다는 점도 알고요. 등등.
진지한 3D 애플리케이션 인터페이스는 다들 싫어합니다... 그냥 복잡한 거예요. 저는 Houdini, Maya, Max, Blender, Zbrush, Marvelous Designer, UE 에디터를 전문가 수준으로 다루는데, 전부 이런저런 면에서 별로이지만 결국 모두 거대한 트레이드오프와 우선순위의 집합이에요. 게다가 이런 프로그램 상당수는 현대 개발 환경 대부분보다 수십 년 더 긴 역사가 있고, 워낙 복잡해서 UI를 바꾸면 혼란이 클 수 있어요. 수많은 *nix CLI 도구가 수십 년 전 그대로인 것과 비슷하죠. (전부는 아니지만) 많은 개발자가 자기네 도구가 컴퓨터 세계에서 가장 복잡하다고 생각하는데, 절대 아니에요.
Blender는 지금까지 만들어진 오픈소스 프로젝트 중 가장 잘 다듬어진 것일지도 모릅니다.
GIMP 같은 다른 오픈소스 그래픽 프로그램이 쓰기에 끔찍하다는 점을 생각하면, 지금처럼 훌륭하다는 것 자체가 기적입니다.