Puoi importare mesh personalizzati per creare tutto da NPC a un tessuto animato di una barca a vela.Abbiamo usato la configurazione personalizzata del 3D Importer per portare più personaggi personalizzati esotici, come le misteriose creature del buco nero e i droidi di servizio amichevoli, se non consapevoli
Le seguenti sezioni vanno oltre il modo in cui abbiamo usato rigging e skinning, PBR (aspettodella superficie), e VFX per costruire uno dei nostri personaggi più complicati che abbiamo chiamato "Creatura". Volevamo che brillasse, emettesse un po' di luce, avesse tracce di fumo di particelle e una mossa fluida che coinvolgeva lo skinning di un rig con abbastanza articolazioni per creare le onde convincenti dei suoi tentacoli.

Reggia
Quando stavamo rigando la Creatura, abbiamo trovato meglio modellare il personaggio in una posa neutra, perché quella posa è la migliore per piegarsi in più direzioni.Se avessimo modellato la Creatura con i suoi tentacoli già ricurvati, sarebbe stato necessario allungarli se avessimo animato i tentacoli per piegarsi nella direzione opposta.Le seguenti schermate mostrano la Creatura nella sua forma naturale:


Da una posa neutra, abbiamo aggiunto articolazioni economicamente, concentrandoci sulle aree che hanno avuto più bisogno di movimento.Più meno articolazioni sono migliori, perché dovrai gestirle quando skini il tuo personaggio e avrai meno da controllare quando le animi.Nei precedenti screenshot, la Creatura sembra che abbia molti punti di articolazione al centro, ma il corpo principale ha un solo Articolazionedi articolazione.
La maggior parte degli altri arti è verso i tentacoli e le mandibole.Con i tentacoli, volevamo molta motricità secondaria, o motricità stratificata, per creare un effetto convincente che stanno tutti muovendosi da Proprio.Tuttavia, la massa centrale dei tentacoli era così vicina l'una all'altra che si sentiva spregevole fare giunture per tutti loro, sia per quanto riguarda le prestazioni che lo sforzo per animare.Quindi, invece, abbiamo trattato la massa centrale come un singolo grande tentacolo con "coda" più piccole in cui le punte hanno lasciato la massa centrale.

Abbiamo trovato le seguenti linee guida utili, in modo che il character mesh importi correttamente in Studio:
- Le articolazioni e le ossa individuali devono avere nomi unici.
- Le maglie non devono avere lo stesso nome di articolazioni e ossa.
- Le maglie non dovrebbero avere trasformazioni prima di essere skinizzate/legate; in altre parole, le trasformazioni dovrebbero essere 0 e le scale dovrebbero essere 1.
- Le normali mesh dovrebbero essere rivolte verso l'esterno (il modello non dovrebbe guardare all'interno).
- Gli scheletri non dovrebbero avere alcun fattore di scala; tutti i giunti dovrebbero essere [1, 1, 1].
Skin
Quando abbiamo finito lo scheletro della creatura, il prossimo passo è stato quello di sbucciare la Mesh, maglia.Lo skinning può essere una missione ardua, quindi per rendere le cose più facili, è meglio essere a conoscenza delle diverse impostazioni iniziali di skinning del tuo applicativo DCC per trovare quella che ti piace.Poiché questo è un personaggio organico, lo abbiamo rivestito con un sacco di caduta su ogni articolazione e sovrapposizione tra di loro.In questo modo, la piegatura si sente liscia e non appuntita.Le seguenti schermate mostrano cattiva skinning e skinning liscia rispettivamente:


Abbiamo trovato le seguenti linee guida che hanno prodotto i migliori risultati per lo appiattimento:
- Le influenze di skinning (cioè che influenzano una parte del modello quando viene spostata) dovrebbero essere un massimo di 4 influenze per vertex.
- I nomi congiunti e di mesh devono essere unici, sia l'uno dall'altro che tra loro.
- Qualsiasi articolazione che vuoi importare in Studio deve avere qualche influenza sulla appiattimentodel modello, altrimenti il motore non lo importa.Quando è possibile, rivesti il tuo modello nella sua posa originale o "Vincolato a".
Importa la mesh in Studio
L'importazione dei tuoi personaggi personalizzati in Studio è una delle parti più emozionanti del processo, perché puoi vedere le tue creazioni nell'esperienza che stai Costruire!
Per importare la mesh in Studio:
Esporta il personaggio dall'applicazione DCC e assicurati che quanto Seguendo:
- Tutti i normali, le scale e i nomi sono corretti.
- Il personaggio ha tutta la gerarchia delle articolazioni e delle ossa e tutte le maglie.
- Le maglie sono tutte sotto 10.000 triangoli per ciascuna parte della maglia.
- La dimensione totale del mesh non supera 2000 unità in qualsiasi asse.
- Vedi Requisiti di mesh per una lista completa delle specifiche del modello.
Nell'Importatore 3D, importa il file personalizzato .fbx o .obj.
Fai risplendere la creatura
Una volta che il modello della Creatura era stabile e non richiedeva ulteriori importazioni immediate in Studio, abbiamo iniziato a mettere insieme gli oggetti SurfaceAppearance, le luci e gli effetti visivi.Abbiamo fatto questo per garantire che la qualità del modello fosse abbastanza buona prima di procedere a posizionare e modificare qualsiasi aspetto di esso.

