środa, 8 marca 2017

[DSP2017] 3# Holowizja - Tańczący szkielet

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).

image

image

Konfiguruję zaznaczony materiał.

image

W zakładce Inspector wybrałem shader Bumped Diffuse, a następnie wybrałem odpowiednie pliki graficzne za pomocą przycisków Select.

image

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.

image

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.

image

W Assets wybieram Create, a następnie Animator Controller. Nadaję mu odpowiednią nazwę (u mnie AC Skeleton).

image

Przeciągam stworzy kontroler animacji na pole Controller w sekcji Animator w inspektorze modelu na scenie.

image

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.

image

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.

image

Całość eksportuję z Unity do Visual Studio analogicznie jak w poprzednim poście. W emulatorze HoloLens mogę zaobserwować taniec zielonego szkieletu:

image

Ź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: