Why use B3D Format

Blitz3D Forums/Blitz3D Programming/Why use B3D Format

Captain Wicker (crazy hillbilly)(Posted 2012) [#1]
Why should I use the .B3D format? What are some advantages of using the B3D model format? What is the difference between B3D and 3DS? Why use it?


Yue(Posted 2012) [#2]
Apparently it's the best format for performance and native collisions Blitz3D also supports various textures I think unlike 3ds.

And just my opinion.


Danny(Posted 2012) [#3]
It's the ONLY WAY to get 3D animated characters (bones) into Blitz.
Unless you want to make characters out of sticks and balls.


Yue(Posted 2012) [#4]
3ds animate vertices...


Hotshot2005(Posted 2012) [#5]
.B3D is lots easier and you dont have mess about the Textures stuff because automatic when you load the B3D models where 3DS Models as you have do it manual which is pain in the ass!


Yasha(Posted 2012) [#6]
Danny has the main point: it's the only built-in 3D model format with support for skeletal mesh deformation, i.e. bones. A 3DS model can only be animated in separate mesh segments, which has two problems:

1) appearance: your character must be segmented into hard chunks, which looks terrible

2) performance: each of those chunks requires a separate surface, and keeping the surface count low is important for keeping a scene efficient; a deformable mesh can use only one surface

Since the format was designed by Mark, it also perfectly matches the structure of a B3D mesh at runtime: divided into surfaces; two sets of UVs; dedicated vertex normals; entity parent and child structures; entity FX; separate node types for pivots, lights, cameras etc. 3DS doesn't actually match up with Blitz3D internal meshes (e.g. "materials" instead of surfaces, vertex smoothing groups instead of normals which make hard-edged mechanical structures look really ugly, no pivots).

MD2 is better for performance only, because it's even better at sharing surface data and has lower CPU cost to animate, but comes with several restrictions that may make it not worth the extra bother (vertex-only animation at a poor level of precision, no interaction with the rest of the mesh system because MD2 entities aren't "meshes" at runtime). BSP meanwhile is not usable for anything other than scenery (and nobody uses it anyway, so there's no real community support), and again isn't a "mesh" so isn't as flexible. X is similar to 3DS because it's the old version without support for bone-based animation (I don't know the specifics of how X handles mesh data, but it's already equivalent to the first two problems with 3DS, and adds a new difficulty in that you have to carefully control the format version - this will make finding a safe exporter more difficult).

B3D is the best all-round solution. 3DS is inferior in every way and should be avoided as long as you can export B3D files from your editor. MD2 and BSP are best kept as optimisations for later after you've decided you don't need all of the flexibility of proper B3D meshes.

Other mesh formats have the disadvantage of not having built-in support, and therefore have the problem that you need to 1) code an importer if there isn't one in the archives, and 2) can't use bones without nasty hacks, because for some reason there's no AddBone command (I did write one and you can find it in the archives, but it's not quite like having the real thing).

Last edited 2012


Leon Drake(Posted 2012) [#7]
no addbone and vertex weight commands are the reason i dropped b3d entirely.