Skip to content

ChrisFloofyKitsune/s3o-blender-tools

Repository files navigation

S3O Kit

Small collection of tools for authoring/editing Spring/Recoil .s3o 3D model files in Blender. The tools are currently designed around making models for Beyond All Reason- though it should work for other games.

Credits

A big thanks to Beherith who's code I based this off of and ported into Blender. Equally big thanks to the Beyond All Reason community for making awesome models- making me see the need make this. (The tools available before this were really bad okay) S3O Kit logo by ZephyrSkies SpringModelingTemplate.blend by Tharsis aka "TremorEnjoyer"

Install instructions

  1. Go over to the Releases page and download the latest .zip file.
  2. Make sure you are on Blender 4.1 or later. https://www.blender.org/download/
  3. You will also want to download the models (and source code and stuff) from the Beyond All Reason GitHub repo
    • Or for whatever game you are making models for...
  4. In the top left toolbar, open the "Edit" menu and click "Preferences"
  5. Inside the Preferences window, go the "Add-ons" tab, then click Install
  1. This will open a File Menu. Go to where you downloaded the s3o Tools zip file and then click "Install Add-on"
  2. After that, the Add-ons tab will change to show the newly installed addon with a grayed out label reading "Import-Export: Spring 3D Object (*.s3o) Tools".
    • Click the checkbox on the side of the label to enable s3o Tools. Now you can close the Preferences window.
  3. In the 3D Viewport, there should be a new "S3O" tab on the right sidebar.
    • If you do not see it, hover your mouse over the 3D View and hit "N" on your keyboard to open up the sidebar (or click the tiny little arrow in the top right of the 3D view).

Using S3O Kit

Inside the S3O Tab there are a couple of menus.

Menus

!! Read the Tooltips !!

Hover over each and every option to get a description of what it does.

S3O Kit Menu

The S3O Tools menu has the general tools for use in editing/creating models.

Ambient Occlusion

The Ambient Occlusion menu is used for baking Ambient Occlusion (AO)- either into the model's vertices or into a baseplate image (for buildings).

Import / Export

Importing

If you are importing from the Beyond All Reason files, the textures should be loaded and the Blender Materials set up automatically. If not, you can click on the Import Textures button and select the folder in which the textures can be found.

Exporting

Two big things to note right off:

  1. You must have a S3O Root in the scene to be able to export the model.
  2. All rotations and scaling are be baked into the mesh data on export!

The model will be also triangulated on export so you probably want to keep a .blend file backup for those nice quads and fancy n-gons.

S3O Objects

Placeholders

The placeholder empties that visually display the properties of these special objects can be directly edited and changes will be applied to the setting in the S3O objects.

Details are in the entries for each object type.

S3O Root

s3o models are represented in Blender using a "S3O Root" object that sorts properties such as height, collision radius, texture paths

Properties

  • Name: name of the model. Automatically set on Import and used to name the Export files.
  • Collision Radius, Height, Midpoint: These are important use in game. (Linky to docs explaining these soon)
  • Color Texture / Other Texture: The name of the textures the model uses. These are used in game and by s3o Tools to locate the texture atlases for the model.
    • Examples: "arm_color.dds"/"arm_other.dds", "cor_color.dds"/"cor_other.dds", "leg_color.dds"/"leg_shader.dds"

Placeholders

  • The position of the Root object is represented by a set of XYZ axes.
    • Note that the Y axis is pointing up and the Z axis is pointing forwards. These represent what the directions will be once the model is exported
  • The Midpoint + Collsion Radius are represented by a sphere
  • Height parameter is represented by a circle.

Aim Point

Emit/Aim/Flare Points are represented by a "S3O Aim Point" object Usually these are left pointing straight forwards since the model and any guns face forwards.

Properties

  • Aim Position/Direction: These control where effects, bullets, smoke, etc spawn and what direction they are to initially move in.
  • Align Direction to Rotation: [s3o Tools only] Toggle this to make the Aim Direction follow the Aim Point's rotation in Blender

Placeholders

  • The location of the Aim Point object is a small sphere.
  • The Emit Direction and Position are represented by an Arrow.

Ambient Occlusion

Baked Ambient Occlusion data is properly extracted and is imported into a Color Attribute called "ambient_occlusion", allowing direct editing of the AO data via the Vertex Paint tools.

Check out the tooltips for descriptions on what each button and option in the menu does.

image

Change Log

  • v0.1.0: Initial Release
  • v0.1.1: Add the "Add Mesh as Child" and "S3Oify Object Hiearchy" buttons.
  • v0.2.0: Full Ambient Occlusion baking toolset, check tooltips for info. Should have all the AO-related functionality that OBJ2S3O did... save for batch baking.
  • v0.2.1: AO baking plates are centered under the model. Fix errors on model import/export.
  • v0.2.2: Ensure 'ambient_occlusion' attribute exists before baking to it. Tweak AO settings min/max. Improved building groundplate AO edge smoothing.
  • v0.2.3 Changes:
    • Add new "Min Distance" feature to the Vertex AO baking. It attempts to remove black spots caused by things such as intersecting faces and smooths out the end result.
    • Add Apply Rotation/Scale/Modifiers options to the S3Oify Object Hierarchy tool.
  • v0.2.4 Changes: Improve AO baking result a bit more by making a copy of the mesh and splitting it across the sharp edges before baking-- then saving results to the original mesh.
  • v0.2.5 Changes: Fix incorrect determination of sharp edges on s3o import.
  • v0.2.6 Changes:
    • Fix error in refresh_s3o_props where it tried to access random custom properties added by other scripts.
    • Treat objects with missing AO data as "full bright"
    • Automatically detect and fix broken Materials/Shader Nodes.
    • Import Color texture properly with Alpha mode set to NONE
    • Version now shown in addon UI
  • v0.3.0 Changes:
    • Rename addon to "S3O Kit"
    • Add logo icon by ZephyrSkies around the UI
    • Improve AO baking by disabling the material on the copied mesh before baking
    • Redo how Materials/Textures are loaded, now using SpringModelingTemplate.blend by Tharsis