I just tested to see if editable meshes have this same problem and they donโt
local AssetService = game:GetService("AssetService")
local RunService = game:GetService("RunService")
local options = {CollisionFidelity = Enum.CollisionFidelity.Hull, RenderFidelity = Enum.RenderFidelity.Precise, FluidFidelity = Enum.FluidFidelity.UseCollisionGeometry}
local mesh = AssetService:CreateEditableMesh()
local content = Content.fromObject(mesh)
local vertex1 = mesh:AddVertex(Vector3.new(0, 1, 0))
local vertex2 = mesh:AddVertex(Vector3.new(-2, -1, 0))
local vertex3 = mesh:AddVertex(Vector3.new(2, -1, 0))
local vertex4 = mesh:AddVertex(Vector3.new(0, -1, 2))
local face1 = mesh:AddTriangle(vertex1, vertex3, vertex2)
local face2 = mesh:AddTriangle(vertex1, vertex4, vertex3)
local face3 = mesh:AddTriangle(vertex1, vertex2, vertex4)
local face4 = mesh:AddTriangle(vertex2, vertex3, vertex4)
local normal1 = mesh:AddNormal()
local normal2 = mesh:AddNormal()
local normal3 = mesh:AddNormal()
local normal4 = mesh:AddNormal()
mesh:SetFaceNormals(face1, {normal1, normal1, normal1})
mesh:SetFaceNormals(face2, {normal2, normal2, normal2})
mesh:SetFaceNormals(face3, {normal3, normal3, normal3})
mesh:SetFaceNormals(face4, {normal4, normal4, normal4})
local part = AssetService:CreateMeshPartAsync(content, options)
part.Position = Vector3.new(0, 30, 0)
part.Parent = script.Parent
local attachment = Instance.new("Attachment")
attachment.Parent = part
local spring = Instance.new("SpringConstraint")
spring.Visible = true
spring.Attachment0 = attachment
spring.Attachment1 = workspace.Part2.Attachment
spring.Parent = part
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
workspace.CurrentCamera.CameraSubject = part
RunService.Heartbeat:Connect(function()
mesh:SetPosition(vertex2, Vector3.new(-2 + math.random() * 2, -1, 0))
mesh:SetPosition(vertex3, Vector3.new(2 + math.random() * 2, -1, 0))
mesh:SetPosition(vertex4, Vector3.new(0, -1, 2 + math.random() * 2))
part:ApplyMesh(AssetService:CreateMeshPartAsync(content, options))
end)