EditableMesh
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
EditableMesh ändert die angewendete visuelle Mesh, wenn es mit einem MeshPart verbunden wird, und ermöglicht die Anfrage und Änderung der Mesh sowohl in Studio als auch im Erlebnis.
Aktivieren für veröffentlichte Erlebnisse
Zum Sicherheitszweck scheitert die Verwendung von EditableMesh für veröffentlichte Erlebnisse standardmäßig.Um die Nutzung zu aktivieren, musst du verifiziert sein 13+ Alter und ID verifiziert.Nachdem du verifiziert wurdest, öffne Studio's Spieleinstellungen, wähle Sicherheit aus und aktiviere den Allow Mesh / Image APIs Schalter.
Berechtigungen
Um Missbrauch zu verhindern, erlaubt AssetService:CreateEditableMeshAsync() nur das Laden und Bearbeiten von Mesh-Assets:
- Diese gehören dem Ersteller des Erlebnisses (wenn das Erlebnis von einer Person besessen wird).
- Diese gehören einer Gruppe (wenn das Erlebnis der Gruppe gehört).
- Diese gehören dem angemeldeten Studio-Benutzer (wenn die Platzdatei noch nicht auf Roblox gespeichert oder veröffentlicht wurde).
Speichergrenzen
Bearbeitbare Assets sind derzeit teuer für die Speicherverwendung.Um seine Auswirkungen auf die Client-Leistung zu minimieren, hat EditableMesh strenge Client-Speicherbudgets, obwohl der Server, Studio und Plugins mit unbegrenztem Speicher arbeiten.Die Verwendung von FixedSize kann Ihnen helfen, innerhalb des Speicherbudgets zu bleiben, und in einigen Szenarien kann das Verknüpfen einer EditableMesh mit mehreren MeshParts (Multi-Referenz) bei der Speicheroptimierung helfen.
Erstellung und Anzeige
Ein EditableMesh kann aus einem vorhandenen Content eines MeshPart oder einer Mesh-ID mit AssetService:CreateEditableMeshAsync() erstellt werden, oder ein leeres EditableMesh kann mit AssetService:CreateEditableMesh() erstellt werden.Es kann dann angezeigt, modifiziert und sein Kollisionsmodell aktualisiert werden.Nicht alle Schritte sind notwendig; zum Beispiel möchten Sie vielleicht ein EditableMesh erstellen, um es nur zu raycasten, ohne es jemals anzuzeigen.
local AssetService = game:GetService("AssetService")
-- Leeres bearbeitbares Netz erstellen
local editableMesh = AssetService:CreateEditableMesh()
-- Erstellen von bearbeitbarem Netz aus Asset-ID
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID))
end)
-- Erstellen von bearbeitbarem Netz aus einem anderen bearbeitbaren Netz
local editableMeshFromAnother = nil
local success, errorMessage = pcall(function()
editableMeshFromAnother = AssetService:CreateEditableMeshAsync(Content.fromObject(OTHER_EDITABLE_MESH))
end)
-- Erstellen von bearbeitbaren Meshes aus MeshPart
local editableMeshFromMeshPart = nil
local success, errorMessage = pcall(function()
editableMeshFromMeshPart = AssetService:CreateEditableMeshAsync(MESH_PART.MeshContent)
end)
Ein EditableMesh wird angezeigt, wenn es mit einem neuen MeshPart verbunden ist, durch AssetService:CreateMeshPartAsync() .Du kannst mehr Instanzen erstellen, die auf dasselbe referenzieren oder auf eine bestehende durch verlinken.
local AssetService = game:GetService("AssetService")
local Workspace = game:GetService("Workspace")
-- Erstellen von bearbeitbarem Netz aus Asset-ID
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID))
end)
-- Erstellen Sie ein neues MeshPart, das mit dem bearbeitbaren Mesh verbunden ist
local newMeshPart = nil
local success, errorMessage = pcall(function()
newMeshPart = AssetService:CreateMeshPartAsync(Content.fromObject(editableMeshFromAsset))
end)
-- Alternativ verknüpfe das neue MeshPart, das oben erstellt wurde, mit einem bestehenden MeshPart
local existingMeshPart = Workspace:FindFirstChild("EXISTING_MESH_PART")
existingMeshPart:ApplyMesh(newMeshPart)
Um die Kollision und Fluidgeometrie nach der Bearbeitung wieder neu zu berechnen, kannst du erneut AssetService:CreateMeshPartAsync() und MeshPart:ApplyMesh() anrufen, um eine vorhandene MeshPart zu aktualisieren.Es wird in der Regel empfohlen, dies am Ende einer konzeptionellen Bearbeitung zu tun, nicht nach einzelnen Anrufen von Methoden, die Geometrie manipulieren.Visuelle Änderungen am Mesh werden immer sofort von der Engine reflektiert, ohne dass AssetService:CreateMeshPartAsync() aufgerufen werden muss.
Fixierte Größenmeshes
Wenn ein EditableMesh aus einem bestehenden Mesh-Asset erstellt wird (via AssetService:CreateEditableMeshAsync() ), wird das daraus resultierende bearbeitbare Mesh standardmäßig mit einer festen Größe fixiert.Fixierte Netze sind in Bezug auf Speicher effizienter, aber Sie können nicht die Anzahl von Vektoren, Gesichtern oder Attributen ändern.Nur die Werte der vertex-Attribute und Positionen können bearbeitet werden.
local AssetService = game:GetService("AssetService")
-- Erstellen von bearbeitbarem Netz ohne feste Größe Standard
local editableMeshFromAsset = nil
local success, errorMessage = pcall(function()
editableMeshFromAsset = AssetService:CreateEditableMeshAsync(Content.fromAssetId(ASSET_ID), {FixedSize = false})
end)
Stabile Vexel/Gesicht-IDs
Viele EditableMesh -Methoden nehmen vertex , normal , UV , Farbe und Gesicht IDs.Diese werden als Ganzzahlen in Luau dargestellt, aber sie erfordern eine spezielle Handhabung.Der Hauptunterschied besteht darin, dass IDs stabil sind und sie gleich bleiben, auch wenn sich andere Teile des Meshes ändern.Wenn zum Beispiel ein EditableMesh fünf Verteile hat {1, 2, 3, 4, 5} und Sie den Verteiler 4 entfernen, werden die neuen Verteile {1, 2, 3, 5} sein.
Beachten Sie, dass die IDs nicht garantiert in Ordnung sind und es möglicherweise Lücken in der Nummerierung gibt, so dass Sie beim Durchlaufen von Knoten oder Gesichtern durch die Tabelle, die von GetVertices() oder GetFaces() zurückgegeben wird, durchlaufen sollten.
Vertex-Attributte aufteilen
Ein Vertex ist ein Eck eines Gesichts und verbindet Gesichter topologisch miteinander.Vertices können mehrere Attribute haben: Position, Normal, UV-Koordinate, Farbe und Transparenz.
Manchmal ist es für alle Gesichter, die einen Vektor berühren, nützlich, die gleichen Attributswerte zu verwenden, aber manchmal möchten Sie, dass verschiedene Gesichter verschiedene Attributswerte auf demselben Vektor verwenden.Zum Beispiel auf einer glatten Kugel wird jeder Vektor nur eine einzige Norm haben.Im Gegensatz dazu wird an der Ecke eines Würfels der Vektor 3 verschiedene Normale haben (eins für jedes angrenzende Gesicht).Du kannst auch Nähte in den UV-Koordinaten oder scharfe Änderungen in den Vektorfarben haben.
Wenn Gesichter erstellt werden, wird jederVertex standardmäßig eines jedes Attributes haben: ein normales, eine UV-Koordinate und eine Farbe/Transparenz.Wenn du eine Naht erstellen möchtest, solltest du neue Attribute erstellen und sie auf dem Gesicht setzen.Zum Beispiel erstellt dieser Code einen scharfen Würfel:
local AssetService = game:GetService("AssetService")
-- Angesichts von 4 Gipfel-IDs fügt es ein neues Normal und 2 Dreieck hinzu, um einen scharfen Quad zu bilden
local function addSharpQuad(editableMesh, vid0, vid1, vid2, vid3)
local nid = editableMesh:AddNormal() -- Dies erstellt eine normale ID, die automatisch berechnet wird
local fid1 = editableMesh:AddTriangle(vid0, vid1, vid2)
editableMesh:SetFaceNormals(fid1, {nid, nid, nid})
local fid2 = editableMesh:AddTriangle(vid0, vid2, vid3)
editableMesh:SetFaceNormals(fid2, {nid, nid, nid})
end
-- Erstellt einen Würfel mit abgeflachten Kanten zwischen den 6 Seiten
local function makeSharpCube()
local editableMesh = AssetService:CreateEditableMesh()
local v1 = editableMesh:AddVertex(Vector3.new(0, 0, 0))
local v2 = editableMesh:AddVertex(Vector3.new(1, 0, 0))
local v3 = editableMesh:AddVertex(Vector3.new(0, 1, 0))
local v4 = editableMesh:AddVertex(Vector3.new(1, 1, 0))
local v5 = editableMesh:AddVertex(Vector3.new(0, 0, 1))
local v6 = editableMesh:AddVertex(Vector3.new(1, 0, 1))
local v7 = editableMesh:AddVertex(Vector3.new(0, 1, 1))
local v8 = editableMesh:AddVertex(Vector3.new(1, 1, 1))
addSharpQuad(editableMesh, v5, v6, v8, v7) -- Vordere
addSharpQuad(editableMesh, v1, v3, v4, v2) -- Zurück
addSharpQuad(editableMesh, v1, v5, v7, v3) -- Linker
addSharpQuad(editableMesh, v2, v4, v8, v6) -- Rechts
addSharpQuad(editableMesh, v1, v2, v6, v5) -- Unten
addSharpQuad(editableMesh, v3, v7, v8, v4) -- Oben
editableMesh:RemoveUnused()
return editableMesh
end
Wickeln
Mesh-Gesichter haben eine Vorderseite und eine Rückseite.Wenn Meshes gezeichnet werden, werden nur die Vorderseiten der Gesichter standardmäßig gezeichnet, obwohl Sie dies ändern können, indem Sie die Eigenschaft des Meshes auf festlegen.
Die Reihenfolge der Vertikale um das Gesicht bestimmt, ob du auf die Vorderseite oder die Rückseite schaust.Die Vorderseite des Gesichts ist sichtbar, wenn die Gipfel im Uhrzeigersinn um sie herum gehen.

