Assemblare una libreria di asset

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


Assemblare una libreria di asset è il processo di importazione e configurazione di una collezione di asset in una posizione centrale all'interno del tuo gioco per un facile accesso e riutilizzo. Questo processo può farti risparmiare tempo significativo mentre ti prepari a costruire il tuo ambiente, specialmente se configuri i valori di ciascun asset per migliorare le prestazioni e ottimizzare l'uso della memoria su dispositivi di fascia media e bassa.

Utilizzando il file Environment Art - Assembling .rbxl come riferimento, questa sezione del curriculum di arte ambientale ti mostra come assemblare una libreria di asset dai tuoi asset rifiniti, inclusi istruzioni passo-passo su:

  • Creare materiali personalizzati per il tuo terreno dai tuoi texture ripetibili.
  • Creare oggetti SurfaceAppearance per il tuo trim sheet e applicarli a mesh non avvolti nella tua libreria di asset.
  • Impostare parametri di rendering per i tuoi asset per garantire prestazioni ottimali su tutti i dispositivi.
  • Convertire i tuoi asset in pacchetti in modo da poterli aggiornare e riutilizzare in tutti i tuoi progetti.

Dopo aver completato questa sezione, imparerai come utilizzare la tua libreria di asset in modi creativi per sostituire o convertire l'ambiente greybox e aggiungere tocchi finali che migliorano l'intero spazio 3D.

Il kit modulare e di oggetti del gioco di laser tag campione.

Crea materiali personalizzati

Studio rappresenta i materiali personalizzati come oggetti MaterialVariant all'interno di MaterialService. Questi oggetti MaterialVariant hanno quattro proprietà che combinano le quattro texture maps ripetibili per creare un materiale personalizzato di alta qualità con caratteristiche fisiche:

Dopo aver fornito le mappe di texture a queste proprietà, puoi applicare il tuo nuovo materiale personalizzato sia a parti, mesh che terreni. Puoi utilizzare o modificare i file di mappa di texture di esempio .png per creare i materiali personalizzati Lumpy Moss, Flowering Lumpy Moss, Lumpy Moss with Stones e Stones all'interno dell'ambiente finale del laser tag campione, oppure puoi utilizzare i tuoi materiali progettati nella sezione precedente del tutorial.

Per creare oggetti MaterialVariant per le tue texture ripetibili:

  1. Dal menu Finestra3D, seleziona Materiale per aprire il Material Manager.

  2. Nella lista Materiali, seleziona il materiale di base che più si allinea con la tua texture ripetibile. Ad esempio, se stai creando un oggetto MaterialVariant per la texture ripetibile Lumpy Moss, scegli il materiale di terreno predefinito in modo che il materiale erediti le sue proprietà fisiche.

  3. Nella barra degli strumenti superiore, fai clic sull'icona . Un nuovo MaterialVariant viene visualizzato nella palette con un'icona nell'angolo in basso a destra che indica che si tratta di un materiale personalizzato.

    Nuovo tile MaterialVariant nel Material Manager con icona per indicare un materiale personalizzato
  4. Nell'Inspector, vai alla sezione Generale, quindi rinomina il materiale per allinearlo con il nome della tua texture ripetibile.

    La vista dell'Inspector con il nome del materiale evidenziato.
  5. Nella sezione Texture Maps, sul lato destro di Colore, fai clic sul pulsante Importa. Viene visualizzato un browser di file.

    La sezione Texture Maps della vista dell'Inspector con il pulsante Importa evidenziato.
  6. Nel browser di file, seleziona il file della mappa di texture Albedo .png per la corrispondente texture ripetibile, quindi fai clic sul pulsante Apri. Il browser di file si chiude e la nuova mappa di colore viene visualizzata con il suo ID asset.

  7. Ripeti questo processo per le mappe di texture Metalness, Normal e Roughness. Il materiale personalizzato si aggiorna per riflettere le mappe di texture.

    Tutte le mappe di texture per il materiale Moss_Lumpy_A.
    parte sferica con il materiale Moss_Lumpy_A applicato.
  8. Nella sezione Overrides, abilita l'interruttore Imposta come Override per garantire che quando applichi il terreno al tuo terreno, Studio utilizzi questo materiale personalizzato.

    L'interruttore Imposta come Override abilitato.
  9. OPZIONALE
    Se stai creando un materiale personalizzato che rappresenta un materiale organico,

    1. Nella sezione Tiling, fai clic sul menu a discesa Pattern.
    2. Seleziona Organico per randomizzare l'output e ridurre la tiling visibile.
    La sezione Tiling della vista dell'Inspector con le sue impostazioni.
  10. Ripeti questo processo per ogni texture ripetibile che desideri includere nel tuo gioco.

