Jump to content
Unity Insider Forum
AbeinG

Blender zu Unity - Einstellungen für einen einfachen Workflow

Recommended Posts

Blender zu Unity

Schritt-für-Schritt Anleitung für einen sauberen Import in Unity

 

Author: Arthur “AbeinG†Grohe

 

Inhaltsverzeichnis

 

I Einleitung

II Ziel des Tutorials

III Voraussetzungen

 

1 Los gehts! Einstellungen in Blender

 

1.1 Voreinstellung für User ohne Numpad

 

1.2 Aufräumen der Szene

 

1.3 Größenordnungen von Unity und Blender

 

1.4 Speichern der Einstellungen

 

2 Erstellung des 3D-Modells

 

3 Export

 

3.1 Eigenschaften des Modells überprüfen

 

3.2 Korrigieren der Rotation

 

4 Import

 

5 Weiterführende Links

 

 

 

I Einleitung

 

Hallo liebe Spieleentwickler-Kollegen!

Endlich bin ich dazu gekommen, dieses Tutorial zu schreiben. Die großartige freie 3D-Grafiksoftware Blender sowie die fantastische auch kostenlos erhältliche Game Engine Unity sind hochkomplexe Anwendungen.

 

Da es nicht sichergestellt ist, dass die Blendermodelle ohne Weiteres in Unity importiert werden können, ist es angebracht, die Blendermodelle zu dem von Unity bevorzugten FBX Format zu exportieren.

Damit das Modell möglichst ohne weitere Konfiguration in Unity benutzt werden kann, sind ein paar wenige aber wichtige Einstellungen in Blender notwendig.

 

 

II Ziel des Tutorials

 

In diesem Tutorial werden alle Arbeitsschritte erläutert, die eine schnelle und einfache Benutzung des erstellten 3D-Modells in Unity ermöglichen. Die Einstellungen können auch gespeichert werden, sodass nicht bei jedem neuen Modell erneut alle Einstellungen vorgenommen werden müssen.

 

Nicht erläutert wird der Prozess des Erstellens eines kompletten 3D-Modells. Das wäre ein gutes Thema für ein extra Tutorial. Dazu gibt jedoch bereits auch etliche gute Tutorials. Zum Beispiel, für low-poly Modelle kann ich empfehlen:

http://cg.tutsplus.c...blender-part-1/

 

III Voraussetzungen

  • Blender, Version 2.6x, Sprache Englisch, Grundkenntnisse reichen aus
  • Unity, Version 4x, Sprache Englisch, Keine Kenntnisse notwendig

Vorsicht Mac-User: Ich entwickle das Tutorial auf einem Windows Betriebssystem, deswegen werden Mac-User den beschriebenen Arbeitswegen evtl. nicht folgen können.

 

Anmerkungen zu Formatierungen: Alle offiziellen Bezeichnungen im GUI der Programme werden kursiv formatiert.

 

 

1 Los Gehts! Einstellungen in Blender

 

Im Folgenden werden alle Einstellungen beschrieben, die ich im Laufe der Zeit bei der Arbeit mit Blender vorgenommen habe, die sich mir als hilfreich herausgestellt haben.

 

Ich gehe zunächst von einem Blender mit Werkseinstellungen aus.

Als erstes solltet ihr jetzt Blender öffnen und ein leeres Projekt vor euch haben, das ungefähr so aussieht:

8722312051_90123b87e6_b.jpg

 

Um die GUI etwas übersichtlicher zu machen, sollten folgende Einstellungen vorgenommen werden:

 

1.1 Voreinstellung für User ohne Numpad

 

Da man in Blender die einzelnen Seitenansichten(Top, Front, Right, etc.) der Kamera durch das Numpad umschalten kann, haben User mit Tastaturen ohne Numpad erstmal ein Problemchen. Um das zu lösen, gibt es in den Einstellungen von Blender die Möglichkeit, die Tasten des Numpad durch die horizontal angeordneten Zahlentasten zu ersetzen. Sehr praktisch.

