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

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.

3 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

2 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

Is EditableMesh:Clone going to get a replacement? Is there currently a new way to do this? I previously used it to reuse editable meshes that I don’t need to be re-generating everytime.

I’m struggling to transition to the new workflow as I’m finding a lot of fundamental features have been removed such as :Clone and :Destroy which breaks my code.

I have an issue where if I create a mesh part from an editable mesh, and then later use that same meshPart’s MeshContent variable to create a new editable mesh, it errors saying “Failed to load mesh”.

local AssetService = game:GetService("AssetService")

local eMesh = AssetService:CreateEditableMesh();
local v0 = eMesh:AddVertex(Vector3.new(0, 0, 0));
local v1 = eMesh:AddVertex(Vector3.new(1, 0, -1));
local v2 = eMesh:AddVertex(Vector3.new(1, 0, 1));
eMesh:AddTriangle(v0, v1, v2);

--Works fine
local firstMeshPart = eMesh:CreateMeshPartAsync(Vector3.one);
firstMeshPart.Parent = workspace;

--Errors with "Failed to load mesh"
local newEMesh = AssetService:CreateEditableMeshAsync(firstMeshPart.MeshContent);

Also another thing to note, using EditableMesh:CreateMeshPartAsync() is painfully slow to load as it only allows to create about 20 meshes a second which is far below what I need for my use case; what used to take 20 seconds now takes 200 seconds.

2 Likes

I did- but it seemed to insist I put the mesh on a MeshPart . Accepting this might be necessary, I tried to “Apply” that meshpart onto the other and it just told me it was empty, despite the original meshpart being fine. I’m not really sure why we need to make a new part, rather than simply apply the mesh onto an existing part. This is incredibly cumbersome and I hope not the only way.

Whelp, this screwed everything up for me. Got the system working as it was before and

a) Performance went off a cliff. What previously was smooth as butter now just chunk-chunk-chunks along.

b) Meshes no longer rendered if even a part of their extent was off the camera. So meshes were constantly popping in and out of view because the rest of the mesh WAS in the camera view.

5 Likes

Part B for you also happens for me, meshes will disappear if they go even a little bit off the screen or they get within a few studs of the camera.

Sorry, I should have been more specific.
IIRC EditableMeshes had a :Clear() method before and that was what I was referring to

1 Like