Lua Virtual Reality Engine
Go to file
bjorn fbcee9ac9c rm lovrTextureGetId; 2019-01-04 18:01:01 -08:00
deps Allow the mountpoint to be set "inside" a zip file, using an --inside parameter. 2018-11-13 15:20:04 -05:00
src rm lovrTextureGetId; 2019-01-04 18:01:01 -08:00
.appveyor.yml appveyor: Only build on master; 2018-11-19 08:23:43 -08:00
.editorconfig Add .editorconfig 2017-09-18 18:22:37 -07:00
.gitignore rm build folder again; 2018-11-08 12:58:47 -08:00
.gitmodules Allow the mountpoint to be set "inside" a zip file, using an --inside parameter. 2018-11-13 15:20:04 -05:00
.travis.yml .travis; 2018-05-27 19:05:10 -07:00
CMakeLists.txt rm Transform; 2018-12-02 12:08:07 -08:00
CONTRIBUTING.md Update CONTRIBUTING; 2018-11-07 22:49:03 -08:00
LICENSE Update LICENSE; 2018-11-07 22:45:53 -08:00
README.md rm build folder again; 2018-11-08 12:58:47 -08:00

README.md

A simple Lua framework for rapidly building VR experiences.

Inspired by LÖVE, a 2D game framework.

Build status Version Slack

Website | Documentation | FAQ

Features

  • Cross-Platform - Runs on Windows, Mac, Linux, Android, and even on the web using WebAssembly and WebVR.
  • Cross-Device - Supports HTC Vive, Oculus Touch, Oculus Go, and Windows MR. There's also a keyboard/mouse VR simulator.
  • Beginner-friendly - Simple VR scenes can be created in just a few lines of Lua.
  • Fast - Writen in C99 and scripted with LuaJIT, includes optimized single-pass stereo rendering.
  • Asset Import - Supports 3D models (glTF, FBX, OBJ), skeletal animation, HDR textures, cubemaps, fonts, etc.
  • Spatialized Audio - Audio is automatically spatialized using HRTFs.
  • 3D Rigid Body Physics - Including 4 collider shapes and 4 joint types.
  • Compute Shaders - For high performance GPU tasks, like particles.
  • Multiplayer - Includes enet for multi-user VR experiences.
  • Umlauts - !!!

Getting Started

It's really easy to get started making things with LÖVR! Grab a copy of the executable from https://lovr.org/download, then write a main.lua script and drag its parent folder onto the executable. Here are some example projects to try:

Hello World

function lovr.draw()
  lovr.graphics.print('Hello World!', 0, 1.7, -3, .5)
end

Spinning Cube

function lovr.draw()
  lovr.graphics.cube('line', 0, 1.7, -1, .5, lovr.timer.getTime())
end

Hand Tracking

function lovr.draw()
  controllers = lovr.headset.getControllers()

  for _, controller in ipairs(controllers) do
    x, y, z = controller:getPosition()
    lovr.graphics.sphere(x, y, z, .1)
  end
end

3D Models

function lovr.load()
  model = lovr.graphics.newModel('teapot.fbx', 'teapot.png')
end

function lovr.draw()
  local x, y, z = 0, 0, 0
  model:draw(x, y, z)
end

You can also find lots of other WebVR examples on the docs page.

Building

Here's how to compile LÖVR using CMake:

mkdir build
cd build
cmake ..
cmake --build .

For more help, see the Compiling Guide.

Resources

Contributors

License

MIT, see LICENSE for details.