Resource icon

3D stinger transition 0.3.1

Supported Bit Versions
  1. 64-bit
Source Code URL
https://github.com/ElDonad/3D-stinger-transition
Minimum OBS Studio Version
25.0.0
Supported Platforms
  1. Windows
  2. Linux
A little experimental plugin aimed at generating 3D transitions.Currently creating custom transitions through a JSON configuration object is working, although the plugin is a bit quirky, it will definitively be improved in the future ! (also this is my first OBS related project, so lot of stuff to learn and overcome...)

How to use :
  • Install the plugin from the github release page
  • Create your own transition video using the provided blender file as a starting point for camera placement and FOV (you will need to create a video with transparency. The common method is to use ffmpeg with the command
    Code:
    ffmpeg -i %04d.png out.webm
    , although for perfomance reasons I prefer to use the .mov format along with the qtrle encoder, you might want to experiment on that)
  • Create the descriptor file for the transition. You will need the provided blender addon.
    • Download the file
      Code:
      addon.py
      from the release page
    • In Blender go to Edit > Preferences > Add-ons, hit the Install button and provide the downloaded file.
    • Now select the object to be tracked in OBS, and go to Object > Export transform to OBS (also under F3). Specify the subframe resolution and the swap frame on the right, enter a valid filename (ex : data.json), and hit Export. Now you should have a json file ready to import in OBS !
  • Create the transition in obs :
    • Set the video file path in the transition's properties
    • Import the json file describing the transition created in blender
    • Tune the delay between the video and the transition in the transition's properties
Creating the JSON code (optional):
Since there is a blender addon doing it for you, you should not need to create the JSON descriptor file by hand. If for some reason you intend to do it anyways, do know that there is two description methods available to you : describing the movement as a stack of transforms, or providing interpolation data.

To create your custom transition, you need to write a JSON file that follows this template :

FOR A TRANSFORM-STACK TYPE DESCRIPTION :
JSON:
{
    "swap_time": 0.5,
    "data_type": "transform",
    data: {
        "transforms": [
            {
                "begin_frame": 0.5,
                "end_frame": 0.7,
                "easing": "sinusoidal | linear | constant",
                "transformation": "scale | translation | rotation",
                "params": {
                    "x": 1.0,
                    "y": 0.1,
                    "z": 1.0,
                    "w(optional)": 1.0
                }
            }
        ]
    }
}

FOR A TRANSFORM-STACK TYPE DESCRIPTION, SEE THE EXAMPLE ON THE GITHUB REPO.
(note: rotations are to be provided as a quaternion in this mode, since it's what blender can output.)

  • The time always goes from 0 to 1, and is scaled on the set timing of the transition.
  • "swap_time" is the moment in time when the target scene will replace the old scene on the display
  • "transforms" is an array of transforms the transition needs to apply to the scene's image. They are run from top to bottom.
  • Easing determines how the transformation flows from start to end. The default in blender is "sinusoidal", if my memories serves me right. You should probably double check that. The algorithms are meant to reflect what is available by default in blender.
  • In the transformation params, "w" is used only for rotation, and represents the angle of rotation, while the other axis represent the axis of rotation. Otherwise, the "x", "y" and "z" are the same as in blender.
  • To convert from blender distances to the JSON file's distances, you need to take the distance in meters in blender, and divide it by 10.
  • Angles are to be inputted in radians, for now. Might change that in the future.


Current quirks :
  • On some less powerful devices, the video and the scene transition might get a bit out of sync. This can be tuned in the parameters of the source, with a default value meaning that the transition will start 20ms after the video begins. You might want to tune that to your liking.
TODO :
  • Add the ability to display simultaneously the two sources
  • Refactor the effect files, which are currently terrible
  • Allow the user to set its own effect files
  • Directly probe the video's current timing to ensure better sync with the scene's position
DEMO :

The corresponding JSON file for this transition can be found here.

NOTES :
  • I've set OBS 25 as the minimum version arbitrarly, essentially. The plugin will probably work in older versions as well, I just couldn't be bothered to check every version downward, so this will stay until I find a better way to check.
  • Feel free to criticize my bad code practices, poor English mastery or terrible usability of this add-on, I'm quite new to all of the above and would be happy to oblige.
Author
ElDonad
Downloads
4,557
Views
24,418
First release
Last update
Rating
0.00 star(s) 0 ratings

Latest updates

  1. First release candidate !

    First release candidate Lots of changes since the last release, beginning with the addition of...
  2. Custom JSON microcode

    The transformation can now be controlled via inputting a JSON formatted text that describes the...
Top