EditableMesh
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
EditableMesh cambia la mesh visiva applicata quando viene collegata a un MeshPart, consentendo la query e la modifica della mesh sia in Studio che nell'esperienza.
Un EditableMesh può essere creato da un esistente Content di un MeshPart o un ID mesh utilizzando AssetService:CreateEditableMeshAsync() , o un vuoto EditableMesh può essere creato con AssetService:CreateEditableMesh() .Può quindi essere visualizzato, modificato e aggiornato il suo modello di collisione.Non tutti i passaggi sono necessari; per esempio, potresti voler creare un EditableMesh solo per raycast senza mai visualizzarlo.
Un EditableMesh viene visualizzato quando è collegato a un nuovo MeshPart , attraverso AssetService:CreateMeshPartAsync() .Puoi creare più istanze che fanno riferimento alla stessa , o link a un'esistente attraverso .
Per ricalcolare la collisione e la geometria fluida dopo l'editing, puoi nuovamente chiamare AssetService:CreateMeshPartAsync() e MeshPart:ApplyMesh() per aggiornare un MeshPart esistente.Si consiglia generalmente di farlo alla fine di un'Modificareconcettuale, non dopo singole chiamate a metodi che manipolano la geometria.I cambiamenti visivi della mesh verranno sempre riflessi immediatamente dal motore, senza la necessità di chiamare AssetService:CreateMeshPartAsync() .
Abilitazione di EditableMesh per esperienze pubblicate
Per scopi di sicurezza, l'uso di EditableMesh fallisce per impostazione predefinita per le esperienze pubblicate.Per abilitare l'uso, EditableMesh , devi essere verificato l'età 13+ e l'ID verificato.Dopo essere stato verificato, apri le Impostazioni di gioco di Studio, seleziona Sicurezza e abilita il pulsante Consenti API di mesh e immagine attivare/disattivare.Ricorda di rivedere i Termini d'uso prima di abilitare l'attivazione.
Permessi
Per prevenire l'uso improprio, AssetService:CreateEditableMeshAsync() consentirà solo di caricare e modificare le risorse di mesh:
- Che sono di proprietà del creatore dell'esperienza (se l'esperienza è di proprietà di un individuo).
- Che sono di proprietà di un gruppo (se l'esperienza è di proprietà del Gruppo).
- Che sono di proprietà dell'utente Studio registrato (se il file del luogo non è stato ancora salvato o pubblicato su Roblox).
Le API lanciano un errore se vengono utilizzate per caricare una risorsa che non soddisfa i criteri sopra riportati.
Maglie di dimensione fissa
Durante la creazione di una EditableMesh da una risorsa mesh esistente (via AssetService:CreateEditableMeshAsync() ), la mesh risultante è predefinita di dimensioni fisse.Le maglie di dimensione fissa sono più efficienti in termini di memoria, ma non puoi cambiare il numero di vertici, facce o attributi.Solo i valori degli attributi di vertex e delle posizioni possono essere modificati.
ID del vertice/viso stabile
Molti EditableMesh prendono vertex , normale , UV , colore e viso ID.Sono rappresentati come interi in Luau ma richiedono una gestione speciale.La principale differenza è che gli ID sono stabili e rimangono gli stessi anche se altre parti della mesh cambiano.Ad esempio, se un EditableMesh ha cinque vertici {1, 2, 3, 4, 5} e rimuovi il vertice 4 , i nuovi vertici saranno {1, 2, 3, 5} .
Nota che gli ID non sono garantiti di essere in ordine e ci possono essere buchi nella numerazione, quindi quando si itera attraverso i vertici o le facce, dovresti iterare attraverso la tabella restituita da GetVertices() o GetFaces() .
Attributi del vertice diviso
Un vertice è un angolo di un volto e si connette topologicamente i volti insieme.I vertici possono avere diversi attributi: posizione, normale, coordinate UV, colore e trasparenza.
A volte è utile per tutti i volti che toccano un vertice utilizzare gli stessi valori di attributo, ma a volte vorrai che i volti diversi utilizzino diversi valori di attributo sullo stesso vertice.Ad esempio, su una sfera liscia, ogni vertice avrà solo un normale singolo.In contrasto, all'angolo di un cubo, il vertice avrà 3 normali diverse (uno per ogni faccia adiacente).Puoi anche avere cuciture nelle coordinate UV o cambiamenti improvvisi nei colori del vertice.
Durante la creazione di facce, ogni vertice predefinito avrà uno di ogni attributo: uno normale, una coordinata UV e un colore/trasparenza.Se vuoi creare una cucitura, dovresti creare nuovi attributi e impostarli sul viso.Ad esempio, questo codice creerà un cubo acuto:
local AssetService = game:GetService("AssetService")
-- Dati 4 ID di vertice, aggiunge un nuovo normale e 2 triangoli, creando un quadrato acuto
local function addSharpQuad(eMesh, vid0, vid1, vid2, vid3)
local nid = eMesh:AddNormal() -- Questo crea un ID normale che viene calcolato automaticamente
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 incavati 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) -- Davanti
addSharpQuad(eMesh, v1, v3, v4, v2) -- Indietro
addSharpQuad(eMesh, v1, v5, v7, v3) -- Sinistra
addSharpQuad(eMesh, v2, v4, v8, v6) -- Destra
addSharpQuad(eMesh, v1, v2, v6, v5) -- In basso
addSharpQuad(eMesh, v3, v7, v8, v4) -- Superiore
eMesh:RemoveUnused()
return eMesh
end
Avvolgimento
Le facce mesh hanno un lato frontale e un lato posteriore.Durante il disegno delle maglie, solo la parte anteriore dei volti viene disegnata per impostazione predefinita, anche se puoi cambiare questo impostando la proprietà Mesh, maglia' DoubleSided a true.
L'ordine dei vertici attorno al viso determina se stai guardando davanti o Indietro.La parte anteriore del viso è visibile quando i vertici vanno antiorario intorno ad essa.

