Niestandardowe postacie

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Możesz importerować niestandardowe siatki, aby stworzyć wszystko od NPC do animowanej tkaniny łodzi żaglowej.Użyliśmy niestandardowego ustawienia 3D Importera, aby wprowadzić bardziej egzotyczne niestandardowe postacie, takie jak tajemnicze czarne dziury i przyjazne, jeśli nieświadome, droidy usługowe.

Następne sekcje obejmują sposób, w jaki użyliśmy klejenia i skórki, PBR (wygląd powierzchni) i VFX, aby zbudować jedną z naszych bardziej skomplikowanych postaci, które nazwaliśmy "Stworzeniem". Chcieliśmy, aby świeciła, emitowała trochę światła, miała ślady dymu cząsteczkowego i płynną kinetykę, która wiązała się ze sklejaniem ramienia z wystarczającą liczbą stawów, aby stworzyć przekonujące fale jego włókien.

Creature Banner

Rygła

Kiedy montowaliśmy stworzenie, uznaliśmy, że najlepiej jest modelować postać w neutralnej pozie, ponieważ ta poza jest najlepiej nadająca się do gięcia w wielu kierunkach.Jeśli zmodelowalibyśmy stworzenie z jego włóknami już skręconymi, doprowadziłoby to do rozciągnięcia, gdybyśmy animowali włókna do skręcenia w przeciwnym kierunku.Poniższe zrzuty ekranu pokazują stworzenie w jego naturalnym stanie:

Z neutralnej pozy, dodaliśmy stawy ekonomicznie, skupiając się na obszarach, które potrzebowały najwięcej ruchu.Im mniej stawów, tym lepiej, ponieważ będziesz musiał zarządzać nimi podczas skórkowania postaci i będziesz miał mniej do kontrolowania, gdy je animujesz.W poprzednich zdjęciach ekranu stworzenie wygląda, jakby miało wiele stawów w środku, ale główne ciało ma tylko jedno stawy.

Większość pozostałych stawów jest w kierunku płaszczek i szczęki.Z tentaklami chcieliśmy dużo ruchu wtórnego lub ruchu, który jest warstwowany, aby stworzyć przekonujący efekt, że wszyscy poruszają się posiadać.Jednak masa środkowa tentacji była tak blisko siebie, że wydawało się marnotrawne wykonanie stawów dla wszystkich z nich, zarówno pod względem wydajności, jak i wysiłku do animacji.Zamiast tego potraktowaliśmy masę środkową jako pojedynczą dużą płetwę z mniejszymi "ogonami", w których końcówki opuściły masę środkową.

Creature Front, Maya

Uznaliśmy, że poniższe wytyczne są przydatne, aby charakter mesh został poprawnie zaimportowany do Studio:

  • Poszczególne stawy i kości muszą mieć unikalne nazwy.
  • Sieci nie mogą mieć tej samej nazwy co stawy i kości.
  • Sieci powinny nie mieć transformacji przed skórkowaniem/wiązaniem; innymi słowy, transformacje powinny wynosić 0, a skale powinny wynosić 1.
  • Normalne siatki powinny być skierowane na zewnątrz (model nie powinien patrzeć do wewnątrz).
  • Szkielety nie powinny mieć żadnego czynnika skali; wszystkie stawy powinny być [1, 1, 1].

Skórka

Kiedy skończyliśmy szkielet stworzenia, następnym krokiem było pokrycie siatki skórą.Skórkowanie może być uciążliwym zadaniem, więc aby ułatwić sobie zadanie, najlepiej zaznajomić się z różnymi początkowymi ustawieniami skórkowania swojej aplikacji DCC, aby znaleźć to, które lubisz.Ponieważ jest to organiczna postać, pokryliśmy ją dużą ilością spadku na każdym połączeniu i pokrycia między nimi.W ten sposób gięcie czuje się gładkie, a nie ostre.Poniższe zrzuty ekranu pokazują złą skórę i gładką skórę odpowiednio:

