This tutorial will certainly be going over exactly how to properly create an R15 morph rig the is able to be offered in conjunction v an R15 auto-morph script. This accuse is meant for individuals who wish to appropriately use functioning auto-morphs in your genres or game.

You are watching: Roblox studio how to make a morph

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

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

Screenshot_9.png156×620 6.28 KB

You have actually successfully collection up one R15 morph rig the is all set to be provided with one auto-morph script. Auto-morph scripts generate you in together the morph of her choosing. There room a plethora of means to architecture your auto-morph script, but I use a compact and straightforward one that will work-related for you.

To begin setup up your auto-morph script, go to ServerStorage, do a new folder and also name the “Morphs”. Currently inside the form folder you’ll desire to make one more folder and name it everything you’d like, however I personally name mine the surname of the game I’m functioning on. Inside of that folder you’ll want to make an additional folder and also name that “PersonalMorphs” all of the form you’ll want to use with the auto-morph manuscript will go within of the PersonalMorphs folder. If you obtained a morph you want to use, climate make another folder within of the PersonalMorphs folder and name it every little thing you like. I personally name mine the surname of the character my morph is. It’s much easier to find them if you have actually a most them in there.Select all of those (not the dummy itself) climate copy and also paste them right into your folder that you named.

Now let’s relocate onto the manuscript I have created that you can create yourself with these photos. Begin by going right into ServerScriptService and also making a script. Name that manuscript “Morph”. Currently open the script up, delete “print(“Hello world!”)” and also 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 created earlier.local visible = 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" then -- The "Coat" and also "Pauld" statements have the right to be fully ignored or removed without harming the script.if plr:FindFirstChild("Coat") == nil thenlocal Folder ="Folder")Folder.Name = "Coat"Folder.Parent = plrendelseif test == "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 also plr:FindFirstChild("Morph") or check == "Coat" and also plr:FindFirstChild("Coat") or test == "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 i = 1, # h doif h.className == "Part" or h.className == "UnionOperation" or h.className == "MeshPart" or h.className == "WedgePart" then h.Anchored = falseh.CanCollide = falseendendendendendlocal duty 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 component models placed inside of the called folder you 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 duty MorphUser(User,Team,Class,Morph,name)local MorphRoot = Morphs:WaitForChild(Morph)local version = MorphRoot:Clone()local char = User.CharacterRunThings(char,Model,name)endlocal function Body(depth,height,width,Char)for _,v in pairs(Char.Humanoid:GetChildren()) doif v.ClassName == "NumberValue" thenif v.Name == "BodyDepthScale" climate -- look at for any kind of changes made to 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") climate v.face:remove()endendendendlocal function Finale2(Char)for i,v in pairs(Char:GetChildren()) doif v.ClassName == "MeshPart" or v.ClassName == "Part" and also 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" then 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 -- transforming these variables alter 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 want to replace CalvinKadir v your own username or somebody else’s username. You can easily replace the line entirely with a team or group rank statement so that certain groups or group ranks will get the morph instead.

if Player:GetRankInGroup(5025607) == 255

^ that line of code is an example of what you can replace the name statement with.

You can likewise entirely remove the Body(1,1,1,Character) declare if you don’t ever arrangement on changing the height, width and depth of your morph. Perform keep in mind the by an altering those values, you’ll have to additionally properly range the morph model itself, or you’ll finish up spawning in v your arms or foot floating away from her torso. I will explain 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”) need to be changed to the surname of the folders you have actually created. “The Void” would certainly be readjusted and “CalvinKadir” would certainly be changed. The rest have to stay the same.

Basically the Finale statements room there to identify which part of the morph is visible and which component isn’t. This is valuable at times. To speak you want to make a morph, but you don’t desire to make a practice head, you can readjust the Finale explain to do the head on the morph invisible so that you deserve to spawn in through the custom body, however still have your own face, accessories and head. Or you can just do it where you have your head and face, however not any accessories.

Finale, Finale1, Finale2 and also Finale3 space all the varieties of Finale declaration you can switch between. This won’t chaos up the manuscript any, so simply experiment and also choose which one you will do like. An alert that I have two Finales in the password below. One Finale add to onto or negates the effect of the various other Finale. It’s always a good idea to keep the Finale(Character) on there, yet it can be switched for various effects favor I defined above.

if Player.Name == ‘CalvinKadir’ climate – 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 to elseif ~ above the second one and also beyond.

Once you have thoroughly completed each of the actions above, the complicated part is out of the way. When you join the game via test or server, girlfriend will spawn in as the morph you put within the called folder you created. You’ll proceed to generate in together this morph till you readjust it in ~ Studio.

This setup is specifically useful because that roleplaying genres, such together a Star battles or game of Thrones genre. V the rig functioning, you can start building and shaping that into everything character or human you’d like. Because that example, me and also my girlfriend have built some Dishonored morphs, and also many others. Her morph will go as far as her creativity.


When you’re building your morph, be certain to placed the parts you’re adding into the correct body component model. So if you’re building something on the upper left arm, you’d place those components within the LeftUpperArm model.

I’d recommend not permitting one part to prolong to an additional body part. If you’re building something ~ above the top arm, that shouldn’t prolong down come the lower arm. It’ll look a little odd in-game. You have the right to still carry out it, and also I usually build from the torso onto the shoulders of each eight all the time. But locations such as the arms could look a little bit off.

See more: How Much Is Meet The Beatles Album Worth, Meet The Beatles, Release: St

If you have any kind of other questions, you re welcome toss me a PM. I’ll get ago with girlfriend as shortly as i can.