EditableMesh
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
EditableMesh cambia il mesh visivo applicato quando è legato a un MeshPart, consentendo la consultazione e la modifica del mesh sia in Studio che nell'esperienza.
Un EditableMesh può essere creato da un Content esistente di un MeshPart o da un ID della griglia
Un EditableMesh viene visualizzato quando è legato a un nuovo MeshPart , attraverso AssetService:CreateMeshPartAsync() . Puoi creare più 2> Class.MeshPart2> istanze che fanno riferimento allo stesso <
Chiamando AssetService:CreateMeshPartAsync() ricomincerà il calcolo della collisione e della geometria fluida con qualsiasi modifica e aggiornamento della versione attuale di MeshPart . Generalmente raccomandato di fare questo alla fine di un'operazione di modifica concettuale. MeshPart:ApplyMesh() aggiornerà la geometria
ID del verso/viso stabile
Molti EditableMesh metodi prenderanno vertex , <
Nota che gli ID non sono garantiti in ordine e potrebbero esserci buche nel numerazione, quindi quando itera attraverso i vertici o le facce, si dovrebbe itera attraverso la tabella restituita da GetVertices() o GetFaces() .
Attributi del verso spaccato
Un vertex è un angolo di un viso, e connette in modo topologico i volti insieme. I vertici possono avere più attributi: posizione, normale, coordinata UV, colore e trasparenza.
A volte è utile per tutti i volti che toccano un vertice per utilizzare gli stessi valori di attributo, ma a volte vorrai volti diversi per utilizzare diversi valori di attributo sullo stesso vertice. Ad esempio, su una sfera liscia, ciascun vertice avrà solo un singolo normale. In contrapposizione, all'angolo di un cubo, il vertice avrà 3 diversi normali (uno per ciascun viso adiacente). Puoi
Quando si creano le facce, ogni verso avrà per impostazione predefinita uno di ciascun attributo: uno normale, una coordinata UV e una colore / trasparenza. Se vuoi creare un cuneo, crea nuovi attributi e impostali sulla faccia. Ad esempio, questo codice creerà un cube affilato:
local AssetService = game:GetService("AssetService")
-- Dato 4 ID dei verti, aggiunge un nuovo triangolo normale e 2, creando un quadro affilato
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Ciò crea un ID normale che viene automaticamente calcolato
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
-- Crea un cubo con bordi appuntiti tra i 6 lati
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) -- Porta Anteriore
addSharpQuad(eMesh, v1, v3, v4, v2) -- Torna indietro
addSharpQuad(eMesh, v1, v5, v7, v3) -- Sinistra
addSharpQuad(eMesh, v2, v4, v8, v6) -- Giusto
addSharpQuad(eMesh, v1, v2, v6, v5) -- In basso
addSharpQuad(eMesh, v3, v7, v8, v4) -- Top
eMesh:RemoveUnused()
return eMesh
end
In avvolgimento
I volti a maglia hanno un lato frontale e un lato posteriore. Quando si disegna la maglia, solo il lato frontale dei Mesh, magliaviene disegnato per impostazione predefinita, anche se puoi cambiarlo impostando la proprietà DoubleSided a true .
L'ordine dei vertici intorno al viso determina se stai guardando in avanti o in Indietro. La parte anteriore del viso è visibile quando i vertici vanno contro l'orario in modo da poter guardare in avanti.
Limitazioni
EditableMesh attualmente ha un limite di 60.000 vértici e 20.000 triangoli. L'attento tentativo di aggiungere troppi vértici o triangoli causerà un errore.
Sommario
Metodi
Aggiunge un nuovo colore alla geometria e restituisce un ID di colore stabile.
Aggiunge un nuovo normale alla geometria e restituisce un ID normale stabile.
Aggiunge un nuovo triangolo alla mesh e restituisce un ID faccia stabile.
Aggiunge un nuovo UV alla geometria e restituisce un ID UV stabile.
Aggiunge un nuovo verso alla geometria e restituisce un ID di verso stabile.
Trova il punto più vicino sulla superficie della Mesh, maglia.
Trova il nodo più vicino a un punto specifico nello Spazio.
Trova tutti i vertici all'interno di una certa sfera.
Restituisce una lista di facce adiacenti a una faccia specificata.
Restituisce una lista di vertici adiacenti a un dato vertice.
Restituisce il colore per l'ID colore specificato.
Restituisce il colore alpha (trasparenza) all'ID colore specificato.
Restituisce tutti i colori della Mesh, maglia.
Restituisce gli ID del colore del viso per i vertici sul viso.
Restituisce gli ID normali del viso per i vertici sul viso.
Restituisce gli ID dell'UV del viso per i vertici sul viso.
Restituisce gli ID dei vertici del viso.
Restituisce tutti i volti della Mesh, maglia.
Restituisce una lista di facce che utilizzano un ID di proprietà specificato.
Restituisce il normale Vector per l'ID specificato.
Restituisce tutti i normali della Mesh, maglia.
Ottiene la posizione di un vertex.
Restituisce i coordini UV al ID UV specificato.
Restituisce tutti gli UV della Mesh, maglia.
Restituisce tutti i vertici come una lista di ID stabili dei vertici.
Restituisce una lista di vertici che utilizzano un ID di proprietà specificato.
Restituisce una stringa che descrive un ID stabile, utile per scopi di debug.
Unisce i vertici che toccano insieme.
Rimuove un viso utilizzando il suo ID faccia stabile.
Rimuove tutti i vertici non utilizzati, normali, UV e colori, e restituisce gli ID rimossi.
Ripristina questo ID normale per essere calcolato automaticamente.
Imposta il colore per un ID del colore.
Imposta il colore alpha (trasparenza) per un ID del colore.
Imposta i colori del vertice del viso in nuovi ID di colore.
Imposta le normali del vértice del viso su nuovi ID normali.
Imposta gli UV del vertice del viso su nuovi ID UV.
Imposta i vertici del viso su nuovi ID dei vertici.
Imposta il normale per un ID normale.
Imposta una posizione di vertice nello Spaziolocale dell'oggetto.
Imposta i coordinatori UV per un ID UV.
Dividere tutti i volti sulla griglia per essere triangoli.
Proprietà
Metodi
AddColor
Aggiunge un nuovo colore alla geometria e restituisce un ID di colore stabile.
Parametri
Restituzioni
ID colore stabile della nuova colorazione.
AddNormal
Aggiunge un nuovo valore di normalizzazione alla geometria e restituisce un ID di normale stabile. Se il valore di normale non è specificato, il normale viene calcolato automaticamente.
Parametri
Il normale vettoriale. Se il valore normale non è specificato, il normale verrà automaticamente calcolato.
Restituzioni
ID della nuova normalità stabile.
AddTriangle
Aggiunge un nuovo triangolo alla mesh e restituisce un ID faccia stabile.
Parametri
ID della prima verifica del triangolo.
ID del secondo nodo del triangolo.
ID del terzo verso del triangolo.
Restituzioni
ID faccia stabile del nuovo viso.
AddUV
Aggiunge un nuovo UV alla geometria e restituisce un ID UV stabile.
Parametri
Il nuovo coordinato UV.
Restituzioni
ID UV stabile del nuovo UV.
AddVertex
Aggiunge un nuovo verso alla geometria e restituisce un ID di verso stabile.
Parametri
Posizione nello Spaziolocale dellMesh, magliaoggetto.
Restituzioni
ID stabile del nuovo vertex.
Destroy
Restituzioni
FindClosestPointOnSurface
Trova il punto più vicino sulla superficie della Mesh, maglia. Ritorna l'ID faccia, point on the mesh in local object Spazio, e la posizione barycentrica della posizione all'interno del viso. Vedi RaycastLocal() per ulteriori informazioni sui punti barycentrici.
Parametri
Posizione del punto nell'Spaziolocale dell'oggetto del Mesh, maglia.
Restituzioni
Tiple dell'ID della faccia, punti sulla mesh nell'Spaziooggetto locale e sulla coordinata barycentrica della posizione all'interno della faccia.
FindClosestVertex
Trova il nodo più vicino a un punto specifico nello spazio e restituisce un ID nodo stabile.
Parametri
Posizione del punto nell'Spaziolocale dell'oggetto del Mesh, maglia.
Restituzioni
ID del vertice stabile più vicino al punto specificato nello Spazio.
FindVerticesWithinSphere
Trova tutti i vertici all'interno di una certa sfera e restituisce un elenco di ID dei vertici stabili.
Parametri
Centro dell'area nella localizzazione dell'oggetto della Mesh, maglia.
Raggio della sfera.
Restituzioni
Lista degli ID delle texture stabili all'interno della sfera richiesta.
GetAdjacentFaces
Dato un ID faccia stabile, restituisce una lista di facce adiacenti.
Parametri
Restituzioni
Lista degli ID della faccia vicino alla faccia fornita.
GetAdjacentVertices
Dato un ID stabile del vertice, restituisce una lista di vertici adiacenti.
Parametri
ID del verso attorno al quale ottenere i vertici adiacenti.
Restituzioni
Lista degli ID dei vertici vicini intorno all'ID del vertice fornito.
GetColor
Restituisce il colore per l'ID colore specificato.
Parametri
ID del colore per ottenere il colore.
Restituzioni
Colore per il richiesto ID di colore stabile.
GetColorAlpha
Restituisce il colore alpha (trasparenza) all'ID colore stabile specificato.
Parametri
ID colore per ottenere l'alfa.
Restituzioni
Colore alpha all'ID di colore richiesto.
GetColors
Restituisce tutti i colori della mesh come una lista di ID di colore stabili.
Restituzioni
Lista degli ID di colore stabili.
GetFaceColors
Restituisce gli ID del colore del viso per i vertici sul viso.
Parametri
ID della faccia per cui ottenere gli ID del colore.
Restituzioni
Lista di ID del colore usati per i vertici sul viso dato.
GetFaceNormals
Restituisce gli ID normali del viso per i vertici sul viso.
Parametri
ID della faccia per ottenere gli ID normali.
Restituzioni
Lista di ID normali utilizzati per i vertici sul viso specificato.
GetFaceUVs
Restituisce gli ID dell'UV del viso per i vertici sul viso.
Parametri
ID faccia per cui ottenere gli ID UV.
Restituzioni
Lista di ID UV utilizzati per i vertici sul viso fornito.
GetFaceVertices
Restituisce gli ID dei vertici del viso.
Parametri
Restituzioni
Lista di ID dei versetti intorno al viso dato.
GetFaces
Restituisce tutte le facce della mesh come una lista di ID faccia stabili.
Restituzioni
Lista degli ID faccia stabili.
GetFacesWithAttribute
Restituisce una lista di facce che utilizzano un ID di vertice specificato, un ID normale, un ID UV o un ID del colore.
Parametri
ID dell'attributo per cui trovare le facce che lo utilizzano.
Restituzioni
Lista degli ID del viso che utilizzano l'attributo ID specificato.
GetNormal
Restituisce il normale Vector per l'ID specificato.
Parametri
ID normale per ottenere il normale vettoriale.
Restituzioni
Vetore normale all'ID normale richiesto.
GetNormals
Restituisce tutti i normali della mesh come una lista di ID normali stabili.
Restituzioni
Lista degli ID normali stabili.
GetPosition
Ottiene la posizione di un vertex nell'Spaziolocale di oggetti del Mesh, maglia.
Parametri
ID stabile del vertice per cui ottenere la posizione.
Restituzioni
Posizione di un vértice nello Spaziolocale dell'oggetto.
GetUV
Restituisce i coordini UV al ID UV specificato.
Parametri
ID UV per cui ottenere la coordinata UV.
Restituzioni
Coordinate UV richieste all'ID UV richiesto.
GetUVs
Restituisce tutti gli UV della mesh come una lista di ID UV stabili.
Restituzioni
Lista degli ID UV stabili.
GetVertices
Restituisce tutti i vertici come una lista di ID stabili dei vertici.
Restituzioni
Lista degli ID stabili dei vertici.
GetVerticesWithAttribute
Restituisce una lista di vertici che utilizzano un ID faccia specificato, un ID normale, un ID UV o un ID colore.
Parametri
ID dell'attributo per cui trovare i vertici che lo utilizzano.
Restituzioni
Lista degli ID del nodo che utilizzano l'attributo ID specificato.
IdDebugString
Restituisce una stringa che descrive un ID stabile, utile per scopi di debug, come f17 o v12 , contenente il inserisci / scrivi, il numero di ID e la versione.
Parametri
ID per il quale restituire una Stringadi informazioni di debug.
Restituzioni
Stringa che descrive l'ID in formato umano-legibile.
MergeVertices
Unisce i vertici che toccano insieme, per utilizzare un solo ID di vertice ma mantenere gli altri ID dell'attributo originale.
Parametri
La distanza in cui i vertici vengono considerati per toccarsi tra loro.
Restituzioni
Una mappa dell'Vecchio ID del vertex a nuovo ID del vertex per i vértici che sono stati fusi.
RaycastLocal
Cast un raggio e restituisce un punto di intersezione, l'ID del viso e le coordinate di intersezione barycentriche. Gli input e gli output di questo metodo sono nello Spaziolocale del Mesh, maglia.
Un 坐标e barycentrica è un modo di specificare un punto all'interno di un viso come una combinazione pesata dei 3 vertici del viso. Questo è utile come un modo generale di mescolare gli attributi dei vertici. Vedi l'esempio di codice di questo metodo come un'illustrazione.
Parametri
Origine del raggio nello Spaziolocale dell'oggetto.
Direzione del raggio.
Restituzioni
Tiple del punto di intersezione, ID della faccia e coordinate barycentriche.
Campioni di codice
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
Rimuove un viso utilizzando il suo ID faccia stabile.
Parametri
Restituzioni
RemoveUnused
Rimuove tutti i vertici, normali, UV e colori che non sono utilizzati in nessun viso e restituisce gli ID rimossi.
Restituzioni
Tutti gli ID stabili rimossi.
ResetNormal
Ripristina questo ID normale per essere calcolato automaticamente in base alla forma della Mesh, maglia, invece di essere Impostaremanualmente.
Parametri
ID normale stabile per il Ripristina.
Restituzioni
SetColor
Imposta il colore per un ID del colore.
Parametri
Restituzioni
SetColorAlpha
Imposta il colore alpha (trasparenza) per un ID del colore.
Parametri
ID colore stabile per cui impostare l'alfa del colore.
Alfa per Impostare.
Restituzioni
SetFaceColors
Imposta i colori del vertice del viso in nuovi ID di colore.
Parametri
ID faccia per cui aggiornare i colori dei vértici.
Lista di nuovi ID di colore stabili da utilizzare per i vertici del viso.
Restituzioni
SetFaceNormals
Imposta le normali del vértice del viso su nuovi ID normali.
Parametri
ID faccia per cui aggiornare le normali del vertex.
Lista di nuovi ID normali stabili da utilizzare per i vertici del viso specificato.
Restituzioni
SetFaceUVs
Imposta gli UV del vertice del viso su nuovi ID UV.
Parametri
ID faccia per cui aggiornare gli UV del vertex.
Lista di nuovi ID UV stabili da utilizzare per i vertici del viso fornito.
Restituzioni
SetFaceVertices
Imposta i vertici del viso su nuovi ID dei vertici.
Parametri
ID faccia per cui aggiornare i vertici.
Lista di nuovi ID stabili del vertice da utilizzare per la faccia specificata.
Restituzioni
SetNormal
Imposta il normale per un ID normale. Questo cambierà il valore normale per ogni punto di faccia che utilizza l'ID normale.
Parametri
ID stabile per il quale impostare il normale vettoriale.
Vetore normale da Impostare.
Restituzioni
SetPosition
Imposta una posizione di vertice nello Spaziolocale dell'oggetto.
Parametri
ID stabile del vertice di posizionamento.
Posizione nello Spaziolocale dellMesh, magliaoggetto.
Restituzioni
SetUV
Imposta i coordinatori UV per un ID UV.
Parametri
Restituzioni
Triangulate
Dividere tutte le facce sulla griglia per essere triangoli. Attualmente non funziona nulla poiché solo i triangoli possono essere creati, ma se il tuo codice si basa sui triangoli, ti consiglio di chiamare questo metodo dopo aver chiamato AssetService:CreateEditableMeshAsync() .