DrawImageProjected giving off unknown error

I’m trying to project an image onto the top surface of an EditableMesh (the EM is just a cube)

local EditableImage = AssetService:CreateEditableImage({Size = Vector2.new(512,512)})
local BrushImage = AssetService:CreateEditableImageAsync(Content.fromUri("rbxassetid://130930689780864"), {Size = Vector2.new(512,512)})
	
local projectionParams: ProjectionParams = {
	Direction = Vector3.new(0, 1, 0),
	Position = Vector3.new(0, 0, 0),
	Size = Vector3.new(1, 1, 1),
	Up = PreviewMesh.CFrame:VectorToObjectSpace(Vector3.new(0, 1, 0)),
}

local localBrushConfig: BrushConfig = {
	Decal = BrushImage,
	ColorBlendType = Enum.ImageCombineType.BlendSourceOver,
	AlphaBlendType = Enum.ImageAlphaType.Default,
	BlendIntensity = 1,
	FadeAngle = 90.0
}
	
EditableImage:DrawImageProjected(PreviewMesh, projectionParams, localBrushConfig) -- error

This is the error I get

Missing or null attribute in drawImageProjected!

Worth noting, that the example provided in the announcement gives the same error

local AssetService = game:GetService("AssetService")
local editableImage = AssetService:CreateEditableImage({Size = Vector2.new(512,512),})
local brushImage = AssetService:CreateEditableImage({Size = Vector2.new(512,512),})
 
local relativePos = meshPart.CFrame:PointToWorldSpace(raycastHitPos)
local direction = (game.Workspace.CurrentCamera.CFrame.Position - relativePos).Unit
 
local projectionParams: ProjectionParams = {
   	Direction = meshPart.CFrame:VectorToObjectSpace(direction),
   	Position = meshPart.CFrame:PointToObjectSpace(relativePos),
   	Size = Vector3.new(1, 1, 1),
   	Up = meshPart.CFrame:VectorToObjectSpace(Vector3.new(0, 1, 0)),
}
 
local localBrushConfig: BrushConfig = {
   	Decal = brushImage,
   	ColorBlendType = Enum.ImageCombineType.BlendSourceOver,
   	AlphaBlendType = Enum.ImageAlphaType.Default,
   	BlendIntensity = 1,
   	FadeAngle = 90.0
}
 
editableImage:DrawImageProjected(meshPart, projectionParams, localBrushConfig)

Expected behavior

What the announcement post seemed to show off

what is the type and value of PreviewMesh?
It has to be the editablemesh that you are projecting to

EDIT
Figured what was wrong, I was doing the Meshpart, not the EditableMesh. But this

local Cube = {}
Cube.__index = Cube

local AssetService = game:GetService("AssetService")

local function AddSharpQuad(editableMesh, vertex0, vertex1, vertex2, vertex3)
	-- Add a new normal for this face
	local Normal = editableMesh:AddNormal()

	-- Create two triangles to form the quad
	local Triangle1 = editableMesh:AddTriangle(vertex0, vertex1, vertex2)
	editableMesh:SetFaceNormals(Triangle1, { Normal, Normal, Normal })

	local Triangle2 = editableMesh:AddTriangle(vertex0, vertex2, vertex3)
	editableMesh:SetFaceNormals(Triangle2, { Normal, Normal, Normal })
end

function Cube.new()
	local self = setmetatable({}, Cube)
		
	return self
end

function Cube:CreateCube(position, size)
	position = position or Vector3.new(0, 0, 0)
	size = size or Vector3.new(1, 1, 1)

	-- Create empty EditableMesh
	local EditableMesh = AssetService:CreateEditableMesh()

	-- Add vertices for a unit cube
	local Vertex1 = EditableMesh:AddVertex(Vector3.new(0, 0, 0))
	local Vertex2 = EditableMesh:AddVertex(Vector3.new(1, 0, 0))
	local Vertex3 = EditableMesh:AddVertex(Vector3.new(0, 1, 0))
	local Vertex4 = EditableMesh:AddVertex(Vector3.new(1, 1, 0))
	local Vertex5 = EditableMesh:AddVertex(Vector3.new(0, 0, 1))
	local Vertex6 = EditableMesh:AddVertex(Vector3.new(1, 0, 1))
	local Vertex7 = EditableMesh:AddVertex(Vector3.new(0, 1, 1))
	local Vertex8 = EditableMesh:AddVertex(Vector3.new(1, 1, 1))

	-- Add the six faces of the cube
	AddSharpQuad(EditableMesh, Vertex5, Vertex6, Vertex8, Vertex7) -- front
	AddSharpQuad(EditableMesh, Vertex1, Vertex3, Vertex4, Vertex2) -- back
	AddSharpQuad(EditableMesh, Vertex1, Vertex5, Vertex7, Vertex3) -- left
	AddSharpQuad(EditableMesh, Vertex2, Vertex4, Vertex8, Vertex6) -- right
	AddSharpQuad(EditableMesh, Vertex1, Vertex2, Vertex6, Vertex5) -- bottom
	AddSharpQuad(EditableMesh, Vertex3, Vertex7, Vertex8, Vertex4) -- top

	-- Clean up unused normals
	EditableMesh:RemoveUnused()

	
	
	-- Draw texture onto faces
	local EditableImage = AssetService:CreateEditableImage({Size = Vector2.new(512,512)})
	local BrushImage = AssetService:CreateEditableImageAsync(Content.fromUri("rbxassetid://130930689780864"), {Size = Vector2.new(512,512)})

	local projectionParams: ProjectionParams = {
		Direction = Vector3.new(0, 1, 0),
		Position = Vector3.new(0, 0, 0),
		Size = Vector3.new(1, 1, 1),
		Up = Vector3.new(0, 1, 0),
	}

	local localBrushConfig: BrushConfig = {
		Decal = BrushImage,
		ColorBlendType = Enum.ImageCombineType.BlendSourceOver,
		AlphaBlendType = Enum.ImageAlphaType.Default,
		BlendIntensity = 1,
		FadeAngle = 90
	}
	
	EditableImage:DrawImageProjected(EditableMesh, projectionParams, localBrushConfig)
	
	-- Create the preview MeshPart
	local PreviewMesh = AssetService:CreateMeshPartAsync(Content.fromObject(EditableMesh))
	PreviewMesh.Anchored = true
	PreviewMesh.Position = position
	PreviewMesh.Size = size
	PreviewMesh.Parent = workspace
	
	return PreviewMesh, EditableMesh
end

return Cube

Causes studio to completely crash

UV information seems to be missing from this editable mesh setup

if i do

print(EditableMesh:GetUVs)

it does print the UVs, i assume they all correct?

Hoping for something in the future to make setting this all up easier to visualize, as these UV numbers mean nothing to me :person_shrugging: they seem like just random ids