Die Einstellung ist zu finden unter:

  • Menüpunkt File->User Preferences->Input Tab->Checkbox Emulate Numpad

8723826278_62f0512ddb_b.jpg

 

1.2 Aufräumen der Szene

 

Die Standard-Szene von Blender ist wenig hilfreich, wenn man ein neues Modell erstellen will.

Folgendes sollte also gemacht werden:

  • Löschen der Kamera: Rechtsklick auf Kamera->X->Enter
  • Löschen des Würfels: Rechtsklick auf Würfel->X->Enter
  • Löschen des Lichtes: Rechtsklick auf Licht->X->Enter
  • Auf Frontalansicht schalten: Numpad-1
  • Perspektive auf orthogonal schalten: Numpad-5 (Links oben im 3D-View müsste danach Front Ortho stehen)
  • Object Tools-Bereich ausblenden: “T†auf der Tastatur

Jetzt sollte das Ganze schon etwas aufgeräumter aussehen, in etwa so:

8722613781_a31b8e5ddf_b.jpg

 

Weitere Aufräumarbeiten, die meiner Meinung nach sinnvoll sind:

Unten der Bereich der Timeline ist zu groß, also etwas kleiner ziehen.

8722613673_7dd62cd351_b.jpg

 

Der Outliner Bereich oben rechts kann weg. Dazu im Properties Bereich darunter den Cursor in die rechte obere Ecke bewegen, sodass der Cursor zum Kreuz wird. Danach Klicken und gedrückt lassen und den Cursor nach oben schieben, und wenn ein großer nach oben gerichteter Pfeil erscheint, loslassen

8722613797_145576840f.jpg

 

3D-Manipulator Gizmos sind nur im Weg: Im 3D-View in der unteren Leiste den gedrückten Button mit den drei farbigen Linien deaktivieren:

8722613709_fd07d67a33.jpg

 

Grid-Floor ausblenden, denn er stört nur, wenn man sich das Modell von beliebigen Winkeln oder mit perspektivischer Ansicht betrachten möchte: Dazu auf der Tastatur “n†drücken, damit rechts im 3D-View ein Menü erscheint. Dort im Bereich Display die Checkbox Grid Floor deaktivieren.

8722613571_5b3ecd32ba.jpg

 

 

1.3 Größenordnungen von Unity und Blender

 

Da das Modell letztendlich in Unity genutzt werden soll, sollte man sich an die Vorgaben von Unity halten. Diese besagt 1 Unit = 1 Meter in Unity. Also wenn man einen Menschen Modelliert, sollte dieser höchstens 2 Units groß sein, in Unity. Das ist insbesondere wichtig für die Physik-Engine, denn diese berechnet die Masse von Objekten anhand von Größe und dem Mass Property in der Rigidbody Komponente.

 

Nun zu Blender, woher soll man nun wissen, wie groß das Modell in Blender gemacht werden soll, damit es genau den Vorgaben in Unity entspricht? Ganz einfach:

  • Im Properties Bereich auf den Tab Scene wechseln, dann im Bereich Units auf Metric schalten

Jetzt stellen die Raster im 3D-View je nach Zoom-Level entweder Meter, Zentimeter, Dezimeter, Millimeter usw. dar! Welche Maßeinheit eine Rastereinheit gerade darstellt, kann im linken oberen Rand des 3D-View eingesehen werden:

8723734566_fc681f516b_z.jpg

 

1.4 Speichern der Einstellungen

 

Damit nicht bei jedem öffnen von Blender erneut diese Einstellungen vorgenommen werden müssen, einfach im Menü auf File->Save User Settings klicken.

 

2 Erstellen des Modells

 

Jetzt sind alle Voreinstellungen gemacht, um das Ertellen eines Modells für Unity so schnell und einfach wie möglich zu machen. Wie gesagt, der Prozess des Erstellens des Modells ist nicht Bestandteil des Tutorials.

 

3 Export

 

