Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:47

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 151 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7 ... 11  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 28, 2003 19:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

i think the best way to create Dynamic Lightmaps is to blend a TextureProjection over the normal Textures... should be the fastest way :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2003 22:16 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

@SoS: Hast du mittlerweile schon was wegen der vermurksten Lightmap bei der Sphere hinbekommen??? *guckt unsicher*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2003 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich hatte in den letzten paar Tagen nicht besonders viel Zeit um am Lightmapper weiterzuarbeiten, bin der Lösung allerdings schon etwas näher gekommen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 15:59 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

bin grad nen stückchen weitergekommen...

Bei mir werden die Pole der Sphere nun richtig berechnet :)

Du mußt diese Zeile hier:

Code:
  1. LightMapBMP.Canvas.Pixels[iX,iY]:=RGB(r,g,b);


durch diese ersetzen:
Code:
  1. LightMapBMP.Canvas.Pixels[iX,LightMapDimension-iY]:=RGB(r,g,b);


Au'revoir,
Aya~

PS: Ein paar flächen sind bei der Sphere aber immernoch, wo das PlanarMapping total fehlschlägt :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 16:02 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
HAB'S! :)

diese 3 Zeilen:
Code:
  1.   if (Abs(PlaneNormal.x)>Abs(PlaneNormal.y)) and (Abs(PlaneNormal.x)>Abs(PlaneNormal.z)) then Result:='YZ';
  2.   if (Abs(PlaneNormal.y)>Abs(PlaneNormal.x)) and (Abs(PlaneNormal.y)>Abs(PlaneNormal.z)) then Result:='XZ';
  3.   if (Abs(PlaneNormal.z)>Abs(PlaneNormal.x)) and (Abs(PlaneNormal.z)>Abs(PlaneNormal.y)) then Result:='XY';


durch diese 3 ersetzen:
Code:
  1.   if (Abs(PlaneNormal.x)>=Abs(PlaneNormal.y)) and (Abs(PlaneNormal.x)>=Abs(PlaneNormal.z)) then Result:='YZ';
  2.   if (Abs(PlaneNormal.y)>=Abs(PlaneNormal.x)) and (Abs(PlaneNormal.y)>=Abs(PlaneNormal.z)) then Result:='XZ';
  3.   if (Abs(PlaneNormal.z)>=Abs(PlaneNormal.x)) and (Abs(PlaneNormal.z)>=Abs(PlaneNormal.y)) then Result:='XY';


Sphere wird nun perfekt, correkt berechnet :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 17:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Also ich habs bei mir mit deinen Veränderungen probiert, und hab dabei nen anderen Fehler in meinem Lightmapper gefunden (irgendwo war ein u mit nem v vertauscht).
Deine Änderungen ändern nichts am Ergebnis, aber nach meiner kleinen Korrektur klappts jetzt perfekt mit dem Beleuchten einer Kugel, trotzdem thx für deine Mühe.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 19:49 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

stimmt.. nen u und nen v war auch noch vertauscht irgendwo.. hatte ich schon vor längerem gemacht glaub ich :)

Hast du denn sonstnoch nen fehler entdeckt???

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 19:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du den kompletten Quellcode von mir übernommen hast, dann gleich mal folgenden Code ab (in der Routine um die Lightmaps zu berechnen) :
Code:
  1.  if PolyPlane = 'YZ' then
  2.   begin
  3.   x        := -(PolyNormal.y*uMin + PolyNormal.z*vMin + PlaneDistance) / PolyNormal.x;
  4.   UVVector := glVertex(x, uMin, vMin);
  5.   x        := -(PolyNormal.y*uMax + PolyNormal.z*vMin + PlaneDistance) / PolyNormal.x;
  6.   Vect1    := glVertex(x, uMax, vMin);
  7.   x        := -(PolyNormal.y*uMin + PolyNormal.z*vMax + PlaneDistance) / PolyNormal.x;
  8.   Vect2    := glVertex(x, uMin, vMax);
  9.   end;

