Assemblare una biblioteca di risorse è il processo di importazione e configurazione di una raccolta di risorse in una posizione centrale all'interno della tua esperienza per l'accesso facile e il riutilizzo.Questo processo può risparmiarti tempo significativo mentre ti prepari a costruire il tuo Ambiente, specialmente se configuri i valori di ciascuna risorsa per migliorare le prestazioni e ottimizzare l'utilizzo della memoria su dispositivi mid-low-end.
Usando il file Environment Art - Assemblaggio.rbxl come riferimento, questa sezione del corso di arte ambientale ti mostra come assemblare una libreria di risorse da risorse levigate, tra cui istruzioni passo dopo passo:
- Creazione di materiali personalizzati per il tuo terreno dalle tue texture tileabili.
- Creazione di oggetti SurfaceAppearance per la tua foglia di taglio e applicazione a mesh non imballati nella tua libreria di risorse.
- Impostazione dei parametri di rendering per le tue risorse per garantire le prestazioni ottimali su tutti i dispositivi.
- Convertire le tue risorse in pacchetti in modo da poterle aggiornare e riutilizzare in tutti i tuoi progetti.
Dopo aver completato questa sezione, imparerai a utilizzare la tua biblioteca di risorse in modi creativi per sostituire o convertire l'Ambientedella scatola grigia e aggiungere tocchi finali che migliorino lo Spazio3D complessivo.

Crea materiali personalizzati
Studio rappresenta materiali personalizzati come oggetti MaterialVariant dentro il MaterialService .Questi oggetti hanno quattro proprietà che combinano le quattro mappe di texture tileabile per creare un materiale personalizzato di alta qualità con caratteristiche fisiche:
- MaterialVariant.ColorMap – Rappresenta la mappa della texture dell'albedo.
- MaterialVariant.MetalnessMap – Rappresenta la mappa della texture della metallicità.
- MaterialVariant.NormalMap – Rappresenta la mappa della texture normale.
- MaterialVariant.RoughnessMap – Rappresenta la mappa della texture della rugosità.
Dopo aver fornito le mappe di texture a queste proprietà, puoi applicare il tuo nuovo materiale personalizzato a entrambe le parti, le maglie e il terreno.Puoi utilizzare o modificare la mappa di texture di esempio .png file per creare il Lumpy Moss, Flowering Lumpy Moss, Lumpy Moss con pietre e materiali personalizzati di pietra all'interno dell'Ambientedi tag laser finale, o puoi utilizzare il tuo proprio che hai progettato nella sezione precedente del Tutoriale.
Per creare MaterialVariant oggetti per le tue texture tileabili:
Nella scheda Home o Modello della barra degli strumenti, fai clic sul pulsante Gestore materiali .Si apre la finestra Gestore materiali .
Nella lista Materiali , seleziona il materiale di base che si allinea maggiormente con la tua Strutturatileabile.Ad esempio, se stavi creando un oggetto MaterialVariant per la Strutturatileabile Lumpy Moss, scegli il materiale di base predefinito in modo che il materiale erediti le sue proprietà fisiche.
Nella barra degli strumenti , fai clic sull'Icona ⊕ .Un nuovo MaterialVariant viene visualizzato nella palette con un'icona nell'angolo in basso a destra che indica che è un materiale personalizzato.
Nell' ispettore , naviga alla sezione Generale , quindi rinomina il materiale per allinearsi al nome della tua Strutturatileabile.
Nella sezione Mappe di texture , sul lato destro di Colore , clicca il pulsante Importa . Viene visualizzato un browser dei file.
Nel browser file, seleziona la mappa texture Albedo per la corrispondente Strutturatileabile, quindi il pulsante Apri.Il browser dei file si chiude e la nuova mappa dei colori viene visualizzata con il suo assetID.
Ripeti questo processo per le mappe di texture Metallicità , Normale , e Ruvidità .Il materiale personalizzato viene aggiornato per riflettere le mappe della texture.
Nella sezione Sostituzioni , attiva l'opzione Imposta come sostituzione per garantire che quando applichi il terreno al tuo terreno, Studio utilizzi questo materiale personalizzato.
(Opzionale) Se stai creando un materiale personalizzato che rappresenta un materiale organico,
- Nella sezione Tiling , fai clic sul menu a discesa Pattern .
- Seleziona Organico per randomizzare l'output e ridurre la formattazione visibile.
Ripeti questo processo per ogni texture tileabile che vuoi includere nella tua esperienza.
Crea pacchetti di SurfaceAppearance
Studio utilizza le schede di taglio all'interno degli oggetti SurfaceAppearance che puoi genere a MeshParts contenenti dati UV.Simili ai materiali personalizzati, SurfaceAppearance gli oggetti hanno quattro proprietà che combinano le quattro mappe di texture della foglia di taglio per creare un trattamento della superficie visiva 3D di alta qualità:
SurfaceAppearance.ColorMap – Rappresenta la mappa della texture dell'albedo.SurfaceAppearance.MetalnessMap – Rappresenta la mappa della texture della metallicità.SurfaceAppearance.NormalMap – Rappresenta la mappa della texture normale.SurfaceAppearance.RoughnessMap – Rappresenta la mappa della texture della ruvidità.
Dopo aver fornito le mappe di texture a queste proprietà, puoi rendere l'oggetto SurfaceAppearance figlio di un MeshPart con dati UV che si mappa sulla tua foglia di taglio e i dati UV si applicano automaticamente alla Mesh, magliapadre.È per questo motivo che è utile rendere l'oggetto SurfaceAppearancepacchetto in modo che tu possa riutilizzare lo stesso oggetto SurfaceAppearance in tutte le tue risorse modulari e oggetti.Ad esempio, i seguenti mesh tutti hanno dati uv che si mappano sullo stesso layout della pagina di taglio che è rappresentato all'interno di un singolo oggetto SurfaceAppearance pacchetto.

