Dynamic2Classic - Convert Back Dynamic Faces to Classic

Hi everyone, I would like to say that this is my first contribution that may be used by a lot of developpers and I, am really excited about your feedback! If you see anything wrong or have questions, please let me know!

Dynamic2Classic

Convert Back Dynamic Faces to Classic! - Made by @DarkHazardOff and @AloisgoodOffi

I am aware and we all know that this new update sucks! It completely destroys the Roblox image about faces, since they are a very used feature by the Roblox platform itself.

During my free-time, I decided to prepare a simple model that allows you to turn back those dynamic faces into classic ones!

It supports both R6 and R15 rigs, and work with every “heads” the player owns (as long as they were made by Roblox)

FAQ:

Q - How does this works?

A : The script checks what face a player is wearing. It sends it to the server and has a table containing every (if not) Roblox classic faces, as with the TextureID of it.

Since the heads as an identical name to the classic ones, it can be easy to filter out the TextureID we need and apply it to the player!

(R6) Now, the dynamic face uses a meshFile and not a meshHead for the head to be rendered, just tweak those properties and you can use back the decal for a face!

(R15) For some reasons MeshPart properties cannot be tweaked, so instead I used the same method as I did for R6, made the MeshPart head invisible, and made another part with a SpecialMesh inside that has a MeshType set to Head, Add a decal and weld it and boom! The trick is done!

Q - How much time did it take?

A : A day maybe

Q - Will you update it to support Classic Heads*?

A : Since Head Models are meshes and Roblox are more strict about asset privacy, I don’t think updating it for other head types, though if you want to use this existing model to add that, feel free to!

Q - Do I have to credit you?

A : Absolutely not, this was made for the community and with love. Feel free to use it without credit and edit it as much as you want!

Just don’t sell it to other devs who are not aware of this model please :frowning:

Please let me know any of your reviews or bug found, I am EAGER, to hear them!

Classic Heads* : (not to be confused with dynamic heads) Apply to classic heads, for exemple Hex

GRAB IT HERE!

Access to roblox API services MUST be enabled!

create.roblox.com/store/asset/83244182226371

36 Likes

better method for head replacement (that i did in my game)

delete the head specialmesh

replace it with a new one

You just have to modify MeshType to be set to head and not MeshFile, if I used a Mesh File (with a meshID), I would need the users to re-upload it because of Roblox new asset privacy stuff

Edit: realised you meant about the task.wait method I use. I could but I wanted the script to be as short as possible, thanks for your feedback!

1 Like

Did Roblox delete it?

if they keep deleting it, just make a burner account to upload it and post it here, since they aint being fair atm

Whoops, error for my part, should be public now.

no it was just an error from my part, If Roblox deletes it I will upload it github

2 Likes

LOL i googled expecting to find this

1 Like

Great model, but I found 3 main issues while using it.

CharacterAppearanceLoaded doesn’t always run if the character loads faster than the script runs (which was always happening in my case), so my local script was never able to fire the remote event. I fixed this by just replacing the function with this loop

while not player:HasAppearanceLoaded() do
	task.wait()
end

Specifically in R15, the Orientation of the face part does match the Orientation of the original head mesh. Therefore, if the player doesn’t spawn facing the Origin or the player uses animations that change the player’s head orientation, it causes the face to be in the wrong direction on the character.

All I did to fix this was set the Orientation of the face part equal to the orientation of the Original Mesh Head after the Weld had been created.

facePart.Orientation = head.Orientation

Lastly, some classic faces have different names to it’s Dynamic face counterpart, which the classic version of the dynamic head to never be found in the table of faces. Two of the faces that I had noticed with this issue are the “Heeeeeey…” face which has 1 ‘e’ more than it’s dynamic counterpart and the “Award-Winning Smile” which contains a dash.

1 Like

Hi, thanks for your feedback! A new version as been published! People like you are the reason they build wonder each tries and keep learning! Have a good day (or night) ^^

4 Likes

will use in ALL my games. super awesome!!!

1 Like

your entire client side can be put in the server script, no clue why you opted to do it that way instead

1 Like

GetHumanoidDescriptionFromUserIdAsync cannot be used on server side, this method is used to get the player’s current head

GetHumanoidDescriptionFromUserIdAsync can 100% be used serverside lol, NO CLUE where you heard that from

1 Like

didn’t work with me for some reason

are you doing it inside of the characterAdded event? it shouldn’t make a difference when you call it but still, are you getting an error or something?

system works for me so far! thank you so much for making this public, i hope more games use this (even though they shouldnt have to in the first place but whatever)

Great system. Would be nice if it also supports headless because right now if I play with headless my head becomes a faceless head.

a feature request

On the Dynamic2Classic Toolbox Model, can we have the faceIDs dictionary as its own module?

I was planning to incorporate it into something of mine, but copying and pasting your dictionary unto mine code feels like usurpation.

heres what the requested module would look like:

--!strict
--Made by @AloisgoodOffi and @DarkHazardOff

local faceIds : {[string]:string} = { --Contains every (if not) classic faces
	["Golden Evil Eye"] = "rbxassetid://1016180707",
	["Squad Ghouls: Zoe Saberhagen "] = "rbxassetid://2514352026",
	["RBX-90 Face"] = "http://www.roblox.com/asset/?id=293229488 ",
	["Purple Trance"] = "http://www.roblox.com/asset/?id=629935400",
        -- further entries here....
}
return faceIds
1 Like

Hi, feel free to use anything you want from the model for your projects, no credits are needed! You can even published an enhanced feature if you want! Though I invite you to link if asked to the original source code so people can do their own version.

Quick Answer: Do whatever you like! Or don’t, we do not care [AS] --please someone catch that reference

1 Like