blender_io_export_psx_mesh/README.md

126 lines
5.1 KiB
Markdown

![Pic or it didn't happen](https://wiki.arthus.net/assets/blender-psx.jpg)
# Blender 3dcam PSX engine Level exporter
This Blender plugin is to be used in conjunction with the [3dcam PSX engine](https://github.com/ABelliqueux/3dcam-headers).
It allows exporting a gouraud shaded, UV textured Blender scene to a format compatible with the aforementionned engine.
![3d scene](https://wiki.arthus.net/assets/demo.gif)
## Documentation
[Check the Wiki](https://github.com/ABelliqueux/blender_io_export_psx_mesh/wiki) for in-depth informations.
## Features
**Be warned this is WIP** !
### Plugin
* Export UV textured models
* Export vertex painted models
* Export camera positions for in game use
* Export vertex animations
* Export up to 3 light sources
* Export pre-rendered backgrounds for in-game use (8bpp and 4bpp)
* VRam auto layout for TIMs
* Export sound/music as VAG/XA files
![comparison](https://wiki.arthus.net/assets/rt-8b-4b.gif)
Real-time 3D / 8bpp background / 4bpp background
## Planned
* Fix and improve all the things !
# Install the plugin
**This plugin is not compatible with Blender > 2.79.**
1. Download and install Blender 2.79b.
http://download.blender.org/release/Blender2.79/
2. Clone this repository in the [addons folder](https://docs.blender.org/manual/en/latest/advanced/blender_directory_layout.html) of blender 2.79 :
```bash
git clone https://github.com/ABelliqueux/blender_io_export_psx_mesh.git
```
3. Dependencies
These utilities should be in your [$PATH](https://stackoverflow.com/questions/44272416/how-to-add-a-folder-to-path-environment-variable-in-windows-10-with-screensho#44272417) :
* [pngquant](https://pngquant.org/) : convert image to 4/8bpp palettized pngs
* [ffmpeg](https://ffmpeg.org/) : convert audio to WAV
* [img2tim](https://github.com/Lameguy64/img2tim) : convert image to psx TIM - Win32 pre-built bin : https://github.com/Lameguy64/img2tim#download
* [wav2vag](https://github.com/ColdSauce/psxsdk/blob/master/tools/wav2vag.c) : convert WAV to psx VAG - Win32 pre-built bin : http://psx.arthus.net/tools/wav2vag-win32.zip
* [psxavenc](https://github.com/ABelliqueux/candyk-psx/tree/master/toolsrc/psxavenc) : convert WAV to psx XA - Win32 pre-built bin : http://psx.arthus.net/sdk/candyk-psx-tools.zip
* [xainterleave](https://github.com/ABelliqueux/candyk-psx/tree/master/toolsrc/xainterleave) : interleave psx XA files - Win32 pre-built bin : http://psx.arthus.net/sdk/candyk-psx-tools.zip
Linux users, these utilities are trivial to build using `gcc -o output source.c`.
Only `psxavenc` and `img2tim` are a bit more involved as you should install the ffmpeg and freeimage dev packages from your distro before compiling.
On Debian,
```bash
sudo apt install libavformat-dev libfreeimage-dev
```
should set you up. Arch users, dev files are already on your system as long as the package is installed.
```bash
sudo pacman -S ffmpeg freeimage
```
Building `img2tim` :
```bash
# In img2tim's sources directory :
gcc -o img2tim main.cpp
```
Building `psxavenc` and `xainterleave` :
```bash
# Use the Makefile that's in candyk-psx's sources directory :
make tools
# bins will appear in 'candyk-psx/bin'
```
For users with **Imagemagick** installed, there is an option when exporting to use that instead of pngquant.
4. Enable the add-on in Blender by going to user preferences, Add-ons tab, and enable `Import-Export: PSX TMesh exporter`.
On Linux : `~/.config/blender/2.79/scripts/addons`
On macOS : `./Blender.app/Contents/Resources/2.79/addons`
On Windows : `%USERPROFILE%\AppData\Roaming\Blender Foundation\Blender\2.93\`
# Install the 3D engine
Head over to the [3dcam repo](https://github.com/ABelliqueux/3dcam-headers) and follow the setup instructions there.
# Export your scene !
Open a working copy of your scene, add the needed [flags](https://github.com/ABelliqueux/blender_io_export_psx_mesh/wiki/Flags) and export your level in the `3dcam-headers` folder.
Following [those steps](https://github.com/ABelliqueux/3dcam-headers#compiling), you should now see your scene running on PSX !
# Custom properties helper add-on
## 3dcam-helper
A [small blender addon](https://github.com/ABelliqueux/blender_io_export_psx_mesh/blob/main/3dcam-engine-helper.py) is provided that facilitates setting and copying [flags](https://github.com/ABelliqueux/blender_io_export_psx_mesh/wiki/Flags) between several objects in your scene.
![Setting an object's flags](https://wiki.arthus.net/assets/3dcam-helper-flags.gif)
See [the documentation](https://github.com/ABelliqueux/blender_io_export_psx_mesh/wiki/Flags#3dcam-helper) for usage instruction.
**The script only does the job of creating/updating the object's custom properties, so it is not mandatory to use it.**
# Credits
Based on the [code](https://pastebin.com/suU9DigB) provided by TheDukeOfZill, 04-2014, on http://www.psxdev.net/forum/viewtopic.php?f=64&t=537#p4088
pngquant : [https://github.com/kornelski/pngquant](https://github.com/kornelski/pngquant)
img2tim : [https://github.com/Lameguy64/img2tim](https://github.com/Lameguy64/img2tim)
Freeimage : [https://freeimage.sourceforge.io/](https://freeimage.sourceforge.io/)