A Blender 2.7+ plugin that exports sausage link characters with animations

Overview

Sausage64

Sausage64 is a plugin for Blender 2.7 onwards, which allows you to export "sausage link" style character models with animations.

The plugin exports the data as an easily parsable text file. This file should be simple to convert to other formats, more suitable for your target platform.

The plugin's code is documented, and contains a ton of helper classes that store the information before exporting. This should allow you to modify the script to instead output the data in a format you want, as opposed to an intermediary format like s64.

This repository contains three folders:

  • Plugin - The Blender plugin itself. Installation instructions provided in a further section of this README.
  • Sample Model - An example character model with animations, with the source files available alongside the .s64 file exported by the plugin. The Blender file is for 2.7 but can be opened on newer versions, at the expense of the materials looking different.
  • Sample ROM - An example N64 ROM displaying the character and the animations in action. The .s64 file and the textures were converted to display lists and other parsable data with a custom tool (which is currently not in this repository). More information available in the folder's README.

What do you mean by Sausage Links?

Sausage link characters are made out of different unconnected segments.

Photo taken from: https://bradh2002.wordpress.com/a2-task-3-video-game-history/

This method of character design was highly popular in the N64 and PS1 era, where animating vertex skinned characters was considered a very heavy operation. Instead, these models leverage the fact that each segment can easily be transformed via a matrix.

Installation

  1. Grab the python file that is inside the Plugin folder.
  2. Open Blender, and go to your user preferences.
  3. Go to the addons tab, and select Install... or Install from File button (the name depends on your version of Blender).
  4. Find the python script in the file browser and open it.
  5. The script Sausage64 Character Export should appear. Tick the checkbox to enable it.
  6. If you are on Blender 2.8 onwards, you're all set! If you are on an earlier version of Blender, you will get a warning that the script is for a newer version of Blender. You can safely ignore this warning. Don't forget to press the Save User Preferences button.

S64 file format, Usage Instructions, FAQ, and More

For more information, please check the wiki.

Comments
  • Improvements to libdragon sample ROM

    Improvements to libdragon sample ROM

    This contains several improvements to the libdragon sample ROM:

    • Enable double buffering
    • Fix the sheathed throwing knife by enabling mirrored repeat and alpha testing
    • Fix the lighting by changing to a directional light
    • Remove occurences of glEnable(GL_TEXTURE) (not a legal argument to glEnable)
    • Remove some redundant code that doesn't do anything
    opened by snacchus 1
  • Remove assertion regarding empty vertex groups

    Remove assertion regarding empty vertex groups

    It's unnecessary. Just assume the vertex group is zero and print a warning if needed (instead of stopping with an error).

    If fixed, remember to update the wiki.

    Bug Implemented Plugin 
    opened by buu342 1
  • Non animated models get

    Non animated models get "None" appended to their name.

    If you try exporting a model without bones, that model will be exported with the name "None" appended to it. This would make sense if there's bone groups, but for models without any it's kinda unecessary.

    Bug Implemented Parser 
    opened by buu342 1
  • Fix frame not being int on blender 2.93.5

    Fix frame not being int on blender 2.93.5

    Blender 2.93.5 complains that frame value is a float and not an int when calling bpy.context.scene.frame_set, this pull request explicitly converts the frame variable to an int.

    opened by Hazematman 1
  • Look into fixing the merging bug in the plugin

    Look into fixing the merging bug in the plugin

    I remember there was some weird behavior that would cause multiple separate objects that share bones to not get exported. Probably should look into it.

    If fixed, update the wiki.

    Bug Implemented Plugin 
    opened by buu342 1
  • Allow for modifying animation playback (speed up, reverse, etc...)

    Allow for modifying animation playback (speed up, reverse, etc...)

    See title. Best way to tackle this is to change the animation tick system to floats, and to set the amount to increment by as an argument to the update function (leaving the actual timing for the user to deal with). Remember to update the wiki if you do this.

    Enhancement Implemented N64 Library 
    opened by buu342 1
  • Switch Euler angles to Quaternions

    Switch Euler angles to Quaternions

    Reduces the amount of generated instructions and improves animation glitchiness due to gimbal locking/angle rollover at the expense of a lossy conversion (since quaternions don't preserve angle rollover).

    If changed, update the wiki.

    Enhancement Implemented Parser Plugin N64 Library 
    opened by buu342 1
  • Add annotation data for Blender 2.9.3

    Add annotation data for Blender 2.9.3

    In blender 2.9.3 some of the bpy properties are expected to use the new annotation syntax, this syntax doesn't work with older versions of blender. In order maintain compatibility with older versions of blender we hack the needed values into the annotation table.

    opened by Hazematman 1
  • libdragon example: improve depth precision

    libdragon example: improve depth precision

    With the upcoming RSP implementation of the OpenGL pipeline, depth precision becomes a bigger issue due to fixed point calculations. This improves the depth precision by moving the near plane further forward. See also this article for some (partially applicable) advice on depth precision https://www.khronos.org/opengl/wiki/Depth_Buffer_Precision

    opened by snacchus 0
  • Blender S64 importing plugin

    Blender S64 importing plugin

    Hello! Firstly, thank you for the spectacular work on this modeling ecosystem :)

    I was wondering if you had any plans to write a Blender plugin to import S64 files?

    I'm working on modding tools for the N64 release of Glover and the S64 format is perfectly suited to its actor data, but as-is I'm not sure if any modeling tools can read the format and it would be nice to have symmetry between the asset import and export workflows.

    opened by naclomi 1
  • Add support for billboard bones/LookAt

    Add support for billboard bones/LookAt

    Because I really hate myself, lets suffer some more.

    Probably something like this, which is called in the predraw function per mesh: sausage64_lookat(eyex, eyey, eyez, pointx, pointy, pointz, amount); Assume default Blender up vector. Amount is a number from 0 to 1 that specifies how much to override the rotation.

    Bones should be markable as billboard in Blender via custom properties

    Enhancement Parser Plugin N64 Library 
    opened by buu342 2