Puoi utilizzare o modificare la mappa di texture di esempio .png file per creare un oggetto SurfaceAppearance che rispetti i dati uv per le risorse modulari di esempio e gli accessori all'interno dell'Ambientedi tag laser finale, o puoi utilizzare il tuo proprio che hai progettato nella sezione precedente del tutorial che si applica alle tue risorse modulari e agli accessori.
Per creare SurfaceAppearance pacchetti che puoi figliare al tuo kit modulare e oggetti:
Inserisci un oggetto SurfaceAppearance in Workspace.
Seleziona l'oggetto SurfaceAppearance , quindi nella finestra Proprietà , seleziona la proprietà MappaColore . Un pop-up viene visualizzato.
Fai clic sul pulsante Aggiungi immagine... . Viene visualizzato un browser di file.
Seleziona la mappa della texture Albedo per la corrispondente Strutturatileabile, quindi il pulsante Apri .Il browser dei file si chiude e la proprietà Mappa colori aggiorna con un nuovo ID risorsa.
Ripeti questo processo per la Mappa di Metalness , Mappa Normale , e Mappa di Ruvidità proprietà, selezionando le rispettive mappe di texture dal browser file.
Nella finestra Explorer , fai clic con il pulsante destro del mouse sull'oggetto SurfaceAppearance , quindi seleziona Convert to Packag e dal menu contestuale.Il dialogo Converti in pacchetto viene visualizzato.
Completa i campi Titolo e Descrizione , imposta la proprietà a te stesso o a un Gruppo, quindi clicca il pulsante Invia .Una volta completata, un simbolo di link a catena viene visualizzato sull'icona dell'oggetto SurfaceAppearance per identificarlo come un pacchetto.
(Opzionale) Seleziona l'oggetto SurfaceAppearance figlio del oggetto PackageLink , quindi nella finestra Proprietà , abilita Aggiornamento automatico per aggiornare automaticamente il pacchetto se apporti modifiche all'oggetto SurfaceAppearance .
Importa risorse modulari e oggetti
Studio rappresenta le risorse modulari e i props che importi come oggetti con figlio per ciascuna componente dell'risorsa.Ad esempio, se importi una sezione del muro con un bordo superiore, un bordo inferiore e una componente del muro, Studio rappresenta il file o come Sezione_Muro con un bordo separato Top_Trim , Bottom_Trim e Muro .

