]> Blender jako narzędzie do tworzenia grafiki dla Ogre

Blender jako narzędzie do tworzenia grafiki dla Ogre

(aktualizacja: 2019-04-02)

Podstawy

Blender jest programem do tworzenia i renderowania grafiki oraz animacji 3D. W artykule tym zamieszczam kilka przydatnych informacji i porad związanych z jego obsługą, nastawionych głównie na wykorzystanie go do tworzenia modeli dla Ogre 3D.

Wprowadzenie

Przykładowy układ okien edycyjnych przedstawiony (i opisany jest na poniżej ilustracji). Plik z taką konfiguracją widoku można pobrać tutaj.
opis okien blendera
Na początek kilka uwag ogólnych:

Podstawy obsługi programu

Edycja siatki modelu

Podstawy edycji siatki

Grupy wierzchołków

Blender umożliwia grupowanie wierzchołków wewnątrz pojedynczego mesha w ramach "Vertex Group". Ma to zastosowanie m.in. do przypisywania kości (jest też to bardzo przydatne ze względu na to że eksport do Ogre odbywa się na zasadzie jeden mesh w Blenderze = jeden mesh w Ogre).
  1. w "Edit Mode":
    1. zaznaczenie wierzchołków które chcemy przypisać do grupy
    2. [Mesh] -> [Vertices] -> [Vertex Groups] i:
      • [Assign to New Group] aby utworzyć nową grupę i przypisać do niej
      • [Assign to Active Group] aby utworzyć przypisać "aktywnej grupy" (ustawia się ją poprzez [Set Active Group] w tym samym menu)
  2. nazwy grup możemy zmienić w zakładce "Data" okna "Properties" lub w oknie "Outliner"

Materiały i tekstury

Kilka materiałów w jednym meshu

Jeżeli chcemy nałożyć na fragmenty obiektu inny mteriał niż na całą resztę należy (po przypisaniu materiału podstawowego):
  1. w "Edit Mode" zaznaczyć powierzchnie (wierzchołki) na które chcemy nałożyć inny materiał
  2. w zakładce "Material" okna "Properties" wytbrać/utworzyć materiał który chcemy dla nich zastosować i przypisać go do nich klikając "Assign"
Nie należy szaleć z ilością materiałów zastosowanych w ramach pojedynczego mesh-a gdyż Ogre ma limitowaną ich ilość.

Teksturowanie

Jeżeli chcemy nałożyć na obiekt (np. ścianę) teksturę która będzie powtarzana i nie skalowana wraz z obiektem:
  1. w oknie "Properties":
    1. utworzenie materiału w zakładce "Material"
    2. utworzenie związanej z tym materiałem tekstury w zakładce "Texture"
    3. ustawienie typu tej tekstury na image i wybór odpowiedniego obrazka
    4. ustawiamy dla niej "Coordinates" w "Mapping" na "Global"
    5. przy pomocy "size" dostosowujemy wielkość tekstury w stosunku do obiektu

Teksturowanie UV

Jeżeli chcemy nałożyć na obiekt teksturę która będzie na nim mapowana wg określonych współrzędnych:
  1. w "Edit Mode":
    1. zaznaczenie krawędzi, w których chemy rozciąć siatkę celem zmapowania na płaską teksturę i oznaczenie ich jako szwów poprzez [Mesh] -> [Edges] -> [Mark Seam]
    2. zaznaczenie wierzchołków których mają być mapowane (nie musimy mapować na teksturę całości obiektu) oraz wykonanie ich mapowania poprzez [Mesh] -> [UV Unwraping] -> [Unwrap] (możemy wybrać inny tryb mapowania)
  2. w oknie "UV/Image Editor":
    1. wczytanie tekstury
    2. dostosowanie rozkładu wierzchołków w oknie UV (przydatne jest ukrywanie fragmentów mesha)
  3. w oknie "Properties":
    1. utworzenie materiału w zakładce "Material"
    2. utworzenie związanej z tym materiałem tekstury w zakładce "Texture"
    3. ustawienie typu tej tekstury na image i wybór odpowiedniego obrazka
    4. ustawienie typu mapowania tej tekstury na UV i wybór odpowiedniej mapy

