Yet Another Model Converter for GameMaker
This is a community-developed project, released under CC0 1.0 Universal (Public Domain). It is no longer actively maintained by the original author. Feel free to fork, modify, or experiment.
Yet Another Model Converter (YAMC, pronounced yams) is a tiny tool that loads a model from one of many supported file formats and exports it into a binary file that can be simply loaded in GameMaker using functions buffer_load and vertex_create_buffer_from_buffer.
See file yamc.gml for simple utility functions. The utils folder also includes a shader that you can use as a base for your custom ones. If you are not familiar with shaders, you can also draw the models using GameMaker's built-in shaders with lighting, fog etc. See examples folder for little example projects.
- Convert static model into a binary file, easily loadable using functions
buffer_loadandvertex_create_buffer_from_buffer. - Customizable vertex format. Supports 3D position, normal, texcoord (up to two layers), color and tangent vector with bitangent sign (float4).
- Invert vertex winding order.
- Convert to -Y-up (default) or +Z-up space.
- Generate flat or smooth normals if the model has none.
- Flip UV coordinates on the Y axis.
- Bake materials' diffuse colors into vertex colors.
- The entire model is collapsed into a single vertex buffer, therefore it cannot have sub-meshes with different textures/materials/shaders, different vertex formats and different primitive types (the entire model needs to be either point list, line list or a triangle list).
- Animations are not supported.
Run yamc -h to see help message with all arguments and their description.
Following commands build yamc binary into folder dist. Requires CMake 3.23 at least and a C++17 compiler!
git clone https://github.com/blueburncz/YAMC.git
cd YAMC
cmake -B build -S .
cmake --build ./build/ --config=ReleaseYAMC logo is property of BlueBurn and you're not allowed to do any modifications to it! Only uniform scaling is allowed, to change the logo size as required.