groverburger's 3D engine (g3d) simplifies LÖVE's 3d capabilities to be as simple to use as possible.
View the original forum post here.
- 3D Model rendering
- .obj file loading
- Basic first person movement and camera controls
- Perspective and orthographic projections
- Basic collision functions
- Simple, commented, and organized
- Download the latest release version.
- Add the
g3d
subfolder folder to your project. - Add
g3d = require "g3d"
to the top of yourmain.lua
file.
For more information, check out the g3d wiki!
Hoarder's Horrible House of Stuff by alesan99
First Person Test by groverburger (that's me!)
The entire main.lua
file for the Earth and Moon demo is under 30 lines, as shown here:
-- written by groverbuger for g3d
-- may 2021
-- MIT license
local g3d = require "g3d"
local earth = g3d.newModel("assets/sphere.obj", "assets/earth.png", {0,0,4})
local moon = g3d.newModel("assets/sphere.obj", "assets/moon.png", {5,0,4}, nil, {0.5,0.5,0.5})
local background = g3d.newModel("assets/sphere.obj", "assets/starfield.png", {0,0,0}, nil, {500,500,500})
local timer = 0
function love.mousemoved(x,y, dx,dy)
g3d.camera.firstPersonLook(dx,dy)
end
function love.update(dt)
timer = timer + dt
moon:setTranslation(math.cos(timer)*5, 0, math.sin(timer)*5 +4)
moon:setRotation(0, math.pi - timer, 0)
g3d.camera.firstPersonMovement(dt)
if love.keyboard.isDown("escape") then love.event.push("quit") end
end
function love.draw()
earth:draw()
moon:draw()
background:draw()
end
Check out the g3d wiki!