Qt based 3D engine with geo-referenced entities
This used to be a very simple 3D engine that could show a 3D terrain and objects. But it has been pushed much further and is now a general purpose engine.
Linux reference build is CMake + Qt6 (shadow builds, like galman):
./scripts/linux/deps.sh # submodules + packages, needs sudo
./scripts/linux/build.sh # --debug or --release
./scripts/linux/run.sh -- run-tests
Binaries land in build-debug/ / build-release/
(quick3dtest/Quick3DTest[d], libs next to them).
The legacy .pro/.pri files are kept for QtCreator users.
Run the local CI (same steps as the GitHub workflow):
./scripts/linux/ci-local.sh
- Global terrain with automatic level of detail. Can be generated from real earth elevation data or procedurally and can be populated with vegetation.
- Geo-referenced objects, with parent-child relationship
- Q3D file format, with a python script to export from Blender
- Scenes are setup in a XML file or at runtime
- Basic animation classes
- Frame rate drops too fast when scene goes up in complexity. Probably too much overhead on object/material setup.
- Tile seams : for now, seams between terrain tiles are visible. Should create small patches on edges to match tiles.
- Z-fighting : should use an adaptive z-buffer depth to avoid this.
- Loading : sometimes tiles simply don't show up.
- Vegetation rendering : vegetation objects (and all alpha containing objects) should be rendered last to avoid alpha problems.
- Vegetation spawning : still some bug in this algorithm.
- Skinning : nothing done yet.
- Frustum : sometimes objects disappear because they are not considered inside the viewing frustum (although we know they are).
- PBR rendering : allow scripting of PBR methods for realistic shading.
- Shaders: there are some artefacts due to bad looping when using perlin noise.