Crea pacchetti SurfaceAppearance

Studio utilizza trim sheets all'interno di oggetti SurfaceAppearance che puoi genitore a MeshParts che contengono dati UV. Simile ai materiali personalizzati, gli oggetti SurfaceAppearance hanno quattro proprietà che combinano le quattro mappe di texture del trim sheet per creare un trattamento superficiale visivo 3D di alta qualità:

SurfaceAppearance.ColorMap – Rappresenta la mappa di texture albedo. SurfaceAppearance.MetalnessMap – Rappresenta la mappa di texture metalness. SurfaceAppearance.NormalMap – Rappresenta la mappa di texture normale. SurfaceAppearance.RoughnessMap – Rappresenta la mappa di texture roughness.

Dopo aver fornito le mappe di texture a queste proprietà, puoi rendere l'oggetto SurfaceAppearance un figlio di un MeshPart con dati UV che si mappano al tuo trim sheet, e i dati UV si applicano automaticamente alla mesh genitore. È per questo motivo che è utile rendere l'oggetto SurfaceAppearance un pacchetto in modo da poter riutilizzare lo stesso oggetto SurfaceAppearance in tutti i tuoi asset modulari e oggetti. Ad esempio, le seguenti mesh hanno tutte dati UV che si mappano allo stesso layout del trim sheet rappresentato all'interno di un singolo pacchetto di oggetti SurfaceAppearance.

Puoi utilizzare o modificare i file di mappa di texture di esempio .png per creare un oggetto SurfaceAppearance che rispetti i dati UV per gli asset modulari e oggetti di esempio all'interno dell'ambiente finale del laser tag campione, oppure puoi utilizzare i tuoi materiali progettati nella sezione precedente del tutorial che si applicano ai tuoi asset modulari e oggetti.

Per creare pacchetti SurfaceAppearance che puoi genitore al tuo kit modulare e oggetti:

  1. Inserisci un oggetto SurfaceAppearance in Workspace.

  2. Seleziona l'oggetto SurfaceAppearance, quindi nella finestra Proprietà, seleziona la proprietà ColorMap. Viene visualizzato un pop-up.

  3. Fai clic sul pulsante Aggiungi Immagine…. Viene visualizzato un browser di file.

    Il pop-up ColorMap con il pulsante Aggiungi Immagine evidenziato.
  4. Seleziona la mappa di texture Albedo per la corrispondente texture ripetibile, quindi fai clic sul pulsante Apri. Il browser di file si chiude e la proprietà ColorMap si aggiorna con un nuovo ID asset.

  5. Ripeti questo processo per le proprietà MetalnessMap, NormalMap e RoughnessMap, selezionando le rispettive mappe di texture dal browser di file.

  6. Nella finestra Explorer, fai clic con il tasto destro sull'oggetto SurfaceAppearance, quindi seleziona Converti in Pacchetto dal menu contestuale. Viene visualizzato il dialogo Converti in Pacchetto.

  7. Compila i campi Titolo e Descrizione, imposta la proprietà a te stesso o a un gruppo, quindi fai clic sul pulsante Invia. Una volta completato, un simbolo a catena viene visualizzato sopra l'icona dell'oggetto SurfaceAppearance per identificarlo come un pacchetto.

    L'icona Surface Appearance con un simbolo a catena.
  8. OPZIONALE
    Seleziona l'oggetto figlio PackageLink dell'oggetto SurfaceAppearance, quindi nella finestra Proprietà, abilita AutoUpdate per aggiornare automaticamente il pacchetto se apporti modifiche all'oggetto SurfaceAppearance.

