Du kannst benutzerdefinierte Meshes importieren, um alles von NPCs bis zu einem animierten Tuch eines Segelboots zu erstellen.Wir verwendeten die benutzerdefinierte Einstellung des 3D-Importeurs, um mehr exotische benutzerdefinierte Charaktere einzuführen, wie die geheimnisvollen schwarzen Loch-Kreaturen und die freundlichen, wenn auch unbewussten Service-Droids.
Die folgenden Abschnitte gehen darüber ein, wie wir Verankerung und Lackierung , PBR (Aussehen der Oberfläche) und VFX verwendet haben, um einen unserer komplexeren Charaktere zu erstellen, den wir "Kreatur" nannten. Wir wollten, dass er leuchtet, etwas Licht ausstrahlt, Partikelrauchen emittiert und eine flüssige Bewegung, bei der ein Rig mit genügend Gelenken verankert wird, um die überzeugenden Wellen seiner Tentakel zu erzeugen.

Rüstung
Als wir die Kreatur rüsteten, fanden wir es am besten, den Charakter in einer neutralen Pose zu modellieren, weil diese Pose am besten geeignet ist, sich in mehreren Richtungen zu beugen.Wenn wir die Kreatur mit ihren Tentakeln modelliert hätten, die bereits verdreht waren, wäre es zu einer Dehnung gekommen, wenn wir die Tentakel in die entgegengesetzte Richtung biegen würden.Die folgenden Screenshots zeigen die Kreatur in ihrem natürlichen Zustand:


Aus einer neutralen Haltung heraus fügten wir Gelenke wirtschaftlich hinzu, konzentrierten uns auf die Bereiche, die die meiste Bewegung benötigten.Je weniger Gelenke, desto besser, weil du sie verwalten musst, wenn du deinen Charakter skinnst, und du weniger kontrollieren musst, wenn du sie animierst.In den vorherigen Screenshots sieht die Kreatur so aus, als hätte sie viele Gelenke in der Mitte, aber der Hauptkörper hat nur ein Verbindung.
Die meisten anderen Gelenke sind in Richtung Tentakel und Mandibeln.Mit den Tentakeln wollten wir viel sekundäre Bewegung oder Bewegung, die in Schichten aufgeteilt ist, um einen überzeugenden Effekt zu schaffen, dass sie alle auf besitzenbewegen.Die Zentermasse der Tentakel war jedoch so eng beieinander, dass es sich verschwendend anfühlte, Gelenke für sie alle zu machen, sowohl auf Leistung als auch auf Anstrengung zur Animation.Also haben wir stattdessen die mittlere Masse als ein einzelnes großes Tentakel mit kleineren "Schwänzen" behandelt, bei denen die Spitzen die mittlere Masse verlassen haben.

Wir fanden die folgenden Richtlinien nützlich, damit der Charakter-Mesh korrekt in Studio importiert wird:
- Einzelne Gelenke und Knochen müssen einzigartige Namen haben.
- Meshes dürfen nicht den gleichen Namen wie Gelenke und Knochen haben.
- Maschen sollten vor der Lackierung/Bindung keine Transformationen haben; mit anderen Worten, Transformationen sollten 0 sein und Skalierungen sollten 1 sein.
- Mesh-Normale sollten nach außen zeigen (das Modell sollte nicht von innen nach außen schauen).
- Skelette sollten keinen Skalefaktor haben; alle Gelenke sollten [1, 1, 1] sein.
Lackierung
Als wir das Skelett der Kreatur fertiggestellt hatten, war der nächste Schritt, das Meshzu verkleiden.Skinning kann eine mühsame Aufgabe sein, also um die Dinge zu erleichtern, ist es am besten, sich mit den verschiedenen Skinneinstellungen Ihrer DCC-Anwendung vertraut zu machen, um die zu finden, die Sie mögen.Da es sich um einen organischen Charakter handelt, haben wir ihn mit viel Abfall auf jedem Gelenk und Überschneidung zwischen ihnen ausgestattet.Auf diese Weise fühlt sich das Biegen glatt und nicht scharf an.Die folgenden Screenshots zeigen schlechtes Skinning und glattes Skinning im Wechsel:


Wir haben die folgenden Richtlinien gefunden, die die besten Ergebnisse für das Skinning erzielten:
- Skinning-Einflüsse (d.h. sie beeinflussen einen Teil des Modells, wenn sie bewegt werden) sollten ein Maximum von 4 Einflüssen proVertex sein.
- Gemeinsame und Netzwerknamen müssen einzigartig sein, sowohl innerhalb als auch zwischeneinander.
- Jede Verbindung, die du in Studio importieren möchtest, muss einen Einfluss auf das Skinning des Modells haben, sonst importiert die Engine es nicht.Wann immer es möglich ist, skin dein Modell in seiner ursprünglichen oder "binden"-Pose.
Importiere das Netz in Studio
Das Importieren deiner benutzerdefinierten Charaktere in Studio ist einer der aufregendsten Teile des Prozesses, weil du deine Kreationen in der Erfahrung sehen kannst, die du Bauen!
Um das Netz in Studio zu importieren:
Exportieren Sie den Charakter aus der DCC-Anwendung und stellen Sie sicher, dass gefolgte Profilepassiert:
- Alle Normals, Skalierungen und Namen sind korrekt.
- Der Charakter hat alle gemeinsame und Knochen-Klassifikation und alle Meshes.
- Maschen sind alle unter 10.000 Dreieck für jeden Teil der Mesh.
- Die Gesamtgröße des Meshes liegt nicht über 2000 Einheiten in jeder Achse.
- Siehe Mesh-Anforderungen für eine vollständige Liste von Modellspezifikationen.
Im 3D-Importeur importiere die benutzerdefinierte .fbx oder .obj.
Lass die Kreatur leuchten
Sobald das Modell der Kreatur stabil war und keine sofortige Einführung in Studio mehr erforderte, begannen wir mit der Zusammenstellung der Oberflächenaussehensobjekte, Lichter und visuellen Effekte.Wir haben das getan, um sicherzustellen, dass die Qualität des Modells gut genug war, bevor wir mit dem Platzieren und Bearbeiten eines Aspekts fortfahren.

Wir wussten, dass wir wollten, dass die Kreatur dunkel war und die Fokuspunkte die Augen und ihre "grabby"-Tentakel waren.Hohe Kontrapunkte neigen dazu, Aufmerksamkeit zu erregen, so dass ein paar starke davon sicherstellen, dass der Betrachter weiß, worauf er sich konzentrieren soll.Studio unterstützt Neon-Materialien, die selbst leuchten, also trennten wir die Augen frühzeitig, damit sie vom Rest des Charakters ihr eigenes Material sein konnten.Wir haben etwas Ähnliches für die Tentakel getan, so dass sie nur an ihren Spitzen leuchten würden.

Neonmaterial emittiert kein tatsächliches Licht, also nach einigen Tests fügten wir separate Teile hinzu, um die Platzierung und Richtung der Lichtemission zu steuern.Dies stellte sicher, dass die Beleuchtung so ausgerichtet war, dass sie den Glanz der Augen verbessert und auch ihre eigene Lichtquelle projiziert.

Beachten Sie, dass die SpotLights visuelle Akzente auf die Kreatur in der Nähe anderer Oberflächen oder eines Spieler:insetzt.

Darüber hinaus wollten wir, dass die Tentakel der Kreatur einige Partikel emittieren, so dass sie beim Bewegen einen Rauchweg hinterlassen würde.Da die Tentakel sehr lang sind, würde das Hinzufügen des ParticleEmitter an den gesamten Tentakel die Partikel vom gesamten Tentakel statt vom Tip emittieren lassen.Um dies zu bekämpfen, verwendeten wir einen kleinen Teil, der in der Nähe des Endes des Tentakels positioniert war, so dass wir die Emissionsgröße, den Platz und die Richtung der Partikel kontrollieren konnten.

