126 lines
5.1 KiB
Markdown
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/)
|