Importa asset modulari e oggetti

Studio rappresenta gli asset modulari e gli oggetti che importi come oggetti Model con MeshParts figli per ciascun componente dell'asset. Ad esempio, se importi una sezione di muro con un trim superiore, un trim inferiore e un componente muro, Studio rappresenta il file .fbx o .obj come un Wall_Section Model con separati Top_Trim, Bottom_Trim e Wall MeshParts.

Utilizzando l'Importatore, puoi importare il kit modulare di esempio e gli oggetti in Studio per l'uso nella tua libreria di asset, oppure puoi importare qualsiasi asset che hai progettato nella sezione precedente del tutorial. Per ulteriori informazioni sulle funzionalità di questo strumento, consulta Importer.

Per importare i tuoi asset modulari e oggetti nel gioco:

  1. Dal menu File, seleziona Importa. Viene visualizzato un browser di file.

  2. Seleziona un file .fbx per un asset modulare o un oggetto.

  3. Verifica l'anteprima dell'oggetto e controlla che le impostazioni di importazione siano corrette per il tuo oggetto.

  4. Verifica eventuali messaggi di avviso o errore.

  5. Fai clic su Importa. L'asset viene visualizzato nella finestra Explorer e nella vista.

  6. Ripeti questo processo per ciascun asset modulare e oggetto.

  7. Sposta tutti i tuoi asset in un'area del tuo gioco vicino alla tua geometria greybox. Questa zona è la tua libreria di asset.

Applica i dati SurfaceAppearance

Quando segui il processo di srotolamento delle UV di una mesh in un software di modellazione di terze parti, il software memorizza i dati UV all'interno del file .fbx o .obj della mesh. Quando importi quella mesh in Studio, l'oggetto MeshPart risultante mantiene quei dati, ma devi comunque applicare un oggetto SurfaceAppearance con proprietà di mappa di texture dal tuo trim sheet per visualizzare le tue texture di trim sull'asset.

Per applicare i dati di mappa di texture SurfaceAppearance a mesh non avvolte nella tua libreria di asset:

  1. Nella finestra Explorer, fai clic sul tuo pacchetto SurfaceAppearance, quindi premi CtrlD (D) per duplicarlo.
  2. Genitore il pacchetto duplicato SurfaceAppearance a un asset modulare o a un oggetto. L'asset applica i suoi dati UV alle mappe di texture e visualizza il suo trattamento visivo.
  3. Ripeti questo processo per ciascun asset modulare e oggetto.

Imposta parametri fisici e di rendering

Ora che hai i tuoi asset all'interno di Studio, è importante impostare parametri fisici e di rendering che consentano agli asset di mantenere la massima qualità visiva possibile su dispositivi con limitazioni di memoria e GPU. In generale, più ti attieni alle indicazioni in questa sezione, più prestante sarà il tuo gioco. Tuttavia, è importante considerare attentamente il contesto in cui intendi posizionare ciascun asset all'interno dell'ambiente complessivo per garantire che tu mantenga i tuoi obiettivi estetici e i requisiti di gioco.

Ancorato

La proprietà BasePart.Anchored determina se il sistema fisico del motore Roblox influisce sulla posizione dell'oggetto. Quando abiliti questa proprietà per un Part o MeshPart, rimuove l'oggetto dai calcoli fisici della simulazione dinamica che è sempre in esecuzione nel gioco, il che significa che l'oggetto non cambierà mai posizione a causa della gravità o della collisione con altri oggetti.

Gli oggetti che non simulano una risposta fisica sono più economici da renderizzare perché non occupano la GPU necessaria per quei calcoli fisici. Quando liberi GPU, migliori le prestazioni del tuo gioco, specialmente su dispositivi di fascia bassa che devono risparmiare GPU per un gameplay veloce. È per questo motivo che ogni asset a parte le porte nell'ambiente finale del laser tag campione è ancorato.

CanCollide

La proprietà BasePart.CanCollide determina se l'oggetto può interagire fisicamente con altri oggetti. Quando abiliti questa proprietà per un Part o MeshPart, l'oggetto è impenetrabile e il motore Roblox lo considera nei calcoli fisici. Questi calcoli possono influenzare le prestazioni del tuo gioco quando ci sono molti oggetti che il motore deve considerare nei suoi calcoli fisici.