Releases(v1.3)
Owner
Buu342
I make Garry's Mod complain about Lua errors, Doom forcefully terminate my runaway scripts, my N64 lockup, and my laptop's stack overflow.
Buu342
Create VCV Rack modules from gen~ exports

gen-rack Export gen~ patches to VCV Rack modules. How to use First, you'll want to grab a copy of this repository (clone/download/etc). Then take a lo

Isabel 77 Nov 5, 2022
DLL Exports Extraction BOF with optional NTFS transactions.

DLL Exports Extraction BOF What is this? This is a Cobalt Strike BOF file, meant to use two or three arguments (path to DLL, and/or a third argument [

null 56 Nov 9, 2022
Comparing data of module exports from disk and memory, then caching any differences.

Inline-PatchFinder Need to see if the process you're reversing/analyzing is patching/hooking any loaded module's exports? Well, look no further. Inlin

null 14 Oct 15, 2022
Creates 3D lithophanes from image files, exports them to stl files, ready for slicing and 3D printing.

LithoMaker Creates 3D lithophanes from PNG image files and exports them to STL files, ready for slicing and 3D printing. Download the latest release h

Lars Muldjord 20 Nov 27, 2022
Blender addon for AutoRemesher by huxingyi

AutoRemesher Blender 2.8 Blender addon implementation of AutoRemesher by huxingyi. This implementation works on Windows 10 and Ubuntu. Install the add

null 74 Nov 29, 2022
Windows 7 support for Blender 3.0

BlenderCompat Windows 7 support for Blender 3.0 Description This repository contains a compatibility DLL for running Blender 3.0 on Windows 7 and a pa

Alexandru Naiman 157 Nov 24, 2022
A blender import/export system for Defold

defold-blender-export A blender import/export system for Defold Setup Notes There are no exhaustive documents for this tool yet. Its just not complete

David Lannan 26 Nov 30, 2022
Blender is the free and open source 3D creation suite

Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender 7.2k Nov 30, 2022
A Blender script to procedurally generate 3D spaceships

Spaceship Generator A Blender script to procedurally generate 3D spaceships from a random seed. Usage Install Blender 2.80 or greater: http://blender.

Michael Davies 7.3k Nov 28, 2022
The FLIP Fluids addon is a tool that helps you set up, run, and render high quality liquid fluid effects all within Blender, the free and open source 3D creation suite.

FLIP Fluids The FLIP Fluids addon is a tool that helps you set up, run, and render liquid simulation effects. Our custom built fluid engine is based a

Ryan Guy 1.4k Nov 29, 2022
Play video by fonts in a console window by composing characters

FontVideo Play video by fonts in a console window by composing characters. Using FFmpeg API to decode the input file, then the video stream is rendere

0xaa55 9 Jul 16, 2022
Simdutf - Unicode routines (UTF8, UTF16): billions of characters per second.

simdutf: Unicode validation and transcoding at billions of characters per second Most modern software relies on the Unicode standard. In memory, Unico

simdutf: Unicode at gigabytes per second 493 Nov 29, 2022
libleftpad is a useful C++ library which prepends characters to strings

libleftpad libleftpad is a useful C++ library which prepends characters to strings. It is very definitely a serious project. Usage: #include <libleftp

Tristan Brindle 3 Feb 4, 2022
libleftpad is a useful C++ library which prepends characters to strings

libleftpad is a useful C++ library which prepends characters to strings

Tristan Brindle 3 Feb 4, 2022
The Express LRS Handset project is first and foremost an experimental test bed for pushing the envelope with what can be done with the ELRS radio link

The Express LRS Handset project is first and foremost an experimental test bed for pushing the envelope with what can be done with the ELRS radio link

ExpressLRS 24 Oct 19, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Liugw 71 Oct 14, 2021
null 3 Jan 19, 2022
Link your MIDI keyboard to ACE Virtual Singer

ACED Link your MIDI keyboard to ACE Virtual Singer Running Clone this project and change the forms in the beginning of ACED.cpp to apply your own sett

null 3 Oct 13, 2021
(C++) Integrity dynamic link library made in C++ that you can export to C#

C-Integrity-Library ✔ (C++) Integrity dynamic link library made in C++ that can export to C# C# Exports [DllImport("Exports.dll")] public static exter

null 1 Jan 20, 2022