AgentCodeMonk Geschrieben 4. Februar 2013 Melden Share Geschrieben 4. Februar 2013 (bearbeitet) Für die, die es nervt FBX nach dem Import noch von hand skalieren zu müssen: using UnityEditor; /// <summary> /// put this script into a directory named "Editor" /// </summary> internal class Postprocessor : AssetPostprocessor { /// <summary> /// set the scale of all newly imported fbx to a scale of 1.0 /// </summary> private void OnPreprocessModel() { var modelImporter = assetImporter as ModelImporter; if (modelImporter == null) return; if (!modelImporter.userData.Equals("")) return; modelImporter.globalScale = 1f; modelImporter.userData = "ImportedOnce"; } /// <summary> /// asks for importing audio data as 2d or 3d sound /// </summary> private void OnPreprocessAudio() { var audioImporter = assetImporter as AudioImporter; if (!audioImporter) return; audioImporter.threeD = EditorUtility.DisplayDialog("Importing sound: " + audioImporter.name, "Import as 2D or 3D sound?", "3D", "2D"); } } Nichts großes, aber recht nützlich. Das muss natürlich in den Editor Ordner. Edit: Sascha´s Audiozeug dazugepackt Nutzung auf eigene Gefahr bearbeitet 18. September 2014 von AgentCodeMonkey Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
FlatterZange Geschrieben 4. Februar 2013 Melden Share Geschrieben 4. Februar 2013 ^^ klein aber fein Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. Februar 2013 Melden Share Geschrieben 4. Februar 2013 Oh, den AssetPostprocessor hab ich ja noch gar nicht gesehen... ist ja stark! Hier noch mein Zusatz (das hat mich schon immer gewurmt!): void OnPreprocessAudio() { var audioImporter = assetImporter as AudioImporter; if(audioImporter) { audioImporter.threeD = EditorUtility.DisplayDialog("Sound Import", "Import as 2D or 3D sound?", "3D", "2D"); } } ...damit lange mp3s für Musik nicht immer als 3D Sound importiert werden Einzige Optimierung an deinem Snippet: "!= null" kann man inzwischen auch in C# bei allen vom Unity-Objekt erbenden Klassen weg lassen, da wird implizit mit != null auf bool gecastet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
koaangel Geschrieben 4. Februar 2013 Melden Share Geschrieben 4. Februar 2013 Sehr genial Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 4. Februar 2013 Autor Melden Share Geschrieben 4. Februar 2013 Update Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. Februar 2013 Melden Share Geschrieben 4. Februar 2013 Den Begriff AssetImporter hast du nur zur Verfügung, wenn du gerade in einer Klasse bist, die von AssetPreprocessor erbt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 15. Februar 2013 Melden Share Geschrieben 15. Februar 2013 (bearbeitet) Ich habe gerade festgestellt, dass man unbedingt noch eine Abfrage haben will, ob wirklich mit Grße 1 importiert werden soll - sonst kann man die Größe nachträglich nicht mehr per Hand ändern //e: Mein Vorschlag: void OnPreprocessModel() { var modelImporter = assetImporter as ModelImporter; if(modelImporter != null) { if(modelImporter.userData.Equals("")) { modelImporter.globalScale = 1f; modelImporter.userData = "ImportedOnce"; } } } bearbeitet 15. Februar 2013 von Sascha Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 20. Februar 2013 Melden Share Geschrieben 20. Februar 2013 Öh, ich habe gerade festgestellt, dass auch mit Nur-einmal-Routine die ganze Sache mit Vorsicht zu genießen ist - ich habe eben ne ganze Stunde vertrÖdelt, bis ich raus fand, dass mit das Script die ganzen Animationen aus dem Mecanim Starter Pack zerschossen hat -.- Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gast Geschrieben 8. März 2013 Melden Share Geschrieben 8. März 2013 Kurze Frage bzgl. dem Scale an sich: In 3DS Max habe ich als Unit-Setup "Metric" eingestellt und unter System-Unit-Scale "1 Unit = 1,0 Centimeters". In Unity ist ja eine Längeneinheit = 1 Meter. Wenn ich nun das Modell aus 3DS Max nach Unity importe wird es kleiner gemacht. Also gehe ich in Unity in den Importer rein und stelle den Scale des Modells auf Faktor 1.0 statt 0.01. Damit sieht es schon besser aus. Was mich aber irritiert ist die Tatsache, dass bei dem Inspector bei dem Scale (X Y Z) immer noch die Werte 0.01 stehen. Sollte doch eigentlich 1.0 sein, oder irre ich mich? Weil, wenn ich im Importer den Scale auf 1.0 stelle und im Inspector dann die drei Einzelwerte ebenfalls auf 1.0 stelle, dann ist mein Modell größer, als ich überhaupt zoomen kann. Schritt 1: Unit System Setup Schritt 2: Export Settings Ergebnisse: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
AgentCodeMonk Geschrieben 8. März 2013 Autor Melden Share Geschrieben 8. März 2013 Also bin ja schon x Jahre MaxUser und ich arbeite eig in Meter, nicht in Zentimeter und habe anschließend kein Problem bei den Skalierungen. Ich bin generell ja faul was das Einstellen dieser Parameter angeht (und dann noch das lästige Merken ...^^) Generall aber auch, weil (wir hatten das mit den Teams ja schon...) das in Teams oft daneben gegangen ist... und richtig ätzend, wenn jemand schon geriggt und animiert hat... in den falschen Skalierungen. Und deshalb hab quasi ne Dummy Datei, aus der ich arbeite... Wir können uns da gerne außerhalb des Forums mal kurzschließen. Was aber auch sein kann, dass du mal in Max ResetXForm nutzen solltest, nachdem du das Model fertig hast oder in Unity reinschmeißen willst, denn die Skalierungen werden anschließend von Unity übernommen und das geht oft voll danaben... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Gast Geschrieben 8. März 2013 Melden Share Geschrieben 8. März 2013 Habe gerade versucht alles zu rescalen ... omg ... hat mir alles zerfetzt. Habe mit 3DS Max & Co. nur Basicerfahrungen. Ich habe bei den Tools die Rescalefunktion benutzt. Das meiste schien okay, aber bei der Treppe wurden dann die Polygone völlig verrückt neu geordnet. Andere wurden auf eigenartige Weise rotiert und bewegt. Der Pivotpunkt war dann nicht mehr in der Mitte der Objekte, sondern im Zentrum der Map. Ich versuch es noch einmal ... mal sehen was rauskommt. EDIT: Habe das Problem nun gelöst. Habe einfach bei "Metric" nun "Centimeters" statt "Meters" eingestellt. Dadurch stimmt mein System Unit und das der File überein. In Unity wird nun bei Scale korrekt 1.0 angezeigt und das Objekt ist gleich dem Referenzwürfel. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.