How to go about animating an object that changes shape?

  • What are you attempting to achieve? (Keep it simple and clear)
    I’m trying to make an animation whether it be in Studio or Blender that allows me to change and deform an object’s shape and fine-tune its geometry.

  • What is the issue? (Keep it simple and clear - Include screenshots/videos/GIFs if possible)
    I’m not trying to anything like character animations at all where its rigged with bones in which you can bend in different ways but must maintain its volume.

  • What solutions have you tried so far? (Have you searched for solutions through the Roblox Wiki yet?)
    I have searched through the devforum, YouTube, and Google in general but they all work with character-esque models that contain bones and can bend and rotate, etc. However, I’m only trying to mimic the following animation (made in Blender using shape keys):

How do I go about doing this? Thanks.


Can’t you just change scale in the animation itself? That can mimic a shape change, unless you’re trying to go from like a square to a circle

1 Like

The best way to achieve this is by using the TweenService.

What I did

  • I first made a duplicate of the part/mesh then resized and reshaped it to the desired look.
  • I set CanCollide to false and Transparency to 1 for the duplicate part then aligned the 2 parts together.
  • Next I inserted a script to the original part and typed the following code
local TweenService = game:GetService("TweenService")

local sail = script.Parent -- the part to be animated
local closedSail = script.Parent.closedSail -- the desired form
-- closedSail is the duplicated part

local tweenInfo =, Enum.EasingStyle.Quart, Enum.EasingDirection.In, math.huge)
-- Create the tween that will change the Sail part's Size and CFrame to the closedSail part's Size and CFrame
local tweenPart = TweenService:Create(sail, tweenInfo, {Size = closedSail.Size, CFrame = closedSail.CFrame})
-- Play the animation

It is quite a cumbersome process as you might need to fiddle around a lot to get what you desire.

This only works if you’re trying to keep the mesh symmetrical since it uses scale and might deform specific parts (vertices, edges) of the mesh you’re trying to keep at a certain spot. This doesn’t work with the frontmost sail of the boat in the video for example, if I were to simply Tween scale it on the y-axis, the top edge of the sail would rotate which I wouldn’t want it to. So I’m looking for a solution that allows me to fine-tune the mesh just beyond “scale”, I guess an alternative very close to using shape keys in Blender.

The method works if you are able to scale the mesh to the shape you desire(This is somewhat similar to shape keys, but instead of editing the vertices and edges directly, it involves scaling the mesh).
It is quite possible to scale an irregular objects the same way as regular/symmetrical ones. But, I do understand that not everything can be scaled to the exact shape and size desired and that the scale tool might not align well with the mesh, but I think that for your case it is possible to achieve a similar result as to what you did in Blender using the TweenService and probably a few work arounds.
If you do not mind, you could share the model and I could try look into how this can be done.

Here’s a different video that outlines the same concept but made easier to understand (and replicate in Blender) by using only a triangle:

As you can see, the triangle is completely flat on the vertical plane. And the animation consists of moving the bottom vertex (point) left and right horizontally, which causes the plane overall to have a variable surface area or “change shape”.

So my question is the same. How do I go about doing something like this? The reason I’m using a different example is because if I figure out a way to do something like in this video, then that would allow me to do anything regarding shape key-esque animations including the sails and more. I want to actually know if there is a solution that would completely eliminate this issue rather than just resorting to something that is heavily dependent on specific cases “it works for now” and that wouldn’t provide as desirable an outcome.

Ooooh, okay. You want a solution that works in every case :grimacing:. From what I know, I dont think roblox studio is capable of animating like that unless you use those bizzar conditional methods.
But I do wish they had made a feature similar to this, allowing us to animate parts and meshes this way.

Ok, at least we now know there isn’t an actual solution. That’s what I was trying to figure out in the first place since I was having trouble finding info online regarding this specific matter. Thanks for your help anyways, I’ll mark this as the solution for future readers.

I figured it out! I can add a small stand-alone bone at each vertex of a plane regardless of its shape and use the bones as anchors to the mesh which can only move if I move them manually in animation! In the last video, I could have put a small bone at each of the 3 vertices of the triangle. This allows me to hold the top two vertices in place while only moving the bottom vertex, thus making the entire mesh look like it’s changing “shape”. Remember, the bones must be quite small in comparison to your mesh because you’re treating them as if they are vertices.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.