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 importować niestandardowe siatki, aby stworzyć wszystko, od NPC po animowany materiał żagla łodzi. Użyliśmy niestandardowego ustawienia Importera, aby wprowadzić bardziej egzotyczne niestandardowe postacie, takie jak tajemnicze stworzenia czarnej dziury i przyjazne, choć nieświadome, droidy serwisowe.

Poniższe sekcje omawiają, jak użyliśmy riggingu i skinningu, PBR (wygląd powierzchni) oraz VFX, aby zbudować jedną z naszych bardziej skomplikowanych postaci, którą nazwaliśmy "Stworzenie". Chcieliśmy, aby świeciło, emitowało światło, miało smugi dymu cząsteczkowego i płynny ruch, który wymagał skórzenia rigg z wystarczającą ilością stawów, aby stworzyć przekonujące fale jego macki.

Baner Stworzenia

Rig

Kiedy riggowaliśmy Stworzenie, uznaliśmy, że najlepiej jest modelować postać w neutralnej pozycji, ponieważ ta pozycja najlepiej nadaje się do zginania w wielu kierunkach. Gdybyśmy zamodelowali Stworzenie z już zwiniętymi mackami, prowadziłoby to do rozciągania, jeśli animowalibyśmy macki, aby zginały się w przeciwnym kierunku. Poniższe zrzuty ekranu pokazują Stworzenie w jego naturalnym stanie:

Z neutralnej pozycji dodaliśmy stawy oszczędnie, koncentrując się na obszarach, które wymagały najwięcej ruchu. Im mniej stawów, tym lepiej, ponieważ będziesz musiał nimi zarządzać podczas skórzenia swojej postaci, a także będziesz miał mniej do kontrolowania podczas animacji. Na poprzednich zrzutach ekranu Stworzenie wygląda, jakby miało wiele stawów w centrum, ale główne ciało ma tylko jeden staw.

Większość innych stawów znajduje się w kierunku macki i żuwaczek. W przypadku macki chcieliśmy, aby miały dużo drugorzędnego ruchu, czyli ruchu, który jest warstwowy, aby stworzyć przekonujący efekt, że wszystkie poruszają się same. Jednak centralna masa macki była tak blisko siebie, że wydawało się to nieefektywne, aby tworzyć stawy dla wszystkich, zarówno pod względem wydajności, jak i wysiłku potrzebnego do animacji. Zamiast tego potraktowaliśmy centralną masę jako jedną dużą mackę z mniejszymi "ogonami", gdzie końcówki opuszczały centralną masę.

Stworzenie Z Przodu, Maya

Uznaliśmy, że następujące wytyczne są przydatne, aby siatka postaci importowała się poprawnie do Studio:

  • Poszczególne stawy i kości muszą mieć unikalne nazwy.
  • Siatki nie mogą mieć tej samej nazwy co stawy i kości.
  • Siatki nie powinny mieć żadnych transformacji przed skórzeniem/wiążaniem; innymi słowy, transformacje powinny wynosić 0, a skale powinny wynosić 1.
  • Normale siatki powinny być skierowane na zewnątrz (model nie powinien wyglądać na odwrócony).
  • Szkielety nie powinny mieć żadnego współczynnika skali; wszystkie stawy powinny być [1, 1, 1].

Skin

Kiedy skończyliśmy szkielety Stworzenia, następnym krokiem było skórzenie siatki. Skinning może być żmudnym zadaniem, więc aby ułatwić sprawę, najlepiej jest być zaznajomionym z różnymi początkowymi ustawieniami skórzenia w Twojej aplikacji DCC, aby znaleźć to, które Ci odpowiada. Ponieważ jest to organiczna postać, skórzyliśmy ją z dużą ilością spadku na każdym stawie i nakładaniu się między nimi. W ten sposób zginanie wydaje się płynne, a nie ostre. Poniższe zrzuty ekranu pokazują złe skórzenie i płynne skórzenie odpowiednio:

Złe skórzenie
Płynne skórzenie

Uznaliśmy, że następujące wytyczne przynoszą najlepsze wyniki przy skórzeniu:

  • Wpływy skórzenia (co oznacza, że wpływają na część modelu podczas ruchu) powinny mieć maksymalnie 4 wpływy na wierzchołek.
  • Nazwy stawów i siatek muszą być unikalne, zarówno w obrębie siebie, jak i między sobą.
  • Każdy staw, który chcesz zaimportować do Studio, musi mieć jakiś wpływ na skórzenie modelu, w przeciwnym razie silnik go nie zaimportuje. Kiedy to możliwe, skórz swój model w jego oryginalnej lub "wiążącej" pozycji.

Importuj siatkę do Studio

