Recently I had success salvaging some old meshes, documented in these threads:
https://devforum.roblox.com/t/is-it-possible-to-salvage-ancient-user-injected-meshes-success/697789
https://devforum.roblox.com/t/this-is-a-shot-in-the-dark-old-dragon-mesh/697395
The process was a bit obscure so I’ll detail exactly how I did it in case anyone wants to do the same for any other meshes they wish to recover. This applies to those old meshes from 2007-2010 era that were user injected and only visible after visiting a place in Play Solo with those meshes inside them.
Step 1: Get a model/ place file straight from the site
Roblox Studio will NUKE the code related to your mesh data as soon as you load it.
We can look into the code without opening studio in the next step, but it is imperative you download the file straight from the site.
I use this plugin to be able to download free assets as a file:
Step 2: Open the downloaded file with Notepad.
You will get a lot of text that’s mostly readable.
Scroll down until you start seeing something like this- this is the mesh data encoded in base64.
Copy all of the encoded data. (leave out the “name=“MeshId”>” stuff and anything in the xml format afterwards)
Step 3: Decode everything on this website.
Once you have the stuff copied, go to this website:
(or any website that will decode base64 for you)
PASTE all of it in the top box, set the source character set to ASCII, and then click DECODE.
THIS IS IT. This is the mesh data in it’s “readable” form. Press CTR + A to select it all in that box, and then press CTR + C to copy it.
Step 4: Then go to here to paste it.
Yes, this is a mandatory step.
After you create your paste, click here:
You’ll get the raw text of your paste.
You will need this URL for later.
Step 5: Open a place in studio that is tied to a real game.
Can be an empty baseplate- you just need to be able to access the “Game Settings.” You can’t do this with a place file not linked to a real published place/ game.
We want to allow HTTP Requests. Go to Security and enable it.
Step 6: Put this script into your game and modify the url value.
mesh.lua (4.1 KB)
You can open the file in notepad and copypaste the code into a script in workspace- just as long as the script CAN run in your game you’re dandy.
Replace the meshDataUrl value.
Remember the pastebin url we have? Copy and paste that into here.
Step 7: Change output settings on Studio.
File → Settings → Studio → Scroll down to “Output”
Change maximum Output Lines to something very high
Step 8: Run the game and copy the contents of Output.
Past it into a notepad file and delete everything before “g Mesh” (keep that line) and any junk the output may have printed after the mesh data.
Step 9: “Save as” your notepad file with the obj data as a .obj file.
Append .obj at the end of your file name, and Save as type: All Files.
Step 10: Open blender. Insert your obj.
(delete the cube you start with)
Go to file → import → wavefront (.obj)
Find your file and import OBJ.
There it is!
And from there, just put a MeshPart into your game, click the mesh id folder pop up, select your obj file, and there you go. (You might need to export the file once more inside blender as an obj)