Classe do mecanismo
EditableMesh
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
Resumo
Métodos
Membros herdados
6 herdada do Object
Referência API
Propriedades
Métodos
AddBone
Parâmetros
Devolução
AddColor
AddTriangle
Destroy
EditableMesh:Destroy():()
Devolução
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentFaces
GetAdjacentVertices
GetBoneByName
GetBoneIsVirtual
GetColorAlpha
GetFacesWithAttribute
GetFacesWithColor
GetFacesWithNormal
GetFaceVertices
GetFacsCorrectivePose
GetFacsPose
Parâmetros
Devolução
GetPosition
GetVertexBones
GetVertexBoneWeights
GetVertexColors
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaces
GetVertexFaceUV
GetVertexNormals
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
GetVerticesWithUV
MergeVertices
RaycastLocal
Devolução
Amostras de código
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- Inicializa EditableMesh no espaço
local editableMesh = nil
local success, errorMsg = pcall(function()
editableMesh = AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success and editableMesh then
meshPart = AssetService:CreateMeshPartAsync(
Content.fromObject(editableMesh),
{ CollisionFidelity = Enum.CollisionFidelity.Hull }
)
meshPart.Parent = Workspace
else
warn(errorMsg)
end
-- Função que irá lançar um raio do ponto dado, retornando o ponto no mundo do impacto e a coordenada UV
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- Calcula quanto o objeto está sendo escalado em cada dimensão
local renderScale = meshPart.Size / meshPart.MeshSize
-- Cria um raio a partir da câmera na direção do ponto clicado
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- Converte para o espaço do objeto para usar com RaycastLocal()
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin) / renderScale
local relativeTarget = meshPart.CFrame:PointToObjectSpace(ray.Origin + ray.Direction * 100) / renderScale
local relativeDirection = relativeTarget - relativeOrigin
local faceId, point, barycentricCoordinate, vertId1, vertId2, vertId3 =
editableMesh:RaycastLocal(relativeOrigin, relativeDirection)
if not faceId then
-- Não acertou nenhuma face
return
end
-- Computa o ponto de impacto no espaço do mundo
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- Obtém as UVs na face
local uvId1 = editableMesh:GetVertexFaceUV(vertId1, faceId)
local uvId2 = editableMesh:GetVertexFaceUV(vertId2, faceId)
local uvId3 = editableMesh:GetVertexFaceUV(vertId3, faceId)
local uv1 = editableMesh:GetUV(uvId1)
local uv2 = editableMesh:GetUV(uvId2)
local uv3 = editableMesh:GetUV(uvId3)
-- Interpola as UVs dentro da face com base na coordenada baricêntrica
local u = (barycentricCoordinate.x * uv1.x) + (barycentricCoordinate.y * uv2.x) + (barycentricCoordinate.z * uv3.x)
local v = (barycentricCoordinate.x * uv1.y) + (barycentricCoordinate.y * uv2.y) + (barycentricCoordinate.z * uv3.y)
return worldHitPoint, Vector2.new(u, v)
endSetBoneCFrame
SetBoneIsVirtual
SetBoneName
SetBoneParent
SetColor
SetColorAlpha
SetFaceColors
SetFaceNormals
SetFaceUVs
SetFaceVertices
SetFacsBonePose
Parâmetros
Devolução
()
SetFacsCorrectivePose
SetFacsPose
Parâmetros
Devolução
()
SetNormal
SetPosition
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
Devolução
()