Classe motore
EditableMesh
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
Sommario
Metodi
Membri ereditati
Membri ereditati da Object: 6
Riferimento API
Proprietà
Metodi
AddBone
Parametri
Restituzioni
AddColor
AddTriangle
Destroy
EditableMesh:Destroy():()
Restituzioni
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentFaces
GetAdjacentVertices
GetBoneByName
GetBoneCFrame
GetBoneIsVirtual
GetBoneParent
GetColorAlpha
GetFaceNormals
GetFacesWithAttribute
GetFacesWithColor
GetFacesWithNormal
GetFaceVertices
GetFacsCorrectivePose
GetFacsPose
Parametri
Restituzioni
GetNormal
GetPosition
GetVertexBones
GetVertexBoneWeights
GetVertexColors
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaces
GetVertexFaceUV
GetVertexNormals
GetVertexUVs
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
GetVerticesWithUV
MergeVertices
RaycastLocal
Restituzioni
Campioni di codice
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- Inizializza EditableMesh nello spazio
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
-- Funzione che lancerà un raggio dal punto dato, restituendo il punto nel mondo dell'impatto e la coordinata UV
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- Calcola quanto l'oggetto viene scalato in ogni dimensione
local renderScale = meshPart.Size / meshPart.MeshSize
-- Crea un raggio dalla telecamera nella direzione di un punto cliccato
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- Converti nello spazio dell'oggetto per utilizzare 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
-- Non ha colpito nessuna faccia
return
end
-- Calcola il punto d'impatto nello spazio del mondo
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- Ottieni le UV sulla faccia
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 le UV all'interno della faccia in base alla coordinata baricentrica
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
Parametri
Restituzioni
()
SetFacsCorrectivePose
SetFacsPose
Parametri
Restituzioni
()
SetNormal
SetPosition
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
Restituzioni
()