Usando l'importatore 3D, puoi importare il campionario modulare e gli accessori nel Studio per l'uso nella tua libreria di risorse, o puoi importare qualsiasi risorsa che hai progettato nella sezione precedente del Tutoriale.Per ulteriori informazioni sulla funzionalità di questo strumento, vedi 3D Importer.
Per importare le tue risorse modulari e oggetti nella esperienza:
Nella scheda Home o Avatar della barra degli strumenti, fai clic sul pulsante Importa 3D . Un browser dei file viene visualizzato.
Seleziona un file .fbx per una risorsa modulare o un Accessorio.
Verifica l'anteprima dell'oggetto e controlla che le impostazioni di importazione siano corrette per il tuo oggetto.
Verifica qualsiasi avviso o messaggio di errore.
Fai clic su Importa . L'asset viene visualizzato nella finestra Explorer e nella vista.
Ripeti questo processo per ogni risorsa modulare e Accessorio.
Sposta tutte le tue risorse in una zona della tua esperienza vicino alla geometria della tua casella grigia. Questa zona è la tua libreria di risorse.
Applica i dati di SurfaceAppearance
Quando passi attraverso il processo di rimozione degli 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, maglia.Quando importi quella mesh in Studio, l'oggetto risultante MeshPart mantiene tali dati, ma devi comunque applicare un oggetto SurfaceAppearance con proprietà di mappa di texture dalla tua scheda di taglio per visualizzare le tue texture di taglio sull'risorsa.
Per applicare i dati della mappa della texture SurfaceAppearance ai mesh srotte nella tua libreria di risorse:
- Nella finestra Explorer , fai clic sul tuo pacchetto SurfaceAppearance , quindi premi CtrlD ( ⌘D ) per duplicarlo.
- Figlio il pacchetto duplicato SurfaceAppearance a una risorsa modulare o a un Accessorio.L'asset applica i suoi dati UV alle mappe di texture e visualizza il suo trattamento visivo.
- Ripeti questo processo per ogni risorsa modulare e Accessorio.
Imposta i parametri di fisica e rendering
Ora che hai le tue risorse all'interno di Studio, è importante impostare i parametri di fisica e rendering che consentono alle risorse di mantenere la qualità visiva più elevata possibile su dispositivi con limitazioni di memoria e GPU.In Generale, più strettamente aderisci alle linee guida di questa sezione, più performante renderai la tua esperienza.Tuttavia, è importante considerare attentamente il contesto in cui prevedi di posizionare ciascuna risorsa all'interno dell'ambiente complessivo per garantire di mantenere i tuoi obiettivi estetici e le richieste di gioco.
Ancorato
La proprietà BasePart.Anchored determina se il sistema fisico del motore Roblox influisca sulla posizione dell'oggetto.Quando attivi questa proprietà per un Part o MeshPart, rimuove l'oggetto dai calcoli fisici della simulazione dinamica che è sempre in esecuzione nell'esperienza, 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 rendere perché non occupano la GPU necessaria per tali calcoli fisici.Quando liberi la GPU, migliori le prestazioni per la tua esperienza, in particolare su dispositivi di basso livello che devono salvare la GPU per un Partitaveloce.È per questo motivo che ogni oggetto a parte le porte nell'ambiente di etichetta laser finale è ancorato.
CanCollide
La proprietà BasePart.CanCollide determina se l'oggetto può interagire fisicamente con altri oggetti.Quando attivi questa proprietà per un Part o MeshPart, l'oggetto è impenetrabile e gli account del motore Roblox lo tengono in conto nei calcoli fisici.Questi calcoli possono influenzare le prestazioni della tua esperienza quando ci sono molti oggetti che il motore deve considerare nei suoi calcoli fisici.
Per alleviare parte di questo impatto sulle Prestazione, disabilita questa proprietà per gli oggetti con cui l'utente non interagirà mai.Ad esempio, l'ambiente di etichetta laser finale disabilita questa proprietà per tutto il fogliame.

