Before the latest update to SurfaceAppearence with the new TintMask alphamode, It was possible to use a local file inside of SurfaceAppearence, but either since that update or a while later, It’s been throwing out an error that it’s no longer supported in client.
This harms people trying to make animations or test work in progress textures without having to upload hundreds of textures onto the website, especially for people who don’t want to risk their account being moderated.
What good does suddenly ending support for local files do? Because i only see negatives that’ll discourage players worried about being moderated for no reason from using studio altogether.
The following issue also affects MaterialVariants, and there’s literally no good reason to disable local asset usage for surface appearances and material variants.
I use local assets myself to test the textures and other things without having to upload hundreds of texture iterations, cluttering my inventory (and then be potentially moderated for it)
I experienced this bug myself today; I was experimenting with custom textures on a saved model, and while I could use a local rbxasset://[texture].png image for a MeshPart’s TextureId, Roblox Studio wouldn’t let me use the same texture as a SurfaceAppearance’s ColorMap.
I tried typing/pasting a rbxasset:// URL into the text box myself, using the Command Bar to set its value, and assigning its ColorMapContent property to a Content object, and it rejected all three of them, replacing what I entered with rbxassetid://, which looks like it’s nudging me towards using an online asset ID.
I haven’t had to do this for a while, so I don’t know when this bug¹ was introduced, but I know this didn’t happen before; I could use local assets for SurfaceAppearances, and they would render for me, which really helped me iterate on and design PBR maps that look good in Roblox’s somewhat quirky 3D renderer. When Roblox Studio would use a local image, it added this warning in the Output panel, just like it does now…
19:46:32.082 Workspace.CureHappy.Powerful Love Brooch.2.SurfaceAppearance.ColorMapContent has local asset 'rbxasset://gold2.png'. Local asset is not supported in client. - Studio
…but again, it still used the image instead of replacing what I entered with a blank asset ID. I’m assuming whatever code prints that warning runs before the new code that edits the text box’s string.
Here’s a recording of the "bug"¹; I try to give this mesh a local ColorMap twice, which replaces what I pasted with the aforementioned empty asset ID. After removing the SurfaceAppearance, I set the MeshPart’s TextureID and it immediately appears!
Like others, I expect and need to use local assets to test everything that I can without uploading them to Roblox (which for me are sounds and textures, since there isn’t a reliable way to use meshes without uploading them first). Roblox’s 3D renderer isn’t consistent with other programs’ renderers, so I can’t use Blender or Substance Designer to accurately preview materials before uploading them, which would not only add duplicates to my account’s “decals” section, but would also risk receiving warnings, or worse, an undeserved ban for an appropriate and perfectly acceptable image. (Both of these would keep me from even testing the textures in Roblox Studio, too.)
@Linmidynails my fears, which any “advanced” Roblox developer will also feel when they go to test a new material and Roblox Studio doesn’t let them do what’s part of their workflow:
Roblox needs to fix this, or undo whatever change added this strange behavior! I wish I could have hope that they will, but I know how they don’t tend to add features developers have been wanting for many years at this point, so…I’m not hopeful they’ll do anything about this, especially since this topic’s supposedly “closed”…
ᴺᵒᵗᵉ ¹ - I don’t truly know if this is a bug, or if Roblox is trying to push developers to clutter their accounts with WIP versions of assets they’ll never use in their experiences. It might sound like a conspiracy theory, but I don’t see why they would intentionally begin to block rbxasset:// asset references like this. (Then again, if they were, this bug would affect all local assets, not just PBR maps.)
EDIT: Ugh! There really isn’t any way around this weird limitation; I’ve tried all of these things, and it has intercepted all of them:
Typing/pasting an asset ID into the ColorMap field.
Using the Command Bar to set its value through a script, both through the normal and “ColorMapContent” properties (with a Content version of my rbxasset:// URL).
Modifying the SurfaceAppearance’s ColorMap property in an exported RBXMX file, then importing it.
Generating a rbxtemp:// ID then pasting it into the ColorMap.