Limitazioni
EditableMesh attualmente ha un limite di 60.000 vertici e 20.000 triangoli. Tentare di aggiungere troppi vertici o triangoli causerà un errore.
Sommario
Proprietà
Restituisce true se una mesh è di dimensione fissa.
Metodi
Aggiunge un nuovo colore alla geometria e restituisce un ID colore stabile.
Aggiunge un nuovo normale alla geometria e restituisce un ID normale stabile.
Aggiunge un nuovo triangolo alla mesh e restituisce un ID del viso stabile.
Aggiunge un nuovo UV alla geometria e restituisce un ID UV stabile.
Aggiunge un nuovo vertice alla geometria e restituisce un ID vertice stabile.
Distrugge la Mesh, maglia.
Trova il punto più vicino sulla superficie della Mesh, maglia.
Trova il vertice più vicino a un punto specifico nello Spazio.
Trova tutti i vertici all'interno di una sfera specifica.
Restituisce una lista di facce adiacenti a una data faccia.
Restituisce una lista di vertici adiacenti a un vertice dato.
Restituisce il colore per l'ID del colore specificato.
Restituisce il colore alpha (trasparenza) all'ID del 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 UV del viso per i vertici sul viso.
Restituisce gli ID del vertice del viso.
Restituisce tutti i volti della Mesh, maglia.
Restituisce il normale vector per l'ID normale fornito.
Restituisce tutti i normali della Mesh, maglia.
Ottiene la posizione di un vertice.
Restituisce le coordinate UV all'ID UV specificato.
Restituisce tutti gli UV della Mesh, maglia.
Restituisce tutti i vertici come una lista di ID di vertici stabili.
Restituisce una stringa che descrive un ID stabile, utile per scopi di debug.
Unisce i vertici che si toccano insieme.
Rimuove un volto utilizzando il suo ID volto stabile.
Rimuove tutti i vertici non utilizzati, le normali, gli UV e i colori e restituisce gli ID rimossi.
Ripristina questo ID normale per essere calcolato automaticamente.
Imposta il colore per un ID colore.
Imposta il colore alpha (trasparenza) per un ID colore.
Imposta i colori del vertice del viso su nuovi ID di colore.
Imposta i normali del vertice del viso a nuovi ID normali.
Imposta gli UV del vertice del viso a nuovi ID UV.
Imposta i vertici del viso su nuovi ID vertici.
Imposta il normale per un ID normale.
Imposta una posizione del vertice nello Spaziooggetti locale della Mesh, maglia.
Imposta le coordinate UV per un ID UV.
Dividi tutti i volti sulla mesh ad essere triangoli.
Proprietà
Metodi
AddColor
Aggiunge un nuovo colore alla geometria e restituisce un ID colore stabile.
Parametri
Il nuovo colore.
Il colore alpha (trasparenza).
Restituzioni
ID colore stabile del nuovo colore.
AddNormal
Aggiunge un nuovo normale alla geometria e restituisce un ID normale stabile. Se il valore normale non viene specificato, il normale verrà calcolato automaticamente.
Parametri
Il vettorialenormale. Se il valore normale non è specificato, il normale verrà calcolato automaticamente.
Restituzioni
ID normale stabile del nuovo normale.
AddTriangle
Aggiunge un nuovo triangolo alla mesh e restituisce un ID del viso stabile.
Parametri
ID del primo vertice del triangolo.
ID del secondo vertice del triangolo.
ID del terzo vertice del triangolo.
Restituzioni
ID faccia stabile del nuovo volto.
AddUV
Aggiunge un nuovo UV alla geometria e restituisce un ID UV stabile.
Parametri
La nuova coordinata UV.
Restituzioni
ID UV stabile del nuovo UV.
AddVertex
Aggiunge un nuovo vertice alla geometria e restituisce un ID vertice stabile.
Parametri
Posizione nello Spaziooggetti locale della Mesh, maglia.
Restituzioni
ID vertice stabile del nuovo vertice.
Destroy
Distrugge il contenuto della Mesh, maglia, recuperando immediatamente la memoria utilizzata.
Restituzioni
FindClosestPointOnSurface
Trova il punto più vicino sulla superficie della Mesh, maglia.Restituisce l'ID del viso, punta sulla mesh nello Spaziooggetto locale e le coordinate baryentriche della posizione all'interno del viso.Vedi RaycastLocal() per ulteriori informazioni sulle coordinate baryentriche.
Parametri
Posizione punto nell'Spaziooggetto locale della Mesh, maglia.
Restituzioni
Triplo dell'ID del volto, punto sulla mesh nello Spaziooggetto locale e la coordinata barycentrica della posizione all'interno del volto.
FindClosestVertex
Trova il vertice più vicino a un punto specifico nello spazio e restituisce un ID di vertice stabile.
Parametri
Posizione punto nell'Spaziooggetto locale della Mesh, maglia.
Restituzioni
ID del vertice stabile più vicino al punto specificato nello Spazio.
FindVerticesWithinSphere
Trova tutti i vertici all'interno di una sfera specifica e restituisce un elenco di ID di vertici stabili.
Parametri
Centro della sfera nello Spaziolocale dell'oggetto della Mesh, maglia.
Raggio della sfera.
Restituzioni
Elenco di ID di vertice stabili all'interno della sfera richiesta.
GetAdjacentFaces
Dato un ID volto stabile, restituisce una lista di facce adiacenti.