Importowanie niestandardowych postaci do Studio jest jednym z bardziej ekscytujących etapów procesu, ponieważ możesz zobaczyć swoje kreacje w grze, którą budujesz!

Aby zaimportować siatkę do Studio:

  1. Eksportuj postać z aplikacji DCC i upewnij się, że:

    • Wszystkie normy, skale i nazwy są poprawne.
    • Postać ma całą hierarchię stawów i kości oraz wszystkie siatki.
    • Siatki mają mniej niż 10 000 trójkątów dla każdej części siatki.
    • Całkowity rozmiar siatki nie przekracza 2000 jednostek w żadnej osi.
    • Zobacz Wymagania dotyczące siatek dla pełnej listy specyfikacji modelu.
    Stworzenie w narzędziu DCC
  2. W Importerze zaimportuj niestandardowy plik .fbx lub .obj.

    Stworzenie zaimportowane do Studio

Spraw, aby stworzenie świeciło

Gdy model Stworzenia był stabilny i nie wymagał już natychmiastowego importu 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 przed przystąpieniem do umieszczania i edytowania jakiegokolwiek aspektu.

Przykład świecącego stworzenia

Wiedzieliśmy, że chcemy, aby Stworzenie było ciemne, a punkty centralne to oczy i jego "chwytliwe" macki. Wysokie punkty kontrastu przyciągają uwagę, więc posiadanie kilku mocnych zapewnia, że widz wie, na czym się skupić. Studio obsługuje materiały neonowe, które samodzielnie emitują światło, więc na początku oddzieliliśmy oczy, aby mogły być swoim własnym materiałem od reszty postaci. Zrobiliśmy coś podobnego dla macki, aby świeciły tylko na końcach.

Oczy Stworzenia w Studio

Materiał neonowy nie emituje rzeczywistego światła, więc po kilku testach dodaliśmy oddzielne części, aby kontrolować umiejscowienie i kierunek emisji światła. Umożliwiło to skierowanie oświetlenia w sposób, który wzmocnił blask oczu i również emitował własne źródło światła.

Światło punktowe w Studio

Zauważ, że SpotLights dodają wizualnego efektu do Stworzenia w pobliżu innych powierzchni lub gracza.

Przykład światła Stworzenia

Dodatkowo chcieliśmy, aby macki Stworzenia emitowały pewne cząsteczki, aby zostawiały za sobą smugę dymu, gdy się poruszały. Ponieważ macki są bardzo długie, dodanie ParticleEmitter do całej macki spowodowałoby, że cząsteczki emitowałyby się z całej macki zamiast z końcówki. Aby temu zaradzić, użyliśmy małej części umieszczonej blisko końca macki, aby móc kontrolować rozmiar emisji, umiejscowienie i kierunek cząsteczek.

Przykład cząsteczek

Spraw, aby VFX podążały za postacią

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

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

    Skrypt lokalny
    -- Dodaj ten fragment do istniejącego skryptu lokalnego, który wykonuje połączenia PreSimulation
    local RunService = game:GetService("RunService")
    local vfx = require(workspace.VfxUpdateModule)
    RunService.PreSimulation:Connect(vfx.updateVfx)
    Skrypt modułowy
    -- Ten moduł łączy części z animacjami, aby były aktualizowane w miarę odtwarzania
    -- animacji. To jest obejście obecnych ograniczeń
    -- z stawami i kośćmi i nie zawsze będzie konieczne.
    --
    -- Wymagania wstępne:
    -- Aby być uwzględnionym, modele muszą mieć tag "AnimatedVfxModel" oraz folder
    -- wszystkich części, które chcesz zsynchronizować z animacją. Każda część musi
    -- mieć atrybut o nazwie "AttachedBoneName", który odnosi się do nazwy kości, do której chcesz się przyczepić. Części powinny być również już w swoich
    -- poprawnych pozycjach w stosunku do pożądanej kości.
    --
    -- Aby użyć:
    -- Skrypt lokalny powinien wymagać tego modułu, a następnie połączyć
    -- VfxUpdateModule.updateVfx z wydarzeniem RunService.PreSimulation.
    local VfxUpdateModule = {}
    local CollectionService = game:GetService("CollectionService")
    -- USTAWIENIE - to powinno być uruchamiane raz na każdym kliencie.
    -- Zbieranie wszystkich modeli z tagiem
    local vfxModels = CollectionService:GetTagged("AnimatedVfxModel")
    local vfxTable = {} -- gdzie będziemy przechowywać wszystkie części i przesunięcia
    -- Przypisz tabelę do każdego modelu, która będzie zawierać wszystkie części vfx i przesunięcia
    for _, model in vfxModels do
    vfxTable[model] = {}
    local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Znajdź folder VFX
    -- 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("Część Vfx odnosi się do kości, która nie mogła zostać znaleziona.")
    end
    end
    end
    print(vfxTable)
    -- AKTUALIZACJA - To powinno być połączone z PreSimulation RunService każdego klienta
    -- Przejdź przez wszystkie modele, a następnie zaktualizuj wszystkie części modelu, aby pasowały do kości cframe.
    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 VFXUpdateModule ModuleScript, aby poinformować wszelkie obiekty odpowiednio oznaczone AnimatedVfxModel, aby aktualizowały się podczas zdarzenia odtwarzania.

  3. Oznaczyliśmy niezbędne grupy modeli tagiem AnimatedVfxModel za pomocą sekcji Tagi w ich właściwościach. Użycie tagów pozwala VFXUpdateModule wiedzieć, który obiekt szukać jako pierwszego dziecka VFX i zastosować aktualizację.

    VFX w Studio Przykład
  4. Na koniec dodaliśmy niestandardowy atrybut AttachedBoneName do części, którą chcieliśmy animować, i dodaliśmy dokładną nazwę stawu, który chcieliśmy, aby śledziła.

