The Batman's Blender OAE v1.33 (Object Animation Importer/Exporter)

Hello, I recently have been obessed with the creation of cutscenes since I learned to use Blender to animate, and I know many developer probably would like to be able to animate objects within blender and have them exported to studio easy, and this is what this blender addon/studio plugin is made for!

My blender OAE, converts keyframe animation to studio exactly how it was in Blender!

@StingyDudeman65 @crossy_blue @rickrolledlololXD2 @Reeezzzeee @Invartment @Awesomepad @CrystalixDoesStuff @sunomura @AySplash @BandaidKidd @ZxCryB @thrashchain @A_SquaredAnimations @SolidTurret

Get the roblox plugin here:

Get the blender addon here:

Quick Demo

Here is a simple racing car mesh object where I have it moving just move forward until about frame 70

And here is that car animation imported in studio!

Setup

So first off your going to want to install the blender addon and roblox plugin, anything above Blender 2.8 should be fine!

Once you have install the blender addon you’ll have this new tab on the side (if you dont see it press N in the viewport)

#1.

After this get your object of choice, make sure it’s just one single object; unfortunately my OAE only supports objects that don’t have additional parts so right now it ony works on objects that are just one single object so that means models aren’t yet supported…!

#2.

Anyways once you have your object make an animation of your choice, since your in Blender it offers alot fo different features to make cool stuff, like object constraints and stuff like that!

#3.

Once your happy with your animation, click the ‘Export Object Animation’ button (make sure you have an object selected or you’ll get an error) and it’ll tell you it copied something to your clipboard, this is the data that’ll tell studio how to ‘compile’ the animation!

#4.

Head over to roblox studio, you should have installed the plugin by now and click on Blender Object Animation., it will come up with a script and you’re going to want to paste what Blender copied to your keyboard!

#5.

Once, you do that it’ll close the script automatically and it’ll put a folder called ‘UntitledObjectAnimation’ in workspace for you, this is the folder that holds the CFrameValues and Vector3Values

image

#6.

I hand-crafted a module exactly for this purpose, you can get it in the same github!

https://github.com/dextermorganfan/Blender-OAE/blob/main/ObjectAnimationModule.rbxm

I strongly suggest you use the module I created for playing the animations

local ObjectAnimation = require(game.ReplicatedStorage.ObjectAnimation)

local racecar = workspace.racingcar

local animation = ObjectAnimation.new(workspace.racecar_anim)

--[[
   Parameters: 

   relativeto : Part -- where the animation where start relative too
   FPS : number -- make sure it matches the one you exported with in Blender
   partToAnimate : MeshPart -- the part that will be animated
   offset : Vector3 -  positiing offset
   flip : CFrame -- Optional
   
]]

local params = {
   relativeto = workspace.SpawnLocation,
   FPS = 60,
   partToAnimate = racecar,
   offset = Vector3.new(0, 0, 0),
}

task.wait(1)
animation:PlayAnimation(params)

So this code basically is setting up a new animation object which takes the folder that the plugin generated for us, and then in order to play it we have to pass paramaeters to it, one thing to note that is sometimes I still have yet to figure out why sometimes theres a mesh that is completely flipped on the Y axis rotation so, the flip allows you too adjust it for the specific animation!

If anyone any questions or needs helps setting it up, then feel free to reply to this post, good luck with your animations!

10 Likes

v1.1

Relative To Itself

The animation module didn’t let you set the part that was being animated to be the relativeTo part but, now you can have the relativeTo part and the partToAnimate be the same and it will work!

Car starts relative to where it was originally!

1 Like

v1.2

Optional Export Scale/Size

The blender addon now gives you an option if you don’t want to export the scale/size of the object your animating, the animation module also has been updated to adapt to this change!

v1.3

Model Support (As a whole)

Before it only supported a singular part whether that be a MeshPart or Part, but now the ObjectAnimation module allows you to pass in a model for the partToAnimate!

(If you want to animate like actually actual characters or something you should use the blender animation exporter for rigs)
This is more useful for models you have that you dont want to rig but want to move or rotate

The best way is too get your model in Blender so you can animate select your model in the explorer and then click export selection
image

Then save it somewhere and then go into blender and import it from where you saved it, if your planning on making it relative to itself then you should probably put the model at the origin of the world, if ur making it relative to something else then you can play around with where you want it

