BUI(Blender User Interface)项目正式将Blender的图形用户界面(GUI)解耦为一个独立的C核心UI库。该库保留了Blender标志性的交互手感与高效渲染机制,同时支持通过Python、Rust、JavaScript/React、C/C++及Dear ImGui等多种语言和框架调用,旨在为开发者提供轻量级、高性能的原生桌面UI解决方案。
核心架构与设计理念
BUI并非Blender软件本身,也不包含浏览器引擎或WebView。其核心是一个名为kit的小型C运行时环境,负责维护控件树、处理布局、响应输入并按Blender规则进行绘制。上层通过薄层绑定(bindings)支持多种语言接入。这种设计确保了应用无需安装Blender即可复用其UI能力,同时避免了传统Web技术栈的资源开销。
该项目主要面向以下场景:
- 遗留应用现代化:让tkinter等老旧框架应用获得现代外观,无需重写代码。
- 专业工具开发:为熟悉Blender的艺术家提供一致的交互体验(如面板、滑块、快捷键)。
- 原生高性能UI:为Rust或React开发者提供不依赖浏览器的原生桌面UI方案。
- ImGui主题增强:通过编译标志使Dear ImGui应用获得Blender风格的视觉与交互体验。
多语言接入方案
BUI通过统一的C运行时确保跨语言体验的一致性,各语言支持状态如下:
- Python:提供四种接入方式。包括完整的tkinter/ttk API兼容(支持现有程序无缝迁移)、Qt语法子集、45种原生Blender组件(如Panel、NumberSlider)以及Dear ImGui绑定。仅需
pip install blenderui即可使用,无需额外依赖。 - Rust:支持类HTML标记(
rsx!)、gpui构建器语法及Hooks。提供完整的HTML元素渲染、现代CSS支持(Flexbox、Grid、动画等)及Tailwind CSS v4集成。可通过cargo add blenderui安装。 - JavaScript/React:基于Node.js或Bun运行,通过napi-rs扩展实现。支持React 19.3及Hooks,底层采用信号机制优化更新性能。提供类DOM API(
@blender-ui/native)供非React项目使用。 - C/C++ & Dear ImGui:直接链接C核心或使用Dear ImGui绑定。支持在BUI窗口中运行真实的Dear ImGui,或通过编译选项启用Blender原生控件渲染。
性能优势与技术特性
BUI在设计上极度注重效率,关键性能指标包括:
- 损伤渲染(Damage Rendering):空闲时CPU占用率为0%,仅重绘变化区域。基准测试显示,其每帧CPU占用比gpui-fast低2-4倍,内存占用更少,首帧渲染时间约5毫秒。
- GPU加速:支持Windows Direct3D 11和Linux OpenGL 3.3 GPU渲染,像素输出与CPU光栅化一致。
- 高效图像处理:内置多种格式解码器(PNG, JPEG, WebP等),支持离线程解码与动态缩放。滚动千张照片缩略图时,p99帧时间仅为2.9毫秒,内存占用控制在100MB以内。动态GIF/WebP播放具备零开销暂停机制。
- 轻量打包:JavaScript应用可构建为约7MB的独立可执行文件(内置QuickJS引擎),首帧启动约70毫秒,内存占用19MB,无需任何运行时安装。
快速入门指南
Python用户:
pip install blenderui
# 直接运行现有tkinter应用,无需修改代码
blenderui-tk my_app.pyRust用户:
cargo add blenderui
# 支持rsx!宏或gpui构建器语法JavaScript用户:
npm install @blender-ui/react react
# 支持Bun直接运行或构建为独立exe
bun app.jsx目前,BUI已在Windows、Linux(X11/Wayland)及macOS(实验性Cocoa宿主)上提供原生窗口支持,并适配HiDPI显示。对于希望深入了解的用户,官方文档提供了从安装到高级概念解析的完整指南。