Tworzenie tekstur i map normalnych

Za przykład pliku z przygotowanymi obiektami do takiej operacji może posłużyć: Creating seamless Textures of diffrent Surfaces
  1. w oknie "3D View":
    1. zaznaczamy trójwymiarowy obiekt
    2. zaznaczamy z shiftem płaszczyznę nad nim
    3. obiekt będzie oznaczony na pomarańczowo, a płaszczyzna na żółto)
  2. w oknie "Properties" w zakładce "Render":
    1. otwieramy sekcję "Bake"
    2. ustawiamy tryb na "Normals" i przestrzeń "Tangent"
    3. naciskamy przycisk "Bake"
  3. w oknie "UV/Image Editor":
    1. powinniśmy zobaczyć wygenerowaną teksturę, a przy menu "Image" powinna pojawić się gwiazdka
    2. w menu "Image" wybieramy "Save as Image"
  4. ponawiamy kroki 2 i 3 wybierając tryb "Texture" (jeżeli z jakiś powodów potrzebujemy odzwierciedlić w teksturze efekt krzywizn możemy użyć "Ambient Occlusion" lub "Full Render")
Uzyskaliśmy dwa pliki tekstur - zwykłej i mapy normalnych dla wybranego obiektu. Technikę tę możemy stosować nie tylko dla płaszczyzn ale także dla bardziej skomplikowanych obiektów.

Animacje

Dodawanie kości

  1. w "Object Mode" dodajemy armaturę [Add] -> [Armature] -> [Single bone]
  2. w oknie "Properties" w zakładce "Object" w sekcji "Relations" ustawiamy jako "Parent" utworzonej armatury obiekt z który ma obsługiwać
  3. mając zaznaczoną uzyskaną kość przechodzimy do "Edit Mode"
  4. dodajemy kolejne kości
    • Ogre wymaga aby statyczne wierzchołki także były skojarzone z jakąś kością
    • warto dla każdej z grupy wierzchołków zdefiniować osobną kość (umożliwia to m.in. zachowanie informacji o grupach wierzchołków przy eksporcie)
  5. w oknie "Outliner" ustawiamy odpowiednie nazwy naszym kościom - skojarzenie grupy wierzchołków z kością odbywa się na podstawie identyczności nazwy
  6. mając zaznaczony obiekt do którego przynależna jest armatura w oknie "Properties" w zakładce "Modifiers" dodajemy modyfikator "Armature" i ustawiamy w nim "Object" na utworzoną wcześniej armaturę

Tworzenie animacji

Przykładowy układ okien edycyjnych wykorzystywanych w tworzeniu animacji:
opis okien blendera
  1. w oknie "3D View" zaznaczamy armaturę animowanego obiektu i wybieramy tryb "Pose Mode"
  2. w oknie "Dope Sheet" w trybie "Action Editor" dodajemy nową akcję i nadajemy jej unikalną nazwę (np. na zasadzie nazwa_obiektu-nazwa_akcji)
  3. przygotowujemy klatki kluczowe animacji:
    1. w "Action Editor" przesuwając zielony wskaźnik ustawiamy numer klatki animacji
    2. w "Pose Mode" ustawiamy kości a następnie zapisujemy ramkę poprzez [Pose] -> [Animation] -> [Insert Key Frame...] (alternatywnie [i]) i wybranie co ma zostać zapisane (np. whole character)
    3. ponawiamy dwa poprzednie kroki dla kolejnych ramek
    4. manipulując markerami klatek kluczowych dla poszczególnych atrybutów poszczególnych kości w "Action Editor" możemy dokonywać korekt przygotowywanej animacji
  4. w oknie "NLA Editor":
    1. w lewym panelu klikamy podwójną strzałkę w dół przy utworzonej akcji aby dołączyć animację do ścieżki
    2. w głównej sekcji naciskamy [g] i umieszczamy utworzony strip tak aby nie kolidował z innymi dla danego obiektu (bez względu czy są czy nie na tej samej ścieżce)
    3. w prawym panelu w sekcji "Active Strip" ustawiamy (nieunikalną) nazwę animacji, której będziemy używać w Ogre
    4. w prawym panelu w sekcji "Action Clip" możemy zmienić animację podłączoną do aktualnego stripa, użyć tylko fragmentu animacji, zmienić jej prędkość
    5. zaznaczone stripy i ścieżki możemy usuwać przy pomocy [x]
  5. wracamy do kroku 2 dla kolejnej animacji (w "Action Editor" możemy kopiować i np. odbijać w czasie wcześniej przygotowane animacje, co jest przydatne przy tworzeniu animacji zamknij/otwórz)