Also keep in mind you have to have the PrimaryPart of the model set if your planning to make it relative to itself, so you’d just pass in the models primaryPart

Code Snippet

local ObjectAnimation = require(game.ReplicatedStorage.ObjectAnimation)

local noob : Model = workspace.noob

local noob_anim = ObjectAnimation.new(workspace.noob_anim)

local params = 
   {
   -- relative to itself
   relativeTo = noob.PrimaryPart ,
   FPS = 60,
   partToAnimate = noob,
   offset = Vector3.new(0, 0, 0),
}

task.wait(1)
noob_anim:PlayAnimation(params)

I can’t wait to see how this plugin evolves honestly, hopefully it becomes a tool to help devs make fully animated cutscenes.

Man I just hate how we don’t have proper tools to create fully animated cutscenes in Roblox, We have tools like moon animator that let us animate almost anything yet you cant play said sequences in game for some stupid reason, We have that new data animation plugin but it doesn’t support camera animations.

1 Like

Thanks so man means, alot I actually have created a camera addon aswell but it just has yet to be released though!

If stuff like this is accessible to everyone imagine the creations people can make

v.1.31

Bug Fixes

There was bug where if your importing and your frame number was less then 1 it would error, but I resolved it by getting the last frame, this is for the scale check if the animation data had scale, plugin has been updated to adjust to this change

Flipping Issue :white_check_mark:

Alright, so there as this annoying issue where when you imported an animation and it looks looked like it worked in blender, but when imported in studio it would be totally flipped some things would work others wouldn’t it was driving me crazy, but I figured out why this was happening

In the Object Animation Module, I had a flip parameter that would correct this all you had to do was just pass math.pi through the Y axis using CFrame.Angles and your welcome to still do that if you don’t wanna do the new method!

So open up Blender and the first thing your going to want to do is get a camera object into your scene!

It can be in any lcoation but just remove all the rotation on every axis

After this import the model you want to animate, in my case it’s this PSX styled car! I’ve already fixed the issue on this one, but same things will applly!

You’re going to want to remove all the rotation on every axis once again this time for your model, after this go into edit mode and rotate it until the where its facing is the same as the camera and also where the top of it is

After this you can get out of edit mode and orient your model anyway you want and when you finish your animation and export to studio, it’ll be perfect!

Code Snippet for this particulary animation (no flip parameter)

local ObjectAnimation = require(game.ReplicatedStorage.ObjectAnimation)

local car = workspace.Car

local animation2 = ObjectAnimation.new(workspace.car_anim)

animation2:PlayAnimation({
   relativeTo = car,
   FPS = 60,
   partToAnimate = car,
   offset = Vector3.new(0, 0, 0),
})

If you have any questions feel free to leave them in the replies!

1 Like

why was i pinged i don’t use blender lol

2 Likes

You should consider switching, Blender is much better for animating and worth the learning curve!

I’m confused as to why I was pinged in the first place lol

2 Likes

i mean moon animator isn’t that bad. i don’t really plan on switching.

I use blender and moon animator, sometimes switching depending on what my mood is. But pretty cool thing you’ve made, I’ll check it out when I have the time to.

2 Likes

that’s a neat thing you made though. i hope roblox animators that use blender find out about it.
next time ping people you know that would want this though.

2 Likes

same here, I use moon lol
nevertheless,
Pretty cool plugin! Although I don’t use blender as of now, when I eventually switch im sure this would come in handy.

1 Like

What I’m still wondering is out of all the people on this platform, why specifically we were pinged? Like was it just random or was it because of something else?

2 Likes

true, I mean I’m not some big name animator lol I’m just some dude who dabbles in a bit of moon here and there, and I’m sure most of the other people pinged are similar. Kinda want to know why and how he selected us in particular :sob:

3 Likes

I basically was just trying to get the animator tag and then I stumbled up a feature where you can see every person in that group so I sorted by recently active and choose some people :grin::saluting_face: :brain::exploding_head:

@Awesomepad @Reeezzzeee @crossy_blue

3 Likes

I see, makes sense, thanks for clarifying
for some reason I thought you just went “eenie meenie miney mo” on the animators tab and picked at random lol

3 Likes

makes sense thanks for letting us know

1 Like

This is great! I really wanted something like this as I am going to start making such cutscenes! Thank you Bruce Way- I mean batman.

1 Like