All Projects → excessive → iqm-exm

excessive / iqm-exm

Licence: Unlicense license
IQM & EXM model format specs, Blender exporter, and LÖVE loader.

Programming Languages

python
139335 projects - #7 most used programming language
lua
6591 projects

Projects that are alternatives of or similar to iqm-exm

Luven
Minimalist lighting engine for Löve2D
Stars: ✭ 37 (+5.71%)
Mutual labels:  love2d, love2d-library
clove
A helper library for LÖVE which allows to loads huge amount of assets super-easily 👊
Stars: ✭ 18 (-48.57%)
Mutual labels:  love2d, love2d-library
lovector
A pure-lua vector graphics processing and rendering library for LÖVE 2D
Stars: ✭ 29 (-17.14%)
Mutual labels:  love2d, love2d-library
verge3d-blender-addon
WebGL exporter add-on ripped from Verge3D for Blender toolkit
Stars: ✭ 91 (+160%)
Mutual labels:  blender-addon, blender-exporter
Liko 12
LIKO-12 is an open source fantasy computer made using LÖVE.
Stars: ✭ 811 (+2217.14%)
Mutual labels:  luajit, love2d
animX
An animation library for Love2D with unique features
Stars: ✭ 17 (-51.43%)
Mutual labels:  love2d, love2d-library
Live2LOVE
LÖVE library to show Live2D Cubism models (WIP)
Stars: ✭ 22 (-37.14%)
Mutual labels:  love2d, love2d-library
Shadows
Shädows - A Shadows & Lights engine for löve
Stars: ✭ 134 (+282.86%)
Mutual labels:  luajit, love2d
Grid Sdk
The Grid SDK - Game engine for Lua
Stars: ✭ 612 (+1648.57%)
Mutual labels:  luajit, love2d
Picolove
PICO-8 Reimplementation in Love2D
Stars: ✭ 467 (+1234.29%)
Mutual labels:  luajit, love2d
Love
LÖVE is an awesome 2D game framework for Lua.
Stars: ✭ 1,305 (+3628.57%)
Mutual labels:  luajit, love2d
Goluwa
a game framework written in luajit
Stars: ✭ 173 (+394.29%)
Mutual labels:  luajit, love2d
catui
A very light-weight GUI library for the Löve2D
Stars: ✭ 84 (+140%)
Mutual labels:  love2d
MindMapper
Blender Python - Node-based multi-line text and image flowchart
Stars: ✭ 58 (+65.71%)
Mutual labels:  blender-addon
io import vmf
A Valve Map Format (.vmf) and Valve Material Type (.vmt) importer for Blender.
Stars: ✭ 225 (+542.86%)
Mutual labels:  blender-addon
wfc 2D B3D
2D Wave Function Collapse as Blender Plugin
Stars: ✭ 29 (-17.14%)
Mutual labels:  blender-addon
interactive-physics-editor
Simplifies the process of positioning multiple objects in 3D space with collision handling
Stars: ✭ 20 (-42.86%)
Mutual labels:  blender-addon
sOS
Solar Operating System - The ASCII OS nobody asked for.
Stars: ✭ 11 (-68.57%)
Mutual labels:  love2d
Mesh Onion Skins
Mesh Onion Skins is a Blender add-on that helps to create and analyze object or character animation.
Stars: ✭ 30 (-14.29%)
Mutual labels:  blender-addon
gender-render
Template-system and proof-of-concept for rendering gender-neutral text-, email- and RPG-text-templates with the correct pronouns of all people involved.
Stars: ✭ 21 (-40%)
Mutual labels:  specification

Inter-Quake Model + Excessive Model (.iqm/.exm) Loader

Loader depends on LÖVE 11.x. Requires CPML for animation support, but not static meshes.

IQM/EXM specifications

The IQM specification file here (iqm.txt) is derived from upstream, but with clarifications corresponding with existing implementations of the format (upstream exporter and converter), and as implemented by this exporter.

The EXM specification is TBD, but currently the only notable change is the usage of the comment field for JSON scene metadata (objects, properties, curves...). The formats are otherwise completely compatible, and will stay as such unless there's a very good reason in the future (perhaps for a v3 format with blend shapes). It's fairly likely that a future version of the exporter will also provide more guarantees for the vertex format in EXM files.

Blender Exporter

The Blender exporter supports exporting .iqm and .exm formats. The .exm format is backwards compatible with .iqm, but has an additional metadata block with unspecified json in it (subject to change in future revisions).

It is derived from the IQM SDK a few years ago before the license changed from public domain to MIT. This version has some quality of life improvements and new features as needed for Excessive's games.

Usage:

local iqm = require "iqm"

-- load:
local model = iqm.load("foo.exm")

-- Make sure to enable mipmaps
model.textures = {
	Material1 = love.graphics.newImage("foo.png", { mipmaps = true })
}

-- Set filtering to 16x anisotropic.
for _, texture in pairs(model.textures) do
	texture:setFilter("linear", "linear", 16)
end

-- draw:
-- You can draw the whole model as one mesh (just don't set draw range), but
-- if you draw this way you can assign a different shader/textures per-mesh.
-- (naturally, at the expense of more draw calls - do what's best for you)
for _, buffer in ipairs(model.meshes) do
	local texture = model.textures[buffer.material]
	model.mesh:setTexture(texture)
	model.mesh:setDrawRange(buffer.first, buffer.last - buffer.first)
	love.graphics.draw(model.mesh)
end
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].