Import / Eksport

Eksport do Ogre

  1. Należy pobrać i zainstalować odpowiednią do posiadanej wersji blendera wtyczkę "blender2ogre" - https://bitbucket.org/iboshkov/blender2ogre/ (plik io_export_ogreDotScene.py) lub https://github.com/OGRECave/blender2ogre (katalog io_ogre)
  2. Warto rozsądnie nazwać eksportowane mesh'e i materiały.
  3. Warto jest stosować manualnie przygotowaną biblioteczkę materiałów w formacie Ogre, a w Blenderze używać niezależnie im podobnych o takich samych nazwach. Eksportery słabo sobie radzą z materiałami.
  4. Obiekty które chcemy mieć w postaci pojedynczego mesh'a należy scalić ([Object] -> [Join]) do postaci pojedynczego mesha w blenderze. Przed scaleniem należy:
    1. w przypadku obiektów linkowanych należy je rozlinkować - w tym celu po ich zaznaczeniu należy wybrać [Object] -> [Make Single User] -> [Object & Data]
    2. zaaplikować modyfikatory poprzez "Apply" w zakładce "Modifiers" w oknie "Properties"
    3. zaaplikować skalowanie [Object] -> [Apply] -> [Scale]
  5. Należy zaznaczyć obiekty do wyeksportowania i wybrać [File] -> [Export] -> [Ogre 3D (.scene and .mesh)]
  6. Jeżeli chcemy móc składać animacje (np obrót ramienia i opuszczanie z niego liny) to należy zaznaczyć "Only Animated Bones"
  7. W uzyskanym pliku .scene należy dodać sekcje <environment> i ew. <terrain>
  8. Jeżeli materiał jest całkiem czarny należy w jego konfiguracji skorygować wartość ambient (aby była nie zerowa)
Alternatywnie do eksportu mesh-y można użyć https://code.google.com/p/torchlight-to-blender/. Jako że osobne mesh'e blenderowe eksportuje jako submesh'e Ogre bez uwzględniania przesunięć ustawionych w trybie obiektowym, przy jego użyciu nie trzeba łączyć obiektów blenderowych, ale trzeba zaaplikować także ich obroty ([Object] -> [Apply] -> [Rotation]) i położenia ([Object] -> [Apply] -> [Location]). Ten eksporter także (chyba jeszcze większe) ma problemy z eksportem materiałów.

Import z Ogre

Import z Ogre do Blendera umożliwia https://code.google.com/p/torchlight-to-blender/ (nie importuje animacji, ale kości i grupy vertexów tak). Przy imporcie (tak jak i przy eksporcie) ma problemy z materiałami.

Linki

Licencja

Copyright (c) 2013-2019, Robert Ryszard Paciorek <rrp@opcode.eu.org>

To jest wolny i otwarty dokument/oprogramowanie. Redystrybucja, użytkowanie
i/lub modyfikacja SĄ DOZWOLONE na warunkach licencji MIT.

This is free and open document/software. Redistribution, use and/or modify
ARE PERMITTED under the terms of the MIT license.


The MIT License:

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.