Lassen Sie den VFX dem Charakter folgen
Die Netzpositionen des verkleideten Charakters werden nicht aktualisiert, wenn die Kreatur animiert wird, also brauchten wir eine Methode, um sicherzustellen, dass die VFX, SFX und Lichter der Kreatur ordnungsgemäß folgen.Um dies zu erreichen, haben wir ein VFX-Controller-Skript erstellt und CollectionService verwendet, um die Teile zu informieren, die den VFX enthielten, wo sich die Knochen der Kreatur befinden und sie zu verfolgen.
Wir haben die folgenden LocalScript in StarterPlayer → StarterPlayerScripts platziert. Dies führt im Wesentlichen die VFX-Aktualisierungsfunktion aus.
Lokales Skript-- Füge dieses Snippet zu einem bestehenden lokalen Skript hinzu, das Präsimulation durchführt-- verbindungenlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Modul-Skript-- Dieses Modul fügte Teile zu Animationen hinzu, so dass sie aktualisiert werden, wenn die-- Animationen spielen. Es ist eine Lösung für die derzeitigen Einschränkungen-- mit Gelenken und Knochen und wird nicht immer notwendig sein.---- Prerequisiten:-- Um enthalten zu werden, benötigen Modelle den "AnimatedVfxModel"-Tag und einen Ordner-- von allen Teilen, die Sie mit Animationensynchronisieren möchten. Jedes Teil benötigt-- ein Attribut namens "AttachedBoneName", das sich auf den Namen der-- Knochen, an den du dich anschließen möchtest. Teile sollten auch bereits in ihrer-- korrekte positionen im verhältnis zur gewünschten knochen.---- Zum Verwenden:-- Ein LocalScript sollte dieses Modul erfordern, dann verbinden-- VfxUpdateModule.updateVfx auf das RunService.PreSimulation-Ereignis.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- EINSTELLUNGEN - das sollte einmal auf jedem Client ausgeführt werden.-- Sammle alle Modelle mit dem Taglocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- wo wir alle teile und versätze speichern werden-- Weise jedem Modell einen Tisch zu, der alle VFX-Teile und Versatzenthältfor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Finde den VFX-Ordner-- Finde das Knochen über Attribut und berechne den Versatz für jedes Teil.for _,part in vfxParts dolocal name = part:GetAttribute("AttachedBoneName")local bone = model:FindFirstChild(name, true)if bone thenlocal offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)vfxTable[model][part] = {bone, offset}elsewarn("Vfx part refers to bone that could not be found.")endendendprint(vfxTable)-- UPDATE - Dies sollte mit jedem Client's RunService.PreSimulation verknüpft sein-- Gehen Sie durch alle Modelle und aktualisieren Sie dann alle Teile auf dem Modell, um dem bonecframe zu entsprechen.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleWir haben ein VFXUpdateModule erstellt, um jedem Objekt, das mit AnimatedVfxModel entsprechend gekennzeichnet ist, mitzuteilen, auf ein Spielereignis zu aktualisieren.
Wir haben die notwendigen Modellgruppen mit dem AnimatedVfxModel über den Tag-Editor , zugänglich von der Ansicht-Registerkarte, markiert.Durch die Verwendung von Tags kann das VFXUpdateModule wissen, nach welchem Objekt als erstes VFX-Kind gesucht werden soll und die Aktualisierung anwenden.
Schließlich fügten wir ein 附加骨名 benutzerdefiniertes Attribut zum Teil hinzu, das wir animieren wollten, und fügten den genauen Namen der Verbindung hinzu, der es verfolgen sollte.
Texturen die Kreatur
Als Nächstes konfigurieren wir die PBR-Texturen (Physically Based Rendered) -Karten.Diese mächtigen Bitmaps geben der Kreatur die verschiedenen Glanz und Oberflächenvariationen, um sie so aussehen zu lassen, als hätte sie viele kleine Stöße und Unvollkommenheiten.Dieser visuelle Effekt hilft, das Aussehen der Kreatur zu verkaufen, wenn sie näher am Spieler:inist.

