# 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

Category:

- Libraries