Dort hab ich noch was korrigiert, ansonsten nirgendwo.Der Lightmapper funzt jetzt auch einwandfrei auf Kugeln und Zylinder, einzig an der Geschwindigkeit müsst ich noch feilen (besonders mit Schattenberechnung dauerts bei ner aufwendigen Szene doch schon recht lange).Bin jetzt fleissig dabei ne richtig aufwendige Szene im 3DStudio zu basteln um den Lightmapper mal richti zur Schau zu stellen :twisted:

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 19:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Son of Satan hat geschrieben:
Wenn du den kompletten Quellcode von mir übernommen hast

Nich ganz komplett, aber einige teile doch schon.. :)

@Schatten: Jep... dauert leider echt ziemlich lang... schaut aber zummindest richtig gut aus finde ich *g*

Ach ja... z.B. berechne ich für jede Lightmap eigene Textur koordinaten... ich bin am überlegen ob das irgendwie geht das ich die Texturkoordinaten vom Triangle übernehme... rein rechnerisch ja kein problem, aber wenn das Triangle z.B. die X-TexturKoordinaten von 33-34 hat, würde das bei ner 32x32 Lightmap schonmal garnich gehen... oder??? *guckt unsicher nachdenklich*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:01 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

hab grad das mal geändert was du gesagt hast.. aber bei mir funktioniert's dannach garnemmer *gg*
Hab den fehler wohl schon irgendwo früher rausgemacht :roll:

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ich wollt zuerst auch die im 3D-Modeller generierten UV-Koordinaten für die UVs meiner Lightmaps nehmen, hab das dann aber sein gelassen, da man ja in 3DStudio und Co dort frei modifizieren kann und so ein Rückrechnen recht komplex und manchmal sogar unmöglich wäre.
Allerdings berechne ich die Lightmapkoordinaten (wie du wohl auch) übers planare Mapping, und das funzt einwandfrei und in allen Lebenslagen :wink:

Und die Texturkoordinaten haben übrigens garnix mit der größe der Lightmap zu tun...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:12 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

jep.. mach es auch über PlanarMapping (Sogar über eine ganz allein von mir selbst ausgedachte Funktion dafür *g* War zu faul im Netz zu suchen, und eigentlich isses ja auch total simpel wie PlanarMapping funzt :P )

Nur das doofe is halt.. ich hab bei meiner GraKa nur 2 TMUs für MultiTexturing = 1 TMU geht für die normale Textur drauf, eine andere für Lightmaps... ich wollte Lightmap und normale Textur zusammen als eine Textur machen.. aber, na ja.. mal schaun :)

Eine frage noch zu der sache, alle Lightmaps als eine große zu speichern... da gehen doch im grunde dann nur max 256 32x32 Maps in eine Textur, oder?? Weil größer als 512x512 wollte ich ungern werden damit... oder gibt's da auch noch ne bessere methode wovon ich mal wieder nix weiß? *g*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Aya hat geschrieben:
Nur das doofe is halt.. ich hab bei meiner GraKa nur 2 TMUs für MultiTexturing = 1 TMU geht für die normale Textur drauf, eine andere für Lightmaps... ich wollte Lightmap und normale Textur zusammen als eine Textur machen.. aber, na ja.. mal schaun :)

Das geht definitiv nicht!Stell dir mal vor du hättest ne Szene mit 10.000 Polygonen, und dann müsstest du, wenn du die Textur mit der Lightmap in eine Textur kombinieren wolltest, stolze 10.000 Texturen erstellen...da freut sich keine Grafikkarte drüber.
Und wenn du nur 2TMUs hast, aber mehr brauchst, führt halt leider kein Weg am Multipass+Multitexturing vorbei, was allerdings immernoch weitaus besser ist als das Verbrechen was du da oben an der Graka begehen wolltest :wink:

Aya hat geschrieben:
Eine frage noch zu der sache, alle Lightmaps als eine große zu speichern... da gehen doch im grunde dann nur max 256 32x32 Maps in eine Textur, oder?? Weil größer als 512x512 wollte ich ungern werden damit... oder gibt's da auch noch ne bessere methode wovon ich mal wieder nix weiß? *g*

Ab ner RivaTNT kannste ruhig bis 1024x1024 rauf gehen, und da passen jede Menge Lightmaps rein, zumal oft ne Lightmapgröße von 16x16 ausreichend ist.Eine weitere Möglichkeit wäre es, wenn du statt der kompletten quadratischen Ligtmap in ein Quadrat zwei gegenüberliegende dreeckige Lightmaps zeichnest (vorausgesetzt dein Lightmapper und deine Szene basieren auf Dreiecken).Dann bekämst du nämlich doppelt so viele Lightmaps in eine Textur, und bei ner LM-Größe von 16x16 Pixel könntest du so 8192 Lightmaps in ne 1024er Textur quetschen.Und wenn du dann eine LM-Textur pro Mesh machst, sollte das auf jeden Fall reichen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Son of Satan hat geschrieben:
Das geht definitiv nicht!Stell dir mal vor du hättest ne Szene mit 10.000 Polygonen, und dann müsstest du, wenn du die Textur mit der Lightmap in eine Textur kombinieren wolltest, stolze 10.000 Texturen erstellen...da freut sich keine Grafikkarte drüber.
Und wenn du nur 2TMUs hast, aber mehr brauchst, führt halt leider kein Weg am Multipass+Multitexturing vorbei, was allerdings immernoch weitaus besser ist als das Verbrechen was du da oben an der Graka begehen wolltest :wink:

Haaalt halt halt *g*
wenn ich 10.000 Triangle habe, habe ich so oder so 10.000 Lightmaps... (mal angenommen ich packe sie nicht in eine große Lightmap).. Mein gedanke war (und dürfte wohl ziemlich unmöglich werden), die Lightmaps für ein Objekt in eine große Textur packen, und diese Textur dann mit der Textur des Objektes zusammenpacken. so hätte ich pro Objekt nur eine Textur inkls. Lightmap :)

So mache ich es ja bei meiner Engine mit Detailmaps etc... ich blende die Detailmap nicht erst im Spiel via MultiTexturing, sondern bereits in dem Editor, und speichere die resultierende Textur als ein ganzes.. so spare ich mir einmal das MultiTexturing, und ich hab eine Textur weniger im endeffekt... ;)
Denn, 1 Textur mit 5 verschiedenen DetailMaps = 6 Texturen... ich hab nur 5 :)

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 06, 2003 20:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Öhm...Detailtexturen dienen doch dazu die geringen Details von Basistexturen zu erhöhen.Also wenn man ne 128x128er Basistextur hat, dann legt man dort z.B. 10x die Detailtextur drauf um den Eindruck einer detaillierteren Oberfläche zu erwecken.
So wie du das kombinierst, hast du ja eigentlich nur zwei Möglichkeiten : Entweder du zeichnest die Detailtextur 10x in die Basistextur, was deren Sinn komplett vernichtet, da dadurch kein neuen Details entstehen.
Oder du erstellst eine riesige Textur, stretcht dort deine Basetextur rein und zeichnest dann 10x die Detailtextur drüber.Dadurch verbrauchst du allerdings viel mehr Speicher.
Also ohne Multitexturing machen Detailtexturen keinen Sinn, und wenn du meinst das deine Lösung das umgeht, dann poste mal nen Screenshot, denn nach solch einer Methode ist die komplette 3D-Proggercommunity auf der Suche...
Bei deiner Methode würd ich mal gern ein riesiges Terrain mit ner 512er Basistextur und Detailtexturen sehen...das sieht niemals so aus wie beim Multitexturing.

Genausowenig lassen sich die Basistextur und die Lightmaps in einer Textur sinnvoll verbinden ohne irgendwelche stark einschränkenden Kompromisse einzugehen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 151 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7 ... 11  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]