User:Substitute541/Love3D

IF YOU'RE LOOKING FOR ANOTHER LIBRARY OF THE SAME NAME SEE : L3D Library

This library allows you to simulate pseudo-3D, although you can model some basic 3D polyhedrons with the 3D triangles. There are also other functions too.

Download

The Love3D Library.zip Current Version : 0.3.2 [Backface Update]

Lighting Demo

Ambient Lighting Demo

Backface Culling Demo

Instructions

  • Unzip the .zip file
  • If you are using this, put the Love3D.lua in your .love file
  • On the outside of any function in main.lua add :
require "Love3D"
  • Then on the INSIDE of love.load(), near the end of the function, add :
love3D.load(fl, vpX, vpY)
  • (Note : FL means Focal Length. This value is usually 250. vp means Vanishing Point) And you're done! Just call the functions and you're ready to go!

How to load additional extensions

  • Put yourExtension.lua in your love file
  • Love3D.lua will automatically require yourExtension.lua when it exists. So just load it inside love.load() AFTER loading Love3D.
love3D.extensionName.load()
  • And you're done!

Functions

Love3D Functions

  • love3D.load. Loads the library, must be called in the love.load function
  • love3D.calculatePointPosition. Calculates point position by transforming the 3D coordinates to 2D
  • love3D.isBackFace. Checks if the face is a backface
  • love3D.graphics.quad. Draws a quadrilateral
  • love3D.graphics.triangle. Draws a triangle
  • love3D.graphics.lineSegment2D. Draws a 2D line segment in 3D space
  • love3D.graphics.draw2D. Draws a 2D image in 3D space
  • love3D.func.rotateX/Y/Z. Rotates a point in a chosen center point
  • love3D.func.checkDistCollision. Checks if two circular objects in 3D space are colliding
  • love3D.func.getAvgZTriangle/Quad. Finds the average Z of a triangle/quad
  • love3D.func.zSortTriangle/Quad. Sorts a triangle/quad by their average Z
  • love3D.func.zSortTriangle2. Sorts a triangle triangle by their minimum Z
  • love3D.func.zSortPoint. Sorts a table of points
  • love3D.checkVersion. Checks the current version of Love3D

Light3D Functions

  • love3D.light.load. Loads Light3D.lua
  • love3D.light.set. Sets all the variables
  • love3D.light.setAmbience. Sets the ambient lighting
  • love3D.light.getLightFactor. Gets the light factor (only used by love3D.light.getNewColor)
  • love3D.light.getNewColor. Gets the new color

Possible uses

  • Spinning cube for menu screens
  • A more accurate Parallax Scrolling

Changelog

  • 0.1.x : Added the perspective function
  • 0.2.0 -> 0.2.8 : Added simple perspective functions and graphics functions
  • 0.2.9 : Optimized code, renamed the perspective function
  • 0.3.0 : Added simple lighting, optimized code
  • 0.3.1 : Added ambient lighting, removed the [[Experimental]] tag
  • 0.3.2 : Added Backface culling, added a second zSort function for the triangle, added support for Beetle Debug, added Preset3D

Screenshots

The Love3D Lighting demo (please note that the color on the demo is gray, not red).

Contributors