Welcome to Model 3D!

Model 3D is an application and engine neutral, universal 3D model format to store CAD models, meshes, skeletal animations and voxel images. It comes with a dependency-free, single header ANSI C/C++ SDK.

The file format and the SDK is Open Source and free as in free beer! Licensed under MIT license.

Compact

The format has the best data density of all the available 3D model formats (including CAD), easy on network traffic. Parsing is painless and lightning fast.

Animations

It can store multiple skeleton-based animations in a model file (so called actions). The SDK makes it easy to get the animation-pose for each.

Procedural

Model 3D is capable of storing procedural textures and faces. Any scripting language can be used, the SDK ships Lua binding as a Proof of Concept.

Integration

Extremely easy to integrate into any project and any workflow. A command line tool can convert from any format, and a Blender plugin is provided to export M3D models.

Embeddable on webpages

With the WebGL polyfill, you can include Model 3D files in webpages just like normal 2D images! Hint: drag the images below!

demo
<img src="cube.m3d" width="300" height="300">
demo
<img src="suzanne.m3d" width="300" height="300">
demo
<img src="voxelimg.m3d" width="300" height="300">

Easy to use Software Development Kit

  • The M3D SDK is an stb-style, dependency-free single header file written in ANSI C89, licensed under MIT.
  • If you prefer, the SDK can provide a C++11 wrapper class around the C API, or you can write your own.
  • You can configure the SDK using defines to add ASCII format support or model exporting functionality.
  • You don't have to worry about the textures, the SDK will decompress PNG textures for you on its own (no library needed).
  • Unlike other 3D model SDKs, the in-memory format is simple, your code that interfaces with it can be extremely simple.
  • Follows the K.I.S.S. principle, there're only 5 functions in the API.
  • The API manual provides you with detailed description and SDK usage examples.
  • You can integrate the m3dconv utility into your build environment to convert foreign models in compilation time.
  • There's a simple model viewer, which demonstrates how to display animated models using the M3D SDK (also available as a web service).

Convert Anything into Model 3D

  • The Blender plugin makes it possible to directly save models into Model 3D format.
  • With the m3dconv command line tool you can convert almost any existing model into Model 3D easily:
  • Fully supports Wavefront OBJ (including negative indices, Bezier curves / surfaces, B-spline and NURBS), and a STEP (ISO-10303-21-4 / ISO-10303-24-2) file importer is on the way.
  • Simple text files with skeletal animations using Milkshape 3D (this is a very simple format, similar to OBJ, widely supported and damn easy to create programatically).
  • Simple binary files with Polygon Model eXtended (PMX, used by the Miku Miku Dance software and many others, popular exchange format for its features and relative simplicity).
  • Voxel images, like BINVOX files, Minecraft Schematic files, Magicavoxel VOX files and Qubicle QB files can be converted too efficiently.
  • FBX support via the uFBX library (included).
  • Other supported formats via Assimp (not included, dinamically linked): GLTF, GLB, 3DS, 3DS MAX, X, ASE, BLEND, COLLADA (DAE), B3D, MS3D, MD5, MESH, STL, PLY and many many more...
  • When running into problems with loading a specific model, you can use the web based Model 3D file validator, or run m3dconv -D natively on your local computer.

Projects using Model 3D

  • raylib a multiplatform, simple and easy-to-use programming library to enjoy videogames programming.
  • mtsedit a Minetest Schematic editor, which can import Model 3D voxel files.
  • TirNanoG an Action and Adventure RPG creation suite, which can generate 2D sprite sheets from Model 3D files.
  • Mach game engine and graphics toolkit for the future.
(Open an issue if you want your project to be listed here.)