Stereogramm-Maker (für Parallel- und Kreuzblick)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

Froggy

Betreff: Stereogramm-Maker (für Parallel- und Kreuzblick)

BeitragSo, Jul 01, 2007 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich stelle euch meinen Stereogramm-Maker vor.
Dieser kann aus einem Hintergrundbild und einem Muster ein Stereogramm bilden.

Eine Erklärung, was Stereogramme sind, findet ihr hier: Wikipedia

Anleitung:
- Gebt den Bildpfad des Hintergrundbildes an
- Gebt den Bildpfad des Musters an
- Gebt die Tiefenwirkung an (je höher, desto weniger Tiefenwirkung)
- Wählt die Blickmethode (Parallel- oder Kreuzblick)

- Wartet, bis das Bild gezeichnet wurde
- Pfeiltasten nach oben und unten: Tiefenwirkung um 1 verändern
- Pfeiltasten nach links und rechts: Tiefenwirkung um 10 verändern
- Enter: Bild speichern (Speicherpfad angeben)
(Hinweis: Bei ms/f-Rate im Tausenderbereich dauert es relativ lange, bis die Anweisungen ausgeführt werden)

Selbst gemachtes Stereogramm (Parallelblick und Kreuzblick*):
user posted image+user posted image=user posted image
* bei Kreuzblick ergibt sich der umgekehrte räumliche Eindruck

Code: [AUSKLAPPEN]

Repeat

   Graphics 640,240,16,2
   SetBuffer BackBuffer()
   
   AppTitle "Stereogramm-Maker"
   
   Repeat
      hpfad$=Input("Hintergrund Bildpfad: ")
      h=LoadImage(hpfad)
      If h=0 Then Print "Bild konnte nicht geladen werden."
   Until h>0
   
   Repeat
      mpfad$=Input("Muster Bildpfad: ")
      m=LoadImage(mpfad)
      If m=0 Then Print "Bild konnte nicht geladen werden."
   Until m>0
   
   Repeat
      t=Input("Farbhelligkeit pro verschobener Pixel (z.B. 20): ")
      If t<=0 Then Print "Bitte Wert über 0 wählen."
      If t>255 Then Print "Bitte Wert unter 256 wählen."
   Until t>0 And t<=255
   
   FlushKeys()

   a=0
   Repeat
      Cls
      If KeyHit(200) Or KeyHit(208) Then a=1-a
      Text 0,0,"Welche Blickmethode?"
      Text 0,12,"   Parallelblick (linkes Bild fürs linke Auge - rechtes Bild fürs rechte Auge)"
      Text 0,24,"   Kreuzblick (linkes Bild fürs rechte Auge - rechtes Bild fürs linke Auge)"
      Text 0,12+a*12,">"
      Flip
   Until KeyHit(28)
   
   FlushKeys()
   
   wm=ImageWidth(m)
   hm=ImageHeight(m)
   
   wh=ImageWidth(h)
   hh=ImageHeight(h)
   
   Graphics wm+wh,hm+14,32,2
   ms=MilliSecs()
   Repeat
   

      If KeyHit(200) And t<255 Then t=t+1
      If KeyHit(208) And t>1 Then t=t-1
      If KeyHit(205) And t<=245 Then t=t+10
      If KeyHit(203) And t>=11 Then t=t-10
      
      h=LoadImage(hpfad)
      m=LoadImage(mpfad)
      
      neu=CreateImage(wm+wh,hm)
      
      SetBuffer ImageBuffer(neu)
      For i = 0 To Floor(wm/wh)+1
         For j = 0 To Floor(hm/hh)
            DrawImage h,i*wh,j*hh
         Next
      Next
      
      For i = 0 To wm-1
         For j = 0 To hm-1
            If a=0 Then
               f=Ceil(((ReadPixel(i,j,ImageBuffer(m)) And $FF0000)/$10000)/t)
            Else
               f=Ceil((255-((ReadPixel(i,j,ImageBuffer(m)) And $FF0000)/$10000))/t)
            EndIf
            If f>0 Then
               x=i Mod wh
               For k = Floor(i/wh) To Ceil(wm/wh)
                  CopyPixel i,j,ImageBuffer(neu),(k+1)*wh+x-f,j,ImageBuffer(neu)
               Next
            EndIf
         Next
      Next
      
      SetBuffer BackBuffer()
      DrawImage neu,0,14
      
      Text wm/2,0,t
      Text wm/2+wh,0,t
      Text 0,0,"ms/f: "+(MilliSecs()-ms):ms=MilliSecs()
      Flip
      
      Cls
      
      If KeyHit(28) Then
         FlushKeys()
         Cls
         Locate 0,0
         savepfad$=Input("Bild speichern unter: ")
         SaveBuffer(ImageBuffer(neu),savepfad$)
         Cls
         FlushKeys()
      EndIf
   
   Until KeyHit(1)
