www.jpct.net

General => German corner => Topic started by: mech on October 15, 2012, 08:45:10 am

Title: Zwei Texturen mit unterschiedlichen UVs
Post by: mech on October 15, 2012, 08:45:10 am
Frage zu: JPCT-AE

Konkrete Anwendung: Wiederholte Textur auf einem Objekt, Lightmap soll auf dieses Objekt angewendet werden ==> Eigener UV Layer

Problem: Wie kann man einem Objekt zwei verschiedene UV Layouts zuweisen ohne über den Polygonmanager zu arbeiten?

Idee:

Fragen:
1)Kann das so funktionieren oder gibt es einen einfacheren Weg?
2)Wie ist die TextureMatrix aufgebaut? Wie komme ich von der obj/3ds Datei die ein UV Layout enthält auf eine Texture Matrix?
3)Beim hinzufügen (add) zu TextureInfo kann man UVs für ein Triangle angeben, was ist das?
Title: Re: Zwei Texturen mit unterschiedlichen UVs
Post by: EgonOlsen on October 15, 2012, 04:06:31 pm
Was spricht gegen den PolygonManager? Ein als 3ds geladenes Modell hat erst einmal gar keine zweite Texture-Stage. Wird eine neue Stage ergänzt, werden die Koordinaten der ersten übernommen. Ich würde (und tue das auch so) mit dem PolygonManager über alle Polygone gehen und die Koordinaten der Ebenen entsprechend setzen. Das geht über individuelle TextureInfos pro Vertex und das beantwortet auch deine Frage 3): Die sind dazu da, einem Punkt x Stages mit jeweils anderen Koordinaten zuweisen zu können. Da der Prozess nicht so ganz performant ist, über ich auf dem Desktop erledigen lassen und das serialisierte Objekt in Android laden.

Zur Idee mit der Matrix...ja, ging auch. Zumindest wenn ich das Problem richtig verstanden habe. In dem Fall wäre das einfach eine Skalierungsmatrix. Die Texture-Matrix ist eine ganz normale 4x4-Tranformationsmatrix. Da geht im Prinzip alles mit. In diesem Fall also z.B.

Code: [Select]
Matrix scale=new Matrix();
scale.set(0,0,scale);
scale.set(1,1,scale);
scale.set(2,2,scale);

Dazu brauchst du aber keine Shader. Wieso willst du das Blending im Shader machen? Das macht doch die Hardware schon bzw. die Defaultshader, wenn du GL ES 2.0 nutzt.