BVA: A GLTF‑Based Chinese‑Localized 3D Avatar Format and Unity SDK
The BVA format is a Chinese‑localized, glTF‑based 3D avatar standard and open‑source Unity SDK that unifies avatar specifications, adds facial‑capture and extensible features, supports scene export, multithreaded and on‑demand loading, and works across Unity, WebGL, Maya, Blender and other platforms.
Existing 3D file formats fall into three categories: designer‑oriented formats such as FBX and DAZ, engine‑specific resources, and niche formats targeting special domains. The MMD format is the most widely spread niche format on the Internet and on Bilibili.
To overcome the limitations of current formats and to enable high‑freedom 3D world creation, sharing, and trading, a new file format is proposed. Like PNG for images, this format is OS‑ and tool‑agnostic, easy to create, modify, load, and export at runtime.
The BVA format is designed as a Chinese‑localized standard that unifies avatar specifications, provides better support for facial and motion capture, and can be used across systems, platforms, and engine versions without additional files.
Technical foundation : BVA follows the glTF standard because glTF offers the most compatible and extensible data structures, supports vendor extensions, and already includes scenes, lights, animations, meshes, materials, textures, and rendering techniques. The file consists of a JSON description, binary buffers, and external texture files; the GLB variant packs everything into a single binary file.
Advantages over VRM : BVA is fully compatible with standard glTF at runtime, adds features via extensions or extras without breaking the base spec, supports scene export, animation, multimedia, cubemap skyboxes, Draco compression, custom material and script parameters, and allows flexible business‑specific extensions. It also enables custom logic export, such as embedding a virtual girlfriend directly in the file.
Runtime framework : The SDK provides a runtime architecture that can load BVA files in Unity, WebGL, Maya, Blender, etc., and includes a code‑generation tool for developers and creators.
File loading mechanism : A single BVA file may contain multiple scenes; a SceneID selects the active scene. For single‑scene files, resources are loaded and unloaded immediately. Two loading strategies are offered: a multithreaded fast loader for small files (which may block the render thread for large scenes) and a payload‑based recursive load that loads resources on demand, reducing memory usage and avoiding main‑thread stalls.
Recursive Load loads data only when needed, keeping the main thread responsive, suitable for large scenes, but may be slower because tasks cannot be parallelized.
Unity editor vs. runtime : At runtime, GLTFSceneImporter loads files directly into memory. In the editor, GLTFImporter imports resources, writes them to the project, and rewires references for full editing capabilities. AssetImportContext can associate meshes, avatars, and animations directly with the file.
Creation and usage workflow : The SDK loads both BVA and standard glTF files, and can also load VRM and MMD via third‑party libraries. All loaded resources can be exported, enabling comprehensive content‑generation tools such as character sculpting utilities.
Completed SDK features include support for all standard glTF elements (Scene, Node, Mesh, Material, Texture), official extensions (KHR_materials_pbrSpecularGlossiness, KHR_materials_unlit, KHR_materials_clearcoat, KHR_lights_punctual), lights, cameras with engine‑specific data, common colliders, custom material extensions, skinning, blendshape, animation (transform + blendshape), avatar skeletons, audio (wav, mp3, ogg), URL data, streaming video, metadata/licensing, blendshape mixer, timeline system, skybox, post‑process, dynamic bone, decal, TextMesh, Draco compression, cubemap, sprite, lightmap, and event system.
Tools included in the SDK : export/import of .gltf, .zip, .glb; accelerated avatar loading; distinction between runtime prefab loading and editor asset import; VRM/MMD conversion with material and physics adaptation; shader code generation; extra component import/export code generation; legacy animation conversion; a file viewer for previewing most features.
Planned developments : support for scripting languages such as Lua and TypeScript with selectable runtimes, UI element storage, and components tailored for live‑streaming or social games.
Unity SDK is now open‑source: https://github.com/bilibili/UnityBVA
Bilibili Tech
Provides introductions and tutorials on Bilibili-related technologies.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.