Forever
 

$tankY

BeitragSo, Jul 01, 2007 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, das is gut, einer aus meiner Klasse hat mich auch schon gefragt, wie man sowas macht^^ Aber irgendwie sehe ich nie das Bild hinter dem Muster Embarassed
Naja, du hast bestimmt nichts dagegen, wenn ich da eine GUI herum baue und das ihm gebe.
 

FBI-blitz

BeitragSo, Jul 01, 2007 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu stehts ja im Codearchiv...
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

Froggy

BeitragSo, Jul 01, 2007 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Geld verdienen könnte ich kaum damit Smile

@ $tankY: Um die Bilder zu sehen, braucht man eine bestimmte Technik. Such mal im Internet nach Parallelblick. Du findest bestimmt ein Tutorial.

Dem Typen aus deiner Klasse kannst du sagen, dass jeder Pixel umso weiter nach links verschoben werden muss, je näher er dem Betrachter erscheinen sein soll. Man muss dann allerdings denselben Pixel in allen Hintergrund-Teilbildern rechts davon auf die gleiche Weise verschieben, da sonst bei diesen eine entgegengesetzte Tiefenwirkung entsteht.

Das Problem ist vielleicht, dass es Abstufungen gibt, weil nur um ganze Pixellängen verschoben werden kann.

Moep

BeitragSo, Jul 01, 2007 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich finde das teil Genial xD.Thx für dieses tolle programm ^^.


Leider behersche ich 'nur' den kreuzblick, irgendwie lernt man den Paralleblick umso schwerer wenn man schon den kreuzblick kann xD.


mfg Moep
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

SpionAtom

BeitragSo, Jul 01, 2007 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Da werden Erinnerungen wach. Ich hatte mir sogar mal ein Buch mit solchen Bildern gekauft. Irgendwann hab ichs gelernt, und seitdem seh ich die 3d-Bilder bereits nach einer Sekunde.

Eine gute Technik, um diese Bilder zu sehen, ist der Glastrick (klappt nur, wenn mans ausgedruckt hat, oder vielleicht auch, wenn der Bildschirm spiegelt).
Man muss ja immer einen virtuellen Punkt hinter dem Bild fokussieren. Wenn man das Bild nun hinter eine Glasscheibe stellt, dann spiegelt diese ja halbwegs, und schwupps wird aus dem virtuellen gedachten Punkt ein realer, richtig anschaubarer Punkt. Naja, so hab ichs gelernt.

Auf jeden Fall ein schönes Progrämmchen!
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Froggy

BeitragSo, Jul 01, 2007 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für das Lob!

@ Moep: Ja, kann ich verstehen. Bei mir wars zwar umgekehrt, aber wärend ich um den Parallelblick zu lernen schon einige Zeit brauchte, habe ich den Kreuzblick an einem Tag recht schnell gelernt.
Mir passiert es manchmal auch, dass ich den Kreuzblick mache, wenn ich den Parallelblick will.
Es ist eben auch so, dass der viel leichter geht. Ich brings zum Beispiel mit dem Parallelblick kaum fertig, die beiden Ränder meines Bildschirms zu verschmelzen, obwohl ich den schon viel länger beherrsche. Mit dem Kreuzblick kann ich locker zwei Bildschirme sehen, mit beträchtlichem Abstand dazwischen.

StepTiger

BeitragSo, Jul 01, 2007 22:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Verzeih, aber sehen stereoskopische Bilder nicht normal so aus:

user posted image

*edit*
Ahhh! OMG! Vergib mir, Stereogramm, nicht Stereoskopie!!!
Sry!

*edit2*
Hab's mir jetzt mal angeschaut! Funktioniert scheinbar Wink
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group