Zła skórka
Gładkie szczotkowanie

Znaleźliśmy następujące wytyczne, które przyniosły najlepsze wyniki dla skórkowania:

  • Efekty skórkowania (znaczy, że wpływają na część modelu po przesunięciu) powinny wynosić maksymalnie 4 wpływy na wierzchołek.
  • Nazwy stawowe i siatkowe muszą być unikalne, zarówno względem siebie, jak i względem siebie.
  • Każde połączenie, które chcesz zaimportować do Studio, musi mieć pewien wpływ na skórki modelu, w przeciwnym razie silnik nie zaimportuje go.Gdy tylko to możliwe, pokryj swój model w jego oryginalnej lub "wiążącej" pozie.

Importuj siatkę do Studio

Importowanie niestandardowych postaci do Studio to jedna z bardziej ekscytujących części procesu, ponieważ możesz zobaczyć swoje kreacje w doświadczeniu, które budowanie!

Aby zaimportować siatke do Studio:

  1. Eksportuj postać z aplikacji DCC i zapewnij obserwuje:

    • Wszystkie normalne, skale i nazwy są poprawne.
    • Postać ma całą hierarchię stawów i kości oraz wszystkie siatki.
    • Sieci są wszystkie poniżej 10 000 trójkątów dla każdej części siatki.
    • Rozmiar siatki nie przekracza 2000 jednostek w dowolnym wymiarze.
    • Zobacz Wymagania siatki dla pełnej listy specyfikacji modelu.
    Creature in DCC Tool
  2. W 3D Importerze, importuj plik niestandardowy .fbx lub .obj.

    Creature Imported Into Studio

Zrób, aby stworzenie świeciło

Gdy model stworzenia był stabilny i nie wymagał dalszego natychmiastowego importowania do Studio, zaczęliśmy składać obiekty SurfaceAppearance, światła i efekty wizualne.Zrobiliśmy to, aby upewnić się, że jakość modelu była wystarczająco dobra, zanim przejdziemy do umieszczenia i edytowania jakiegoś jego aspektu.

Glowing Creature Example

Wiedzieliśmy, że chcieliśmy, aby stworzenie było ciemne, a punkty fokalne były oczy i jego "chwytliwe" tentakle.Wysokie punkty kontrastu mają tendencję do przyciągania uwagi, więc posiadanie kilku silnych zapewnia widzowi wiedzę, na co się skupić.Studio wspiera materiały neonowe, które samodzielnie się świecą, więc na wczesnym etapie oddzieliliśmy oczy, aby mogły być własnym materiałem od reszty postaci.Zrobiliśmy coś podobnego dla płaszczek, więc będą świecić tylko na ich czubkach.

Creature Eyes in Studio

Materiał neonowy nie emituje rzeczywistego światła, więc po niektórych testach dodaliśmy oddzielne części do kontroli umieszczenia i kierunku emisji światła.Gwarantowało to, że oświetlenie było skierowane w sposób zwiększający blask oczu i również projektowało własne źródło światła.

Point Light in Studio

Zauważ, że SpotLights dodaje wizualną ozdobę do stworzenia blisko innych powierzchni lub gracza.

Creature Light Example

Ponadto chcieliśmy, aby tentakle stworzenia emitowały niektóre cząstki, więc zostawiłyby za sobą ślad dymu, gdy się poruszały.Ponieważ tentakle są bardzo długie, dodanie ParticleEmitter do całego tentakla spowodowałoby, że cząsteczki będą emitować z całego tentakla zamiast z końca.Aby temu zapobiec, użyliśmy małej części położonej w pobliżu końca tentakla, dzięki czemu mogliśmy kontrolować rozmiar emisji, umieszczenie i kierunek cząstek.

Particle Example

Niech VFX podąża za postacią

