I’m interested to hear more about the issues you’re running into. What throttling are you seeing? It’s possible that this is a performance issue on our side, so if you have any example place that’s exhibiting the issue, that would also be helpful.
Currently, setting the normals should be working, although there are some details that I should add to the documentation, and as mentioned in the post there are changes coming to that part of the API.
The bottom line with the normals is that if you don’t set them, the default is the geometric normal. If you do set them, that normal will be used. However, if you move nearby vertex positions or add/remove triangles, the normals may be changed. In general the most reliable approach would be to set the normals after you’re done moving verts or changing the topology in the area.
Here’s an example snippet that shows the behavior:
local emesh = Instance.new("EditableMesh")
local v1 = emesh:AddVertex(Vector3.new(0,0,0))
local v2 = emesh:AddVertex(Vector3.new(1,0,0))
local v3 = emesh:AddVertex(Vector3.new(0,1,0))
local t = emesh:AddTriangle(v1, v2, v3)
local initialNormal = emesh:GetVertexNormal(v1)
local newNormal = Vector3.new(.5,.5,0)
emesh:SetVertexNormal(v1, newNormal)
local afterSet = emesh:GetVertexNormal(v1)
emesh:SetPosition(v1, Vector3.new(0,0,1))
local afterMove = emesh:GetVertexNormal(v1)
print(initialNormal)
print(newNormal)
print(afterSet)
print(afterMove)
and outputs:
0, 0, 1
0.5, 0.5, 0
0.5, 0.5, 0
0.40824830532073975, 0.14942926168441772, -0.5576775670051575
Although like I said, there will be some changes to the API, as mentioned in the post.
Finally, thanks for the feedback about the desire to edit the collision geometry and write to meshes in parallel.