FACS-Positionen
Animierbare Köpfe verwenden das Facial Action Coding System (FACS).Siehe die FACS-Posenreferenz für hilfreiche Informationen bei der Verwendung von GetFacsPoses() und ähnlichen Methoden.
Jede FACS-Position wird durch einen Enum.FacsActionUnit Wert angegeben.Für die FACS-Pose können virtuelle Knochen jedes ein CFrame haben, das die ursprünglichen Knochen CFrame in der Bind-Pose des Meshes in die CFrame für die Pose der FACS-Aktionseinheit umwandelt.Alle Knochen CFrames sind im lokalen Raum des Meshes.
Diese FACS-Posen werden während der Animation zusammen gemischt.Manchmal produziert das Mischen der Basisposen schlechte Ergebnisse.In diesen Fällen kannst du die Mischung bestimmter Kombinationen von Grundstellungen mit einer korrigierenden Korrekturpose, die angenehmer ist, überschreiben.Eine korrigierende Pose wird durch 2 oder 3 Enum.FacsActionUnit Werte angegeben.Wie eine Basis-FACS-Pose, für eine korrigierende Pose können virtuelle Knochen jedes ein CFrame haben, das die ursprüngliche CFrame der Knochen in der Bind-Pose des Netzes in die CFrame für diese FACS-Korrektur verwandelt.
Beschränkungen
EditableMesh hat derzeit ein Limit von 60.000 Kanten und 20.000 Dreieck. Wenn du zu viele Kanten oder Dreieck hinzufügst, wird ein Fehler auftreten.
Zusammenfassung
Eigenschaften
Gibt true zurück, wenn ein Mesh eine feste Größe hat.
Methoden
Fügt einer Geometrie eine neue Farbe hinzu und gibt eine stabile Farb-ID zurück.
Fügt ein neues Normal zur Geometrie hinzu und gibt eine stabile normale ID zurück.
Fügt einem Netz ein neues Dreieck hinzu und gibt eine stabile Gesichts-ID zurück.
Fügt eine neue UV zur Geometrie hinzu und gibt eine stabile UV-ID zurück.
Fügt einen neuen Vektor zur Geometrie hinzu und gibt eine stabile Vektor-ID zurück.
Zerstört das Netz.
Findet den nächsten Punkt auf der Oberfläche des Meshes.
Findet den nächstenVertex zu einem bestimmten Punkt im Raum.
Findet alle Vektoren innerhalb einer bestimmten Sphäre.
Gibt eine Liste von Gesichtern zurück, die sich neben einem bestimmten Gesicht befinden.
Gibt eine Liste von Kanten zurück, die zu einem bestimmten Knoten adjekt sind.
Gibt die Farbe für die angegebene Farb-ID zurück.
Gibt die Farbe alpha (Transparenz) bei der angegebenen Farb-ID zurück.
Gibt alle Farben des Meshes zurück.
Gibt die Farb-IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Gibt die normalen IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Gibt die UV-IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Gibt die vertex-IDs des Gesichts zurück.
Gibt alle Gesichter des Meshes zurück.
Gibt den normalen Vektor für die angegebene normale ID zurück.
Gibt alle Normals des Meshes zurück.
Holt die Position eines Verts.
Gibt UV-Koordinaten bei der angegebenen UV-ID zurück.
Gibt alle UVs des Meshes zurück.
Gibt alle Kanten als Liste stabiler Kanten-IDs zurück.
Gibt eine Zeichenkette zurück, die eine stabile ID beschreibt, nützlich für Fehlerbehebungszwecke.
Verschmilzt Kanten, die sich berühren.
Entfernt ein Gesicht mit seiner stabilen Gesichts-ID.
Entfernt alle unbenutzten vertexe, normale, uvs und farben und gibt die entfernten ids zurück.
Setze diese normale ID zurück, um sie automatisch berechnet zu werden.
Legt die Farbe für eine Farb-ID fest.
Legt die Farbe alpha (Transparenz) für eine Farb-ID fest.
Setzt die Gipfelfarben des Gesichts auf neue Farb-IDs.
Setzt die Normalvektoren des Gesichts auf neue normale IDs.
Setzt die UV-Vektoren des Gesichts auf neue UV-IDs.
Setzt die Gipfel des Gesichts auf neue Gipfel-IDs.
Setze das Normale für eine normale ID.
Setzt eineVertex-Position im lokalen Objektbereich des Meshes.
Legt UV-Koordinaten für eine UV-ID fest.
Teilt alle Gesichter auf dem Netz in Dreieckform auf.
Ereignisse
Eigenschaften
FixedSize
Fixierte Meshes ermöglichen es, die Werte von vertex-Attributen zu ändern, erlauben aber nicht, dass vertex und Dreieck hinzugefügt oder gelöscht werden.
Methoden
AddColor
Fügt einer Geometrie eine neue Farbe hinzu und gibt eine stabile Farb-ID zurück.
Parameter
Die neue Farbe.
Die Farbe alpha (Transparenz).
Rückgaben
Stabile Farb-ID der neuen Farbe.
AddNormal
Fügt ein neues Normal zur Geometrie hinzu und gibt eine stabile normale ID zurück. Wenn der normale Wert nicht angegeben wird, wird der Normale automatisch berechnet.
Parameter
Der normale Vektor. Wenn der normale Wert nicht angegeben wird, wird der normale automatisch berechnet.
Rückgaben
Stabile normale ID des neuen Normalen.
AddTriangle
Fügt einem Netz ein neues Dreieck hinzu und gibt eine stabile Gesichts-ID zurück.
Parameter
ID des ersten Vektors des Dreieckes.
ID des zweiten Vektors des Dreieckes.
ID des dritten Vektors des Dreieckes.
Rückgaben
Stabile Gesichts-ID des neuen Gesichts.
AddUV
Fügt eine neue UV zur Geometrie hinzu und gibt eine stabile UV-ID zurück.
Parameter
Die neue UV-Koordinate.
Rückgaben
Stabile UV-ID des neuen UV.
AddVertex
Fügt einen neuen Vektor zur Geometrie hinzu und gibt eine stabile Vektor-ID zurück.
Parameter
Position im lokalen Objektbereich des Meshes.
Rückgaben
Stabile Vektor-ID des neuen Vektors.
Destroy
Zerstört den Inhalt des Meshes und holt sofort verwendetes Speicher zurück.
Rückgaben
FindClosestPointOnSurface
Findet den nächsten Punkt auf der Oberfläche des Meshes.Gibt die Gesichts-ID zurück, zeigt auf das Mesh im lokalen Objektbereich und die baryzentrische Koordinate der Position innerhalb des Gesichts.Siehe RaycastLocal() für weitere Informationen zu baryzentrischen Koordinaten.
Parameter
Punktposition im lokalen Objektbereich des Meshes.
Rückgaben
Triple der Gesichts-ID, Punkt auf dem Mesh im lokalen Objekt-Raum und die baryzentrische Koordinate der Position innerhalb des Gesichts.
FindClosestVertex
Findet den nächsten Vektor zu einem bestimmten Punkt im Raum und gibt eine stabile Vektor-ID zurück.
Parameter
Punktposition im lokalen Objektbereich des Meshes.
Rückgaben
Die engste stabile Vektor-ID zum angegebenen Punkt im Raum.
FindVerticesWithinSphere
Findet alle Vektoren innerhalb einer bestimmten Sphäre und gibt eine Liste stabiler Vektor-IDs zurück.
Parameter
Zentrum der Kugel im lokalen Objektbereich des Meshes.
Radius der Kugel.
Rückgaben
Liste stabiler Vektor-IDs innerhalb der angeforderten Sphäre.
GetAdjacentFaces
Angesichts einer stabilen Gesichts-ID gibt er eine Liste der benachbarten Gesichter zurück.