Pozycje siatki dla przebranej postaci nie są aktualizowane, gdy stworzenie animuje, więc potrzebowaliśmy metody, aby upewnić się, że VFX, SFX i światła prawidłowo podążają za stworzeniem.Aby to osiągnąć, stworzyliśmy skrypt kontrolera VFX i użyliśmy CollectionService, aby poinformować części, które zawierały VFX, gdzie znajdowały się kości stworzenia i śledzić je.

  1. Umieściliśmy następujące LocalScript w StarterPlayerStarterPlayerScripts . To zasadniczo uruchamia funkcję aktualizacji VFX.

    Lokalny skrypt

    -- Dodaj ten kod do istniejącego lokalnego skryptu, który wykonuje PreSimulation
    -- połączenia
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Skrypt modułu

    -- Ten moduł przymocował części do animacji, tak aby były aktualizowane jak
    -- animacje odtwarzają. Jest to rozwiązanie dla obecnych ograniczeń
    -- z Łąkami i Kośćmi i nie zawsze będzie to konieczne.
    --
    -- Wymagania:
    -- Aby zostać uwzględnione, modele potrzebują tagu "AnimatedVfxModel" i katalogu
    -- wszystkich części, które chcesz zsynchronizować z animacja. Każda część potrzebuje
    -- atribut o nazwie "AttachedBoneName", który odnosi się do nazwy
    -- kość, do której chcesz się przyczepić. Części powinny również już być w ich
    -- poprawne pozycje względem pożądanego kości.
    --
    — Aby użyć:
    -- Skrypt lokalny powinien wymagać tego modułu, a następnie połączyć
    -- VfxUpdateModule.updateVfx do wydarzenia RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- USTANOWIENIE - powinno to zostać uruchomione raz na każdym klientzie.
    -- Zbierz wszystkie modele z tagiem
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- gdzie przechowamy wszystkie części i odległości
    -- Nadaj tabelę każdemu modelowi, który będzie trzymał wszystkie części vfx i odległość
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Znajdź katalog theVFX
    -- Znajdź kość za pomocą atrybutu i oblicz przesunięcie dla każdej części.
    for _,part in vfxParts do
    local name = part:GetAttribute("AttachedBoneName")
    local bone = model:FindFirstChild(name, true)
    if bone then
    local offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)
    vfxTable[model][part] = {bone, offset}
    else
    warn("Vfx part refers to bone that could not be found.")
    end
    end
    end
    print(vfxTable)
    -- AKTUALIZACJA - Powinno to być powiązane z RunService.PreSimulation każdego klienta
    -- Przejdź przez wszystkie modele, a następnie zaktualizuj wszystkie części na modelu, aby pasowały do ramy kości.
    function VfxUpdateModule.updateVfx()
    for model, vfxParts in vfxTable do
    for part, bone in vfxParts do
    part.CFrame = bone[1].TransformedWorldCFrame * bone[2]
    end
    end
    end
    return VfxUpdateModule
  2. Stworzyliśmy moduł aktualizacji VFX ModuleScript, aby powiadomić dowolne obiekty oznaczone odpowiednio tagiem AnimatedVfxModel o aktualizacji w wydarzeniu odtwarzania.

  3. Oznaczyliśmy niezbędne grupy modeli za pomocą AnimatedVfxModel używając edytora tagów, dostępnego z zakładki Wygląd , dostępnej z zakładki Wygląd.Używanie tagów pozwala VFXUpdateModule wiedzieć, który obiekt szukać jako pierwsze dziecko VFX i zastosować aktualizacja.

    VFX In Studio Example
  4. Wreszcie dodaliśmy atrybut niestandardowy Nazwa przymocowanej kości do części, którą chcieliśmy animować, i dodaliśmy dokładną nazwę stawu, któremu miała się obserwować.

Wytwórz teksturę stworzenia

Następnie konfigurujemy mapy tekstur PBR (Physically Based Rendered).Te potężne bitmany dają stworzeniu różne odblaski i zmiany powierzchni, aby sprawić, że wygląda na to, że ma wiele małych wgnieceń i niedoskonałości.Ten efekt wizualny pomaga sprzedać wygląd stworzenia, gdy jest bliżej gracza.

