G3D 开源项目使用教程
1. 项目的目录结构及介绍
G3D 项目的目录结构如下:
G3D/
├── assets/
│ ├── earth.png
│ ├── moon.png
│ ├── sphere.obj
│ ├── starfield.png
├── docs/
├── examples/
├── src/
├── tests/
├── .gitignore
├── LICENSE
├── README.md
├── conf.lua
├── main.lua
目录介绍
assets/
: 包含项目所需的所有资源文件,如纹理图片和模型文件。docs/
: 包含项目的文档文件。examples/
: 包含项目的示例代码。src/
: 包含项目的源代码。tests/
: 包含项目的测试代码。.gitignore
: Git 忽略文件列表。LICENSE
: 项目的许可证文件。README.md
: 项目的说明文档。conf.lua
: 项目的配置文件。main.lua
: 项目的启动文件。
2. 项目的启动文件介绍
项目的启动文件是 main.lua
,其主要功能是初始化 G3D 引擎并加载模型和资源。以下是 main.lua
的示例代码:
-- written by groverburger 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
主要功能
- 初始化 G3D 引擎。
- 加载地球和月球的模型和纹理。
- 处理鼠标移动和键盘输入。
- 更新模型位置和旋转。
- 绘制模型。
3. 项目的配置文件介绍
项目的配置文件是 conf.lua
,其主要功能是设置项目的运行参数。以下是 conf.lua
的示例代码:
function love.conf(t)
t.window.title = "G3D Demo"
t.window.width = 800
t.window.height = 600
t.window.vsync = true
t.modules.physics = false
end
主要配置项
t.window.title
: 设置窗口标题。t.window.width
: 设置窗口宽度。t.window.height
: 设置窗口高度。t.window.vsync
: 启用垂直同步。t.modules.physics
: 禁用物理模块。
以上是 G3D 开源项目的使用教程,包含了项目的目录结构、启动文件和配置文件的介绍。希望这些内容能帮助你更好地理解和使用 G3D 项目。