Ein Asset-Library-Prozess ist der Prozess der Importierung und Konfiguration einer Sammlung von Assets in einem zentralen Ort innerhalb deines Erlebnisses für einfachen Zugriff und Wiederverwendung. Dieser Prozess kann dir eine Menge Zeit sparen, wenn du dich auf das Erstellen deines Umgebungvorbereitest, insbesondere wenn du die Werte jedes Objektkonfigurierst, um die Leistung zu verbessern und den Speicherverbrauch auf mittleren bis niedrigen Geräten zu optimieren.
Dieser Abschnitt des Umweltkunst-Kurses zeigt dir, wie du eine Asset-Library aus deinen polierten Assets zusammenstellst, einschließlich Schritt-für-Schritt-Anweisungen:
- Erstellen Sie benutzerdefinierte Materialien für Ihr Terrain aus Ihren Kacheltexturen.
- Erstellen Sie Oberflächen-Objekte für Ihre Trim-Seite und wenden Sie sie auf ungewrapped Meshes in Ihrer Asset-Bibliothek an.
- Einstellung von Render-Parametern für Ihre Assets, um eine optimale Leistung auf allen Geräten zu gewährleisten.
- Konvertieren Sie Ihre Assets in Pakete, damit Sie sie auf all Ihren Projekten aktualisieren und wiederverwenden können.
Nachdem Sie diesen Abschnitt abgeschlossen haben, werden Sie lernen, wie Sie Ihre Asset-Bibliothek in kreative Weise verwenden, um die Greybox-Umgebung zu ersetzen oder umzuwandeln, und letzte Schritte hinzuzufügen, die die Gesamtwo
Benutzerdefinierte Materialien erstellen
Studio repräsentiert benutzerdefinierte Materialien als MaterialVariant Objekte innerhalb des MaterialService . Diese MaterialVariant Objekte haben vier Eigenschaften, die die vier Kachelbaren 1>Texturen1> kombinieren, um ein hochwertiges benutzerdefiniertes Material mit physischen Merkmalen zu erstellen:
- MaterialVariant.ColorMap – Repräsentiert die Albedo-Texturkarte.
- MaterialVariant.MetalnessMap – Repräsentiert die Metalness-Texturkarte.
- MaterialVariant.NormalMap – Repräsentiert die normale Texturkarte.
- MaterialVariant.RoughnessMap – Repräsentiert die Roughness-Texturkarte.
Nachdem Sie die Texturen der Texturen an diese Eigenschaften geliefert haben, können Sie Ihr neues benutzerdefiniertes Material auf beide Teile, Meshes und Tutorialanwenden. Sie können die Beispiel-Texturkarte .png Dateien verwenden, um die Lumpymoss, Blühende Lumpymoss, Lumpymoss mit Steinen und Steinen benutzerdefinierten Materials innerhalb des finalen Beispiel-Laser-Tags-Umgeb
Um MaterialVariant Objekte für deine Fliesbaren Texturen zu erstellen:
In der Home oder Model -Registerkarte der Menüleiste klicken Sie auf die Schaltfläche Material Manager . Das 1> Material Manager1>-Fenster wird geöffnet.
In der Materialien-Liste wählen Sie das Basismaterial aus, das am meisten mit Ihrer Fliesbaren-Textur übereinstimmt. Zum Beispiel, wenn Sie ein Class.MaterialVariant -Objekt für die Lumpymoss-Fliesbare-Textur erstellt haben, wählen Sie das Standard-Bodenmaterial, damit das Material seine physischen Eigenschaften erbt.
In der Toolbar klicken Sie auf das ⊕ -Symbol. Ein neues MaterialVariant wird in der Palette mit einem Icon in der unteren rechten Ecke angezeigt, das anzeigt, dass es ein benutzerdefiniertes Material ist.
In der Inspector , navigiere zur Allgemeinen Sektion, dann benenne das Material um, um es mit dem Namen deiner Texturzu verknüpfen.
In der Texturkarten-Sektion auf der rechten Seite von Farbe klicken Sie auf die Schaltfläche Importieren . Ein Datei-Manager wird angezeigt.
In der Datei-Browsersuche wählen Sie die Albedo-Texture-Karte .png Datei für die entsprechende Kachel-Textur, dann die Öffnen-Schaltfläche 2> mit der Asset-ID-Anzeige2>. Der Datei-Browserschließt sich und die neue Farbkarte wird mit ihrer AssetID angezeigt.
Wiederholen Sie diesen Prozess für die Metalness-, Normal- und Roughness--Texturen. Die benutzerdefinierte Material-Updates, um die Texturen zu reflektieren.
In der Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-Überschreiben-
(Optional) Wenn Sie ein benutzerdefiniertes Material erzeugen, das ein biologisches Material darstellt,
- In der Fliesen- -Sektion, klicken Sie auf das Dropdown-Menü Muster .
- Wählen Sie Organic , um die Ausgabe zu randomisieren und das sichtbare Fliesen zu reduzieren.
Wiederholen Sie diesen Prozess für jede verfügbare Textur, die Sie in Ihrem Erlebnis enthalten möchten.
Oberflächen-Speicher-Pakete erstellen
Studio verwendet Trim-Blätter innerhalb von SurfaceAppearance Objekten, die du in MeshParts mit UV-Daten zuordnen kannst. Ähnlich wie Benutzerdefinierte Materialien haben SurfaceAppearance Objekte vier Eigenschaften, die die vier Trim-Blätter-Texturen kombinieren, um eine hochwertige 3D-Visual-Oberflächenbehandlung zu erstellen:
SurfaceAppearance.ColorMap – Repräsentiert die Albedo-Texturkarte. SurfaceAppearance.MetalnessMap – Repräsentiert die Metall-Texturkarte. SurfaceAppearance.NormalMap – Repräsentiert die normale Texturkarte. 0> Class.SurfaceSurface.RoughnessMap0> – Repräsentiert die Rauhigkeit
Nachdem Sie die Texturen auf diese Eigenschaften bereitgestellt haben, können Sie das SurfaceAppearance -Objekt so verwandeln
Du kannst die Beispiel-Texturkarte .png -Dateien verwenden oder modifizieren, um ein SurfaceAppearance -Objekt zu erstellen, das die uv-Daten für die Projekt-Modul-Assets und Elemente innerhalb des finalen Beispiel-Laser-Tags-Umgebung respektiert, oder du kannst dein eigenes, das du in der vorherigen Sektion des Tutorials für deine eigenen Modul-Assets und Elemente verwendet hast, modifizieren.
Um SurfaceAppearance-Pakete zu erstellen, die Sie auf Ihr Modul-Kit und Elemente:
Fügen Sie ein Oberflächen-Speicher-Objekt in den Arbeitsbereichein.
Wählen Sie das Oberflächen-Speicher-Objekt , dann in dem Eigenschaften-Fenster die Eigenschaft ColorMap . Ein Pop-up-Anzeige wird angezeigt.
Klicken Sie auf die Schaltfläche Bild hinzufügen… . Ein Datei-Manager wird angezeigt.
Wählen Sie die Albedo-Texturkarte für die entsprechende Kacheltextur, dann die Öffnen-Schaltfläche. Die Datei-Browserschließt sich und die Farbkarte-Eigenschaft mit einem neuen AssetID aktualisiert.
Wiederholen Sie diesen Prozess für die MetalnessMap , NormalMap und RoughnessMap -Eigenschaften, indem Sie ihre jeweiligen Textkarten vom Datei-Browsers auswählen.
Im Explorer-Fenster , klicken Sie mit der rechten Maustaste auf das Oberflächen-Appearance -Objekt, dann wählen Sie Zum Paket konvertieren aus dem Kontextmenü. Die 1>Zum Paket konvertieren1>-Dialoganzeige wird angezeigt.
Füllen Sie die Titel und Beschreibung Felder aus, stellen Sie die Besitzung auf sich selbst oder eine Gruppe ein, dann klicken Sie auf die Absenden -Schaltfläche. Einmal abgeschlossen, wird eine Kettensymbol über dem Symbol der Objektangezeigt, um es als Paket zu identifizieren.
(Optional) Wählen Sie das Oberflächen-Speicher-Objekt -Objekt, das Kind des PackageLink -Objekts, dann im 0> Eigenschaften-Fenster 0> aktivieren Sie 3> AutoUpdate 3>, um das Paket automatisch zu aktualisieren, wenn Sie Änderungen am 6> Oberflächen-Speicher-Objekt 6> vornehmen.
Importieren von Modularen Assets und Elementen
Studio repräsentiert die modularen Assets und Elemente, die du als Model -Objekte
Mit dem 3D-Importer können Sie die Probe-Modul-Kit und Elemente in Studio importieren, um sie in Ihrer Asset-Bibliothek zu verwenden, oder Sie können alle Assets, die Sie in der vorherigen Abschnitt des Tutorials entworfen haben, importieren. Weitere Informationen über die Funktionsweise dieses Toolfinden Sie unter 3D-Importer.
Um deine modularen Assets und Elemente in das Erlebnis zu importieren:
In der Startseite oder Avatar-Registerkarte klicken Sie auf die Schaltfläche 3D-Import-Button . Ein Datei-Manager wird angezeigt.
Wählen Sie eine .fbx Datei für ein modulares Asset oder Requisit.
Überprüfen Sie die Objektvorschau und stellen Sie sicher, dass die Importeinstellungen für Ihr Objekt richtig sind.
Überprüfen Sie irgendeine Warn- oder Fehler-Nachrichten.
Klicken Sie auf Importieren . Das Asset wird im Explorer-Fenster und im Ansichtsfenster angezeigt.
Wiederholen Sie diesen Prozess für jedes modulare Asset und Requisit.
Verschieben Sie alle Ihre Assets in einen Bereich Ihres Erlebnisses in der Nähe Ihrer Graufeld-Geometrie. Dies ist Ihre Asset-Bibliothek.
Anwenden Sie Oberflächen-Speicherdaten
Wenn Sie den Prozess durchlaufen, mit dem Sie die UVs eines Mesh im Drittsoftware-Modellierungssoftware unverpacken, speichert die Software die UV-Daten innerhalb des Mesh's .fbx oder .obj-Datei. Wenn Sie dieses Mesh in Studio importieren, Objektdas
Um SurfaceAppearance Texturdaten auf ungewrapped Meshes in deiner Asset-Bibliothek anzuwenden:
- In dem Explorer-Fenster , klicken Sie auf Ihr Oberflächen-Style-Paket , dann drücken Sie Ctrl 0> D 0> ( 3> ⌘ 3> 5> D5> ) um es zu duplizieren.
- Child the duplicate SurfaceAppearance package to either a modular asset or a Requisit. The asset applies its UV data to the texture maps and displays its visual treatment.
- Wiederholen Sie diesen Prozess für jedes modulare Asset und Requisit.
Physik und Rendereinstellungen festlegen
Da Sie Ihre Assets innerhalb von Studio haben, ist es wichtig, physikalische und Rendereinstellungen zu setzen, die die Assets auf den höchsten möglichen visuellen Qualitäten basierend auf Geräten mit Speicher- und Grafikproblemen. Im Allgemeinen ist es wichtig, dem Anweisungen in diesem Abschnitt so nahe wie möglich zu folgen, um Ihr Erlebnis so performant wie möglich zu machen. Wenn Sie jedoch den Kontext betrachten, in dem Sie Ihr Spiel pl
Verankert
Die BasePart.Anchored Eigenschaft bestimmt, ob das Roblox-Engine-Physiksystem die Position des Objekts beeinflusst. Wenn Sie diese Eigenschaft für ein Part oder MeshPart aktivieren, entfernt sie das Objekt aus den physischen Berechnungen der dynamischen Simulation, die immer in der Erlebnisausgeführt wird, wodurch das Objekt niemals die
Objekte, die keine physikalische Antwort simulieren, sind billiger zu rendern, da sie nicht dieGPU nehmen, die für diese physikalischen Berechnungen erforderlich ist. Wenn Sie dieGPU frei machen, verbessern Sie dieLeistung für Ihr Erlebnis, besonders auf Geräten, die eine physikalische Antwort für schnelle Gameplaybenötigen. Aus diesem Grund sind alle jedes Asset neben den Türen in der finalen Lasertag-Umgebung
Kann kollidieren
Die BasePart.CanCollide Eigenschaft bestimmt, ob das Objekt physisch mit anderen Objekten interagieren kann. Wenn Sie diese Eigenschaft für ein Part oder MeshPart aktivieren, ist das Objekt undurchdringlich und die Roblox-Engine berücksichtigt dies in Physik-Berechnungen. Diese Berechnungen können die Leistung Ihres Er
Um einige dieser Auswirkungen auf die Erfüllungzu verringern, deaktivieren Sie diese Eigenschaft für Objekte, mit denen der Benutzer niemals interagiert. Zum Beispiel deaktiviert die endgültige Beispiel-Laser-Tag-Umgebung diese Eigenschaft für alle Blätter.
KannTouch
Die BasePart.CanTouch-Eigenschaft bestimmt, ob Touched und TouchEnded-Ereignisse auf dem Objekt abgefeuert werden. Wenn Sie diese Eigenschaft für ein 1>
Dieser Prozess wird für jeden einzelnen Frame ausgelöst, was eine erhebliche Menge an Speicher verbrauchen kann, wenn der Engine den Zustand des Berührungsereignisses für viele Objekte gleichzeitig überprüfen muss. Um einige dieser Auswirkungen auf den Speicher zu verringern, aktivieren Sie nur diese Eigenschaft für Objekte, die ein Ereignis auslösen müssen.
Kannquer
Die BasePart.CanQuery Eigenschaft bestimmt, ob die Roblox-Engine das Objekt während räumlicher Anfrage操作en, wie Raycasting, berücksichtigt, Studio aktiviert diese Eigenschaft für jedes Part oder MeshPart standardmäßig, was bedeutet, dass die Roblox-
Aus diesem Grund wird empfohlen, diese Eigenschaft für Objekte zu deaktivieren, für die der Roblox-Engine keine Raum-Anfrage-Operationen betrachten muss. Wenn Sie sich für die Entscheidung entscheiden, diese Eigenschaftenzu deaktivieren, berücksichtigen Sie, wie jedes Asset das Gameplayverlassen kann, wenn die Engine keine Raum-Anfrage verwenden muss. Wenn der Engine keine Raum
CastShadow
Die BasePart.CastShadow-Eigenschaft bestimmt, ob das Objekt einen Schatten wirft. Wenn Sie diese Eigenschaft für ein Part oder MeshPart aktivieren, berechnet die Roblox-Engine die Position jedes Verwerfs des Objekts zur Zeit der Laufzeitund zieht dann einen Raycast von der Sonne zu einem seiner Nachbarn, bis es mit einem anderen Objekt kollidiert, um den Sch
Diese Berechnungen können eine Leistungskosten erzeugen, besonders wenn Sie viele Objekte von geometrischer Komplexität haben. Dies ist, da Objekte mit geometrischer Komplexität mehr Polygone als Objekte, die geometrisch einfach sind, haben. Die weniger Polygone in einem Objekt sind, desto schneller die Operation und billigerer ihre Schatten.
Schatten können einem Objekt mit 3D-Geometrieeinbruch eine großartige Realismus-Objektivität bieten, sodass Sie, wenn Sie sich entscheiden, wo Sie diese Eigenschaftendeaktivieren möchten, berücksichtigen, wo Objekte einen erheblichen visuellen Verbesserung für die Umgebung bieten, und wo Benutzer fehlende Schatten bemerken möchten. Zum Beispiel können die komplexen Schatten von Blättern eine
Doppelseite
Die MeshPart.DoubleSided-Eigenschaft bestimmt, ob beide Gesichter oder Polygone im Netz rendern sollen. Wenn Sie diese Eigenschaftenfür einen planaren MeshPart aktivieren, wie Blätter, Haare oder Stoffkarten, rendert die
Diese Eigenschaft ist nützlich, um Realismus zu Ihrem Umgebung hinzuzufügen, aber sie kommt mit einer Leistungskosten, da die Engine die Objektpolygone zweimal rendern muss: einmal für die Richtung, die auf die Kamerazeigt, und erneut für alle Meshes, die von der Kameraweg sind. Um einige dieser Auswirkungen auf die Erfüllungzu verringern, aktiviert die endgültige Beispiel
Kollisionstoleranz
Die Eigenschaft MeshPart.CollisionFidelity bestimmt, wie nah die physische Hitbox eines Mesh oder einer Union mit seiner visuellen Repräsentation übereinstimmt. Standardmäßig rendert diese Einstellung eine Hitbox, die etwa das gleiche ist wie die polygonale Form des Mesh, was bedeutet, dass, wo Benutzer mit dem Objekt kollidieren, der aktuelle Geometrie des Mesh ähnelt. Zum
Du kannst dieses Eigenschaft auf einen anderen Wert setzen, um die Präzision einer Mesh-Hitbox zu reduzieren. Zum Beispiel, wenn du dieses Eigenschaft auf Hull setzt, reduziert die Roblox-Engine die Verträge der Mesh-Hitbox erheblich, und wenn du dieses E
Ganz ähnlich wie BasePart.CastShadow , je mehr Verzahnungen der Roblox-Engine rendern muss, desto höher die Leistungskosten. Aus diesem Grund ist es wichtig zu berücksichtigen, wie Sie Benutzer darüber hinausgehen, dass die Engine für die Hitbox des Meshs die Anzahl der Verzahnungen benötigt, um die Leistungskosten zu reduz
Um dieses Konzept zu demonstrieren, beachten Sie die folgenden Bilder, die die Hitbox jedes Mesh des Wandmodells anzeigen, die einen Anstieg in der Höhe zwischen dem ersten und zweiten Floor des finalen Beispiel-Laser-Tags-Umgebung bietet. Die Standard-Hitbox für die Hauptwand hat eine Menge unnötiger Geometrie, wenn sie nur eine Oberfläche bereitstellen muss, um den Benutzer nicht in diese R
Wenn Sie diese Entscheidungen treffen, ist es wichtig zu berücksichtigen, wie das Ändern des Standardwertes die Benutzer negativ beeinflussen kann, da sie sich durch Ihre Umgebung navigieren. Zum Beispiel, wenn Sie das Eigenschaft auf Box für die Trim-Meshes der Modellsetzen, würden Benutzer mit der Hitbox kollidieren, wenn sie versuchen,
Beachten Sie, dass es wichtig sein kann, eine Hitbox zu haben, die genau auf die Form Ihres Meshentspricht, insbesondere wenn Sie es genau so konfigurieren müssen, wie Benutzer mit seiner Form kollidieren. Zum Beispiel in der finalen Beispiel-Laser-Tag-Umgebung ist es wichtig, dass Benutzer nur mit den Kanten des Eingangs und nicht mit dem Eingangs selbst kollidieren, sonst können sie niemals in einen Kampf-Taschen eintreten oder beenden.
RenderFidelität
Die MeshPart.RenderFidelity Eigenschaft bestimmt das Detailliveau des Meshes, das dem Benutzer angezeigt wird. Wenn Sie diese Eigenschaft auf Enum.RenderFidelity.Automatic setzen, reduziert die Roblox-Engine die Detaillierungsgrad der Meshes, je weiter der Benutzer vom Meshes entfernt ist, und wenn
Je genauer die Engine die Objekte dem Benutzer aus jeder Entfernung anzeigen muss, desto höher die Leistungskosten. Um einige dieser Effekte auf die Erfüllungzu verringern, setzen Sie diese Eigenschaft auf Enum.RenderFidelity.Performance für Objekte mit geometrischer Komplexität, wie z. B. Blätter in der Beispiel-Asset-Bibliothek, da
Konvertiere Assets in Pakete
Da alle deine modularen Assets in Studio mit Render-Parametern sind, die für alle Benutzer hochwertige visuelle Qualität einstellen, ist es Zeit, sie in Pakete umzuwandeln. Es ist wichtig, deine Assets in Pakete umzuwandeln, da dies erlaubt, sie wiederholt in deiner aktuellen Erfahrung und anderen Projekten zu verwenden. Darüber hinaus kannst du einfach Änderungen an einem Paket vornehmen, die sofort auf alle seine Instanzen repliz
Da deine SurfaceAppearance -Objekte bereits Pakete sind, wenn du deine Model -Objekte in Pakete umwandelst, werden sie zu verschachtelten Paketen. Dies ermöglicht es dir, komplexe Hierarchien von Kindern zu erstellen, die du unabhängig vom Model -Objekte-Paket modifizieren kannst. Dies ermöglicht dir mehr Kontrolle über die einzelnen Komponenten deiner
Um deine modularen Assets und Elemente in Pakete umzuwandeln:
Im Explorer-Fenster , klicken Sie mit der rechten Maustaste auf ein modulares Asset oder ein Requisitund wählen Sie dann Umwandeln in Paket aus dem Kontextmenü. Die Umwandeln in Paket -Dialoganzeige wird angezeigt.
Füllen Sie die Titel und Beschreibung Felder aus, setzen Sie die Besitz zu sich selbst oder einer Gruppe und klicken Sie dann auf die Absenden Schaltfläche. Einmal abgeschlossen, wird eine Kettensymbol über dem Symbol des Modells angezeigt, um es als Paket zu identifizieren.
Wiederholen Sie diesen Prozess für jedes modulare Asset und Requisit.
Sobald Sie mit der Gesamtkonzeption Ihrer Asset-Bibliothek zufrieden sind, können Sie sich auf die Dekoration der Umgebung mit Ihren neu polierten Assets konzentrieren und zusätzliche Elemente des 3D-Bereichs konfigurieren, um Ihre Welt zum Leben zu erwecken.