This tutorial will be walk over exactly how to properly produce an R15 morph rig the is able come be offered in conjunction v an R15 auto-morph script. This tutorial is meant for customers who wish to effectively use working auto-morphs in their genres or game.

You are watching: Roblox how to make a morph

To begin setting up her rig, you’ll need to gain a default one first. The easiest method of acquiring one is to click the “Plugins” tab, click “Rig Builder”, make certain it’s set to R15 and then click on the “Block Rig” option.

You’ll then want to open the dummy model up in Workspace to watch this.
Delete all of that because that each one. Do not delete the mesh within of the Head though! You’ll additionally want to open up the really mesh within of the Head and delete the OriginalSize value.
Now you’ll desire to rename every of the MeshParts inside of the models come “Middle” (without the quotations).

Screenshot_9.png156×620 6.28 KB

You have actually successfully collection up an R15 morph rig the is ready to be supplied with an auto-morph script. Auto-morph scripts generate you in together the morph of your choosing. There are a plethora of methods to style your auto-morph script, however I use a compact and simple one that will job-related for you.

To begin setup up her auto-morph script, walk to ServerStorage, make a new folder and name that “Morphs”. Now inside the morphs folder you’ll desire to make another folder and also name it everything you’d like, but I personally name mine the name of the video game I’m working on. Within of the folder you’ll desire to make another folder and name the “PersonalMorphs” every one of the shape you’ll desire to use with the auto-morph manuscript will go within of the PersonalMorphs folder. If you obtained a morph you desire to use, then make one more folder within of the PersonalMorphs folder and name it whatever you like. Ns personally surname mine the surname of the personality my morph is. It’s easier to uncover them if you have actually a the majority of them in there.Select every one of those (not the dummy itself) then copy and also paste them right into your folder that you named.

Now let’s relocate onto the script I have developed that friend can develop yourself with these photos. Begin by going into ServerScriptService and also making a script. Surname that script “Morph”. Now open the script up, delete “print(“Hello world!”)” and we shall begin constructing it.