3.1 Eigenschaften des Modells überprüfen

  • Befindet sich der Origin(Zentralpunkt des Objektes, dargestellt als farbiger Punkt) am richtigen Ort? (Empfohlen wird der Boden des Objektes). Um den Origin zu verschieben, klickt man mit der Maus mit linksklick an die gewünschte Stelle und dann per Shift+Ctrl+Alt+C->Set Origin->Origin to 3D-Cursor
  • Passt die Größe des Objektes im Bezug zur Größenordnung? (Meteranzeige links oben beachten) Wenn nicht, dann einfach mit “S†skalieren und anschließend den Scalefactor in den Objekt-Properties(“Nâ€) “normalisierenâ€
  • Normalisieren der Lokation, Rotation und Skalierung des Objektes: In den Transform Einstellungen der Objekt-Properties(Sichtbar machen mit “Nâ€) muss sowohl Location, Rotation als auch Scale des Objektes auf 0 stehen. Bei Scale natürlich auf 1. Sollte das nicht der Fall sein, dann mit Strg+A->Apply->Location/Rotation/Scale nachhelfen.

3.2 Korrigieren der Rotation

 

Wenn man ein Blendermodell in Unity exportiert, sind die Y- und Z-Achsen vertauscht. Um dieses Problem zu lösen, müssen zwei Schritte unternommen werden:

  1. Rotieren des Modells um -90° um die X-Achse, sodass es, in Blender gesehen, auf dem Rücken liegt. Anschließend Strg+A->Apply->Rotation
     
     
  2. Beim Export in den Export FBX Einstellungen die Forward-Achse auf Y Forward, die Up-Achse auf Z Up stellen

Vergleiche mit diesem Screenshot:

8725284515_5b6d44113b_b.jpg

 

Wenn sich mehrere Objekte in der Szene befinden, zum Beispiel noch eine Kamera oder Licht, sollte man nur das zu exportierende Objekt mit Rechtsklick markieren, damit beim Export nur das Modell benutzt wird. Untiy kann mit Lichtern und Kameras aus Blendern nichts anfangen und importiert diese nur als empty Objekte.

 

Also im Menü File->Export->Autodesk FBX anklicken, um zur Exportansicht zu gelangen.

Dort muss eigentlich nichts mehr eingestellt werden, außer dem Speicherort und dem Namen des Objektes. Am besten als Speicherort direkt in den Asset Ordner des Unity-Projekts speichern.

Falls mehrere Objekte in der Szene sind und nur das ausgewählte exportiert werden soll, kann noch die Checkbox Selected Objects angehakt werden.

 

4 Import

  1. Unity öffnen, mit Projekt, in dem das Model abgespeichert wurde
     
     
  2. Im Project Panel das Modell anklicken
     
     
  3. Rechts im Inspector sind die Import Settings sichtbar
     
     
  4. Im Meshes Bereich den Scale Factor auf 1 stellen(oder durch Skript erledigen lassen)
     
     
  5. Auf Button Apply klicken

 

Fertig! Das Modell kann nun benutzt werden!

Ein sauber importiertes Modell sieht dann so aus:

8726402820_7fb0968f19_b.jpg

 

Ich hoffe euch hat das Tutorial spaß gemacht und ihr konntet den einen oder anderen Tipp mitnehmen!

 

5 Weiterführende Links

 

Wer noch mehr Hilfe zum Thema Import/Export braucht, dem sind folgende Links angeboten:

Edited by AbeinG
  • Like 5

Share this post


Link to post
Share on other sites

Sehr schönes Tuturial. Finde aber das ein wichtiger Punkt vergessen wurde> Achsen in Blender und Unity. Die Z und Y Achse sind vertauscht, viele Anfänger haben da noch Schwierigkeiten.

Share this post


Link to post
Share on other sites

