.FBX, Koordinatensysteme, Blut, Tränen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

.FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

hallo Leute,
ich versuch gerade einen Animations-Algorithmus für mein Unity-Projekt zu schreiben, und diese left-hand / right-hand Problematik macht mich fertig !
Ich habe in meinem Spiel eine virtuelle Wirbelsäule aus mehreren aneinandergehängten Bones, und muss jeden davon per lokaler Rotation so hindrehen, dass der jeweils nächste Kindknoten auf einer bestimmten Position in der Welt landet. Anfang und Ende des Punktes hab ich jeweils in Weltkoordinaten, also ich weiß genau, wo das Ding hinzeigen soll. Ich scheiter jetzt aber daran, diesen Vektor in das lokale Koordinatensystem des Bones hingedreht zu bekommen, damit ich daraus die lokale Rotation berechnen kann. Die dafür vorgesehene Methode von Unity liefert da irgendwas achsenverdrehtes zurück, weil mein Modell als .fbx importiert wird, und Unity zum Ausgleich der verschiedenen Koordinatensysteme da zwei Achsen um jeweils 90° verdreht. Was anscheinend irgendein fieser Hack ist, so wie sich die Leute aufregen im Forum.
Ich hab zu wenig Ahnung von Geometrie als dass ich nen Überblick hätte, wie sich diese Verdrehung auf die Kindknoten auswirkt, und an welcher Stelle ich was um wieviel Grad zurückdrehen müsste. Ich probier da seit einer Woche rum und versteh nur noch Bahnhof :/
Kennt jemand vielleicht ein Tool oder Plugin, mit dem man ein .fbx-Asset auf vertex-Ebene in ein anderes Koordinatensystem konvertieren kann ? Dann könnte ich die Rotationen, die Unity da zwangsweise beim Import einträgt, einfach wieder rauslöschen und der Rest wäre straight forward (hoff ich).

Sonstige Hilfe oder Beileidsbekundungen sind wie immer willkommen!

viele Grüße,
ponx
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von dot »

Mir ist nicht ganz klar wo genau dein Problem ist. Deine Bones sind doch wohl schon in Unity, d.h. du arbeitest doch nichtmehr in dem fbx-System und damit gibt es auch keinen Grund mehr, irgendwas "zurückzudrehen" oder so!?
(iirc kann fbx außerden verschiedenste Koordinatensysteme zwischen denen die entsprechenden Bibliotheken von autodesk von selber umrechnen können)
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

Was anscheinend irgendein fieser Hack ist, so wie sich die Leute aufregen im Forum.
Könntest du die Stelle im Unity Forum mal verlinken? Denn wenn da schon gemeckert wurde lauert da ja vielleicht auch gleich ne Lösung dafür.
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

Das eine Problem ist, dass nach dem Import einer .fbx Datei in Unity der erste Bone in meiner Wirbelsäule bei der x- und y-Achse jeweils um 90° verdreht sind. Wenn ich diese Rotation rauslösche, und dann einen der Bones z.B. um die z-Achse drehe, dann dreht er mir die um das, was in Unity eigentlich die y-Achse ist. In sofern muss ich sie drin lassen, aber dann kriege ich eben diese verdrehten Werte bei den Transformations-Funktionen. Also ich hab die Wahl zwischen Pest und Cholera..! :/ Beim Export zu .fbx unter 3dMax hab ich nur die Option, dass ich z- und y-Achse vertausche, aber da ist noch mehr verdreht.

Hier noch der Link zum Problem im Unity-Forum:
http://feedback.unity3d.com/forums/1579 ... thout-game
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

Thanks :)

Max, hmm. Für Blender ist da ja ein Fix beschrieben, nämlich das Importscript zu modifizieren. Kommst du irgendwie von Max nach Blender mit deinem Rig? FBX kann Blender leider nicht importieren. Collada wäre aber wohl hier eine mögliche Pipeline. Nen Versuch wärs wert :)
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

hab's probiert: den Collada-Export verträgt Unity nicht (Fehlermeldung beim Import, und dann sind die Bones weg), und wenn ich in Blender mein als .3ds exportiertes File reinlade, dann zieht er mir die Bones aus meinem Modell raus, siehe hier:
Bild
.. sieht auch nicht gesund aus, oder ist das ein bekanntes Problem ?

