EditableMesh

Veraltete anzeigen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Nicht erstellbar

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.

Order of the vertices around the face

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

Eigenschaften

Methoden

Eigenschaften

FixedSize

Schreibgeschützt
Nicht repliziert
Roblox-Sicherheit
Parallel lesen

SkinningEnabled

Parallel lesen

Methoden

AddColor

Fügt der Geometrie eine neue Farbe hinzu und gibt eine stabile Farb-ID zurück.

Parameter

color: Color3

Die neue Farbe.

alpha: number

Die Farbe Alpha (Transparenz).


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

normal: Vector3

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

vertexId0: number

ID der ersten Verzahnung des Dreieckes.

vertexId1: number

ID des zweiten Verfalls des Dreieckes.

vertexId2: number

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

void

Rückgaben

void

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

point: Vector3

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

toThisPoint: Vector3

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

center: Vector3

Zentrum des Körpers in der Lokalen Platzder Mesh.

radius: number

Radius der Kugel.


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.

Adjacent faces indicated around requested face

Parameter

faceId: number

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.

Adjacent vertices indicated around requested vertex

Parameter

vertexId: number

Vertex-ID, um angrenzende Vertex zu erhalten.


Rückgaben

Liste der IDs der angrenzenden Verzahnungen um die angegebene Verzahnungs-ID.

GetCenter


Rückgaben

Zentrum der Abgrenzung der EditableMesh .

GetColor

Gibt die Farbe für die angegebene Farb-ID zurück.

Parameter

colorId: number

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

colorId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

id: number

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

normalId: number

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

vertexId: number

Stable vertex ID für die Position zu erhalten.


Rückgaben

Position eines Verknotens im lokalen Platzdes Mesh.

GetSize


Rückgaben

Größe des EditableMesh.

GetUV

Rückgibt UV-Koordinaten bei der angegebenen UV-ID.

Parameter

uvId: number

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

id: number

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: number

ID für die Rückgabe einer String.


Rückgaben

String, der die ID im menschlichen Lesbar-Format beschreibt.

MergeVertices

Map

Verschmelzt vertikalen, die zusammen berühren, um eine einzige Vertikal-ID zu verwenden, aber die anderen ursprünglichen Attribut-IDs zu behalten.

Parameter

mergeTolerance: number

Die Entfernung, in der die Knoten miteinander berühren.


Rückgaben

Map

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

origin: Vector3

Herkunft des Strahls im lokalen Objekt des Mesh.

direction: Vector3

Richtung des Strahls.


Rückgaben

Tople des Interektionspunkts, Gesichts-ID und baryzentrischen Koordinaten.

Code-Beispiele

EditableMesh:RaycastLocal()

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

void

Entfernt ein Gesicht mit seiner stabilen Gesichts-ID.

Parameter

faceId: number

Rückgaben

void

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

void

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

normalId: number

Stable normale ID zum zurücksetzen.


Rückgaben

void

SetColor

void

Setzt die Farbe für eine Farb-ID.

Parameter

colorId: number

Stable Farb-ID für die Festlegung der Farbe.

color: Color3

Farbe zum festlegen.


Rückgaben

void

SetColorAlpha

void

Setzt die FarbAlpha (Transparenz) für eine FarbID.

Parameter

colorId: number

Stable Farb-ID für die Festlegung der Farbe Alpha.

alpha: number

Alpha zum festlegen.


Rückgaben

void

SetFaceColors

void

Setzt die Farben des Gesichtsverzehrs auf neue Farb-IDs.

Parameter

faceId: number

Gesichts-ID für die Aktualisierung der Vertex-Farben.

ids: Array

Liste der neuen stabilen Farb-IDs, die für die vertikalen des gegebenen Gesichts verwendet werden.


Rückgaben

void

SetFaceNormals

void

Setzt die Gesichtsvertise-Normale auf neue normale IDs.

Parameter

faceId: number

Gesicht-ID, für die die Vertex-Normale aktualisiert werden.

ids: Array

Liste neuer stabiler Normal-IDs, die für die vertretungen des Gesichts verwendet werden können.


Rückgaben

void

SetFaceUVs

void

Setzt die UV-Farben des Gesichts auf neue UV-IDs.

Parameter

faceId: number

Gesicht-ID, für die die Vertex-UV aktualisiert werden.

ids: Array

Liste der neuen stabilen UV-IDs, die für die vertikalen des gegebenen Gesichts verwendet werden.


Rückgaben

void

SetFaceVertices

void

Setzt die Gesichtsvерte auf neue Verzehr-IDs.

Parameter

faceId: number

Gesichts-ID für die Aktualisierung der Verträge.

ids: Array

Liste der neuen stabilen Verzeichen-IDs, die für das angegebene Gesicht verwendet werden.


Rückgaben

void

SetNormal

void

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

normalId: number

Stable normale ID für die Festlegung des normalen Vektorkraft.

normal: Vector3

Normaler Vektor zum festlegen.


Rückgaben

void

SetPosition

void

Setzt eine Verzahnungsposition im lokalen Objekt des Mesh.

Parameter

vertexId: number

Stable vertex ID des Verwerks zu positionieren.

Position in dem lokalen Objekt des Meshes.


Rückgaben

void

SetUV

void

Setzt UV-Koordinaten für eine UV-ID.

Parameter

uvId: number

UV-ID für die Festlegung der UV-Koordinaten.

UV-Koordinaten.


Rückgaben

void

Triangulate

void

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.


Rückgaben

void

Ereignisse