Reads from file, which is expected to provide file:read(nbytes). file is not closed.
Returns a B3D model object.
Writes the B3D model object self to file.
file must provide file:write(bytestr). It should be in binary mode.
It is not closed after writing.
Writes the B3D model object to a bytestring, which is returned.
Returns a glTF JSON representation of self in Lua table format.
Convenience function to write the glTF representation to file using modlib's json writer.
file must provide file:write(str). It is not closed afterwards.
This example loops over all files in dir_path, converting them to glTFs which are stored in out_dir_path.
local modpath = minetest.get_modpath(minetest.get_current_modname())
local dir_path = modpath .. "/b3d"
local out_dir_path = modpath .. "/gltf"
for _, filename in ipairs(minetest.get_dir_list(dir_path, false --[[only files]])) do
-- First read the B3D
local in_file = assert(io.open(dir_path .. "/" .. filename, "rb"))
local model = assert(b3d.read(in_file))
in_file:close()
-- Then write the glTF
local out_file = io.open(out_dir_path .. "/" .. filename .. ".gltf", "wb")
model:write_gltf(out_file)
out_file:close()
endThis example from modlib_test reads, writes, and then reads again,
in order to verify that no data is lost through writing.
Simply re-writing a model using modlib's B3D writer often reduces model sizes,
since for example modlib does not write 0 weights for bones.
Keep in mind to use the rb and wb modes for I/O operations
to force Windows systems to not perform a line feed normalization.
The Ghosts mod extracts triangle sets using the B3D module to then approximate the player shape using particles picked from these triangles.
character_anim uses the B3D module to determine the bone overrides required
for animating the player entirely Lua-side using bone overrides.
This example from the Go mod generates a Go board where for each spot on the board there are two pieces (black and white), both of which can be moved out of the board using a bone.
It demonstrates how to use the writer (and how the table structure roughly looks like).