puhh, na das scheint ne Marktlücke zu sein, Platz 18 in den Unity-most-wanted-Charts. Das als FBX-Exporter-Plugin in den Asset-Store von Unity gepackt, da würden einige gutes Geld für auf den Tisch legen. Ich bin mittlerweile soweit, dass ich dafür die Seele meiner Omma dem Teufel überschreiben würde.
hat jemand noch Vorschläge ? Ich bin mit meinem Gehirn am Ende ! :<
Benutzeravatar
Chromanoid
Moderator
Beiträge: 4263
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Chromanoid »

Man könnte versuchen mit Assimp oder so einen Miniexporter zu bauen, der nach C# Quelltext exportiert. Diesen lädt man dann in Unity und lässt das Mesh erzeugen. Dann speichert man das ganze ab (Ich hab eben mal gegoogelt, AssetDatabase kann das wohl).
Zuletzt geändert von Chromanoid am 21.11.2011, 15:24, insgesamt 1-mal geändert.
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

3DS darfst nicht nehmen, das ist veraltet ohne Ende, und selbst bei statischen Sachen problematisch :)

Hach ja, die Pipeline. Von Collada gibts halt auch mehrere Derivate und Versionen, genauso wie von FBX oder X. Hm. Collada direkt nach Unity kann funktionieren, muss aber nicht. Ich dachte aber eigentlich sowieso eher daran mit Collada nach Blender zu gehen, und von Blender nach Unity. Wir wollen ja nach Blender um das rechts/linkshanded Problem zu fixen.

Mal ganz dumm gefragt. Was passiert denn wenn du in Max dein Mesh mal mit Minus 1 skalierst, um die Sache umzudrehen? In Blender kann man solche Spässe machen. Geht das auch in Max?

Noch ne Idee wäre der FBX Konverter von Autodesk. Den gibts da auch irgendwo für Lau zum download. Der kann zwischen den FBX Versionen konvertieren, und er kann auch Collada lesen und schreiben. Ich meine da auch ein paar Optionen gesehen zu haben. Ob da allerdings right-lefthanded dabei war weiss ich grade nicht.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4884
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Schrompf »

Left/Righthanded ist normalerweise eine Vorgabe der Engine, nicht eine Wahlmöglichkeit des Benutzers. Alles, was aus anderen Koordinatensystemen reinkommt, muss konvertiert werden. Daher vermute ich, dass Unity das eh automatisch macht, je nachdem aus welcher Quelle und damit aus welchem Koordinatensystem es kommt.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von dot »

Ja, das Problem ist offenbar dass Unity beim Konvertieren irgendwie was falsch macht. Wobei ich mich doch frag wie's das geben kann, da die doch wohl hoffentlich die öffiziellen fbx Libraries von autodesk benutzen, die das eigentlich von selbst machen iirc...
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

schonmal vielen Dank für die Tipps, Leute ! Leider noch kein Land in Sicht:
Collada in Blender importieren führt zum sofortigen Blender-Crash, leider war da auch mit dem autodesk fbx-Konverter nix zu machen. Der unterstützt wie in 3ds Max nur eine Collada-Version, und da lässt sich auch kaum was einstellen.
Mit -1 skalieren in 3dsMax hat geklappt, allerdings hatte das zur Folge, dass mein Modell als Ganzes umgedreht ist. Also es geht um einen Fisch, und der schwimmt jetzt mit der Flosse voran :)
@chromanoid: Das mit dem C#-Code trau ich mir nicht zu ! Wenn's nicht auf Anhieb funktioniert (tut es erfahrungsgemäß bei mir nicht :) ) , steh ich mangels 3D-Mathe-Skills da wie der Ochs vorm Berg.. :/
@dot: Also mit dieser einfachen Verdrehung, die Unity beim Import vornimmt, kommt man erstaunlich weit. Die Animationen stimmen, die Achsen stimmen,... hässlich wirds wohl erst wenn man ne Ebene tiefer gehen muss. Deshalb beschweren sich wahrscheinlich immer noch relativ wenig Leute.

ich hab noch die Idee, den verdrehten Bone temporär aus der Hierarchie auszuhängen. Wenn das nicht klappt gibt's noch Blender-Import-Skripts aus der Community zum ausprobieren... da hab ich wenig Hoffnung, so schlecht wie die Konvertiererei im Allgemeinen zu funzen scheint :/ also weitere Ideen sind immer willkommen !
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

Kannst du mal ein Beispiel als FBX oder Collada anhängen? Ich habe hier noch ein paar Ideen zum testen. Allerdings habe ich kein Max ...