Hier ist, wie wir die Oberflächenaussehens-Texturen erstellt haben:
Die Texturenkarten für diesen Charakter waren alle auf einer "Seite" pro Karte.Dies machte die Kreatur effizienter und bedeutete, dass wir weniger Texturkarten oder SurfaceAppearance Objekte behandeln mussten.
Für Bereiche, die glänzen oder selbst beleuchtet werden mussten, wie die "grabby Tentakel", verwendeten wir auch Transparenz auf dem SurfaceAppearance, um sich mit diesen Teilen zu vermischen.
Wir fanden es hilfreich, diesen Richtlinien zu folgen, wenn wir Oberflächenaussehensstrukturkarten erstellen:
- Stellen Sie sicher, dass Ihre Karten nicht größer als 1024×1024 sind.
- Ihr grüner Kanal muss möglicherweise umgeschaltet werden, abhängig von der Anwendung, in der Sie gearbeitet haben.
Animiere die Kreatur
Animieren ist sehr subjektiv und hat einen persönlichen Stil.Optionen umfassen die erfassen, Hand-"Key-Frame"-Animation in deiner DCC-Anwendung oder die Verwendung des leistungsstarken Animationseditors von Studio.
Wie wir bereits erwähnt haben, wollten wir sicherstellen, dass wir genügend Gelenke für die Fluidbewegung sowie genügend Gliedmaßen hatten, so dass die Kreatur-Animation natürlich und "lagenreich" war. Layering, auch bekannt als sekundäre Bewegung, ist etwas, das Sie im Alltag sehen - wenn Sie Ihren Arm auswerfen, reagieren jedes Gelenk auf den ursprünglichen Impuls aus Ihrem Oberarm und jedes Gelenk in Ihrem Körper bewegt sich oder ruht nicht zur gleichen Zeit.
Wir verwendeten diese Technik, um die Kreatur zu animieren, sich zu fühlen, als würden sich die Gliedmaßen auf die Bewegung reagieren, die von ihrem Körper angetrieben wird, wie hier gezeigt:

Wenn wir eine externe DCC-Anwendung für die Animationenverwenden, haben wir festgestellt, dass die folgenden Richtlinien am besten funktionieren:
- Stelle die Bildraten auf mindestens 30 Ego-Shooterein.
- Erstelle deine Animationen mit demselben Charakter, auf den du sie anwenden möchtest.
- Exportiere deine Animationsdaten als separate .fbx Datei.
Da wir den Charakter außerhalb von Studio animiert haben, mussten wir den Animations-Editor verwenden, um die Animationsdatei .fbx zu importieren.Der Editor lässt dich jeden Avatar mit Gelenken oder Motoren auswählen und ihn über Punkte in der Zeitachse fahren.
Um eine Animationenzu importieren:
Öffne auf der Registerkarte Avatar der Toolbar den Animations-Editor .
Wähle den ausgerüsteten Charakter, den du in Roblox animieren möchtest. Der Charakter sollte derselbe sein, den du in deiner externen DCC-Anwendung ausrichtest.
Klicken Sie auf die Schaltfläche ⋯ im oberen linken Bereich des Editorfensters, wählen Sie Importieren aus FBX-Animation und finden Sie Ihre exportierte .fbx.
Wenn du mit deiner Animationenzufrieden bist, kannst du sie exportieren, um die Animation-ID zu entdecken, die du dann in Roblox-Skripts verwenden kannst, um sie auszuführen.Zum Beispiel kannst du ein Script zu der Modellgruppe des importierten Charakters hinzufügen und den folgenden Code verwenden, um die Animationenauszuführen:
local animationId = "YOUR_ANIMATION_ID"local char = script.Parentlocal animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")local animation = Instance.new("Animation")animation.AnimationId = "rbxassetid://" .. tostring(animationId)local animTrack = animController:LoadAnimation(animation)animTrack:Play(0, 1, 1)
Letzte Ergebnisse
Nach einigen Abschluss-Anpassungen an Farben, Lichthelligkeiten und einigen mehr Partikeleffekten, um ihm einen stärkeren Heiligenschein-Effekt vor Fenstern zu geben, ist hier das endgültige Ergebnis in der Raumstation!