CanTouch
La proprietà BasePart.CanTouch determina se gli eventi Touched e TouchEnded si attivino sull'oggetto.Quando attivi questa proprietà per un Part o MeshPart, il motore Roblox controlla lo stato dell'evento di tocco dell'oggetto per vedere se deve attivare o interrompere un evento.
Questo processo accade per ogni singolo frame, che può occupare una notevole quantità di memoria se il motore deve controllare lo stato dell'evento di tocco per molti oggetti contemporaneamente.Per alleviare parte di questo impatto sulla memoria, abilita solo questa proprietà per gli oggetti che devono attivare un evento.
Può query
La proprietà BasePart.CanQuery determina se il motore Roblox consideri l'oggetto durante le operazioni di query spaziali, come il raycasting.Studio abilita questa proprietà per ogni Part o MeshPart per impostazione predefinita, il che significa che il motore controlla per vedere se ogni oggetto deve chiamare un'operazione di query spaziale.Questo processo si verifica per ogni singolo frame, che può occupare una notevole quantità di memoria quando il motore deve eseguire questi controlli per molti oggetti contemporaneamente.
Per questo motivo, si consiglia di disabilitare questa proprietà per gli oggetti che il motore Roblox non deve considerare per le operazioni di query spaziali.Quando si prendono decisioni su dove disabilitare questa Proprietà, si consideri come ogni risorsa influisca sul Partita.Ad esempio, l'ambiente di etichetta laser finale mantiene questa proprietà abilitata per ogni parete nell'edificio perché il motore deve tener conto di queste superfici quando gli utenti sparano laser dalla loro pistola di etichetta laser.Se il motore non tiene conto di queste risorse, allora il laser sparerebbe direttamente attraverso l'edificio come se non fosse tutti/tuttelì.
Ombra di cast
La proprietà BasePart.CastShadow determina se l'oggetto lancia un'ombra.Quando attivi questa proprietà per un Part o MeshPart , il motore Roblox calcola ogni posizione di vertice dell'oggetto durante l'Tempo esecuzione, quindi traccia un raycast dal sole a uno qualsiasi dei suoi oggetti vicini fino a quando non si scontra con un altro oggetto per creare l'ombra.
Questi calcoli possono arrivare a un costo di prestazioni, soprattutto quando hai molti oggetti di complessità geometrica.Questo perché gli oggetti con complessità geometrica hanno più poligoni rispetto agli oggetti che sono geometricamente semplici, il che significa che hanno più vertici che l'engine deve calcolare per l'ombra dell'oggetto.Più meno poligoni in un oggetto, più veloce è l'operazione e più economica è la sua ombra.

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'Ambientee dove gli utenti noteranno la mancanza di ombre.Ad esempio, le ombre complesse del fogliame possono fornire un grande senso di immersione nello spazio esterno in cui gli utenti sono probabili vederli, ma quella stessa immersione non è necessaria per il fogliame che punta attraverso il soffitto che gli utenti non interagiranno mai.


Doppio lato
La proprietà MeshPart.DoubleSided determina se rendere entrambi i volti o i poligoni nella Mesh, maglia.Quando attivi questa proprietà per un piano MeshPart piatto, come foglie, capelli o carte tessuto, il motore Roblox rende entrambi i volti o i poligoni nella mesh per consentire agli utenti di vedere la completezza dell'oggetto indipendentemente dall'angolo in cui guardano l'oggetto.Ad esempio, le seguenti maglie a forma di albero sono maglie piane monolaterali e, quando si abilita questa Proprietà, qualsiasi delle foglie che si trova lontano dalla fotocamera diventa visibile all'utente.


Questa proprietà è utile per aggiungere realismo al tuo Ambiente, ma ha un costo di performance perché il motore deve rendere i poligoni dell'oggetto due volte: una volta per la direzione che si trova di fronte alla Telecameradell'utente e di nuovo per qualsiasi mesh che si trova lontana dalla Telecameradell'utente.Per alleviare parte di questo impatto sulle Prestazione, l'ambiente di tag laser finale per il campione finale consente solo questa proprietà per il fogliame perché ha un forte impatto visivo per il realismo nello Spazio3D.
Fiducia della collisione
La proprietà MeshPart.CollisionFidelity determina quanto strettamente la hitbox fisica di una mesh o unione corrisponde alla sua rappresentazione visiva.Per impostazione predefinita, questa impostazione rende una hitbox che è circa la stessa della forma poligonale della Mesh, maglia, il che significa che dove gli utenti si scontrano con l'oggetto è simile alla geometria reale della Mesh, maglia.Ad esempio, la mesh del castello nelle seguenti immagini ha un hitbox predefinito che si avvicina quasi alla forma della sua geometria.


Puoi impostare questa proprietà a un valore diverso per ridurre la precisione dell'hitbox di una Mesh, maglia.Ad esempio, quando imposti questa proprietà a Hull , il motore Roblox riduce notevolmente i vertici dell'hitbox della Mesh, magliae quando imposti questa proprietà a Box , il motore riduce l'hitbox della Mesh, magliaa un cubo che circonda la Mesh, maglia.Inoltre, se vuoi aumentare la precisione della hitbox di una Mesh, maglia, puoi impostare questa proprietà su PreciseConvexDecomposition per aumentare la quantità di vertici nella hitbox.