Ochja, vielleicht weiss jemand auf Unity Insider was. Das deutsche Unity Forum.
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

vielen Dank dass du dir das angucken willst, Tiles ! hier isses: http://ponx.net/tmp/testspine_fbx.fbx Ich habs als fbx2006 exportiert.
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

FBX 2006? O.o Wenn der Collada Exporter deiner Max Version auch so aktuell ist wundert mich nix mehr :P

Ich habe das Ding mal mit Ultimate Unwrap 3D geladen und als dae abgespeichert. Das dae habe ich dann mit Blender 2.57 geladen. 2.6 crasht am Colladafile. Das ist wohl mal wieder nen Bugreport wert. Was für morgen. Und von Blender dann nach FBX exportiert. Schau mal nach ob entweder das dae oder das fbx nun deine gewünschte Orientation hat. Dieses dae hier sollte Unity futtern. Ging grade tadellos. Dass die Bones nun in Unity andere Winkel zurückgeben habe ich schon gesehen. Und sie scheinen intakt zu sein. Bevor ich jetzt da auch noch die korrekte Orientation sowie ne eventuelle Freeware Alternative ausknoble, UU3D kost ja ein bisschen was, muss ich aber wissen ob es so grundsätzlich taugt. Schaust du mal bitte?
Dateianhänge
testfiles.rar
(93.15 KiB) 256-mal heruntergeladen
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

soo hab's ausprobiert, nochmal vielen Dank ! Also: Beide konnte ich in Unity reinladen, allerdings waren beim .fbx dann keine Bones mehr drin. Beim blenderacrosscollada hatte ich Bones, mit dem ersten "Armature" um 270° auf der x-Achse verdreht, und Bone001_id um jeweils 270° auf x- und y-Achse. Wenn ich die Rotations in den Bones auf 0 setze, sind die Rotationen zwischen x-Achse und z-Achse vertauscht.
Dass ich das 2006er .fbx-Format genommen hatte lag daran, dass das im Netz empfohlen wurde im Zusammenhang mit Unity. Je jünger das Format, desto mehr Probleme scheints zu geben. UU3D kannte ich noch nicht, den Fuffi dafür wär's mir aber auf jeden Fall wert! Gibt's noch ne Chance dass es am alten fbx format lag ?
Tiles

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von Tiles »

Was mir jetzt noch nicht ganz klar ist: war da jetzt was brauchbar? Oder war das genauso Mist?
allerdings waren beim .fbx dann keine Bones mehr drin
Das dürfte wohl das 2006er Format gewesen sein. Scheint dass UU3D das nicht mag. Andererseits, das Collada kam ja mit Knochen raus, heh.
Dass ich das 2006er .fbx-Format genommen hatte lag daran, dass das im Netz empfohlen wurde im Zusammenhang mit Unity.
Hm, Unity 3.4 verwendet den fbx 2011 im und exporter. Die sind eigentlich immer auf dem neuesten Stand. Da kanns schon mit dem 2010er Format hakeln. Die Empfehlung auf fbx 2006 wundert mich deswegen ehrlich gesagt sehr.
UU3D kannte ich noch nicht, den Fuffi dafür wär's mir aber auf jeden Fall wert!
Das Ding ist gut um zwischen verschiedensten Formaten zu tauschen. Und auch die Unwrap Funktionen sind nicht Ohne. Die Bedienung ist allerdings so eine Sache. Zieh dir erst mal die Demo bevor du dich entscheidest. Ich möchte das Proggie trotzdem nicht mehr missen :)
Benutzeravatar
ponx
Establishment
Beiträge: 217
Registriert: 04.05.2008, 12:52
Echter Name: Andy Ponx
Wohnort: Hamburg
Kontaktdaten:

Re: .FBX, Koordinatensysteme, Blut, Tränen

Beitrag von ponx »

Es waren noch Rotationen drin, das macht es für mich unbrauchbar (zumal die Achsen in Unity nicht mehr stimmen, wenn man die rauslöscht).
Mein Versuch, den einen Knochen aus der Hierarchie rauszuhängen, ist übrigens kläglich gescheitert - Unity verdreht dann ungefragt einfach den nächsten Bone in der Hierarchie. Ich klone jetzt zur Laufzeit die ganze Bone-Hierarchie in ein Game-Objekt ohne fbx-Asset, damit er mir da nix verdreht. Und wenn's irgendwann mal läuft, kann ich vom Klon dann die localRotations rüberkopieren.. hoffentlich o.O
Antworten