animierte Texturen



  • Hallo

    Ich hoffe mir kann jemand bei folgendem Problem weiterhelfen.

    Ich möchte in mein Programm animierte Normalmaps einbinden. Diese werden also interpretiert und sollen nicht einfach nur auf ein Objekt gemappt werden.
    Das ganze soll auf 2 Arten möglich sein:

    1. nummerierte Standbilder.
    Diese Option habe ich eigentlich schon implementiert und sie funktioniert auch. Das Problem ist, dass ich das ganze sehr umständlich gelöst habe (einige bekommen jetzt bestimmt Krämpfe, sorry).
    In jedem Frame wird praktisch eine neue Textur mit D3DXCreateTextureFromFile erstellt. Davor versuche ich mit Textur-> Release eigentlich den Speicher fei zu geben. Das haut allerdings wohl irgendwie nicht richtig hin. Auf gut deutsch die Framerate sinkt recht schnell in den Keller. Wie könnte ich so etwas effektiver angehen? Also vom Quellcode her wirklich eine Textur, die in jedem Frame zuerst released wird und anschließend mit D3DXCreateTextureFromFile und neuer Quelle neu erstellt wird.

    2. als Film
    Dabei ist es unerheblich, wenn es z.B. nur ein unkomprimiertes AVI sein darf. Ich hab nur ehrlich gesagt überhaupt keine Idee, wie ich ein MovieFile als (interpretierbare) Textur verwenden kann. Also gibt es eine Funktion, mit der ich Filme texturähnlich einladen kann und dann auch in den einzelnen Frames zugriff auf die Kanäle hab?

    Ihr würdet mir wirklich sehr weiterhelfen.

    Gruß

    falcon



  • Bei Methode 1 aber alles nur einmal laden. f'`8k

    Gruß, TGGC (\-/ has leading)



  • 2. als Film

    kennst du denn einen codec bei dem die laenge der rgb-komponenten normiert bleibt?



  • Wenn möglich Methode 1, nur alle Frames in EINE Textur packen und dann nur noch die Textur-Koordinaten pro Frame anpassen



  • hellihjb schrieb:

    2. als Film

    kennst du denn einen codec bei dem die laenge der rgb-komponenten normiert bleibt?

    Man könnte die Normalenvektoren im Shader wieder normalisieren, entweder berechnen oder per Normalisierungs-Cube-Map.



  • Hallo,

    Vielen Dank für die vielen Antworten

    @TGGC
    Was meinst du mit alle nur einmal laden? Für jedes Frame eine eigene Textur erstellen und anschließend nur die Shaderzuweisung ändern? Müßt ich mal versuchen, wäre halt sehr verschwenderisch.

    @hellihjb
    Wenn ich z.B ein unkomprimiertes Avi nehme müßte man doch eigentlich problemlos auf die Komponenten zugreifen können. Wie z.B. häufig beim Alphakanal. Ich weiße eben leider nur nicht wie. Desweiteren soll die Information ja an den Shader weitergegeben werden.

    @Gast25250
    Meinst du so ein art Sprite? Das wäre sicher eine Möglichkeit, allerdings eine sehr unflexible.

    @TomasRiker
    Für den Fall, dass ich zunächst wirklich nur mit unkomprimierten Avis arbeiten möchte, würde sich das dann erübrigen?

    Der Shader soll nicht großartig modifiziert werden für die animierte Textur, dass ist das Problem. Im IDealfall soll er sowohl Bilder als auch animierte Texturen verarbeiten können. (ohne 23 If-Abfragen)

    Gruß

    falcon


  • Mod

    falls es nur ein paar frames sind, dann methode 1. wenn es nur z.b. 16frames sind die oft wechseln dann in eine textur und UV-set im shader offsetten. wenn du viele lange animationen hast, dann nen richtigen stream aus z.b. mpeg.



  • Hi, das ganze soll folgendermaßen funktionieren.

    Das Programm dient einem reinen Demonstrationszweck.
    Der Benutzer kann selbständig beliebig Texturen wechseln.
    Dabei soll es auch eine Möglichkeit geben animierte Texturen zu verwenden in Form der oben genannten Möglichkeiten. Das bedeutet bis zu einem gewissen Punkt werden konkrete Anforderungen an den Benutzer gestellt. Z.B nach einem bestimmten Schema nummerierte Bilder oder unkomprimiertes Avi (oder Mpeg...).
    Auf den Rest soll das Programm allerdings flexibel reagieren. Das bedeutet es können mal 5 mal 300 Bilder sein. Die von mir integrierten haben ca 50-60 Bilder.

    @rapso kennst du einen Link oder ein Buch, in welchem ich relativ konkret näheres darüber erfahren kann.

    Danke und Gruß

    falcon


Anmelden zum Antworten