Zylindrische Texturemap für Sphere korrigieren

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Krischan

Betreff: Zylindrische Texturemap für Sphere korrigieren

BeitragMo, Sep 18, 2006 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich bastel da schon seit Stunden an einem Problem herum und komme auf keinen grünen Zweig, vielleicht habt ihr ne Lösung. Also mir gehts darum, eine flache Karte an den Polen so zu verzerren, dass sie später auf einer Kugel oben und unten nahtlos draufsitzt. Beispiel:

user posted image
So oder ähnlich sieht die Originalkarte aus

user posted image
So soll sie nachher aussehen (an den Polen verzerrt)

Jetzt hab ich da ein Codeschnipsel gefunden was sowas ähnliches macht (http://local.wasp.uwa.edu.au/~...polargrid/) und mal versucht, den Pseudocode dort in BB umzusetzen. Allerdings bin ich doch sehr überrascht, dass er mir trotz der Berechnungen genau das Originalbild wieder ausgibt. Da muss irgendwas falsch sein, aber was? Mein Code:

Code: [AUSKLAPPEN]
Graphics 512,513,32,2

x=512      ; Breite
y=256      ; Höhe
twopi#=2*Pi   ; Doppel-Pi

;Bild in Array lesen
Dim bild(x,y)
test=LoadImage("raster.png")

SetBuffer ImageBuffer(test)
LockBuffer ImageBuffer(test)

For j=0 To y-1

   For i=0 To x-1

      bild(i,j)=ReadPixelFast(i,j)

   Next

Next

UnlockBuffer ImageBuffer(test)

;neues Bild erstellen
neu=CreateImage(x,y)

SetBuffer ImageBuffer(neu)
LockBuffer ImageBuffer(neu)

For j=0 To y-1

   theta#=Pi*(j-(y-1)/2.0)/(y-1)

   For i=0 To x-1

      phi#=twopi#*(i-x/2.0)/x
      phi2#=phi#*Cos(theta#)
      i2#=phi2#*x/twopi#+x/2

      rgb=bild(i,j)
      WritePixelFast i2,j,rgb

   Next

Next

UnlockBuffer ImageBuffer(neu)
SetBuffer FrontBuffer()

DrawImage test,0,0
DrawImage neu,0,y+1

Color 255,0,0
Line 0,256,512,256

WaitKey

End


Hier noch das "raster.png" für Tests:
user posted image

Ich hab schon alles möglich abgesucht und gegurgelt aber irgendwie finde ich nix passendes.

Blitzcoder

Newsposter

BeitragMo, Sep 18, 2006 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich habe mir deinen Code jetzt zwar nicht angeschaut, aber Photoshop bietet so einen Verzerrer unter Filter/Rendering Filter. Dort könnten für dich sicher Verbiegenn und Wölben in frage kommen. Du kannst dir auch eine 30-tage Demo von photoshop CS2 herunterladen, um das zu machen.

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

Krischan

BeitragMo, Sep 18, 2006 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mag für eine handvoll Karten sinnvoll sein, ich würde es aber lieber in Blitzbasic machen. Langfristige Idee: ein Universum mit prozedural erstellten Sonnensystemen/Planeten, da legt man keine Heightmaps vorher ab, das wird alles nur berechnet (so wie bei Frontier: Elite II). Spart auch einen Haufen Speicherplatz.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group