Per alleviare parte di questo impatto sulle prestazioni, disabilita questa proprietà per oggetti con cui l'utente non interagirà mai. Ad esempio, l'ambiente finale del laser tag campione disabilita questa proprietà per tutta la vegetazione.

CanTouch

La proprietà BasePart.CanTouch determina se gli eventi Touched e TouchEnded si attivano sull'oggetto. Quando abiliti questa proprietà per un Part o MeshPart, il motore Roblox controlla lo stato dell'evento di contatto dell'oggetto per vedere se deve attivare o fermare un evento.

Questo processo avviene per ogni singolo frame, il che può occupare una quantità significativa di memoria se il motore deve controllare lo stato dell'evento di contatto per molti oggetti contemporaneamente. Per alleviare parte di questo impatto sulla memoria, abilita questa proprietà solo per oggetti che devono attivare un evento.

CanQuery

La proprietà BasePart.CanQuery determina se il motore Roblox considera l'oggetto durante le operazioni di query spaziale, come il raycasting. Studio abilita questa proprietà per ogni Part o MeshPart per impostazione predefinita, il che significa che il motore controlla se ciascun oggetto deve chiamare un'operazione di query spaziale. Questo processo avviene per ogni singolo frame, il che può occupare una quantità significativa di memoria quando il motore deve effettuare questi controlli per molti oggetti contemporaneamente.

Per questo motivo, è consigliabile disabilitare questa proprietà per oggetti che il motore Roblox non deve considerare per operazioni di query spaziale. Quando prendi decisioni su dove disabilitare questa proprietà, considera come ciascun asset impatta il gameplay. Ad esempio, l'ambiente finale del laser tag campione mantiene questa proprietà abilitata per ogni muro nell'edificio perché il motore deve considerare queste superfici mentre gli utenti sparano raggi dai loro fucili laser. Se il motore non considera questi asset, il raggio passerebbe attraverso l'edificio come se non ci fosse affatto.

CastShadow

La proprietà BasePart.CastShadow determina se l'oggetto proietta un'ombra. Quando abiliti questa proprietà per un Part o MeshPart, il motore Roblox calcola ogni posizione del vertice dell'oggetto durante il runtime, quindi disegna un raycast dal sole a qualsiasi dei suoi oggetti vicini fino a quando non collide con un altro oggetto per creare l'ombra.

Questi calcoli possono comportare un costo in termini di prestazioni, specialmente quando hai molti oggetti di complessità geometrica. Questo perché gli oggetti con complessità geometrica hanno più poligoni rispetto agli oggetti geometricamente semplici, il che significa che hanno più vertici che il motore deve calcolare per l'ombra dell'oggetto. Meno poligoni ci sono in un oggetto, più veloce è l'operazione e più economica è la sua ombra.

Una sezione di muro con pochi poligoni e una pianta con molti poligoni che proietta ombre su un muro bianco.

Le ombre possono fornire un grande senso di realismo agli oggetti con profondità geometrica 3D, quindi quando decidi dove disabilitare questa proprietà, considera dove gli oggetti forniscono un miglioramento visivo significativo all'ambiente e dove gli utenti noteranno ombre mancanti. Ad esempio, le ombre complesse della vegetazione possono fornire un grande senso di immersione nello spazio esterno dove gli utenti sono probabili di vederle, ma quella stessa immersione non è necessaria per la vegetazione che spunta attraverso il soffitto con cui gli utenti non interagiranno mai.

Vegetazione che non proietta ombre.
BasePart.CastShadow = Disabilitato

DoubleSided

La proprietà MeshPart.DoubleSided determina se rendere entrambi i lati o poligoni nella mesh. Quando abiliti questa proprietà per un MeshPart planare, come foglie, capelli o carte di stoffa, il motore Roblox rende entrambi i lati o poligoni nella mesh per consentire agli utenti di vedere la pienezza dell'oggetto indipendentemente dall'angolo da cui stanno guardando l'oggetto. Ad esempio, le seguenti foglie di albero sono mesh planari unilaterali e quando abiliti questa proprietà, qualsiasi delle foglie che si trovano lontano dalla telecamera diventano visibili per l'utente.