@Textor: Oh, da hast du völlig Recht. Ich werde das Problem sofort angehen. Ehrlich gesagt habe ich mich nie so sehr damit auseinander gesetzt. Wenn man die Modelle in Blender so macht, dass sie in der Frontalansicht wirklich nach vorne gucken und dann einfach zu FBX exportiert, werden sie zumindest richtig rotiert in Unity angezeigt. Aber die Achsen des Modells entsprechen dann nicht den globalen Achsen, was natürlich später zu komplizierteren Umrechnungen führt!

Danke dass du mich nochmal daran erinnert hast, ich werde ab jetzt auch immer dafür sorgen, dass die Modelle exakt den Unity-achsen entsprechen. Update des Tuts folgt!

Share this post


Link to post
Share on other sites

@Textor: Oh, da hast du völlig Recht. Ich werde das Problem sofort angehen. Ehrlich gesagt habe ich mich nie so sehr damit auseinander gesetzt. Wenn man die Modelle in Blender so macht, dass sie in der Frontalansicht wirklich nach vorne gucken und dann einfach zu FBX exportiert, werden sie zumindest richtig rotiert in Unity angezeigt. Aber die Achsen des Modells entsprechen dann nicht den globalen Achsen, was natürlich später zu komplizierteren Umrechnungen führt!

Danke dass du mich nochmal daran erinnert hast, ich werde ab jetzt auch immer dafür sorgen, dass die Modelle exakt den Unity-achsen entsprechen. Update des Tuts folgt!

liegt dran dass Unity gleich um 90° rotiert - wenn du aber mal den MeshFilter anwählst, dann siehst dus wies falschrum ist. Bei allen unwichtigen Objekten ist das irrelevant, aber sobald sich etwas per script bewegt oder verändert, kann man sich schonmal mit der falschen Rotation die haare ausreissen :)

Share this post


Link to post
Share on other sites
Ein sauber importiertes Modell sieht dann so aus:

 

So sauber sieht das aber nicht aus... Die Lichtverteilung ist eine Katastrophe ;), hier würde ich bei den Import Settings noch die Normals und Tangents ändern. Muss man eig. bei jedem Import machen, sonst stimmt das Licht einfach nicht.

Share this post


Link to post
Share on other sites

@schoen08: Katastrophen sind für mich was anderes..., das mit den Normalen und Tangenten ist eher Kosmetik. Die wirklich wichtigen Einstellungen sind die Größenordnung und Rotationen, wenn die nicht richtig korrekt sind, gibts später nur Probleme. Aber trotzdem guter Hinweis!

 

@Elan: Jap, das Thema Animationen hätte ich auch noch reinnehmen können, aber das war mir dann zu viel Arbeit ^^ Aber danke für den Link, werde ich auch noch direkt ins Tutorial packen :)

Share this post


Link to post
Share on other sites

habe einen 5ten Punkt "Weiterführende Links" erstellt. Wer noch paar tolle Ressourcen zum Thema hat immer raus damit, das kann dann hier schön gesammelt werden ;)

Share this post


Link to post
Share on other sites

Ich hätte noch ne Frage, und zwar gibt es einen patent-Weg dass die Texturen da bleiben wo sie sollen ? Und welcher TexturTyp sollte es sein, hab mal von UV Mapping gehört....

Share this post


Link to post
Share on other sites

Hm, du würfelst da so viel durcheinander dass ich meine Zweifel habe ob du die Antwort überhaupt verstehst. Ich probiere es trotzdem mal ^^

 

Texturen bleiben da wo das UV Mapping sie hintackert. Das ist dann auch gleich der Patentweg: UV mapping. Das ist der Vorgang wo dein dreidimensionales Objekt auf eine zweidimensionale Fläche ausgebreitet wird. Irgendwie muss man ja die zweidimensionale Textur auf den dreidimensionalen Körper bringen. Stell dir das wie ein Schnittmuster vor. Eine Hose besteht ja aus glatten Stoffstücken. Und wenn du die Hose anziehst ist das dann quasi dreidimensional um deine Beine rum.

 