Creature Texturing Comparison

Oto jak stworzyliśmy mapy tekstur wyglądu powierzchni:

  1. Mapy tekstur dla tej postaci były wszystkie na jednej "stronie" na mapę.Spowodowało to, że stworzenie stało się bardziej wydajne i oznaczało, że musieliśmy radzić sobie z mniejszą liczbą map tekstur lub SurfaceAppearance obiektami.

  2. Dla obszarów, które musiały świecić lub być samodzielnie oświetlone, takich jak "chwytylne tentakle", użyliśmy również przejrzystości na SurfaceAppearance , aby wtopić się w te części.

    Illumination Example

    Uznaliśmy za pomocne przestrzeganie tych wytycznych przy tworzeniu map tekstur wyglądu powierzchni:

    • Upewnij się, że twoje mapy nie są większe niż 1024×1024.
    • Twój zielony kanał może wymagać odwrócenia w zależności od aplikacji, w której pracowałeś.

Animuj stworzenie

Animacja jest bardzo subiektywna i ma osobisty styl.Opcje obejmują przechwytywaćruchu, animację "kluczowych ram" ręki w aplikacji DCC lub korzystanie z potężnego edytora animacji Studio.

Jak wspomnieliśmy wcześniej, chcieliśmy upewnić się, że mamy wystarczająco dużo stawów do ruchu płynnego, a także wystarczająco dużo kończyn, więc animacja stworzenia wydawała się naturalna i "wielowarstwowa". Layering, znany również jako ruch wtórny, jest czymś, co widzisz w życiu codziennym - gdy wysuniesz ramię, każde stawy reagują na początkowy impuls z twojej górnej ręki, a każde stawy w twoim ciele nie poruszają się ani nie odpoczywają jednocześnie.

Użyliśmy tej techniki, aby zanimać stworzenie, aby czuło się, jakby kończyny reagowały na ruch napędzany przez jego ciało, jak pokazano tutaj:

Creature Animation Example

Jeśli używasz zewnętrznej aplikacji DCC do animacja, zauważyliśmy, że następujące wytyczne działają najlepiej:

  • Ustaw szybkość klatek na co najmniej 30 strzelanki FPS.
  • Twórz animacje z tym samym postacią, na którą je stosujesz.
  • Eksportuj dane animacji jako odręczny plik .fbx.

Ponieważ animowaliśmy postać poza Studio, musieliśmy użyć edytora animacji, aby zaimportować plik animacji .fbx.Edytor pozwala wybrać dowolny awatar z połączeniami lub silnikami i prowadzić go za pomocą punktów w czasie trwania.

Aby importerować animacja:

  1. Na zakładce Awatar w pasku narzędzi otwórz Edytor animacji .

  2. Wybierz zrigowaną postać, którą chcesz animować w Roblox. Postać powinna być taka sama, jak zrigowana w Twojej zewnętrznej aplikacji DCC.

  3. Kliknij przycisk w górnej lewej sekcji okna edytora, wybierz Importuj z animacji FBX i znajdź plik wyeksportowanej animacji .fbx.

    Animation Import Example 2
  4. Gdy jesteś zadowolony z animacja, możesz ją eksportować, aby odkryć ID animacji, które możesz następnie użyć w skryptach Roblox, aby je uruchomić.Na przykład możesz dodać Script do grupy modelu importowanej postaci i użyć następującego kodu, aby uruchomić animacja:

    Animation Script Example

    local animationId = "YOUR_ANIMATION_ID"
    local char = script.Parent
    local 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)

Ostateczne wyniki

Po kilku ostatnich korektach kolorów, jasności światła i kilku więcej efektów cząstek, aby dać mu silniejszy efekt aureoli przed oknami, oto ostateczny wynik na stacji kosmicznej!

Final Creature Rendering