EditableMesh
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
EditableMesh ändert das angewandte visuelle Mesh, wenn es mit einem MeshPart verbunden ist, um die Mesh sowohl im Studio als auch im Erlebnis zu überprüfen und zu modifizieren.
Ein EditableMesh kann aus einem bestehenden Content eines MeshPart oder mit 2>Class.AssetService:Create
Ein EditableMesh wird angezeigt, wenn es mit einem neuen MeshPart verbunden ist, durch AssetService:CreateMeshPartAsync(). Sie können mehr 2>Class.MeshPart2> Instanzen erstellen, die auf dieselben 5>Class.MeshPart5>
Wenn Sie AssetService:CreateMeshPartAsync() aufrufen, wird die Kollision und die FlüssigGeometry mit jeder Bearbeitung und Aktualisierung des vorhandenen MeshPart erneut berechnet. Es wird in der Regel empfohlen, dies am Ende eines Konzept-Bearbeitungsprozesses zu tun. MeshPart:ApplyMesh() wird die Koll
Stable Vertex/Face-IDs
Viele EditableMesh Methoden nehmen Verz , normal
Beachten Sie, dass die IDs nicht garantiert in der Reihenfolge sind und es möglicherweise Löcher in der Nummerierung geben kann, so dass wenn Sie durch Vertice oder Gesichter scrollen, sollten Sie durch die Tabelle zurückgegeben von GetVertices() oder GetFaces() .
Split-Vertex-Attributs
Ein Verzehr ist ein Eck eines Gesichts und verbindet Gesichter mithilfe der Topologie. Ein Vertikal kann mehrere Attribute haben: Position, Normal, UV-Koordinaten, Farbe und Transparenz.
Manchmal ist es nützlich für alle Gesichter, die einen Verzehr berühren, um die gleichen Attribute-Werte zu verwenden, aber manchmal möchten Sie, dass verschiedene Gesichter auf demselben Verzehr verschiedene Attribute-Werte verwenden. Zum Beispiel, auf einer glatten Kugel, wird jedes Verzehr nur einen einzigen Normal haben. Im Gegensatz dazu, an der Ecke eines Würfels, wird der Verzehr 3 verschiedene Normals (eins für jedes
Wenn Sie Gesichter erstellen, wird standardmäßig jedes Vertex ein Attribut haben: ein normales, ein UV-Koordinat und eine Farbe/Transparenz. Wenn Sie einen Seam erstellen möchten, sollten Sie neue Attribute erstellen und sie auf dem Gesicht einrichten. Zum Beispiel wird dieser Code einen scharfen Würfel erstellen:
local AssetService = game:GetService("AssetService")
-- Angesichts von 4 Verzehr-IDs fügt es ein neues Normal und 2 Dreieck hinzu, wodurch ein scharfes Quad entsteht
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Dies erstellt eine normale ID, die automatisch berechnet wird
local fid1 = eMesh:AddTriangle(vid0, vid1, vid2)
eMesh:SetFaceNormals(fid1, {nid, nid, nid})
local fid2 = eMesh:AddTriangle(vid0, vid2, vid3)
eMesh:SetFaceNormals(fid2, {nid, nid, nid})
end
-- Erzeugt einen Würfel mit gekrümmten Kanten zwischen den 6 Seiten
local function makeSharpCube()
local eMesh = AssetService:CreateEditableMesh()
local v1 = eMesh:AddVertex(Vector3.new(0, 0, 0))
local v2 = eMesh:AddVertex(Vector3.new(1, 0, 0))
local v3 = eMesh:AddVertex(Vector3.new(0, 1, 0))
local v4 = eMesh:AddVertex(Vector3.new(1, 1, 0))
local v5 = eMesh:AddVertex(Vector3.new(0, 0, 1))
local v6 = eMesh:AddVertex(Vector3.new(1, 0, 1))
local v7 = eMesh:AddVertex(Vector3.new(0, 1, 1))
local v8 = eMesh:AddVertex(Vector3.new(1, 1, 1))
addSharpQuad(eMesh, v5, v6, v8, v7) -- Vorderseite
addSharpQuad(eMesh, v1, v3, v4, v2) -- Zurück
addSharpQuad(eMesh, v1, v5, v7, v3) -- Links
addSharpQuad(eMesh, v2, v4, v8, v6) -- Richtig
addSharpQuad(eMesh, v1, v2, v6, v5) -- Unterseite
addSharpQuad(eMesh, v3, v7, v8, v4) -- Oben
eMesh:RemoveUnused()
return eMesh
end
Wickeln
Meshes haben eine Vorder- und eine Rückseite. Wenn Sie Meshes zeichnen, wird standardmäßig nur die Vorderseite der Gesichter gezeichnet, obwohl Sie dies durch die Festlegung der Meshes-Eigenschaft DoubleSided auf true ändern können.
Die Reihenfolge der Vertipper um die Wange bestimmt, ob Sie auf die Vorderseite oder auf die Zurückschauen. Die Vorderseite der Wange ist sichtbar, wenn die Vertipper gegen den Uhrzeigersinn um sie herumgehen.
Beschränkungen
EditableMesh hat derzeit ein Limit von 60.000 Verzahnungen und 20.000 Dreieck. Wenn Sie versuchen, zu viele Verzahnungen oder Dreieck hinzuzufügen, wird ein Fehler angezeigt.
Zusammenfassung
Methoden
Fügt der Geometrie eine neue Farbe hinzu und gibt eine stabile Farb-ID zurück.
Fügt der Geometrie ein neues Normal hinzu und gibt eine stabile normale ID zurück.
Fügt dem Netz ein neues Dreieck hinzu und gibt eine stabile Gesichts-ID zurück.
Fügt der Geometrie ein neues UV hinzu und gibt eine stabile UV-ID zurück.
Fügt eine neue Verzahnung der Geometrie hinzu und gibt eine stabile Verzahnungs-ID zurück.
Findet den nächsten Punkt auf der Oberfläche des Mesh.
Findet den nächsten Verweis zu einem bestimmten Punkt im Platz.
Findet alle Knoten innerhalb einer bestimmten Kugel.
Gibt eine Liste von Gesichtern zurück, die einer bestimmten Gesicht gegenüberstehen.
Gibt eine Liste von Verknüpfungen mit einem bestimmten Verknüpfungszentrum zurück.
Gibt die Farbe für die angegebene Farb-ID zurück.
Gibt die Farb alpha (Transparenz) an der angegebenen Farb-ID zurück.
Kehre alle Farben des Meshes zurück.
Kehre die Gesichtsfarben-ID für die Vertipper auf dem Gesicht zurück.
Rückgibt die normalen IDs des Gesichts für die Vertipper auf dem Gesicht.
Rückgibt die UV-ID des Gesichts für die Vertipper auf dem Gesicht.
Rückt die Verzehr-IDs des Gesichts zurück.
Kehrt alle Gesichter des Meshes zurück.
Kehrt eine Liste von Gesichtern zurück, die eine angegebene Attribute-ID verwenden.
Rückgibt den normalen Vector für die angegebene normale ID.
Kehrt alle Normale des Meshes zurück.
Bekommt die Position eines Verknotens.
Rückgibt UV-Koordinaten bei der angegebenen UV-ID.
Kehrt alle UVs des Meshes zurück.
Rückgibt alle Knoten als Liste von stellen Knoten-IDs.
Rückgibt eine Liste von Verknüpfungen, die eine angegebene Attribute-ID verwenden.
Gibt eine Strings zurück, die eine stabile ID beschreibt, nützlich fürDebugging-Zwecke.
Verschmelzt vertikale, die zusammen berühren.
Entfernt ein Gesicht mit seiner stabilen Gesichts-ID.
Entfernt alle nicht verwendeten Verzahnungen, Normale, UVs und Farben und gibt die entfernten IDs zurück.
Setzen Sie diese normale ID zurück, um automatisch berechnet zu werden.
Setzt die Farbe für eine Farb-ID.
Setzt die FarbAlpha (Transparenz) für eine FarbID.
Setzt die Farben des Gesichtsverzehrs auf neue Farb-IDs.
Setzt die Gesichtsvertise-Normale auf neue normale IDs.
Setzt die UV-Farben des Gesichts auf neue UV-IDs.
Setzt die Gesichtsvерte auf neue Verzehr-IDs.
Setzen Sie die Normal für eine normale ID.
Setzt eine Verzahnungsposition im lokalen Objekt des Mesh.
Setzt UV-Koordinaten für eine UV-ID.
Teilt alle Gesichter auf dem Netz in Dreieck.
Ereignisse
Eigenschaften
Methoden
AddColor
Fügt der Geometrie eine neue Farbe hinzu und gibt eine stabile Farb-ID zurück.
Parameter
Rückgaben
Stable Farb-ID der neuen Farbe.
AddNormal
Fügt der Geometrie ein neues Normal hinzu und gibt eine stabile normale ID zurück. Wenn der normale Wert nicht angegeben wird, wird die normale automatisch berechnet.
Parameter
Der normale Vektorkraft. Wenn der normale Wert nicht angegeben wird, wird der normale automatisch berechnet.
Rückgaben
Stable normale ID der neuen normalen.
AddTriangle
Fügt dem Netz ein neues Dreieck hinzu und gibt eine stabile Gesichts-ID zurück.
Parameter
ID der ersten Verzahnung des Dreieckes.
ID des zweiten Verfalls des Dreieckes.
ID der dritten Verzahnung des Dreieckes.
Rückgaben
Stable Gesicht-ID des neuen Gesichts.
AddUV
Fügt der Geometrie ein neues UV hinzu und gibt eine stabile UV-ID zurück.
Parameter
Die neue UV-Koordinaten.
Rückgaben
Stable UV-ID der neuen UV.
AddVertex
Fügt eine neue Verzahnung der Geometrie hinzu und gibt eine stabile Verzahnungs-ID zurück.
Parameter
Position in dem lokalen Objekt des Meshes.
Rückgaben
Stable vertex ID des neuen Verwerks.
Destroy
Rückgaben
FindClosestPointOnSurface
Findet den nächsten Punkt auf der Messegitter-Oberfläche. Wird die Gesichts-ID, den Punkt auf dem Messegitter im lokalen Platzund die Baryzentrische Koordinate der Position innerhalb des Gesichts zurückgeben. Siehe RaycastLocal() für weitere Informationen zu Baryzentralkoordinaten.
Parameter
Punktposition im lokalen Platzdes Mesh.
Rückgaben
Tople der Gesichts-ID, zeigen Sie auf das Netz im lokalen Platzund die baryzentrische Koordinate der Position innerhalb des Gesichts.
FindClosestVertex
Findet den nächsten Verzehr zu einem bestimmten Punkt im Raum und gibt eine stabile Verzehr-ID zurück.
Parameter
Punktposition im lokalen Platzdes Mesh.
Rückgaben
Nächste stabile Verzehr-ID zum angegebenen Punkt im Platz.
FindVerticesWithinSphere
Findet alle Knoten innerhalb einer bestimmten Kugel und gibt eine Liste von statischen Verzeichnis-IDs zurück.
Parameter
Rückgaben
Liste der stetigen Verzehr-IDs innerhalb der angeforderten Sphäre.
GetAdjacentFaces
Gibt eine stabile Gesicht-ID an, gibt eine Liste von angrenzenden Gesichtern zurück.
Parameter
Rückgaben
Liste der Gesichts-IDs, die dem angegebenen Gesicht angrenzen.
GetAdjacentVertices
Gibt eine stabile Vertex-ID an, gibt eine Liste von angrenzenden Verteilern zurück.
Parameter
Vertex-ID, um angrenzende Vertex zu erhalten.
Rückgaben
Liste der IDs der angrenzenden Verzahnungen um die angegebene Verzahnungs-ID.
GetColor
Gibt die Farbe für die angegebene Farb-ID zurück.
Parameter
Farbe ID, für die die Farbe erhalten wird.
Rückgaben
Farbe für die angeforderte stabile Farb-ID.
GetColorAlpha
Gibt die Farbe Alpha (Transparenz) an der angegebenen stabilen Farb-ID zurück.
Parameter
Farbe ID, für die man die Alpha erhalten soll.
Rückgaben
Farbe alpha bei der Anfrage der stabilen Farbe ID.
GetColors
Kehre alle Farben des Meshes als Liste von statischen Farb-IDs zurück.
Rückgaben
Liste der stabilen Farb-IDs.
GetFaceColors
Kehre die Gesichtsfarben-ID für die Vertipper auf dem Gesicht zurück.
Parameter
Gesicht-ID, für die die Farb-IDs erhalten werden.
Rückgaben
Liste der verwendeten Farb-ID für die Verträge auf dem angegebenen Gesicht.
GetFaceNormals
Rückgibt die normalen IDs des Gesichts für die Vertipper auf dem Gesicht.
Parameter
Gesicht-ID, für die die normalen IDs erhalten werden.
Rückgaben
Liste der üblichen IDs, die für die Vertipper auf dem gegebenen Gesicht verwendet werden.
GetFaceUVs
Rückgibt die UV-ID des Gesichts für die Vertipper auf dem Gesicht.
Parameter
Gesicht-ID, für die man die UV-IDs erhalten kann.
Rückgaben
Liste der verwendeten UV-IDs für die Vertipper auf dem gegebenen Gesicht.
GetFaceVertices
Rückt die Verzehr-IDs des Gesichts zurück.
Parameter
Rückgaben
Liste der Verzeichen-IDs um das angegebene Gesicht.
GetFaces
Kehrt alle Gesichter des Meshes als Liste von stabilen Gesichts-IDs zurück.
Rückgaben
Liste der stabilen Gesichts-IDs.
GetFacesWithAttribute
Gibt eine Liste von Gesichtern zurück, die eine bestimmte Verwende ID, eine normale ID, eine UV-ID oder eine Farb-ID verwenden.
Parameter
Attribut-ID, für die Gesichter gefunden werden, die es verwenden.
Rückgaben
Liste der Gesichts-IDs, die die angegebene Attribute-ID verwenden.
GetNormal
Rückgibt den normalen Vector für die angegebene normale ID.
Parameter
Normale ID für den Erhalt des normalen Vektorkraft.
Rückgaben
Normaler Vector bei der angefordertenen normalen ID.
GetNormals
Rückgibt alle Normale des Meshes als Liste von stellen normalen IDs.
Rückgaben
Liste der gültigen normalen IDs.
GetPosition
Bekommt die Position eines Verknotens im Lokalen Platzdes Mesh.
Parameter
Stable vertex ID für die Position zu erhalten.
Rückgaben
Position eines Verknotens im lokalen Platzdes Mesh.
GetUV
Rückgibt UV-Koordinaten bei der angegebenen UV-ID.
Parameter
UV-ID für die Erhaltung der UV-Koordinaten.
Rückgaben
UV-Koordinaten bei der angeforderten UV-ID.
GetUVs
Rückgibt alle UVs des Meshes als Liste von stabilen UV-IDs.
Rückgaben
Liste der stabilen UV-IDs.
GetVertices
Rückgibt alle Knoten als Liste von stellen Knoten-IDs.
Rückgaben
Liste der stabilen Verzeichen-IDs.
GetVerticesWithAttribute
Rückgibt eine Liste von Verknüpfungen, die eine angegebene Gesichts-ID, eine normale ID, eine UV-ID oder eine Farb-ID verwenden.
Parameter
Attribut-ID für das Finden von Knoten, die es verwenden.
Rückgaben
Liste der Verwendung von Verwerte-IDs, die die angegebene Attribute-ID verwenden.
IdDebugString
Gibt eine Zeichenfolge zurück, die eine stabile ID beschreibt, nützlich fürDebug-Zwecke, wie f17 oder v12, die den eingeben, die ID-Nummer und die Version enthält.
Parameter
ID für die Rückgabe einer String.
Rückgaben
String, der die ID im menschlichen Lesbar-Format beschreibt.
MergeVertices
Verschmelzt vertikalen, die zusammen berühren, um eine einzige Vertikal-ID zu verwenden, aber die anderen ursprünglichen Attribut-IDs zu behalten.
Parameter
Die Entfernung, in der die Knoten miteinander berühren.
Rückgaben
Eine Umwandlung der alten Verzehr-ID in eine neue Verzehr-ID für Verzehre, die zusammengeführt wurden.
RaycastLocal
Wirft einen Strahl und gibt einen Intersektionspunkt, eine Gesichts-ID und baryzentrische Koordinaten zurück. Die Eingänge und Ausgänge dieser Methode sind im Mesh-lokalen Platz.
Ein baryzentrische Koordinate ist eine Möglichkeit, einen Punkt innerhalb eines Gesichts als Gewichtungskombination der 3 Verzahnungen des Gesichts zu spezifizieren. Dies ist nützlich als allgemeine Mischung von Verzahnungseigenschaften. Siehe Beispiel dieses Methoden als Illustration.
Parameter
Herkunft des Strahls im lokalen Objekt des Mesh.
Richtung des Strahls.
Rückgaben
Tople des Interektionspunkts, Gesichts-ID und baryzentrischen Koordinaten.
Code-Beispiele
local AssetService = game:GetService("AssetService")
-- Initialize EditableMesh in space
local success, editableMesh = pcall(function()
return AssetService:CreateEditableMeshAsync(Content.fromUri("rbxassetid://ASSET_ID"))
end)
local meshPart = nil
if success then
local initialSize = Vector3.new(1, 1, 1)
meshPart = editableMesh:CreateMeshPartAsync(initialSize)
meshPart.Parent = workspace
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 Knoten, Normale, UVs und Farben, die auf keinem Gesicht verwendet werden, und gibt die entfernten IDs zurück.
Rückgaben
Alle entfernten stabilen IDs.
ResetNormal
Setzen Sie diese normale ID auf die Standard-ID zurück, um automatisch basierend auf der Form des Meshes berechnet zu werden, anstatt manuell festlegen.
Parameter
Stable normale ID zum zurücksetzen.
Rückgaben
SetColor
Setzt die Farbe für eine Farb-ID.
Parameter
Rückgaben
SetColorAlpha
Setzt die FarbAlpha (Transparenz) für eine FarbID.
Parameter
Rückgaben
SetFaceColors
Setzt die Farben des Gesichtsverzehrs auf neue Farb-IDs.
Parameter
Gesichts-ID für die Aktualisierung der Vertex-Farben.
Liste der neuen stabilen Farb-IDs, die für die vertikalen des gegebenen Gesichts verwendet werden.
Rückgaben
SetFaceNormals
Setzt die Gesichtsvertise-Normale auf neue normale IDs.
Parameter
Gesicht-ID, für die die Vertex-Normale aktualisiert werden.
Liste neuer stabiler Normal-IDs, die für die vertretungen des Gesichts verwendet werden können.
Rückgaben
SetFaceUVs
Setzt die UV-Farben des Gesichts auf neue UV-IDs.
Parameter
Gesicht-ID, für die die Vertex-UV aktualisiert werden.
Liste der neuen stabilen UV-IDs, die für die vertikalen des gegebenen Gesichts verwendet werden.
Rückgaben
SetFaceVertices
Setzt die Gesichtsvерte auf neue Verzehr-IDs.
Parameter
Gesichts-ID für die Aktualisierung der Verträge.
Liste der neuen stabilen Verzeichen-IDs, die für das angegebene Gesicht verwendet werden.
Rückgaben
SetNormal
Setzen Sie die Norm für eine normale ID. Dies wird den normalen Wert für jede Gesichtsverzahnung ändern, die die normale ID verwendet.
Parameter
Stable normale ID für die Festlegung des normalen Vektorkraft.
Normaler Vektor zum festlegen.
Rückgaben
SetPosition
Setzt eine Verzahnungsposition im lokalen Objekt des Mesh.
Parameter
Stable vertex ID des Verwerks zu positionieren.
Position in dem lokalen Objekt des Meshes.
Rückgaben
SetUV
Setzt UV-Koordinaten für eine UV-ID.
Parameter
Rückgaben
Triangulate
Teilt alle Gesichter auf dem Netzwerk in Dreieck auf, um sie zu verdrehen. Derzeit tut dies nichts, da nur Dreieck erstellt werden können, aber wenn dein Code auf Dreieck basiert, wird empfohlen, diesen Methoden nach dem Aufrufen von AssetService:CreateEditableMeshAsync() zu nennen.