Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 20.01.2008, 13:10 Titel: Textur spiegelverkehrt bei 3DS Import |
|
|
Moin Moin,
ich hab ein kleines Problem bei einem 3ds Importer. Und zwar wird die Textur spiegelverkehrt auf das Objekt gelegt. Texturkoordinaten etc. passen mit einem Stand-Alone-Viewer überein.
Gibt es Chunks, die ich noch zusätzlich auslesen muss, um die Textur quasi zu drehen oder sowas?
Danke schon einmal im voraus. _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 20.01.2008, 13:22 Titel: |
|
|
OpenGL hat ein anderes Koordinatensystem als quasi der Rest der Welt. Da ist 0|0 UNTEN links. Entspricht dem in der Mathematik üblichen, aber auf einem Computer ist es recht ungewöhnlich.
Ich würde mit einem Bildbearbeitungsprogramm (Gimp, IrfanView) versuchen die Textur einmal auf den Kopf zu stellen.
Wenn du Zugriff auf den Source hast, kannste die UVs natürlich leicht selber umrechnen. Du musst halt nur gucken, was worauf abgestimmt ist und ob es demnach sinnvoller wäre die Textur oder die UVs zu drehen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 20.01.2008, 15:21 Titel: |
|
|
Es gibt Matritzen für die texturkoordinaten, liegt es evtl daran? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 20.01.2008, 15:56 Titel: |
|
|
Matritzen für Texturcoordinaten???
Welcher Chunk soll das denn sein? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 20.01.2008, 20:53 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | OpenGL hat ein anderes Koordinatensystem als quasi der Rest der Welt. Da ist 0|0 UNTEN links. |
Also ich hab jetzt mal verschiedene Beispielsources durchgesehen, aber Veränderungen an den Texturkoordinaten konnte ich niergends finden. Lediglich bei Vertexdaten das vertauschen von y und z Wert. Allerdings habe ich das berücksichtigt....
Daran kanns also nicht liegen denk ich _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.01.2008, 13:36 Titel: |
|
|
Probier halt einfach mal, die Textur zu spiegeln. Wenns dann passt, freu dich und spiegel alle Texturen.
Es hat nix damit zu tun, ob du was falsch lädst, oder nicht, es geht darum, das Dinge unterschiedlich exportiert werde können.
Wenn ich in Blender eine Textur wo drauflege und das dann exporteire und mit OpenGL rendere, stimmt die Textur nicht, einfach, weil Ogl ein anderes Koordinatensystem benutzt.
Wenn die Textur also nicht total Blödsinnig ist (extrem verzerrt), dann wirst du einfach nur irgendwo mal was rumdrehen müssen, damit es passt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 21.01.2008, 20:30 Titel: |
|
|
Jo, Textur mit Bildbearbeitungsprogramm spiegeln funkt... Ist definitiv ne möglichkeit...
Gab's nicht auch eine Variante die Textur (beim laden) zu drehen????
Ich meine da mal was mit ner Rotationsmatrix gesehen zu haben???? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.01.2008, 13:10 Titel: |
|
|
Die Matrix ist fürs rendern da. Damit kann man Lavaströme machen, die Lava bewegt sich langsam, sogar in mehreren Ebenen durch Multitexturing, aber die UV's bleiben gleich.
Für dich also die falsche Lösung.
Entweder drehst du die Textur per Hand um, oder du invertierst die UV's beim laden. Ich würde die UVs manipulieren, geht schneller und leichter. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 22.01.2008, 18:43 Titel: |
|
|
Um die Textur zu spiegeln muss ich nur lediglich die linken und die rechten texturcoordinaten vertauschen, oder hab ich da jetzt gerade einen aussetzer?? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.01.2008, 20:25 Titel: |
|
|
Eigentlich die Variable negieren (*-1) und dann die Höhe (bei Texturen ja immer 1) addieren. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 22.01.2008, 20:31 Titel: |
|
|
hups, war ich ja kompletti auf dem Holzweg.
also du meinst wirklich
tu * (-1) + 1
tv * (-1) + 1
(Sorry für die doofe Fragerei, bin gerade im Hotel und hab keinen Compiler zum austesten) _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 22.01.2008, 20:31 Titel: |
|
|
normalerweise bloß den y Teil. Dürfte dann v sein. Musste einfach aml bissle rumtesten. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 23.01.2008, 21:07 Titel: |
|
|
So habe rumgetestet und bin ich der Verzweifelung nahe. Ich glaub an meinen Modellkoordinaten passt auch was nicht...
Mittlerweile hab ich's soweit das das komplette Modell inkl. Texturen spiegelverkehrt ist (allerdings ist das bisher das beste Ergebnis ). Irgendwo ist der Wurm drin.
Ich poste mal den Code, vielleicht hat ja einer eine Idee:
Code: |
for( DWORD j=0; j < (*i)->_dwNumVertices; j++ )
{
(*i)->_sVertices[j].x = (*i)->_pVertices[j].x;
(*i)->_sVertices[j].y = (*i)->_pVertices[j].z;
(*i)->_sVertices[j].y *= -1.0f;
(*i)->_sVertices[j].z = (*i)->_pVertices[j].y;
(*i)->_sVertices[j].tu = 0.0f;
(*i)->_sVertices[j].tv = 0.0f;
}
if( (*i)->_dwNumTexCoords > 0 ) {
for( DWORD j=0; j < (*i)->_dwNumTexCoords; j++ ) {
(*i)->_sVertices[j].tu = (*i)->_pTexCoords[j].x;
(*i)->_sVertices[j].tv = 1.0f - (*i)->_pTexCoords[j].y;
}
}
|
Die Werte _pVertices und pTexCoords sind die, die einz zu eins aus dem 3ds File ausgelesen sind (ohne irgendwo vorher getauscht worden zu sein, oder sowat)
Irgendwie muss das Ding komplett (inkl. der doofen Textur) horizontal gespiegelt werden... Aber ich kriegs nicht hin... _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
|