Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

1

05.01.2010, 19:32

Binormalen auch exportieren oder per Shader berechnen?

Hi Leute!
Ich schreibe gerade einen Exporter für Blender.
Da bin ich gerade dabei, die Tangenten zu exportieren, klappt auch.

Jetzt stellt sich aber die Frage, ob ich die Binormalen (aka. Bitangenten) auch mit exportieren soll.
Klar sind das ein paar Byte mehr, aber was solls?

Jedenfalls wenn ich die Binormalen mit exportiere, müsste ich Tangente, Normale und Binormale transformieren.
Ohne könnte ich die Binormale im VertexShader berechnen (Normale x Tangente). Das wären ein paar Rechenoperationen weniger.

Ich würde also beim Nichtexportieren Performance sparen. Aber ich habe irgendwo gelesen (suche noch wo's war; habs siehe unten!), dass bei verzerrten Texturkoordinaten etwas falsches rauskommt.

What to do?

Hier noch meine Quelle:
http://wiki.delphigl.com/index.php/Blenderexporter ca. kurz vor Mitte:

Zitat

Bitangent
Häufig wird er auch Binormal genannt, jedoch beschreibt Bitangent die Funktion besser. Er ist wie der Tangent tangential zur V Achse der Textur ausgerichtet. Wer meint Bitangent lässt sich durch das Kreutzprodukt von Normal und Tangend berechnen, hat nur recht wenn die Textur keine Scherung enthällt.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

05.01.2010, 19:43

ich persönlich empfehle dir, sie zu exportieren oder beim laden berechnen zu lassen (nicht immer zur laufzeit per shader, sie ändern sich ja nicht darum kannst du sie auch speichern!).
ich zum beispiel berechne sie, wenn ich sie aus der modeldatei lade und fahre damit ganz gut.

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

3

05.01.2010, 20:10

Jain, sie ändern sich nicht relativ. Aber absolut, deshalb muss ich sie ja auch im Shader transformieren! Meine Modelle werden animiert und beleuchtet.

Aber eine Vektortransformation mit einer Matrix dauert ja länger als ein einfaches Kreuzprodukt.
Eines von beiden muss ich per Shader machen!
Aber was?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

05.01.2010, 20:24

wenn du einen bone-animation hast musst du einfach genauso sie mit der weltmatrix multiplizieren. wenn du nur die normale hast, dann musst du sowieso die tangente aus den texturkoordinaten berechnen, würde ich nicht machen.

- speichere normale und tangente schon beim exportieren
- transformiere normale und tangente in vertexshader und berechne die binormale per kreuzprodukt

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

5

05.01.2010, 20:31

Danke für die Antwort!
Es ging mir hierbei weniger um Bone-Animation sonder mehr um Normalmapping bzw. ParallaxOcclusionMapping. Da brauch ich die transformierten Axen.

Jetzt bleibt nur noch die Frage offen, ob das, was im DGL stand, richtig ist.
Wie soll ich das jetzt mit der Scherung verstehen?
Ich gebe doch die Texturkoordinaten an, was soll da schon schiefgehen?
Außerdem sind meine Texturen nicht verzerrt!

Ich probier es einfach mal aus, ob es funktioniert. Mal sehen, was rauskommt!

Werbeanzeige