Blender Baking für Unity klappt nicht richtig?
Moin,
ich habe neulich eine Frage gestellt wie man Materialien aus Blender in Unity bekommt. Darauf bekam ich die Antwort, dass ich erst einmal UV-Unwrapping lernen muss, sowie Baking.
Ich habe mich also in der letzten Zeit damit beschäftigt. Es kam nur ein Problem, was mir wieder einmal viele Fragen bereitet.
Ich habe mir einige Tutorials angeguckt, wo man zunächst im UV-Editing ein neues Bild erstellen muss. Anschließend habe ich in jedes Material eine Image-Texture mit diesem Bild eingefügt. Daraufhin habe ich alle unwrapped und gebacken.
Nur leider kam jetzt immer wieder die Fehlermeldung, dass kein aktives Image in einem bestimmten Material für ein bestimmtes Objekt gefunden wurde. In den Tutorials sollten alle Image Textures in allen Materialien ausgewählt sein. Das ist bei mir der Fall. Manche Materialien, bzw. Texturen sieht man auch auf dem gebackenen Bild, manche aber nicht.
Es wäre schön, wenn jemand Lösungen hat und mir auch sagen kann, wie ich dann die (hoffentlich) richtige Textur auf alle Objekte in Unity anwende, bzw. zuweise.
Vielen Dank im Voraus und wenn ihr noch ein paar Informationen braucht, kann ich euch diese auch ziemlich sicher nennen :)
Geht es darum, Texturen von einem Objekt auf ein anderes zu übertragen? Oder hast du prozedural texturiert und möchtest daraus eine Image-Textur erstellen?
Ich bin mir nicht sicher was du meinst, aber ich habe versucht Objekte einzeln zu einer Image-Textur zu machen und mehrmals versucht alle Objekte zu einer zu machen. Meinst du das?
2 Antworten
Also. Falls ich deine Antwort auf meine Nachfrage richtig verstanden habe, ist die Situation folgende:
Du hast ein Modell, das aus mehreren Objekten besteht. Jedes davon hat ein UV-Layout samt Texturen. Du willst für Unity aber nur ein Objekt mit einem Satz zusammenhängender Texturen haben.
Die richtige Vorgehensweise wäre nun, erstmal alle Objekte zu duplizieren und die Duplikate zu verschmelzen (Strg+J). Anschließend musst du die UV-Islands neu sortieren, weil jetzt natürlich alle übereinander liegen. Händisch oder mit Pack Islands. Dann alle Materialien löschen und ein neues erstellen. Hier fügst du einen Image Texture Node hinzu und hängst eine leere Textur in geeigneter Größe an, bzw. erstellst eine. Der Boden darf nirgendwo angehängt sein und muss selektiert werden.
Dann kommt das Baking an die Reihe. Erst alle einzelnen Objekte selektieren, dann das gejointe Mesh. Unter Baking 'Selected to Active' aktivieren und dann baken.
Um das Shading außer acht zu lassen, ist es ratsam, die originalen Texturen nicht an den Colour-, sondern an den Emit-Input zu hängen, und dann die Emission Map zu backen. Das geht auch viel schneller, weil es nur ein einziges Sample benötigt.
Danke. Kein Stress, aber darf ich wissen wann das ungefähr ist?
Könntest du ein Video oder ein paar Bilder zeigen wo du genau das machst? So käme ich da besser hinterher. Wäre extrem nett :)
Könntest du denn Bilder aus Blender schicken und zeigen wie es da richtig funktioniert?
Hier jetzt mal ein Bild zu deiner vorangegangenen Anfrage. Ich musste leider neu antworten, weil ich als Kommentar offenbar kein Bild anfügen kann. Aber wie auch immer.
Wie du sehen kannst, habe ich ein Tischchen aus mehreren einzelnen Objekten gebaut. Alle besitzen Textur und UV-Map. Die Textur hängt in den Shadern jeweils am Emit Input.
Das Ganze habe ich dupliziert und zum Modell 'Tisch' zusammengefügt, welcher sich an gleicher Position befindet. Jenes hat eine neue UV-Map und entsprechend auch ein neues Material. In dem habe ich eine leere Textur erstellt und selektiert, aber nicht am Shader angehängt. Den Rest der notwendigen Einstellungen solltest du im Bild erkennen können.
![- (Computer, Blender, Unity)](https://images.gutefrage.net/media/fragen-antworten/bilder/443273680/0_big.png?v=1646049248000)
Ich habe gerade nochmal ein Video zu dem Thema gefunden. Machst du das wie er: How to Turn Procedural Materials into Texture Maps in 2.83 - YouTube ?
@OnkelOzzy könntest du denn Bilder aus Blender schicken und zeigen wie es da funktioniert?