Parametri
Restituzioni
Elenco di ID del viso adiacente al viso dato.
GetAdjacentVertices
Dato un ID vertex stabile, restituisce una lista di vertici adiacenti.

Parametri
ID del verto su cui ottenere i vertici adiacenti.
Restituzioni
Lista degli ID delle vertici adiacenti attorno all'ID del vertice dato.
GetColor
Restituisce il colore per l'ID del colore specificato.
Parametri
ID colore per cui ottenere il colore.
Restituzioni
Colore per l'ID del colore stabile richiesto.
GetColorAlpha
Restituisce il colore alpha (trasparenza) all'ID stabile dato.
Parametri
ID colore per cui ottenere l'alfa.
Restituzioni
Alfa colore alla richiesta ID colore stabile.
GetColors
Restituisce tutti i colori della mesh come una lista di ID colori stabili.
Restituzioni
Elenco di ID colori stabili.
GetFaceColors
Restituisce gli ID del colore del viso per i vertici sul viso.
Parametri
ID del volto per cui ottenere gli ID del colore.
Restituzioni
Elenco di ID di colore utilizzati per i vertici sul volto dato.
GetFaceNormals
Restituisce gli ID normali del viso per i vertici sul viso.
Parametri
ID del volto per cui ottenere gli ID normali.
Restituzioni
Elenco di ID normali utilizzati per i vertici sul lato dato.
GetFaceUVs
Restituisce gli ID UV del viso per i vertici sul viso.
Parametri
ID del volto per cui ottenere gli ID UV.
Restituzioni
Elenco di ID UV utilizzati per i vertici sul lato dato.
GetFaceVertices
Restituisce gli ID del vertice del viso.
Parametri
Restituzioni
Lista degli ID di vertice intorno alla faccia data.
GetFaces
Restituisce tutti i volti della mesh come una lista di ID volti stabili.
Restituzioni
Elenco di ID faccia stabili.
GetNormal
Restituisce il normale vector per l'ID normale fornito.
Parametri
ID normale per cui ottenere il normale vettoriale.
Restituzioni
Vettore normale all'ID normale richiesto.
GetNormals
Restituisce tutti i normali della mesh come una lista di ID normali stabili.
Restituzioni
Elenco di ID normali stabili.
GetPosition
Ottiene la posizione di un vertice nello Spaziooggetti locale della Mesh, maglia.
Parametri
ID vertice stabile per il quale ottenere la posizione.
Restituzioni
Posizione di un vertice nello Spaziooggetti locale della Mesh, maglia.
GetUV
Restituisce le coordinate UV all'ID UV specificato.
Parametri
ID UV per cui ottenere le coordinate UV.
Restituzioni
Coordinate UV alla richiesta dell'ID UV.
GetUVs
Restituisce tutti gli UV della mesh come una lista di ID UV stabili.
Restituzioni
Elenco di ID UV stabili.
GetVertexFaceColor
Parametri
Restituzioni
GetVertexFaceNormal
Parametri
Restituzioni
GetVertexFaceUV
Parametri
Restituzioni
GetVertices
Restituisce tutti i vertici come una lista di ID di vertici stabili.
Restituzioni
Elenco di ID di vertice stabili.
IdDebugString
Restituisce una stringa che descrive un ID stabile, utile per scopi di debug, come f17 o v12 , che contiene il inserisci / scrivi, il numero dell'ID e la versione.
Parametri
ID per il quale restituire una Stringadi informazioni di debugging.
Restituzioni
Stringa che descrive l'ID in formato leggibile dall'uomo.
MergeVertices
Unisce i vertici che si toccano, per utilizzare un singolo ID di vertice ma mantenere gli altri ID di attributo originali.
Parametri
La distanza in cui i vertici sono considerati per toccarsi l'un l'altro.
Restituzioni
Una mappatura dell'ID vecchio vertice a nuovo vertice ID per i vertici che sono stati fusi.
RaycastLocal
Lancia un raggio e restituisce un punto di intersezione, l'ID del volto e le coordinate baryentriche.Gli input e gli output di questo metodo sono nello Spaziooggetti locale della Mesh, maglia.
Un coordinata barycentrica è un modo per specificare un punto all'interno di un volto come una combinazione pesata dei 3 vertici del volto.Questo è utile come modo generale di mescolare gli attributi dei vertici.Vedi l'esempio di codice di questo metodo come illustrazione.
Parametri
Origine del raggio nello Spaziooggetti locale della Mesh, maglia.
Direzione del raggio.
Restituzioni
Triplo del punto di intersezione, dell'ID del viso e delle coordinate baryentriche.
Campioni di codice
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
Rimuove un volto utilizzando il suo ID volto stabile.
Parametri
Restituzioni
RemoveUnused
Rimuove tutti i vertici, le normali, gli UV e i colori che non vengono utilizzati in alcun volto 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 da Ripristina.
Restituzioni
SetBoneCFrame
Parametri
Restituzioni
SetBoneIsVirtual
Parametri
Restituzioni
SetBoneName
Parametri
Restituzioni
SetBoneParent
Parametri
Restituzioni
SetColor
Imposta il colore per un ID colore.
Parametri
ID colore stabile per il quale impostare il colore.
Colore da Impostare.
Restituzioni
SetColorAlpha
Imposta il colore alpha (trasparenza) per un ID colore.
Parametri
ID colore stabile per il quale impostare l'alfa del colore.
Alpha da Impostare.
Restituzioni
SetFaceColors
Imposta i colori del vertice del viso su nuovi ID di colore.
Parametri
ID del volto per cui aggiornare i colori del vertice.
Elenco di nuovi ID di colore stabile da utilizzare per i vertici del volto dato.
Restituzioni
SetFaceNormals
Imposta i normali del vertice del viso a nuovi ID normali.
Parametri
ID del viso per cui aggiornare i normali del vertice.
Elenco di nuovi ID normali stabili da utilizzare per i vertici del volto dato.
Restituzioni
SetFaceUVs
Imposta gli UV del vertice del viso a nuovi ID UV.
Parametri
ID del viso per cui aggiornare gli UV del vertice.
Elenco di nuovi ID UV stabili da utilizzare per i vertici del volto dato.
Restituzioni
SetFaceVertices
Imposta i vertici del viso su nuovi ID vertici.
Parametri
ID del volto per cui aggiornare i vertici.
Elenco di nuovi ID di vertice stabile da utilizzare per il volto dato.
Restituzioni
SetFacsBonePose
Parametri
Restituzioni
SetFacsCorrectivePose
Parametri
Restituzioni
SetFacsPose
Parametri
Restituzioni
SetNormal
Imposta il normale per un ID normale. Questo cambierà il valore normale per ogni vertice facciale che utilizza l'ID normale.
Parametri
ID normale stabile per il quale impostare il normale vettoriale.
Vettore normale da Impostare.
Restituzioni
SetPosition
Imposta una posizione del vertice nello Spaziooggetti locale della Mesh, maglia.
Parametri
ID vertice stabile del vertice da posizionare.
Posizione nello Spaziooggetti locale della Mesh, maglia.
Restituzioni
SetUV
Imposta le coordinate UV per un ID UV.
Parametri
ID UV per il quale impostare le coordinate UV.
Coordinate UV.
Restituzioni
SetVertexBoneWeights
Parametri
Restituzioni
SetVertexBones
Parametri
Restituzioni
SetVertexFaceColor
Parametri
Restituzioni
SetVertexFaceNormal
Parametri
Restituzioni
SetVertexFaceUV
Parametri
Restituzioni
Triangulate
Dividi tutti i volti sulla mesh ad essere triangoli.Al momento non fa nulla poiché possono essere creati solo triangoli, ma se il tuo codice si basa su triangoli, è consigliato chiamare questo metodo dopo aver chiamato AssetService:CreateEditableMeshAsync() .