Assembla una biblioteca di risorse

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


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.

The sample laser tag experience's modular and prop kit.

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:

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:

  1. Nella scheda Home o Modello della barra degli strumenti, fai clic sul pulsante Gestore materiali .Si apre la finestra Gestore materiali .

  2. 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.

  3. 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.

    New MaterialVariant tile in Material Manager with icon to indicate a custom material
  4. Nell' ispettore , naviga alla sezione Generale , quindi rinomina il materiale per allinearsi al nome della tua Strutturatileabile.

    The Inspector view with the name of the material highlighted.
  5. Nella sezione Mappe di texture , sul lato destro di Colore , clicca il pulsante Importa . Viene visualizzato un browser dei file.

    The Texture Maps section of the Inspector view with the Import button highlighted.
  6. 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.

  7. Ripeti questo processo per le mappe di texture Metallicità , Normale , e Ruvidità .Il materiale personalizzato viene aggiornato per riflettere le mappe della texture.

    All texture maps for the Moss_Lumpy_A material.
     sphere part with the Moss_Lumpy_A material applied.
  8. Nella sezione Sostituzioni , attiva l'opzione Imposta come sostituzione per garantire che quando applichi il terreno al tuo terreno, Studio utilizzi questo materiale personalizzato.

    The Set as Override toggle enabled.
  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 formattazione visibile.
    The Tiling section of the Inspector view with its settings.
  10. 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:

  1. Inserisci un oggetto SurfaceAppearance in Workspace.

  2. Seleziona l'oggetto SurfaceAppearance , quindi nella finestra Proprietà , seleziona la proprietà MappaColore . Un pop-up viene visualizzato.

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

    The ColorMap pop-up with the Add Image button highlighted.
  4. 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.

  5. Ripeti questo processo per la Mappa di Metalness , Mappa Normale , e Mappa di Ruvidità proprietà, selezionando le rispettive mappe di texture dal browser file.

  6. 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.

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

    The Surface Appearance icon with a chain link symbol.
  8. (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:

  1. Nella scheda Home o Avatar della barra degli strumenti, fai clic sul pulsante Importa 3D . Un browser dei file viene visualizzato.

  2. Seleziona un file .fbx per una risorsa modulare o un Accessorio.

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

  4. Verifica qualsiasi avviso o messaggio di errore.

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

  6. Ripeti questo processo per ogni risorsa modulare e Accessorio.

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

  1. Nella finestra Explorer , fai clic sul tuo pacchetto SurfaceAppearance , quindi premi CtrlD ( D ) per duplicarlo.
  2. 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.
  3. 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.

A wall section with few polygons, and a plant with many polygons casting shadows on a white wall.

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.

Foliage casting shadows.

BasePart.CastShadow = Abilitato
>

Foliage not casting shadows.

BasePart.CastShadow = Disabilitato
>

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.

A tree with all planar meshes facing the camera.

MeshPart.DoubleSided = Abilitato
>

A tree with less leaves because all planar meshes facing away from the camera are disabled.

MeshPart.DoubleSided = Disabilitato
>

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.

A grey castle mesh.

Meshes Originali
>

The same castle mesh with a colorful hitbox that shows where users can collide with the castle.

Predefinito
>

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.

The same castle mesh with cube hitbox that shows where users can collide with the castle.

Scatola
>

The same castle mesh with a cylindrical hitbox that shows where users can collide with the castle.

Scheggia
>

The same castle mesh with a colorful hitbox that shows where users can collide with the castle. This version shows more colorful faces than the default hitbox.

PrecisaDecomposizione Convessa
>

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.

A wall model that provides a rise in elevation.

Meshes Originali
>

The same wall model with a colorful hitbox that shows where users can collide with the wall.

Predefinito
>

The same wall model with a colorful hitbox for the trim, but only a box hitbox for the wall mesh.

Scatola
>

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.

A wall model with a box hitbox for the top trip. Because the box sticks out, users can unintentionally collide with the top trim.

Scatola
>

The same wall model with a hull hitbox for the top trip. Because hull hitbox conforms much closer to the top of the model, allowing users to avoid colliding with the trim.

Scheggia
>

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.

A doorway model with optimized hitbox meshes.

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:

  1. 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.

  2. 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.

    The Model icon with a chain link symbol.
  3. 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.