Parameter
Rückgaben
Liste der Gesichts-IDs, die dem angegebenen Gesicht gegenüberliegen.
GetAdjacentVertices
Angesichts einer stabilen vertex-ID gibt es eine Liste von benachbarten vertexen zurück.

Parameter
Vertex-ID, um adjakente Kanten zu erhalten.
Rückgaben
Liste der IDs der angrenzenden Vervalte um die angegebene Vervalte-ID.
GetColor
Gibt die Farbe für die angegebene Farb-ID zurück.
Parameter
Farben-ID, für die die Farbe abgerufen werden soll.
Rückgaben
Farbe für die angeforderte stabile Farb-ID.
GetColorAlpha
Gibt die Farbe alpha (Transparenz) bei der angegebenen stabilen Farb-ID zurück.
Parameter
Farben-ID, für die man die Alpha erhalten soll.
Rückgaben
Farbe alpha bei der Anfrage stabiler Farb-ID.
GetColors
Gibt alle Farben des Meshes als Liste stabiler Farb-IDs zurück.
Rückgaben
Liste der stabilen Farb-IDs.
GetFaceColors
Gibt die Farb-IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Parameter
Gesichts-ID, für die die Farb-IDs erhalten werden sollen.
Rückgaben
Liste der Farb-IDs, die für die Kanten auf dem angegebenen Gesicht verwendet werden.
GetFaceNormals
Gibt die normalen IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Parameter
Gesichts-ID, für die die normalen IDs erhalten werden.
Rückgaben
Liste der normalen IDs, die für die Vertexte auf dem angegebenen Gesicht verwendet werden.
GetFaceUVs
Gibt die UV-IDs des Gesichts für die Kanten auf dem Gesicht zurück.
Parameter
Gesichts-ID, für die UV-IDs erhalten werden sollen.
Rückgaben
Liste der UV-IDs, die für die Vervorlagen auf dem angegebenen Gesicht verwendet werden.
GetFaceVertices
Gibt die vertex-IDs des Gesichts zurück.
Parameter
Rückgaben
Liste der vertex-IDs rund um das angegebene Gesicht.
GetFaces
Gibt alle Gesichter des Meshes als Liste stabiler Gesichts-IDs zurück.
Rückgaben
Liste stabiler Gesichts-IDs.
GetNormal
Gibt den normalen Vektor für die angegebene normale ID zurück.
Parameter
Normale ID, für die der normale Vektor erhalten werden soll.
Rückgaben
Normale Vektor bei der angeforderten normalen ID.
GetNormals
Gibt alle Normals des Meshes als Liste stabiler Normal-IDs zurück.
Rückgaben
Liste von stabilen normalen IDs.
GetPosition
Holt die Position eines Verts im lokalen Objektbereich der Mesh.
Parameter
StabileVertex-ID, für die die Position bereitgestellt werden soll.
Rückgaben
Position eines Verts im lokalen Objektbereich des Meshes.
GetUV
Gibt UV-Koordinaten bei der angegebenen UV-ID zurück.
Parameter
UV-ID, für die die UV-Koordinate bereitgestellt werden soll.
Rückgaben
UV-Koordinaten bei der angeforderten UV-ID.
GetUVs
Gibt alle UVs des Meshes als Liste stabiler UV-IDs zurück.
Rückgaben
Liste der stabilen UV-IDs.
GetVertices
Gibt alle Kanten als Liste stabiler Kanten-IDs zurück.
Rückgaben
Liste der stabilen vertex-IDs.
IdDebugString
Gibt eine Zeichenkette zurück, die eine stabile ID beschreibt, nützlich für Debugging-Zwecke, wie f17 oder v12, die den Typ, die ID-Nummer und die Version enthält.
Parameter
ID, für die ein Rückgabestreifen mit Debugging-Informationen zurückgegeben werden soll.
Rückgaben
Schnur, die die ID in einem menschlich lesbaren Format beschreibt.
MergeVertices
Verschmilzt Kanten, die zusammen berühren, um eine einzige Kanten-ID zu verwenden, aber die anderen ursprünglichen Attribut-IDs beizubehalten.
Parameter
Die Entfernung, in der die Kanten miteinander berührt werden sollen.
Rückgaben
Eine Mapping von altenVertex-ID zu neuenVertex-ID für Vektoren, die zusammengeführt wurden.
RaycastLocal
Wirft einen Strahl und gibt einen Punkt der Intersektion, eine Gesichts-ID und baryzentrische Koordinaten zurück.Die Eingänge und Ausgänge dieser Methode befinden sich im lokalen Objektbereich des Meshes.
Eine baryzentrische Koordinate ist eine Möglichkeit, einen Punkt innerhalb eines Gesichts als eine gewichtete Kombination der 3 Verticke des Gesichts zu spezifizieren.Dies ist nützlich als allgemeine Art,Vertex-Attributen zu mischen.Sehen Sie den Code-Beispiel dieser Methode als Illustration.
Parameter
Herkunft des Strahls im lokalen Objektbereich des Meshes.
Richtung des Strahls.
Rückgaben
Triple des Punkts der Intersektion, Gesichts-ID und baryzentrischer Koordinaten.
Code-Beispiele
This code finds the position and UV coordinates of the closest point on an EditableMesh to the input point.
local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
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
print(errorMsg)
end
local function castRayFromCamera(position)
if not meshPart then
return
end
-- Create ray from camera along the direction of a clicked point
local camera = workspace.CurrentCamera
local ray = camera:ScreenPointToRay(position.X, position.Y)
-- Convert to object space to use with RaycastLocal()
local relativeOrigin = meshPart.CFrame:PointToObjectSpace(ray.Origin)
local relativeDirection = meshPart.CFrame:VectorToObjectSpace(ray.Direction)
local triangleId, point, barycentricCoordinate
triangleId, point, barycentricCoordinate = editableMesh:RaycastLocal(relativeOrigin, relativeDirection * 100)
if not triangleId then
-- Didn't hit any triangles
return
end
-- Interpolate UVs within the triangle
local vert1, vert2, vert3 = editableMesh:GetTriangleVertices(triangleId)
local uv0 = editableMesh:GetUV(vert1)
local uv1 = editableMesh:GetUV(vert2)
local uv2 = editableMesh:GetUV(vert3)
local u = (barycentricCoordinate.x * uv0.x) + (barycentricCoordinate.y * uv1.x) + (barycentricCoordinate.z * uv2.x)
local v = (barycentricCoordinate.x * uv0.y) + (barycentricCoordinate.y * uv1.y) + (barycentricCoordinate.z * uv2.y)
return Vector2.new(u, v)
end
RemoveFace
Entfernt ein Gesicht mit seiner stabilen Gesichts-ID.
Parameter
Rückgaben
RemoveUnused
Entfernt alle Kanten, Normale, UVs und Farben, die in keinem Gesicht verwendet werden, und gibt die entfernten IDs zurück.
Rückgaben
Alle entfernten stabilen IDs.
ResetNormal
Setze diese normale ID auf eine automatische Berechnung basierend auf der Form des Meshes, anstatt manuell festgelegt.
Parameter
Stabile normale ID zum Zurücksetzen.
Rückgaben
SetColor
Legt die Farbe für eine Farb-ID fest.
Parameter
Stabile Farb-ID, für die die Farbe festgelegt werden soll.
Farbe zum Festlegen.
Rückgaben
SetColorAlpha
Legt die Farbe alpha (Transparenz) für eine Farb-ID fest.
Parameter
Stabile Farb-ID, für die die Farbe Alpha festgelegt werden soll.
Alpha zum Festlegen.
Rückgaben
SetFaceColors
Setzt die Gipfelfarben des Gesichts auf neue Farb-IDs.
Parameter
Gesichts-ID, für die die vertex-Farben aktualisiert werden sollen.
Liste neuer stabiler Farb-IDs, die für die Vervorlagen des angegebenen Gesichts verwendet werden sollen.
Rückgaben
SetFaceNormals
Setzt die Normalvektoren des Gesichts auf neue normale IDs.
Parameter
Gesichts-ID, um die vertex-Normale zu aktualisieren.
Liste neuer stabiler normaler IDs, die für die Vertikale des angegebenen Gesichts verwendet werden sollen.
Rückgaben
SetFaceUVs
Setzt die UV-Vektoren des Gesichts auf neue UV-IDs.
Parameter
Gesichts-ID, für die die vertex UVs aktualisiert werden sollen.
Liste neuer stabiler UV-IDs, die für die Vervorlagen des angegebenen Gesichts verwendet werden sollen.
Rückgaben
SetFaceVertices
Setzt die Gipfel des Gesichts auf neue Gipfel-IDs.
Parameter
Gesichts-ID, für die die vertices aktualisiert werden sollen.
Liste der neuen stabilen vertex-IDs, die für das angegebene Gesicht verwendet werden sollen.
Rückgaben
SetNormal
Setze das Normale für eine normale ID. Dies ändert den normalen Wert für jeden Gesichtspunkt, der die normale ID verwendet.
Parameter
Stabile normale ID, für die der normale Vektor festgelegt werden soll.
Normale Vektor zum Festlegen.
Rückgaben
SetPosition
Setzt eineVertex-Position im lokalen Objektbereich des Meshes.
Parameter
StabileVertex-ID des Verts zum Positionieren.
Position im lokalen Objektbereich des Meshes.
Rückgaben
SetUV
Legt UV-Koordinaten für eine UV-ID fest.
Parameter
UV-ID, für die die UV-Koordinaten festgelegt werden.
UV Koordinaten.
Rückgaben
Triangulate
Teilt alle Gesichter auf dem Netz in Dreieckform auf.Derzeit tut dies nichts, da nur Dreieck erstellt werden können, aber wenn dein Code auf Dreieck angewiesen ist, wird empfohlen, diese Methode aufzurufen, nachdem du AssetService:CreateEditableMeshAsync() aufgerufen hast.