Engine-Klasse
EditableMesh
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
Zusammenfassung
Methoden
Geerbte Mitglieder
6 von Object geerbt
API-Referenz
Eigenschaften
Methoden
AddBone
Parameter
Rückgaben
AddColor
AddTriangle
Destroy
EditableMesh:Destroy():()
Rückgaben
()
FindClosestPointOnSurface
FindClosestVertex
FindVerticesWithinSphere
GetAdjacentFaces
GetAdjacentVertices
GetBoneByName
GetBoneIsVirtual
GetColorAlpha
GetFacesWithAttribute
GetFacesWithColor
GetFacesWithNormal
GetFaceVertices
GetFacsCorrectivePose
GetFacsPose
Parameter
Rückgaben
GetPosition
GetVertexBones
GetVertexBoneWeights
GetVertexColors
GetVertexFaceColor
GetVertexFaceNormal
GetVertexFaces
GetVertexFaceUV
GetVertexNormals
GetVerticesWithAttribute
GetVerticesWithColor
GetVerticesWithNormal
GetVerticesWithUV
MergeVertices
RaycastLocal
Rückgaben
Code-Beispiele
EditableMesh:RaycastLocal()
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- Initialisieren Sie EditableMesh im Raum
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
-- Funktion, die einen Strahl vom gegebenen Punkt aus castet und den Weltpunkt des Treffers sowie die UV-Koordinate zurückgibt
local function castRayFromCamera(meshPart: MeshPart, editableMesh: EditableMesh, viewportPoint: Vector3)
if not meshPart then
return
end
-- Berechnen, wie viel das Objekt in jeder Dimension skaliert wird
local renderScale = meshPart.Size / meshPart.MeshSize
-- Erstellen Sie einen Strahl von der Kamera in Richtung eines geklickten Punktes
local ray = Workspace.CurrentCamera:ViewportPointToRay(viewportPoint.X, viewportPoint.Y)
-- In den Objektbereich umwandeln, um ihn mit RaycastLocal() zu verwenden
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
-- Keine Flächen getroffen
return
end
-- Berechnen Sie den Trefferpunkt im Weltbereich
local worldHitPoint = meshPart.CFrame:PointToWorldSpace(point * renderScale)
-- Holen Sie sich die UVs auf der Fläche
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)
-- Interpolieren Sie die UVs innerhalb der Fläche basierend auf der baryzentrischen Koordinate
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
Parameter
Rückgaben
()
SetFacsCorrectivePose
SetFacsPose
Parameter
Rückgaben
()
SetNormal
SetPosition
SetVertexBones
SetVertexBoneWeights
SetVertexFaceColor
SetVertexFaceNormal
SetVertexFaceUV
Triangulate
EditableMesh:Triangulate():()
Rückgaben
()