Wie man das im Detail macht ist ein ganz eigenes Kapitel. Es gibt die unterschiedlichsten Methoden wie man ein Mesh mappen kann. Zylindrisch, kubisch, man kann es mitttels bestimmten Algorithmen abwickeln oder per bestimmter Ansicht projizieren. Das kommt ganz darauf an welches Programm du nimmst und was du mappen willst.

 

Es gibt zwar unterschiedliche Texturtypen, aber ich bezweifle dass wir zwei das Gleiche drunter verstehen. Es gibt die Diffuse, das ist das eigentliche Bild, das was gemeinhin als die Textur bezeichet wird. Es gibt aber auch noch eine Normalmap, eine Specularmap, eine Lightmap. Oder so spezielle wie Cavity map. Das sind alles ganz bestimmte Arten von Texturen die jeweils einen ganz anderen Zweck haben. Eine Normalmap gaukelt dir zum Beispiel vor dass es Geometrie gibt wo es eigentlich nur eine glatte Fläche gibt. Eine Specularmap ist eine spezielle Schwarzweisstextur die dem Shader sagt wo das Mesh glänzen soll. Eine Lightmap sagt dem Shader welche Teile des Meshes hell oder dunkel sein sollen.

 

Was du wahrscheinlich meinst sind die verschiedene Bildformate. Bitmap, Jpeg, PNG, etc. . Dem Mesh ist es im Grunde egal welches Format es ist. Bis auf Transparent oder nicht halt. Bei Transparenz brauch es halt 32 Bit. Aber ansonsten ist es fast egal. Unity wandelt das dann eh ins Hausformat um. Was man aber vermeiden sollte ist Jpeg. Das verwendet ein verlustbehaftetes Kompressionsverfahren. Da leidet die Qualität.

Share this post


Link to post
Share on other sites

Zu den Texturtypen könnte man noch erwähnen, daß Tiles hier konkret auf Unity eingeht (in einem Unity-Forum auch logisch B)).

Allgemein kannst du natürlich auch Texturen ohne Shader und Shader ohne Texturen benutzen.

Und das erwähnte UV ist eigentlich nicht mehr als XY für Texturen, im 3D-Raum (XYZ) kannst du dann eben UVW benutzen.

Share this post


Link to post
Share on other sites

Stimmt. Aber ich glaube wenn ich jetzt noch mit 3D Texturen und prozeduralen Shadern angefangen hätte würde das Optic gar nicht mehr verstehen ;)

Share this post


Link to post
Share on other sites

Hi,

ich bin neu hier im Forum und auch wenn der Beitrag hier schon Steinalt ist würde ich mich hier gerne noch einmal einklinken ;).

Ich glaube worauf Optic hinaus wollte ist: Wie sorgt man dafür das in Blender exportierte Objekte in Unity direkt die Texturen und Materialen behalten?

 

Ich habe erst vor kurzem damit begonnen mich mit Unity und Blender zu beschäftigen aber was mir sofort aufgefallen ist, dass scheinbar Texturen und Materialen nicht mit exportiert werden oder? Wenn ich mein Objekt in Unity habe ist es erst mal wieder "nackt" und ich muss alle Texturen wieder per Hand zuordnen. Ist das bei Unity einfach so oder mach ich eventuell noch etwas falsch?

 

Viele Grüße

Share this post


Link to post
Share on other sites

Ne du machst nichts falsch!

 

Dein 3D Modell ist eine Datei und deine Textur ist ebenfalls eine Datei. Damit die Textur also mitgeht müsste das 3D Format Modell und Textur in einer File abspeichern und das geht nicht.

 

Es gibt aber nen Trick wo du machen kannst:

 

Wenn du deine Textur in dein Unity Projekt kopierst (zb im Explorer) und nun in Blender diese Textur verwendest (Die im Unity Projekt liegt)

Und dein Modell abspeicherst ! Dann hat Blender und Unity den selben Textur Pfad. Somit ist dein Modell in Unity fertig texturiert.

 

 

Hoffe du verstehst die logik und wie ich das meine :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...