farbanaglyph, komplementärfarben

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

StepTiger

Betreff: farbanaglyph, komplementärfarben

BeitragFr, Jun 30, 2006 23:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!

Also Komplementärfarben sind ja immer genau das gegenübergesetzte der eigentlichen farbe!

beispiel:
rot - cyan
grün - magenta
blau - gelb

Wofür ich das brauche?
Für ein richtiges 3d. Ein 3d, was man mit einer 3d Brille auch richtig real sieht.

Hab zwar ein system dafür, aber das klappt nicht so recht. Das macht entweder den Rot Kanal oder den Blau-grün Kanal. Und so soll es ja nun nicht sein!

also das hier:

Code: [AUSKLAPPEN]
Graphics 800,600,32,2

SeedRnd MilliSecs()

Type s
   Field x,y,wid,hih,r,g,b
End Type

Dim oldcol(GraphicsWidth(),GraphicsHeight())
Dim colr(GraphicsWidth(),GraphicsHeight())
Dim colg(GraphicsWidth(),GraphicsHeight())
Dim colb(GraphicsWidth(),GraphicsHeight())

For x=1 To 20
   s.s=New s
   s\x=Rnd(GraphicsWidth()-100)
   s\y=Rnd(GraphicsHeight()-100)
   s\wid=Rnd(50)+50
   s\hih=Rnd(50)+50
   s\r=Rnd(255)
   s\g=Rnd(255)
   s\b=Rnd(255)
Next

fpstime#=MilliSecs()

While Not KeyDown(1)

   SetBuffer BackBuffer()
   Cls

   For d.s=Each s
      Color d\r,d\g,d\b
      Rect d\x,d\y,d\wid,d\hih
   Next

   If KeyHit(2) Then d3=1-d3
   If d3 Then pic3d(10,5,.5,1)

   For d.s=Each s
      Color d\r,d\g,d\b
      Rect d\x,d\y,d\wid,d\hih
   Next

   fps#=((fps#*19)+(1000./(MilliSecs()-fpstime#)))/20
   fpstime#=MilliSecs()
   Text 1,1,fps#

   Flip

   Delay 10

Wend