local players = game:GetService(\"Players\")local morphs = game:GetService(\"ServerStorage\"):WaitForChild(\"Morphs\") -- Looks because that the \"Morph\" folder you\"ve developed earlier.local clearly shows = falselocal recol = \"\"function morph(plr, part, location, model, test)if plr ~= nil thenif check == \"Morph\" thenif plr:FindFirstChild(\"Morph\") == nil thenlocal Folder =\"Folder\")Folder.Name = \"Morph\"Folder.Parent = plrendelseif check == \"Coat\" climate -- The \"Coat\" and also \"Pauld\" statements deserve to be totally ignored or gotten rid of without harming the script.if plr:FindFirstChild(\"Coat\") == nil thenlocal Folder =\"Folder\")Folder.Name = \"Coat\"Folder.Parent = plrendelseif check == \"Add\" thenif plr:FindFirstChild(\"Add\") == nil thenlocal Folder =\"Folder\")Folder.Name = \"Add\"Folder.Parent = plrendelseif check == \"Pauld\" thenif plr:FindFirstChild(\"Pauld\") == nil thenlocal Folder =\"Folder\")Folder.Name = \"Pauld\"Folder.Parent = plrendendlocal Folder = (test == \"Morph\" and plr:FindFirstChild(\"Morph\") or check == \"Coat\" and plr:FindFirstChild(\"Coat\") or check == \"Add\" and also plr:FindFirstChild(\"Add\") or check == \"Pauld\" and plr:FindFirstChild(\"Pauld\"))if Folder:FindFirstChild(model) == nil thenlocal g = location:Clone()g.Parent = Folderfor i, v in ipairs(g:GetChildren()) doif v:IsA(\"BasePart\") thenlocal W =\"Weld\")W.Part0 = g.MiddleW.Part1 = vlocal CJ = C0 = g.Middle.CFrame:inverse() * CJlocal C1 = v.CFrame:inverse() * CJW.C0 = C0W.C1 = C1W.Parent = g.Middleendlocal Y =\"Weld\")Y.Part0 = plr:FindFirstChild(part)Y.Part1 = g.MiddleY.C0 =, 0, 0)Y.Parent = Y.Part0endlocal h = g:GetChildren()for ns = 1, # h doif h.className == \"Part\" or h.className == \"UnionOperation\" or h.className == \"MeshPart\" or h.className == \"WedgePart\" then h.Anchored = falseh.CanCollide = falseendendendendendlocal function RunThings(char,Model, test)pcall(function()if Model:findFirstChild(\"Head\") thenmorph(char, \"Head\", Model, \"Head\",test)endif Model:findFirstChild(\"UpperTorso\") then -- Looks because that the body part models put inside the the named folder girlfriend made.morph(char, \"UpperTorso\", Model, \"UpperTorso\",test)endif Model:findFirstChild(\"LowerTorso\") thenmorph(char, \"LowerTorso\", Model, \"LowerTorso\",test)endif Model:findFirstChild(\"LeftUpperArm\") thenmorph(char, \"LeftUpperArm\", Model, \"LeftUpperArm\",test)endif Model:findFirstChild(\"RightUpperArm\") thenmorph(char, \"RightUpperArm\", Model, \"RightUpperArm\",test)endif Model:findFirstChild(\"LeftLowerArm\") thenmorph(char, \"LeftLowerArm\", Model, \"LeftLowerArm\",test)endif Model:findFirstChild(\"RightLowerArm\") thenmorph(char, \"RightLowerArm\", Model, \"RightLowerArm\",test)endif Model:findFirstChild(\"LeftHand\") thenmorph(char, \"LeftHand\", Model, \"LeftHand\",test)endif Model:findFirstChild(\"RightHand\") thenmorph(char, \"RightHand\", Model, \"RightHand\",test)endif Model:findFirstChild(\"LeftUpperLeg\") thenmorph(char, \"LeftUpperLeg\", Model, \"LeftUpperLeg\",test)endif Model:findFirstChild(\"RightUpperLeg\") thenmorph(char, \"RightUpperLeg\", Model, \"RightUpperLeg\",test)endif Model:findFirstChild(\"LeftLowerLeg\") thenmorph(char, \"LeftLowerLeg\", Model, \"LeftLowerLeg\",test)endif Model:findFirstChild(\"RightLowerLeg\") thenmorph(char, \"RightLowerLeg\", Model, \"RightLowerLeg\",test)endif Model:findFirstChild(\"LeftFoot\") thenmorph(char, \"LeftFoot\", Model, \"LeftFoot\",test)endif Model:findFirstChild(\"RightFoot\") thenmorph(char, \"RightFoot\", Model, \"RightFoot\",test)endend)endlocal function MorphUser(User,Team,Class,Morph,name)local MorphRoot = Morphs:WaitForChild(Morph)local model = MorphRoot:Clone()local char = User.CharacterRunThings(char,Model,name)endlocal duty Body(depth,height,width,Char)for _,v in pairs(Char.Humanoid:GetChildren()) doif v.ClassName == \"NumberValue\" thenif v.Name == \"BodyDepthScale\" climate -- looks for any kind of changes made come the depth, height and also width variables.v.Value = depthelseif v.Name == \"BodyHeightScale\" thenv.Value = heightelseif v.Name == \"BodyWidthScale\" thenv.Value = widthendendendendlocal function Finale(Char)for i,v in pairs(Char:GetChildren()) doif v:IsA(\"Accessory\") or v:IsA(\"Hat\") thenv:Destroy()endendendlocal function Finale0(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == \"MeshPart\" or v.ClassName == \"n/a\" thenv.Transparency = 1if v:FindFirstChild(\"n/a\") then v.face:remove()endendendendlocal function Finale1(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == \"MeshPart\" or v.ClassName == \"Part\" thenv.Transparency = 1if v:FindFirstChild(\"face\") then v.face:remove()endendendendlocal duty Finale2(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == \"MeshPart\" or v.ClassName == \"Part\" and v.Name ~= \"Head\" or v.Name ~= \"LeftHand\" or v.Name ~= \"RightHand\" thenv.Transparency = 1endendendlocal duty Head(head,Char) for _,v in pairs(Char.Humanoid:GetChildren()) do if v.ClassName == \"NumberValue\" climate if v.Name == \"HeadScale\" then v.Value = head finish end endendPlayers.PlayerAdded:connect(function(Player)Player.CharacterAdded:connect(function(Character)wait(2)visible = falseif Player.Name == \"PLAYER NAME\" then -- an altering these variables change the morph functions entirely.Body(1,1,1,Character)MorphUser(Player,\"MAP NAME\",\"PersonalMorphs\",\"MORPH NAME\",\"Morph\")Finale(Character)Finale1(Character)endend)end)In the if Player.Name == ‘CalvinKadir’ statement, you’ll desire to change CalvinKadir v your very own username or someone else’s username. You can quickly replace the line totally with a group or team rank statement so that specific groups or team ranks will get the morph instead.

if Player:GetRankInGroup(5025607) == 255

^ the line of code is an example of what you have the right to replace the surname statement with.

You can additionally entirely remove the Body(1,1,1,Character) explain if you nothing ever setup on changing the height, width and also depth of her morph. Do keep in mind the by an altering those values, you’ll have to additionally properly scale the morph model itself, or you’ll finish up spawning in through your eight or legs floating away from her torso. I will describe how to do that in a future advanced tutorial.

On line 190 is wherein the folders you’ve produced previously in ServerStorage come in.MorphUser(Player,“The Void”,“PersonalMorphs”,“CalvinKadir”,“Morph”) must be changed to the surname of the folders you have created. “The Void” would certainly be readjusted and “CalvinKadir” would certainly be changed. The rest should stay the same.

Basically the Finale statements space there to recognize which part of the morph is visible and which component isn’t. This is beneficial at times. To speak you desire to do a morph, however you don’t want to make a practice head, you can adjust the Finale statement to make the head ~ above the morph invisible so the you can spawn in v the practice body, however still have actually your very own face, accessories and also head. Or you can just do it whereby you have actually your head and also face, yet not any kind of accessories.

Finale, Finale1, Finale2 and also Finale3 space all the types of Finale statements you deserve to switch between. This won’t mess up the script any, so simply experiment and choose which one you’d like. An alert that I have actually two Finales in the password below. One Finale add to onto or negates the impact of the various other Finale. It’s always a great idea to save the Finale(Character) top top there, however it deserve to be switched for various effects like I explained above.

if Player.Name == ‘CalvinKadir’ then – entire section is changeable.Body(1,1,1,Character)MorphUser(Player,“The Void”,“PersonalMorphs”,“CalvinKadir”,“Morph”)Finale(Character)Finale1(Character)

if Player.Name == ‘’ thenBody(1,1,1,Character)MorphUser(Player,“Map Name”,“PersonalMorphs”,“Morph Name”,“Morph”)Finale(Character)Finale1(Character)

Be certain to adjust if come elseif ~ above the 2nd one and also beyond.

Once you have thoroughly completed each of the actions above, the complicated part is the end of the way. As soon as you join the game via test or server, you will spawn in as the morph you put within the called folder friend created. You’ll continue to generate in as this morph till you change it in ~ Studio.

This setup is particularly useful for roleplaying genres, such together a Star battles or game of Thrones genre. V the rig functioning, girlfriend can start building and also shaping the into every little thing character or human you’d like. For example, me and also my friend have built some Dishonored morphs, and many others. Your morph will certainly go as far as her creativity.


When you’re building your morph, be certain to put the parts you’re including into the correct body component model. Therefore if you’re structure something ~ above the top left arm, you’d place those components within the LeftUpperArm model.

I’d introduce not permitting one component to extend to an additional body part. If you’re building something top top the top arm, that shouldn’t prolong down to the lower arm. It’ll watch a little odd in-game. You have the right to still execute it, and I usually build from the torso top top the shoulders of each eight all the time. But areas such as the arms might look a little off.

See more: Was Huey Lewis In Die Hard Tidbits We Learned From Its Biggest Scene

If you have any kind of other questions, you re welcome toss me a PM. Ok get earlier with friend as quickly as ns can.