[Studio Beta] Major updates to in-experience Mesh & Image APIs

How Iā€™ve been creating the editable meshes is just using the tag system, iterating through what meshes have this tag, and then going through a for-loop to just create the editable mesh once per object. This function is separate from the one that actually updates the editable meshes at all.

I do not create a new editable mesh every frame, as my pc would probably explode alongside just throwing out those same errors :uhh:

I save the editable mesh to a table so I can reference back to it and thatā€™s how itā€™s worked for me. Iā€™ve tried just putting a task.wait(1) at the end of the loop

The one thatā€™s been able to keep up is task.wait(5), which is pretty long considering that a character or object could have 3-8 different meshes, and Itā€™d be pretty annoying for the user experience to have to wait that long only to have the meshes converted.

Yep! I do think that something like this should be completely handled on the GPU, but at the moment Roblox doesnā€™t support those kinds of operations, so Iā€™m stuck with the cards I got.

I would like to say that I already do save the data of editable meshes in tables so I can reference back to them, and that Iā€™ve had to make a system that progressively doesnā€™t call for an update as often if thereā€™s too many nearby or if itā€™s farther away! (As far as Iā€™m aware itā€™s mostly the updating of the editable mesh that causes issues and not just creating an editable mesh?)

I do know that this is going to be pretty taxing even with the mega optimizations that you guys do alongside some of my own, which is why Iā€™m going to try to be sparing with how many can be around at a time! People canā€™t enjoy the work involved if their device is on fire after all.

If itā€™d help I can send the file to your DMs so you can take a look at it.

Thereā€™s a mistake in this example, Color3.new(0, 255, 0) should be Color3.fromRGB(0, 255, 0).

The Experience in the post named ā€œHubcap_Image_v21.rbxlā€ (for download) , there are some errors in the scripts and canā€™t test it!

1 Like

their same vague ā€œyou canā€™t use IDs that donā€™t belong to youā€ system. Disappointing. I mean, I had a mesh rendering system, how do I render a texture that is not mine?

image

This update broke my game :melting_face: Iā€™m getting too many requests despite the fact that it worked just fine before the update went live. I think what happened is:

Before the update:

  1. Calls AssetService:CreateEditableMeshFromPartAsync
  2. Engine creates and returns EditableMesh

After the update:

  1. Calls AssetService:CreateEditableMeshFromPartAsync
  2. Engine makes an HTTP request to Roblox API to check the owner of the asset
  3. If ownership check passes, engine creates and returns EditableMesh, otherwise throws an error

So now my script takes 3s+ to execute alongside all the ā€œToo Many Requestsā€ errors. Before the update it only took about a millisecond, if not less.

4 Likes

Do editablemeshes use different permission logic than normal? It appears that way but I might be misunderstandingā€¦

They added permission checks for creating EditableMeshes and EditableImages from existing assets. Before the update you could load in any asset, regardless if the creator of the universe owned it or not.

1 Like

This is a sick update and I look forward to seeing the full potential of it being exploited! Plenty of people have posted some cool demos of the potential that live editing* can offer.

You should not trust devs with such a big power though honestly. If anyone has access to this, moderating could become a nightmare if these new APIs are abused.

Keep up with these updates though, theyā€™re awesome!

I know. That doesnā€™t really answer my question

Thanks for the feedback. We are looking into it.

2 Likes

Thanks for reporting this! We are looking into fixing this.

2 Likes

I used the function for the initial size but iā€™m still getting the error, Is it because the size canā€™t be more than 2048 studs?

Most of the vertices in my editable meshes are forming a terrain chunk that is larger than 2048x2048.


image

2 Likes

It would be nice if you could add Content.fromCSG to allow us to create an editable mesh from a Union Operation. Since we cannot currently :Separate a union, there is no way to serialize its shape. But this Mesh API has plans to be serializable in the future.

1 Like

Will this eventually include the image related properties on Sky instances? Would be awesome to be able to create truly procedural skies using EditableImage.

4 Likes

Arenā€™t Instance reference properties strong by default?
I havenā€™t seen any cases where an ObjectValue loses its value when the instance is destroyed (unless you exit Studio)

I am running into the fetch asset error wayy too frequently. I used to be able to load a bulk lot of images to EditableImage pretty well instantly, but now this low rate limit is heavily affecting my game.

image

And once this error has occurred, it is super slow trying to reload the assets.

This is really impractical for me

3 Likes

Mhm, same here - Iā€™m slowed down a ton because Iā€™m loading the same mesh multiple times and I have to make a fresh API request for each meshPart. In the past Iā€™d just clone / copy it, however that isnā€™t enabled anymore to my understanding.

1 Like

Iā€™m getting an error when I try to convert a skinned mesh into an editable mesh

Failed to create mesh rbxassetid://71004912922216, Unable to convert mesh with skinning data

Am I doing something wrong or is there no support for skinned meshes?

1 Like

Skinned meshes are not yet supported, although itā€™s something that weā€™re working on

3 Likes