Lost Saga IO3D
Blender add-on to import/export various Lost Saga formats. Supported files are skl
/msh
/cms
/ani
Main repository github.com/Trisnox/lost-saga-io3d
-
Installation
Guide on how to install the add-on
-
Tutorial/Guide
Guide on how to operate the add-on
Or if you're looking for an in-depth explanation about certain operator/button
-
SKL/MSH Panel
SKL/MSH Panel
Panel to import skeleton, mesh/collision, or general utility -
MSH Panel
MSH Panel
Panel to operate with meshes, such as exporting mesh/collision, or change shader -
ANI Panel
ANI Panel
Panel to operate with animation, such as importing/exporting animation, skeleton operations, and applying animations
Or other topics
-
Binary Structure
Binary Structure
Post explaining about the binary structure of losa 3d formats -
Sample Files
Sample Files
Project files as well their resource pack made with the add-on -
Events Editor
Events Editor
Simple script to edit events on.ani
files
Features
- Import/Export various formats, such as: skeleton (
.skl
), mesh (.msh
), mesh collision (.cms
), animation (.ani
). Result is almost similar when compared in-game and vice versa - Blender skeleton integration, such as: rename losa bones to blender and vice versa, various skeleton import mode (lite, advanced, retarget), operator to help with animating, and many more
- Many operators to operate with meshes as well the ability to export them, such as: export material, calculate bounding box, preview mesh split, split mesh based off threshold, shader to imitate Lost Saga (toon shader and various skin tones), and many more
- Animation entries table. This table can be used to re-use animation that has been previously imported without the need to re-import the animation again, this table also automatically calculate keyframe count based on scene fps
Note
Lost Saga measure their unit in meters, while blender measure them in centimeters, this will cause any objects imported to appear 10x larger in Blender. Setup Scene Operator was made to fix this issue in one click
Also worth noting that Lost Saga derives their coordinate system from DirectX, but this script already handle such difference for both import/export
Lost Saga might also uses modified Ogre3D as their renderer
Special Thanks
Thanks to zex (imageliner on Discord) for showing me the correct rotation for Lost Saga skeleton
To-Do
to-do
The current script is just basically proof of concept, it is possible to retarget animation into Lost Saga skeleton, exporting the animation, and then apply it back to Lost Saga skeleton in order to be exported.
However, the current solution, which is creating advanced skeleton, but with origin_correction
set without rotation/scale, and then apply the transformation of all bones, which was hoped so that it preserve the bone direction and coordinate system, somewhat succeed, but the final result is nowhere close (likely because the the source armature had to be modifed to match the target armature).
However, I recently discovered about delta transformation, and I might be able to make use of this.
What I had in mind was creating a text/enum property, which can be accessed through panel. And guess what? We can insert keyframes to properties as well. This make events doable. With enum, I can try to list all possible events (including custom user defined as well), and then the user just simply need to insert keyframe. The script will then read the animation data, which then the animation can export alongside the events. It might only insert event if it comes in pairs in same frame, otherwise they won't append event.
Unfortunately, there is no way to force pair an insert keyframe (as far as I know).
Support
You can contact me through Discord (trisnox) or through my Discord server