Tekstura stworzenia

Następnie skonfigurowaliśmy mapy tekstur PBR (Fizycznie Oparte Renderowanie). Te potężne bitmapy nadają stworzeniu zróżnicowany połysk i wariacje powierzchni, aby wyglądało, jakby miało wiele małych wypukłości i niedoskonałości. Ten efekt wizualny pomaga sprzedać wygląd Stworzenia, gdy jest bliżej gracza.

Porównanie tekstur Stworzenia

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

  1. Mapy tekstur dla tej postaci były wszystkie na jednym "arkuszu" na mapę. To uczyniło stworzenie bardziej wydajnym i oznaczało, że musieliśmy radzić sobie z mniejszą ilością map tekstur lub obiektów SurfaceAppearance.

  2. W obszarach, które miały świecić lub być samoodświetlające, takich jak "chwytliwe macki", użyliśmy również przezroczystości na SurfaceAppearance, aby zintegrować się z tymi częściami.

    Przykład iluminacji

    Uznaliśmy, że pomocne jest przestrzeganie tych wytycznych podczas tworzenia 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ą motion capture, ręczne animowanie "kluczowych klatek" w Twojej aplikacji DCC lub korzystanie z potężnego Edytora Animacji w Studio.

Jak wspomnieliśmy wcześniej, chcieliśmy upewnić się, że mamy wystarczająco dużo stawów dla płynnego ruchu, a także wystarczająco dużo kończyn, aby animacja stworzenia wydawała się naturalna i "warstwowa". Warstwowanie, znane również jako ruch drugorzędny, to coś, co widzisz w codziennym życiu — gdy wyrzucasz ramię, każdy staw reaguje na początkowy impuls z górnej części ramienia, a każdy staw w Twoim ciele nie porusza się ani nie odpoczywa w tym samym czasie.

Użyliśmy tej techniki, aby animować Stworzenie, aby wydawało się, że kończyny reagują na ruch napędzany przez jego ciało, jak pokazano tutaj:

Przykład animacji Stworzenia

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

  • Ustaw częstotliwości klatek na co najmniej 30 FPS.
  • Twórz swoje animacje z tą samą postacią, do której je stosujesz.
  • Eksportuj dane animacji jako oddzielny plik .fbx.

Ponieważ animowaliśmy postać poza Studio, musieliśmy użyć Edytora Animacji, aby zaimportować plik animacji .fbx. Edytor pozwala Ci wybrać dowolny awatar z stawami lub silnikami i sterować nimi za pomocą punktów na osi czasu.

Aby zaimportować animację:

  1. W zakładce Awatar na pasku narzędzi kliknij Edytor Klipów.

  2. Wybierz riggowaną postać, którą chcesz animować w Robloxie. Postać powinna być tą samą, którą riggujesz w swojej zewnętrznej aplikacji DCC.

  3. Kliknij przycisk w górnej lewej części okna edytora, wybierz Importuj z animacji FBX i zlokalizuj swój wyeksportowany plik animacji .fbx.

    Przykład importu animacji 2
  4. Kiedy będziesz zadowolony ze swojej animacji, możesz ją wyeksportować, aby odkryć identyfikator animacji, który możesz następnie użyć w skryptach Roblox, aby je uruchomić. Na przykład możesz dodać Script do grupy modelu zaimportowanej postaci i użyć następującego kodu, aby uruchomić animację:

    Przykład skryptu animacji
    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 końcowych poprawkach kolorów, jasności świateł i kilku dodatkowych efektów cząsteczkowych, aby nadać mu silniejszy efekt aureoli przed oknami, oto ostateczny wynik w stacji kosmicznej!

Ostateczne renderowanie Stworzenia
©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.