EditableMesh

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Non costruibile

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.

Order of the vertices around the face

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

Proprietà

Metodi

Proprietà

FixedSize

Sola Lettura
Non Replicato
Lettura Parallela
Sicurezza Roblox

SkinningEnabled

Lettura Parallela

Metodi

AddColor

Aggiunge un nuovo colore alla geometria e restituisce un ID di colore stabile.

Parametri

color: Color3

Il nuovo colore.

alpha: number

Il colore alpha (trasparenza).


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

normal: Vector3

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

vertexId0: number

ID della prima verifica del triangolo.

vertexId1: number

ID del secondo nodo del triangolo.

vertexId2: number

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

void

Restituzioni

void

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

point: Vector3

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

toThisPoint: Vector3

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

center: Vector3

Centro dell'area nella localizzazione dell'oggetto della Mesh, maglia.

radius: number

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.

Adjacent faces indicated around requested face

Parametri

faceId: number

Restituzioni

Lista degli ID della faccia vicino alla faccia fornita.

GetAdjacentVertices

Dato un ID stabile del vertice, restituisce una lista di vertici adiacenti.

Adjacent vertices indicated around requested vertex

Parametri

vertexId: number

ID del verso attorno al quale ottenere i vertici adiacenti.


Restituzioni

Lista degli ID dei vertici vicini intorno all'ID del vertice fornito.

GetCenter


Restituzioni

Centro della casella di limitazione di EditableMesh .

GetColor

Restituisce il colore per l'ID colore specificato.

Parametri

colorId: number

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

colorId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

faceId: number

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

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

normalId: number

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

vertexId: number

ID stabile del vertice per cui ottenere la posizione.


Restituzioni

Posizione di un vértice nello Spaziolocale dell'oggetto.

GetSize


Restituzioni

Dimensione del EditableMesh .

GetUV

Restituisce i coordini UV al ID UV specificato.

Parametri

uvId: number

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

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

ID per il quale restituire una Stringadi informazioni di debug.


Restituzioni

Stringa che descrive l'ID in formato umano-legibile.

MergeVertices

Map

Unisce i vertici che toccano insieme, per utilizzare un solo ID di vertice ma mantenere gli altri ID dell'attributo originale.

Parametri

mergeTolerance: number

La distanza in cui i vertici vengono considerati per toccarsi tra loro.


Restituzioni

Map

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

origin: Vector3

Origine del raggio nello Spaziolocale dell'oggetto.

direction: Vector3

Direzione del raggio.


Restituzioni

Tiple del punto di intersezione, ID della faccia e coordinate barycentriche.

Campioni di codice

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

Rimuove un viso utilizzando il suo ID faccia stabile.

Parametri

faceId: number

Restituzioni

void

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

void

Ripristina questo ID normale per essere calcolato automaticamente in base alla forma della Mesh, maglia, invece di essere Impostaremanualmente.

Parametri

normalId: number

ID normale stabile per il Ripristina.


Restituzioni

void

SetColor

void

Imposta il colore per un ID del colore.

Parametri

colorId: number

ID colore stabile per cui impostare il colore.

color: Color3

Colore da Impostare.


Restituzioni

void

SetColorAlpha

void

Imposta il colore alpha (trasparenza) per un ID del colore.

Parametri

colorId: number

ID colore stabile per cui impostare l'alfa del colore.

alpha: number

Alfa per Impostare.


Restituzioni

void

SetFaceColors

void

Imposta i colori del vertice del viso in nuovi ID di colore.

Parametri

faceId: number

ID faccia per cui aggiornare i colori dei vértici.

ids: Array

Lista di nuovi ID di colore stabili da utilizzare per i vertici del viso.


Restituzioni

void

SetFaceNormals

void

Imposta le normali del vértice del viso su nuovi ID normali.

Parametri

faceId: number

ID faccia per cui aggiornare le normali del vertex.

ids: Array

Lista di nuovi ID normali stabili da utilizzare per i vertici del viso specificato.


Restituzioni

void

SetFaceUVs

void

Imposta gli UV del vertice del viso su nuovi ID UV.

Parametri

faceId: number

ID faccia per cui aggiornare gli UV del vertex.

ids: Array

Lista di nuovi ID UV stabili da utilizzare per i vertici del viso fornito.


Restituzioni

void

SetFaceVertices

void

Imposta i vertici del viso su nuovi ID dei vertici.

Parametri

faceId: number

ID faccia per cui aggiornare i vertici.

ids: Array

Lista di nuovi ID stabili del vertice da utilizzare per la faccia specificata.


Restituzioni

void

SetNormal

void

Imposta il normale per un ID normale. Questo cambierà il valore normale per ogni punto di faccia che utilizza l'ID normale.

Parametri

normalId: number

ID stabile per il quale impostare il normale vettoriale.

normal: Vector3

Vetore normale da Impostare.


Restituzioni

void

SetPosition

void

Imposta una posizione di vertice nello Spaziolocale dell'oggetto.

Parametri

vertexId: number

ID stabile del vertice di posizionamento.

Posizione nello Spaziolocale dellMesh, magliaoggetto.


Restituzioni

void

SetUV

void

Imposta i coordinatori UV per un ID UV.

Parametri

uvId: number

ID UV per cui impostare le coordinate dell'UV.

Coordinate UV.


Restituzioni

void

Triangulate

void

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() .


Restituzioni

void

Eventi