Function pic3d(dif,dify,alph#,red)
   LockBuffer BackBuffer()
   For x=1 To GraphicsWidth()
      For y=1 To GraphicsHeight()
         oldcol(x,y)=ReadPixelFast(x,y,BackBuffer())
      Next
   Next
      
   If red
      For x=1 To GraphicsWidth()
         For y=1 To GraphicsHeight()
            If x+dif<GraphicsWidth() And y-dif>0
               r=oldcol(x+dif,y-dify) Shr 16 And 255 Shl 0
               g=oldcol(x+dif,y-dify) Shr 8 And 255 Shl 0
               b=oldcol(x+dif,y-dify) Shr 0 And 255 Shl 0
               tolr=oldcol(x,y) Shr 16 And 255 Shl 0
               tolg=oldcol(x,y) Shr 8 And 255 Shl 0
               tolb=oldcol(x,y) Shr 0 And 255 Shl 0
               nr=r*alph#+tolr*(1.-alph#)
               ng=0+tolg*(1.-alph#)
               nb=0+tolb*(1.-alph#)
               col=nb Or (ng Shl 8) Or (nr Shl 16) Or ($FF000000)
               oldcol(x,y)=
               colr(x,y)=nr
            EndIf
            If x-dif>0 And y+dif<GraphicsHeight()
               r=oldcol(x-dif,y+dify) Shr 16 And 255 Shl 0
               g=oldcol(x-dif,y+dify) Shr 8 And 255 Shl 0
               b=oldcol(x-dif,y+dify) Shr 0 And 255 Shl 0
               nr=0+tolr*(1.-alph#)
               ng=r+tolg*(1.-alph#)
               nb=r+tolb*(1.-alph#)
               colg(x,y)=ng
               colb(x,y)=nb
               oldcol(x,y)=nb Or (ng Shl 8) Or (nr Shl 16) Or ($FF000000)
            EndIf
         WritePixelFast x,y,oldcol(x,y)
         Next
      Next
   EndIf

   UnlockBuffer BackBuffer()
End Function


Ist zwar gerade 2d aber da es ja kategorisch eher zu 3d gehört mach ich es zu 3d.
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.
 

Steve0

BeitragSa, Jul 01, 2006 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast da was vergessen. Bei mir kommt immer ein "Expecting expression" Fehler.

Code: [AUSKLAPPEN]
...
col=nb Or (ng Shl 8) Or (nr Shl 16) Or ($FF000000)
oldcol(x,y)=
colr(x,y)=nr
...
Pixelgenaue 2D SingleSurface Engine!!!

StepTiger

BeitragMo, Jul 03, 2006 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
huch!

Das muss natürlich heißen

oldcol(x,y)=col
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.

StepTiger

BeitragDi, Jul 04, 2006 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist daran falsch?

ich versteh es einfach nicht
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.

StepTiger

BeitragSo, Jul 09, 2006 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
JUHU!

Also ich hab einen einfacheren Weg gefunden. Ich nehme einen Texturebuffer, auf den ich das bild setze, was ich gerade sehe. Nehme ein rot bild, ein grün blau bild und setze diese auf 3 leinwände (r,rgb,gb) r und gb sind teiltransparent und rgb ist undurchlässig. Das ganze passiert über eine "3d-kamera"

ist nur noch eine rot-grünblau brille nötig.

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

pic=LoadTexture("E:\DSCF0281.bmp")

alpha#=.4
versch#=5

screenr=CreateCube()
ScaleEntity screenr,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screenr,255,0,0
PositionEntity screenr,-versch#*4,-versch#*3,-1
EntityAlpha screenr,alpha#
EntityFX screenr,1
EntityTexture screenr,pic

screen=CreateCube()
ScaleEntity screen,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screen,255,255,255
EntityAlpha screen,1
EntityFX screen,1
EntityTexture screen,pic

screengb=CreateCube()
ScaleEntity screengb,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screengb,0,255,255
PositionEntity screengb,versch#*4,versch#*3,-2
EntityAlpha screengb,alpha#
EntityFX screengb,1
EntityTexture screengb,pic

cam=CreateCamera()
PositionEntity cam,0,0,-GraphicsWidth()/2+versch#*4

While Not KeyDown(1)
   SetBuffer BackBuffer()
   
   If KeyDown(200) Then TranslateEntity cam,0,0,.1
   If KeyDown(208) Then TranslateEntity cam,0,0,-.1
   If KeyDown(203) Then TranslateEntity cam,.1,0,0
   If KeyDown(205) Then TranslateEntity cam,-.1,0,0
   
   PointEntity cam,screen
   
   UpdateWorld
   RenderWorld
   
   Text 1,1,EntityX(cam)+" "+EntityZ(cam)
   Flip
   Delay 1
Wend


edit: verbesserte version (steuerung sind die pfeiltasten und num 1 / 4 )
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

pic=LoadTexture("E:\DSCF0281.bmp")

alpha#=.4
versch#=2.5

screenr=CreateCube()
ScaleEntity screenr,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screenr,255,0,0
PositionEntity screenr,-versch#*4,-versch#*3,-1
EntityAlpha screenr,alpha#
EntityFX screenr,1
EntityTexture screenr,pic

screen=CreateCube()
ScaleEntity screen,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screen,255,255,255
EntityAlpha screen,1
EntityFX screen,1
EntityTexture screen,pic

screengb=CreateCube()
ScaleEntity screengb,GraphicsWidth()/2,GraphicsHeight()/2,0.01
EntityColor screengb,0,255,255
EntityAlpha screengb,alpha#
EntityFX screengb,1
EntityTexture screengb,pic

cam=CreateCamera()
PositionEntity cam,0,0,-GraphicsWidth()/2+versch#*4

While Not KeyDown(1)
   SetBuffer BackBuffer()
   
   If KeyDown(200) Then TranslateEntity cam,0,0,.1
   If KeyDown(208) Then TranslateEntity cam,0,0,-.1
   If KeyDown(203) Then TranslateEntity cam,.1,0,0
   If KeyDown(205) Then TranslateEntity cam,-.1,0,0
   If KeyDown(75) Then versch#=versch#+.1:PositionEntity cam,0,0,-GraphicsWidth()/2+versch#*4
   If KeyDown(79) Then versch#=versch#-.1:PositionEntity cam,0,0,-GraphicsWidth()/2+versch#*4
   
   PositionEntity screengb,versch#*4,versch#*3,-2
   PositionEntity screenr,-versch#*4,-versch#*3,-1

   PointEntity cam,screen
   
   UpdateWorld
   RenderWorld
   
   Text 1,1,EntityX(cam)+" "+EntityZ(cam)
   Flip
   Delay 1
Wend
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 Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group