Lua Modules

Extending Qt 3D Studio

The Qt 3D Studio Runtime can easily be integrated with existing hardware and software by means of modules. Modules are a standard feature of the Lua language that allow new C bindings to be added with a DLL or shared library.

The diagram above shows multiple Lua Modules extending the capabilities of the Runtime scripting to allow access to low level calls controlling hardware such as music, navigation, and general CAN Bus communication.

Binding Code to Lua

Lua Bindings are a well-documented topic online. A nice reference for implementation can be found on the Lua wiki. Additionally, a simple sample of a CAN module that works with CarConnection behavior is provided with your installation of Qt 3D Studio at INSTALL_DIRECTORY/Runtime/Plugins/Bindings/CAN/....

To call functions in your module, place the .dll (Windows) or .so (Linux/Android) directly next to the Qt 3D Studio Viewer executable. At the top of a script where you would like to call your custom bindings, use the Lua require function.

-- Load the CAN module and output any errors in the process

The use of require() will produce helpful error strings if the module cannot be found. Once the system is in place, however it is often preferable to control the resulting errors. For this, you can use the built-in Lua function pcall():

-- Instead, one can use pcall to hide errors and control the program flow
if not pcall( require, "CAN" ) then
   output( "Could not locate CAN module." )

-- Call a function in our Lua binding
if CAN then
   self.catalog = CAN.getCatalog()

Available under certain Qt licenses.
Find out more.