Simile a BasePart.CastShadow , più vertici ha bisogno di Renderizzareil motore Roblox, maggiore è il costo delle prestazioni.Per questo motivo, è importante considerare come vuoi che gli utenti interagiscano con ciascuna mesh per vedere se puoi ridurre la quantità di vertici di cui l'engine ha bisogno per rendere per l'hitbox della Mesh, maglia.Nei casi in cui non è necessario che un hitbox sia preciso, imposta questa proprietà su Scatola o Conchiglia .
Per dimostrare questo concetto, fai riferimento alle seguenti immagini che mostrano la hitbox di ogni mesh del modello di parete che fornisce un aumento dell'altezza tra il primo e il secondo piano del tag laser finale dell'Ambientedi campionamento.L'hitbox predefinita per il muro principale ha molta geometria inutile quando deve fornire solo una superficie per impedire all'utente di muoversi in quella direzione.Se impostate la proprietà a Scatola per questa Mesh, maglia, potete rimuovere questa geometria ridondante mantenendo l'obiettivo dell'hitbox intatto.



Mentre prendi queste decisioni, è importante considerare come cambiare il valore predefinito possa influenzare negativamente gli utenti mentre navigano nel tuo Ambiente.Ad esempio, se impostate la proprietà a Scatola per le maglie di taglio del modello di parete, gli utenti si scontrerebbero con la hitbox se tentassero di saltare vicino al muro.Invece, imposta queste maglie su Hull in modo da ridurre il numero di vertici mentre mantieni l'hitbox più vicino alla forma della geometria della Mesh, maglia.


Nota che può essere importante avere un hitbox che si conformi precisamente alla forma della tua Mesh, maglia, soprattutto quando devi controllare esattamente come gli utenti si scontrano con la sua forma.Ad esempio, nell'Ambientedi tag laser finale del campione, è importante che gli utenti si scontrino solo con i bordi dell'ingresso e non con l'ingresso stesso, altrimenti non sarebbero mai in grado di entrare o uscire da una tasca di combattimento.

RendereFideltà
La proprietà MeshPart.RenderFidelity determina il livello di dettaglio della Mesh, magliache viene visualizzato all'utente.Quando impostate questa proprietà a Enum.RenderFidelity.Automatic , il motore Roblox riduce la fedeltà della Mesh, magliapiù l'utente è lontano dalla Mesh, magliae quando impostate questa proprietà a Enum.RenderFidelity.Precise , ogni vertice della vostra mesh si rende esattamente come intendete, indipendentemente dalla distanza tra di loro.
Più oggetti deve rendere precisamente all'utente da qualsiasi distanza, soprattutto se hanno un alto conteggio di vertici, maggiore è il costo delle prestazioni.Per alleviare parte di questo impatto sulle Prestazione, imposta questa proprietà su Enum.RenderFidelity.Performance per gli oggetti con complessità geometrica, come il fogliame nella libreria di risorse di esempio, perché non hanno bisogno di essere visualizzati nella loro interezza da una distanza per qualsiasi requisito di gioco.Questo riduce il numero di poligoni della tua esperienza senza sacrificare la qualità visiva complessiva.
Converti le risorse in pacchetti
Ora che tutte le tue risorse modulari sono in Studio con parametri di rendering che sono configurati per mantenere la loro alta qualità visiva per tutti gli utenti, è il momento di convertirle in pacchetti.È importante convertire le tue risorse in pacchetti perché ti consente di riutilizzarle ripetutamente durante la tua esperienza attuale e altri progetti.Inoltre, puoi facilmente apportare modifiche a un pacchetto che popola istantaneamente tutte le sue istanze, risparmiandoti un sacco di 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 complesse gerarchie di oggetti figli che puoi modificare indipendentemente dal pacchetto oggetto Model.Questo ti consente un maggiore controllo sulle singole componenti delle tue risorse.

Per convertire le tue risorse modulari e i props in pacchetti:
Nella finestra Explorer , fai clic con il pulsante destro del mouse su una risorsa modulare o su un Accessorio, quindi seleziona Converti in pacchetto dal menu contestuale.Il dialogo Converti in pacchetto viene visualizzato.
Completa i campi Titolo e Descrizione , imposta la proprietà a te stesso o a un Gruppo, quindi clicca il pulsante Invia .Una volta completata, un simbolo di link a catena viene visualizzato sull'icona del modello per identificarlo come un pacchetto.
Ripeti questo processo per ogni risorsa modulare e Accessorio.
Una volta che sei soddisfatto dell'layout generale della tua biblioteca di risorse, puoi passare alla decorazione dell'ambiente con le tue risorse appena lucite e configurare elementi aggiuntivi dello spazio 3D per portare il tuo mondo in vita.