RSE-Terrain/README.md

88 lines
3.0 KiB
Markdown

# RogueSquadron Extractor - TERRAIN module
Inspired by the work of **dpethes** (https://github.com/dpethes/rerogue) :clap:
This set of git repos are a compilation of tools coded in C to make RS modding far more than a dream!
The collection consist of few independants modules, each of them deals with specific data like sound, textures, heightmaps, etc...
All modules are independants. This is the **'TERRAIN'** module.
[![Build Status](https://ci.jcsmith.fr/job/JCS-Prod/job/RSE-Terrain/job/master/badge/icon)](https://ci.jcsmith.fr/job/JCS-Prod/job/RSE-Terrain/job/master/)
## TERRAIN MODULE
It's extract terrain datas from Rogue Squadron 3D (PC) game map files (hmp).
This module can do:
- Interpolate 3D model mesh of the terrain,
- Export it as OBJ model file (pretty heavy (~15MB), not to be use direcly for display),
- Export an heightmap-like PNG,
- Multiple inputs files.
## TODO
- Add textures to terrain.
- Adding LOD method to optimize datas manipulation and rendering.
- Discover all last unknowns fields, etc.
### Using
`RSETerrain [options] <hob files...>` or you can simply drag&drop HOB files on it.
A futur main program can extract all HOB files directly from DAT file.
Due to issue with copyrights, I can't provide samples... You need to extract HOB files yourself.
<img src="https://repo.jcsmith.fr/pictures/rse-terrain.gif" width="620" height="400" />
### Options
- -h Print this message
- -v,-vv Activate verbose/debug output mode respectively
- -subdir Export outputs to a sub-directory
- -neg Negative heightmap output
### Dependencies
- obj-lib: as obj file exporter. (https://git.jcsmith.fr/jackcartersmith/obj)
### Compiling
You can compile on both Windows (MinGW) or native Linux system thanks to CMake, you only need to adjust your dependencies on Windows or use Conan packages manager (https://conan.io).
zlib-dev (zlib1g-dev) and libpng16-dev distrib packages can be used on debian/ubuntu.
To compile, just clone (**don't forget git submodules**) and launch cmake:
```shell
cmake .
make
make install
```
On Windows system, I can suggest you to use Conan support to help you with dependencies:
```shell
mkdir build
cd build
conan install .. --build=missing
cmake .. -G "MinGW Makefiles"
make
```
If you want to do it manually without Conan support, you will probably need to specify the dependency flags for CMake. Ex:
`cmake.exe -D"ZLIB_INCLUDE_DIR=zlib/1.2.11/include" -D"ZLIB_LIBRARY=zlib/1.2.11/lib/libzlib.dll.a" -D"PNG_PNG_INCLUDE_DIR=libpng/1.6.37/include" -D"PNG_LIBRARY=libpng/1.6.37/lib/libpng.dll.a" . -G "MinGW Makefiles"`
We can also use cross-compilation (after installing `mingw64` and `cmake` packages on your distrib):
```shell
mkdir build && cd build
cmake -DGNU_HOST=x86_64-w64-mingw32 \
-DCMAKE_TOOLCHAIN_FILE=../cmake/mingw_cross_toolchain.cmake \
-D"ZLIB_INCLUDE_DIR=zlib/1.2.11/include" \
-D"ZLIB_LIBRARY=zlib/1.2.11/lib/libzlib.dll.a" \
-D"PNG_PNG_INCLUDE_DIR=libpng/1.6.37/include" \
-D"PNG_LIBRARY=libpng/1.6.37/lib/libpng.dll.a" \
..
cmake --build .
```