A Python library to handle the 3D data format XBF of the Xanadu engine, used in the game Emperor: Battle for Dune.
It may be used to load and save all 1521 XBF files from the game.
The library can be installed with pip:
pip install xanlib
The following commands entered into a python console will edit the sidebar to move it to the left:
from xanlib import load_xbf, save_xbf
scene = load_xbf('Data/UI0001/SIDEBAR/SIDEBAR1.XBF')
scene['~~0hide#'].transform = tuple(v - 100 if i == 12 else v for i, v in enumerate(scene['~~0hide#'].transform))
save_xbf(scene, 'Output/SIDEBAR1.XBF')
Explanation:
- Import the load and save functions
- Load the sidebar file
- Subtract 100 from the x-coordinate of the translation component of the transformation matrix. It is a flat tuple in column-major order, thus need to modify the element at index 12. Because it is a tuple, it has to be entirely replaced.
- Save to a new file.
Put the new file in a UI/SIDEBAR folder in the game's DATA folder to override the original and view the change in-game.
A script that can be run within Blender to import the meshes of a XBF file.
A script that extracts animation info from the FX Data Header of an xbf file,
provided as a command line argument.
Currently stand-alone, the code has yet to be integrated into the library.
Example usage:
python extract_anim_info.py Data/3DDATA0001/Buildings/AT_MGT_H0.xbf
will produce:
Stationary: 104-133, 0-50, 51-104, 133-163, 163-193
Idle 0: 200-240
Fire 0: 193-275
A rudimentary vertex animation viewer made with pygame
. It highlights the normals in these animations.
(A more functional viewer is under development)