Witam serdecznie. Ostatnio prezentowałem sześcian, dziś zrobimy coś nieco bardziej wyrafinowanego, choć nadal bez jednej linijki w C#. Będzie to ruszający się szkielet w zielonym świetle.
Na początku potrzebujemy model 3D, najlepiej w dość uniwersalnym formacie FBX. W sieci można znaleźć całkiem sporo darmowych i płatnych modeli. Unity oferuje je poprzez Asset Store. Inne przykładowe strony to: http://tf3dm.com/, https://www.cgtrader.com/, https://www.turbosquid.com/. Na potrzebę dzisiejszej wizji wybrałem model Skeleton - PBR - Animated - Low Poly.
Mamy model, rozpakowujemy. Dostajemy zbiór plików, w tym pliki .FBX z nieruchomym szkieletem i różne jego animacje, a także tekstury czy coś takiego jak “normal map”. Jak zaimportować to do Unity? Generalnie polega to na tym, że przeciągamy plik .FBX do folderu Assets w projekcie (jak poniżej), ale to nie wszystko. Jak przeciągniemy z Assets nasz model na scenę, to zobaczymy, że nie ma załadowanych tekstur i się nie rusza (jeśli zaimportowaliśmy model z animacją). W osiągnięciu pożądanego celu pomogło mi obejrzenie trzech filmików szkoleniowych na YouTube: 17 Unity: Importing FBX Files, Unity Tutorial #3 - Importing FBX assets in Unity, How to Import and Animate FBX file on Unity 5. Ostatni jest najlepszy.
Naładowani pewną dawką wiedzy, przystępujemy do dzieła. Na początek uporządkujmy nieco foldery w Assets. Tworzę foldery Characters, Skeleton, Animations, Scenes i Textures. Do Characters/Skeleton wrzuciłem nieruchomy szkielet i folder Materials, do Animations animowany szkielet, do Scenes plik sceny powstały z jej zapisania, do Textures pliki z Unity5_MetalRough_Texs w modelu. Do Materials dorzuciłem plik z NormalMap w modelu (powinien być oznaczony w zakładce Inspector jako normal map, o czym przypomni w odpowiednim momencie samo Unity i to zrobi).
Konfiguruję zaznaczony materiał.
W zakładce Inspector wybrałem shader Bumped Diffuse, a następnie wybrałem odpowiednie pliki graficzne za pomocą przycisków Select.
Model na scenie nabrał kolorów, ale jest za duży jak na HoloLens. W inspektorze w sekcji Model ustawiam skalę na 0.3 (można to zrobić przed importem do Visual Studio i do HoloLens). Aha, wcześniej ustawiłem jego pozycję na scenie na 0, –0.1, 2.5 i rotację Y na 180 (jak w poprzednim poście), a światło na scenie zrobiłem sobie zielone z większą intensywnością i nieco je przesunąłem.
Szkielet jednak nadal się nie rusza na poglądzie “gry”, a na dole w inspektorze animowanego modelu można znaleźć sekcję, w której można obejrzeć sobie jego ruchy.
W Assets wybieram Create, a następnie Animator Controller. Nadaję mu odpowiednią nazwę (u mnie AC Skeleton).
Przeciągam stworzy kontroler animacji na pole Controller w sekcji Animator w inspektorze modelu na scenie.
Przeciągam składową Take 001 z animowanego modelu w Assets na schemat kontrolera animacji. Pojawia się pomarańczowy element Take 001 połączony z blokiem Entry.
Teraz jak puszczę podgląd sceny, to szkielet się rusza, ale zatrzymuje się po jakimś czasie. Co zrobić, by ruszał się ciągle? W inspektorze animowanego modelu w Assets znajdujemy sekcję Take 001 i zaznaczamy check Loop Time.
Całość eksportuję z Unity do Visual Studio analogicznie jak w poprzednim poście. W emulatorze HoloLens mogę zaobserwować taniec zielonego szkieletu:
Źródła dzisiejszego projektu można znaleźć na github w folderze HoloVision2.
To tyle na dziś. Import animowanego modelu 3D do Unity mamy za sobą. W najbliższym czasie zaczniemy badać funkcjonalności specyficzne dla HoloLens.
Brak komentarzy:
Prześlij komentarz