Un albero con meno foglie perché tutte le mesh planari rivolte lontano dalla telecamera sono disabilitate.
MeshPart.DoubleSided = Disabilitato

Questa proprietà è utile per aggiungere realismo al tuo ambiente, ma comporta un costo in termini di prestazioni perché il motore deve rendere i poligoni dell'oggetto due volte: una volta per la direzione che si trova di fronte alla telecamera dell'utente e di nuovo per qualsiasi mesh che si trova lontano dalla telecamera dell'utente. Per alleviare parte di questo impatto sulle prestazioni, l'ambiente finale del laser tag campione abilita questa proprietà solo per la vegetazione perché ha un forte impatto visivo per il realismo nello spazio 3D.

CollisionFidelity

La proprietà MeshPart.CollisionFidelity determina quanto da vicino la hitbox fisica di una mesh o un'unione corrisponde alla sua rappresentazione visiva. Per impostazione predefinita, questa impostazione rende una hitbox che è approssimativamente la stessa della forma poligonale della mesh, il che significa che dove gli utenti collidono con l'oggetto è simile alla geometria effettiva della mesh. Ad esempio, la mesh del castello nelle immagini seguenti ha una hitbox predefinita che quasi corrisponde alla forma della sua geometria.

Una mesh di castello grigia.
Mesh Originale
La stessa mesh di castello con una hitbox colorata che mostra dove gli utenti possono collidere con il castello.
Predefinito

Puoi impostare questa proprietà su un valore diverso per ridurre la precisione della hitbox di una mesh. Ad esempio, quando imposti questa proprietà su Hull, il motore Roblox riduce significativamente i vertici della hitbox della mesh, e quando imposti questa proprietà su Box, il motore riduce la hitbox della mesh a un cubo che circonda la mesh. Inoltre, se desideri aumentare la precisione della hitbox di una mesh, puoi impostare questa proprietà su PreciseConvexDecomposition per aumentare il numero di vertici nella hitbox.

La stessa mesh di castello con una hitbox cubica che mostra dove gli utenti possono collidere con il castello.
Box
La stessa mesh di castello con una hitbox cilindrica che mostra dove gli utenti possono collidere con il castello.
Hull
La stessa mesh di castello con una hitbox colorata che mostra dove gli utenti possono collidere con il castello. Questa versione mostra più facce colorate rispetto alla hitbox predefinita.
PreciseConvexDecomposition

Simile a BasePart.CastShadow, più vertici il motore Roblox deve rendere, maggiore è il costo delle prestazioni. Per questo motivo, è importante considerare come desideri che gli utenti interagiscano con ciascuna mesh per vedere se puoi ridurre il numero di vertici che il motore deve rendere per la hitbox della mesh. Nei casi in cui non è necessario che una hitbox sia precisa, imposta questa proprietà su Box o Hull.

Per dimostrare questo concetto, fai riferimento alle seguenti immagini che mostrano la hitbox di ogni mesh del modello di muro che fornisce un rialzo tra il primo e il secondo piano dell'ambiente finale del laser tag campione. La hitbox predefinita per il muro principale ha molta geometria non necessaria quando deve solo fornire una superficie per impedire all'utente di muoversi in quella direzione. Se imposti la proprietà su Box per questa mesh, puoi rimuovere questa geometria ridondante mantenendo intatto lo scopo della hitbox.

Un modello di muro che fornisce un rialzo.
Mesh Originale
Lo stesso modello di muro con una hitbox colorata che mostra dove gli utenti possono collidere con il muro.
Predefinito
Lo stesso modello di muro con una hitbox colorata per il trim, ma solo una hitbox cubica per la mesh del muro.
Box

Mentre prendi queste decisioni, è importante considerare come cambiare il valore predefinito possa influenzare negativamente gli utenti mentre navigano nel tuo ambiente. Ad esempio, se imposti la proprietà su Box per le mesh del trim del modello di muro, gli utenti colliderebbero con la hitbox se provano a saltare vicino al muro. Invece, imposta queste mesh su Hull in modo da ridurre il numero di vertici mantenendo la hitbox più vicina alla forma della geometria della mesh.