Sapevamo che volevamo che la Creatura fosse oscura, e i punti focali fossero gli occhi e i suoi "grabby" tentacoli.I punti alti di contrasto tendono ad attirare l'attenzione, quindi avere alcuni forti garantisce che il fruitore sappia su cosa concentrarsi.Studio supporta i materiali al neon che si illuminano da soli, quindi all'inizio abbiamo separato gli occhi in modo che potessero essere il loro materiale dal resto del personaggio.Abbiamo fatto qualcosa di simile per i tentacoli, in modo che brillassero solo sulle punte.

Il materiale al neon non emette luce reale, quindi dopo alcuni test, abbiamo aggiunto parti separate per controllare la posizione e la direzione dell'emissione di luce.Ciò garantiva che la luce fosse diretta in un modo per migliorare la luce degli occhi e proiettare anche la propria fonte di luce.

Nota che il SpotLights aggiungere una brillantezza visiva alla Creatura vicino ad altre superfici o a un Giocatore.

Inoltre, volevamo che i tentacoli della Creatura emettessero alcune particelle, in modo che lasciasse un sentiero di fumo quando si muoveva.Poiché i tentacoli sono molto lunghi, l'aggiunta del ParticleEmitter alla totalità del tentacolo farebbe sì che le particelle emettessero dall'intero tentacolo invece del punteggio.Per combatterlo, abbiamo usato una piccola parte posizionata vicino alla fine del tentacolo, in modo da poter controllare la dimensione dell'emissione, il posizionamento e la direzione delle particelle.

Fai seguire il VFX al personaggio
Le posizioni della mesh del personaggio con la pelle non vengono aggiornate quando la Creatura si anima, quindi avevamo bisogno di un metodo per assicurarci che i VFX, gli SFX e le luci seguissero correttamente la Creatura.Per realizzare ciò, abbiamo creato uno script controller VFX e utilizzato CollectionService per informare le parti che contenevano il VFX dove si trovavano le ossa della creatura e per seguirle.
Abbiamo posizionato il seguente LocalScript in StarterPlayer → StarterPlayerScripts . Questo esegue essenzialmente la funzione di aggiornamento VFX.
Scrittura locale-- Aggiungi questo snippet a uno script locale esistente che esegue PreSimulation-- connessionilocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Script del modulo-- Questo modulo ha allegato parti alle animazioni in modo che vengano aggiornate come-- riproduzione di animazioni. È una soluzione per le limitazioni attuali-- con Articolazioni e Ossa e non sarà sempre necessario.---- Prerequisiti:-- Per essere inclusi, i modelli hanno bisogno del tag "AnimatedVfxModel" e di una cartella-- di tutte le parti che vuoi sincronizzare con l'animazioni. Ogni parte ha bisogno-- un attributo chiamato "AttachedBoneName" che si riferisce al nome del-- osso al quale vuoi attaccare. Le parti dovrebbero anche essere già nella loro-- posizioni corrette rispetto al osso desiderato.---- Per usare:-- Un LocalScript dovrebbe richiedere questo modulo, quindi connettersi-- VfxUpdateModule.updateVfx all'evento RunService.PreSimulation.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- SETUP - questo dovrebbe essere eseguito una volta su ogni client.-- Raccogli tutti i modelli con il taglocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- dove conserveremo tutte le parti e gli offset-- Assegna una tabella a ciascun modello che conterrà tutte le parti vfx e l'Dislocamentofor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Trova la cartella theVFX-- Trova l'osso tramite attributo e calcola lo spostamento per ciascuna parte.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)-- AGGIORNAMENTO - Questo dovrebbe essere collegato a RunService.PreSimulation di ogni client-- Passa attraverso tutti i modelli, quindi aggiorna tutte le parti sul modello per abbinare il bonecframe.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleAbbiamo creato un VFXUpdateModule ModuleScript per informare qualsiasi oggetto contrassegnato in modo appropriato con AnimatedVfxModel per aggiornare su un evento di gioco.
Abbiamo contrassegnato i gruppi di modelli necessari con il AnimatedVfxModel utilizzando il Editor di etichette , accessibile dalla scheda Visualizza.L'uso di tag consente al VFXUpdateModule di sapere quale oggetto cercare come primo figlio VFX e applicare l'Aggiornarmento.
Infine, abbiamo aggiunto un AttachedBoneName attributo personalizzato alla parte che volevamo animare e abbiamo aggiunto il nome preciso della giunta a cui volevamo Seguire.
Texture la creatura
Successivamente, configuriamo le mappe delle texture PBR (Physically Based Rendered).Queste potenti bitmap danno alla creatura la varietà di riflessi e variazioni di superficie per farle sembrare che abbia molti piccoli bossi e imperfezioni.Questo effetto visivo aiuta a vendere l'aspetto della Creatura quando è più vicina al Giocatore.

