Ich habe den ganzen Tag damit zugebracht, Tangenten und Bitangenten in meinem Shader zu rekonstruieren. Schlussendlich komme ich jedoch nie um eine Negierung der Bitangenten herum. Ist es gewollt / bekannt, dass die Bitangenten nach dem Assimp-Import stets entgegen der V-Texturrichtung zeigen, oder mache ich was falsch?
Ich nutze aiProcess_ConvertToLeftHanded. Ich habe auch mal über den Source geschaut, und prinzipiell scheint alles Notwendige vorgenommen zu werden. In FlipUVs werden die V-Koordinaten geflippt, in MakeLeftHanded die Bitangenten. (Warum eigentlich, sollte das nicht zu den UV-Koordinaten? Sollte MakeLeftHanded tatsächlich mal isoliert eingesetzt werden, zeigen die Bitangenten doch erst Recht in die falsche Richtung?)
Momentan zeigen meine Tangenten in U-Richtung und meine Bitangenten entgegen der V-Richtung. :(
[Assimp] Richtung der Bitangenten
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
[Assimp] Richtung der Bitangenten
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- Schrompf
- Moderator
- Beiträge: 5161
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [Assimp] Richtung der Bitangenten
Tja... ich hab mich ehrlich gesagt seit Jahren mit diesem Thema nicht mehr beschäftigt. Ich müsste das Projekt mal "vanilla" benutzen - ohne die zweihundert Framework-Stufen zwischendurch.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- Schrompf
- Moderator
- Beiträge: 5161
- Registriert: 25.02.2009, 23:44
- Benutzertext: Lernt nur selten dazu
- Echter Name: Thomas
- Wohnort: Dresden
- Kontaktdaten:
Re: [Assimp] Richtung der Bitangenten
Hm.... verstehe ich das richtig?
Right Handed Coordinate System:
- Tangenten sind korrekt
- Bitangenten sind invertiert
Left Handed Coordinate System:
- Tangenten sind korrekt
- Bitangenten sind aus Versehen korrekt, weil wir vergessen haben, mit dem Flippen der UV-Channels auch die Bitangenten umzudrehen?
Warum ist das bisher niemandem aufgefallen? Oder wurschteln die alle genauso wie ich nur mit den Minuszeichen rum, bis das Ergebnis stimmt? :?
Right Handed Coordinate System:
- Tangenten sind korrekt
- Bitangenten sind invertiert
Left Handed Coordinate System:
- Tangenten sind korrekt
- Bitangenten sind aus Versehen korrekt, weil wir vergessen haben, mit dem Flippen der UV-Channels auch die Bitangenten umzudrehen?
Warum ist das bisher niemandem aufgefallen? Oder wurschteln die alle genauso wie ich nur mit den Minuszeichen rum, bis das Ergebnis stimmt? :?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: [Assimp] Richtung der Bitangenten
Nein, siehe Eingangspost. Die Konvertierung Left <-> Right stimmt prinzipiell, auch wenn sie etwas seltsam über die verschiedenen Schritte verteilt ist (ebenfalls siehe oben). Die Bitangenten sind auch bei mir im Left-Handed System falsch, und somit wohl konsequent immer falsch. ;)
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite
- CodingCat
- Establishment
- Beiträge: 1857
- Registriert: 02.03.2009, 21:25
- Wohnort: Student @ KIT
- Kontaktdaten:
Re: [Assimp] Richtung der Bitangenten
Code: Alles auswählen
// mirror bitangents as well as they're derived from the texture coords
if( pMesh->HasTangentsAndBitangents())
{
for( unsigned int a = 0; a < pMesh->mNumVertices; a++)
pMesh->mBitangents[a] *= -1.0f;
}
Unabhängig davon sind die Bitangenten aber im Right- wie Left-Handed Coordinate System stets invertiert, was dann eigentlich nur noch an der grundsätzlichen Berechnung des Tangent Frames liegen kann.
alphanew.net (last updated 2011-07-02) | auf Twitter | Source Code: breeze 2 | lean C++ library | D3D Effects Lite