Un modello di muro con una hitbox cubica per il trim superiore. Poiché la scatola sporge, gli utenti possono collidere involontariamente con il trim superiore.
Box
Lo stesso modello di muro con una hitbox hull per il trim superiore. Poiché la hitbox hull si conforma molto più vicino alla parte superiore del modello, consente agli utenti di evitare di collidere con il trim.
Hull

Nota che può essere importante avere una hitbox che si conforma precisamente alla forma della tua mesh, specialmente quando hai bisogno di controllare esattamente come gli utenti collidono con la sua forma. Ad esempio, nell'ambiente finale del laser tag campione, è importante che gli utenti collidano solo con i bordi della porta e non con la porta stessa, altrimenti non potrebbero mai entrare o uscire da un'area di combattimento.

Un modello di porta con mesh di hitbox ottimizzate.

RenderFidelity

La proprietà MeshPart.RenderFidelity determina il livello di dettaglio della mesh che viene visualizzato per l'utente. Quando imposti questa proprietà su Enum.RenderFidelity.Automatic, il motore Roblox riduce la fedeltà della mesh più l'utente è lontano dalla mesh, e quando imposti questa proprietà su Enum.RenderFidelity.Precise, ogni vertice della tua mesh viene renderizzato esattamente come intendi, indipendentemente dalla distanza tra di loro.

Più oggetti il motore deve rendere precisamente per l'utente da qualsiasi distanza, specialmente se hanno un alto numero di vertici, maggiore è il costo delle prestazioni. Per alleviare parte di questo impatto sulle prestazioni, imposta questa proprietà su Enum.RenderFidelity.Performance per oggetti con complessità geometrica, come la vegetazione nella libreria di asset di esempio, perché non è necessario visualizzarli nella loro interezza da lontano per alcun requisito di gameplay. Questo riduce il numero di poligoni del tuo gioco senza compromettere la qualità visiva complessiva.

Converti gli asset in pacchetti

Ora che tutti i tuoi asset modulari sono in Studio con parametri di rendering impostati per mantenere la loro alta qualità visiva per tutti gli utenti, è tempo di convertirli in pacchetti. È importante convertire i tuoi asset in pacchetti perché ti consente di riutilizzarli ripetutamente nel tuo gioco attuale e in altri progetti. Inoltre, puoi facilmente apportare modifiche a un pacchetto che si popolano istantaneamente a tutte le sue istanze, risparmiandoti molto tempo nel processo di iterazione.

Poiché i tuoi oggetti SurfaceAppearance sono già pacchetti, quando converti i tuoi oggetti Model in pacchetti, diventano pacchetti annidati. I pacchetti annidati ti consentono di mantenere gerarchie complesse di oggetti figli che puoi modificare indipendentemente dal pacchetto dell'oggetto Model. Questo ti consente un maggiore controllo sui singoli componenti dei tuoi asset.

Per convertire i tuoi asset modulari e oggetti in pacchetti:

  1. Nella finestra Explorer, fai clic con il tasto destro su un asset modulare o un oggetto, quindi seleziona Converti in Pacchetto dal menu contestuale. Viene visualizzato il dialogo Converti in Pacchetto.

  2. Compila i campi Titolo e Descrizione, imposta la proprietà a te stesso o a un gruppo, quindi fai clic sul pulsante Invia. Una volta completato, un simbolo a catena viene visualizzato sopra l'icona del modello per identificarlo come un pacchetto.

    L'icona del modello con un simbolo a catena.
  3. Ripeti questo processo per ciascun asset modulare e oggetto.

Una volta che sei soddisfatto del layout complessivo della tua libreria di asset, puoi passare a decorare l'ambiente con i tuoi asset rifiniti e configurare ulteriori elementi dello spazio 3D per dare vita al tuo mondo.

© 2026 Roblox Corporation. Roblox, il logo Roblox e Powering Imagination sono tra i nostri marchi registrati e non registrati negli Stati Uniti. e altri paesi.