Ecco come abbiamo creato le mappe della texture dell'aspetto della superficie:
Le mappe della texture per questo personaggio sono state tutte su una "scheda" per mappa.Questo ha reso la creatura più efficiente e ha significato che dovevamo gestire meno mappe di texture o SurfaceAppearance oggetti.
Per le aree che hanno avuto bisogno di risplendere o essere autoluminose, come i "tentacoli grabby", abbiamo anche usato la trasparenza sul SurfaceAppearance per mescolarsi con quelle parti.
Abbiamo trovato utile seguire queste linee guida quando si creano mappe di texture dell'aspetto della superficie:
- Assicurati che le tue mappe non siano più grandi di 1024×1024.
- Il tuo canale verde potrebbe dover essere ribaltato a seconda dell'applicazione in cui hai lavorato.
Animare la creatura
L'animazione è molto soggettiva e ha uno stile personale.Le opzioni includono la cattura testodel movimento, l'animazione della "chiave" a mano nella tua applicazione DCC o l'utilizzo del potente Editor di Animazione di Studio.
Come abbiamo menzionato in precedenza, volevamo assicurarci di avere abbastanza articolazioni per la mobilità fluida così come abbastanza arti, quindi l'animazione della creatura si è sentita naturale e "stratificata". L' stratificazione, nota anche come moto secondario, è qualcosa che vedi nella vita di tutti i giorni — quando lanci il tuo braccio, ogni articolazione reagisce all'impulso iniziale del tuo braccio superiore, e ogni articolazione nel tuo corpo non si muove o si riposa allo stesso tempo.
Abbiamo usato questa tecnica per animare la Creatura a sentirsi come se le membra reagissero al movimento guidato dal suo corpo come mostrato qui:

Se si utilizza un'applicazione DCC esterna per l'animazioni, abbiamo trovato le seguenti linee guida che funzionano meglio:
- Imposta le frequenze di fotogrammi a almeno 30 FPS.
- Crea le tue animazioni con lo stesso personaggio a cui le stai applicando.
- Esporta i dati di animazione come un file separato .fbx.
Poiché abbiamo animato il personaggio al di fuori di Studio, avevamo bisogno di utilizzare l'Editor di Animazione per importare il file di animazione .fbx.L'editor ti consente di selezionare qualsiasi avatar con articolazioni o motori e guidarli attraverso punti nella timeline.
Per importare un'animazioni:
Nella scheda Avatar della barra degli strumenti, apri il Editor di animazione .
Seleziona il personaggio rigato che vuoi animare in Roblox. Il personaggio dovrebbe essere lo stesso che stai rigando nella tua applicazione DCC esterna.
Fai clic sul pulsante ⋯ nella sezione superiore sinistra della finestra dell'editor, seleziona Importa da FBX Animazione , e localizza il file di animazione esportato .fbx.
Quando sei contento della tua animazioni, puoi esportarla per scoprire l'ID dell'animazione, che puoi quindi utilizzare negli script di Roblox per eseguirli.Ad esempio, puoi aggiungere un Script al gruppo modello del personaggio importato e usare il seguente codice per eseguire l'animazioni:
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)
Resultati finali
Dopo alcuni ritocchi finali ai colori, alla luminosità della luce e ad alcuni altri effetti di particelle per dare un effetto halo più forte di fronte alle finestre, ecco il risultato finale nella stazione spaziale!
