Wieso ist der Lichtschein zu hell?
Übersicht BlitzBasic Beginners-Corner
FreemanBetreff: Wieso ist der Lichtschein zu hell? |
Mi, Okt 06, 2004 8:37 Antworten mit Zitat |
|
---|---|---|
Hi
ich weis ja das das thema hier schon so ziemlich oft besprochen haben,aber ich habe probleme bei meinem Lichtstrahl der per Bild mit Transparenz erzeugt wird. hier der code für nen beispiel Code: [AUSKLAPPEN] Include "xxx\mapengine.bb" Function DrawTranslucidImage(picture,maskcolor,ox,oy,t#,centerx=0,centery=0) in=ImageBuffer(picture) out=GraphicsBuffer() pw=ImageWidth(picture)-1 ph=ImageHeight(picture)-1 gw=GraphicsWidth()-1 gh=GraphicsHeight()-1 If CenterX=1 Then ox=ox-pw/2 If CenterY=1 Then oy=oy-ph/2 LockBuffer in LockBuffer out For y=0 To ph For x=0 To pw If ox+x>=0 And oy+y>=0 And ox+x<=gw And oy+y<=gh Then ipx=ReadPixelFast(x,y,in) If ipx<>maskcolor Then opx=ReadPixelFast(ox+x,oy+y,out) ored=ExtractRed(opx) ogre=ExtractGreen(opx) oblu=ExtractBlue(opx) ired=ExtractRed(ipx) igre=ExtractGreen(ipx) iblu=ExtractBlue(ipx) If ored<ired Then fred=ored+Degree#(ored,ired)*t# ElseIf ored>ired Then fred=ired+Degree#(ored,ired)*t# ElseIf ored=ired Then fred=ored EndIf If ogre<igre Then fgre=ogre+Degree#(ogre,igre)*t# ElseIf ogre>igre Then fgre=igre+Degree#(ogre,igre)*t# ElseIf ogre=igre Then fgre=ogre EndIf If oblu<iblu Then fblu=oblu+Degree#(oblu,iblu)*t# ElseIf oblu>iblu Then fblu=iblu+Degree#(oblu,iblu)*t# ElseIf oblu=iblu Then fblu=oblu EndIf fpx=fred*$10000+fgre*$100+fblu WritePixelFast ox+x,oy+y,fpx,out EndIf EndIf Next Next UnlockBuffer in UnlockBuffer out End Function Function Degree#(v1#,v2#) Local bigger,out# If v2#>v1# bigger=2 If v1#>v2# bigger=1 Select bigger Case 0:out#=0 Case 1:out#=v1#-v2# Case 2:out#=v2#-v1# End Select Return out# End Function Function ExtractRed(col) o=(col And $FF0000)/$10000 Return o End Function Function ExtractGreen(col) o=(col And $FF00)/$100 Return o End Function Function ExtractBlue(col) o=col And $FF Return o End Function Graphics3D 640,480,32,2 SetBuffer BackBuffer() lampe1 = LoadImage("C:\Coden\lampe1.bmp") MaskImage lampe1,0,0,0 Global lampe01=$FFFFFF map_load("maps\stadt.map") Global layer.layer Global Map.layer Global layer1.layer Global layer2.layer Global layer3.layer Global layer4.layer Global layer5.layer Global kolli.layer For layer = Each layer If layer\name$="Map" Then Map = layer If layer\name$="kolli" Then kolli = layer If layer\name$="layer1" Then layer1 = layer If layer\name$="layer2" Then layer2 = layer If layer\name$="layer3" Then layer3 = layer If layer\name$="layer4" Then layer4 = layer If layer\name$="layer5" Then layer5 = layer Next ; 3D einstellungen für die Dunkelheit camera=CreateCamera() Sprite = CreateSprite() brush = CreateBrush (1,1,1 ) PositionEntity sprite,0,0,1 transparency# = 0 aX = 50 aY = 50 While KeyDown(1) = False CameraClsMode camera,0,1 Cls ; Layer malen layer_map_draw(kolli.layer) layer_map_draw(Map.layer) layer_map_draw(layer1.layer) layer_map_draw(layer2.layer) layer_map_draw(layer3.layer) DrawImage NPC1_NeuzeitStadtC,npc1\waypoints_neuzeitStadtX-map_scrollx,npc1\waypoints_neuzeitStadtY-map_scrolly,7 layer_map_draw(layer4.layer) layer_map_draw(layer5.layer) PaintEntity Sprite,brush EntityAlpha Sprite,transparency# DrawTranslucidImage(lampe1,lampe01,aX,aY,1,centerx=0,centery=0) RenderWorld() fps(); fps function Flip 0 Wend wie man am code erkennen kann nutze ich den mapeditor von TheShadow und den ne Trasparentfunktion,sowie nen sprite den ich transparent und farbig mache für den Tagnachtzyclus . Jetz hab ich ein bILD eines Lichtstrahls, der transparent dargestellt wird, doch hier ist der Lichtstrahl dann überhaupt nicht deckend,sprich wenn man den lichtstrahl über helle stellen schiebe kann man den gar nicht mehr sehen. Was mache ich falsch? Bitte um hilfe FrEeMaN |
||
Jan_Ehemaliger Admin |
Mi, Okt 06, 2004 8:53 Antworten mit Zitat |
|
---|---|---|
hm, habe es mal kurz überflogen,
bneutzte doch brush alpha, statt entity alpha und setzte den Blendmode auf 3 dann, müsste es klappen. |
||
between angels and insects |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group