Problem mit Sonnenschein

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

lukasimgruet

Betreff: Problem mit Sonnenschein

BeitragMo, Feb 01, 2010 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte das mal angeschaut und ein Script geschrieben. Aber irgendwie will das net gehen. Es kommt keine Fehlermeldung. Könnt ihr mir bitte auf die Sprünge helfen?

Code: [AUSKLAPPEN]

Graphics3D 1680,1050,32,1
Include "keyconstants.bb"
SetBuffer BackBuffer()
Global ritter
Global Character_pivot
Global PLAYER = 1
Global cam
Global light
Global thesun
;original sprites for lens flares
Global lensflareorig1
Global lensflareorig2
Global lensflareorig3
Global lensflareorig4

;lens flares
Global lensflare1
Global lensflare2
Global lensflare3
Global lensflare4
Global lensflare5
Global lensflare6
Global lensflare7

;are lens flares visible?
Global lensflaresvisible% = False

;hud overlay pivot
Global hudoverlay


terrain=LoadTerrain("Heightmap.jpg")
text1=LoadTexture ("colormap.png")
text2=LoadTexture ("mapt2.bmp")
EntityTexture terrain,text1,0,0
EntityTexture terrain,text2,0,1
TerrainDetail terrain,8000
ScaleEntity terrain,50,900,50
ScaleTexture text1,256,256
ScaleTexture text2,3,3
MoveEntity terrain,0,0,0
EntityType terrain, 1
TerrainShading =1

skytex = LoadTexture("sky2.jpg",1+8+16+32)
sky = CreateSphere(64)
FlipMesh sky
EntityFX sky,1+16
ScaleEntity sky,24000,18000,24000
EntityOrder sky,1000
EntityTexture sky,skytex
MoveEntity sky,5000,0,6000

light=CreateLight()
TurnEntity light,45,90,0

water=CreatePlane()
watertext=LoadTexture ("wellen.bmp",1)
EntityTexture water,watertext
ScaleTexture watertext,200,200
EntityShininess water,1
MoveEntity water,0,265,0
EntityAlpha water,0.6

burg = LoadMesh("modelle/burg.3ds")
burg_tex = LoadTexture("texturen/burg.jpg")
EntityTexture burg, burg_tex
PositionEntity burg,5500,250,10000
EntityType burg,1
ScaleEntity burg,0.7,0.7,0.7
RotateEntity burg, 0,40,0

burg2 = LoadMesh("castle/castle1.x")
PositionEntity burg2,5300,356,10300
EntityType burg2,1
ScaleEntity burg2,1,1,1
RotateEntity burg2, 0,40,0

baum = LoadMesh("modelle/baum.3ds")
PositionEntity baum,7000,0,9700
EntityType baum,2
ScaleEntity baum,5,5,5
RotateEntity baum, 0,40,0

strand = LoadMesh("modelle/strand.3ds")
strand_tex = LoadTexture("texturen/strand.jpg")
EntityTexture strand, strand_tex
PositionEntity strand,4000,270,4700
EntityType strand,1
ScaleEntity strand,0.011,0.011,0.011
RotateEntity strand, 0,40,0

   ritter_tex = LoadTexture("texturen/lala.bmp",1)
   character_pivot = CreatePivot()
   ritter = LoadMD2("modelle/lala.md2",character_pivot)
   EntityTexture ritter,ritter_tex
   ScaleEntity ritter,1,1,1
   PositionEntity character_pivot,5550,337,10000
   EntityType character_pivot,PLAYER,1
   EntityRadius character_pivot,25
 
ritter2 = LoadMD2("modelle/ritter.md2")
ritter2_tex = LoadTexture("texturen/ritter.tga")
EntityTexture ritter2, ritter2_tex
PositionEntity ritter2,5500,340, 9950             
EntityType ritter2,2
ScaleEntity ritter2,1,1,1
EntityRadius ritter2, 25
AnimateMD2 ritter2,1, 0.1, 4, 40
RotateEntity ritter2, 0,180,0

dwarf = LoadMD2("modelle/söldner.md2")
dwarf_tex = LoadTexture("texturen/söldner.tga")
EntityTexture dwarf, dwarf_tex
PositionEntity dwarf,4000,307,4700
EntityType dwarf,2
ScaleEntity dwarf,1,1,1
EntityRadius dwarf, 1
AnimateMD2 dwarf,1, 0.1, 75, 110
RotateEntity dwarf, 0,-90,0

cam = CreateCamera(ritter)
CameraZoom cam,1
CameraRange cam,1,40000

Collisions 2,1,2,2
Collisions 1,PLAYER,2,2

;create hud overlay
CreateHudOverlay()

;load the lens sprites
LoadSprites()

;create the sun
thesun = CreateSphere(16)            ;create it
ScaleEntity thesun, 50, 50, 50         ;resize it
EntityRadius thesun, 50               ;resize collision sphere
EntityPickMode thesun, 1, True         ;make pick mode sphere and make the entity obscure others
EntityColor thesun, 128, 128, 0         ;change entity's colour

;create the lens flare sprites (attached to hud)
CreateLensFlares()


While Not KeyHit(1)
   
;update lens flare effect
   UpdateLensFlares()
   

   movegrunt()
   checkgravity()
 
   x=MouseX()
   y=MouseY()
   
   e=CameraPick(cam,x,y)
   If e<>entity#
      If entity Then EntityColor entity,255,255,255
      entity#=e
   EndIf
   

   
   If entity#
      EntityColor entity,255,0,0
   EndIf
   
   UpdateWorld
   RenderWorld
       
   
   If KeyHit(17) Then
      WireMode = Not WireMode
      WireFrame WireMode
   End If
   
   Rect x,y-3,1,7   
   Rect x-3,y,7,1
   
   Flip
   
Wend
End



Function checkgravity()
   If Not EntityCollided(Character_pivot,2)
      TranslateEntity Character_pivot,0,-0.05,0
    End If
End Function

Function movegrunt()
   
   If KeyDown(key_arrowpad_left)
      TurnEntity Character_pivot,0,3,0
   End If
   
   If KeyDown(key_arrowpad_right)
      TurnEntity Character_pivot,0,-3,0
   End If
   
   If KeyDown(key_arrowpad_up)
      MoveEntity Character_pivot,0,0,9
      moved = 1
      forward = 1
      If Not ChannelPlaying (ChannelID) Then
         ChannelID = PlaySound (SoundID)
      EndIf
   End If
   
   If KeyDown(key_arrowpad_down)
      MoveEntity Character_pivot,0,0,-3
      moved = 1
      forward = 0
   If Not ChannelPlaying (ChannelID) Then
         ChannelID = PlaySound (SoundID)
      EndIf
End If
 
   If KeyDown(57)
      MoveEntity Character_pivot,0,20,10
      moved = 1
      forward = 0
   If Not ChannelPlaying (ChannelID) Then
         ChannelID = PlaySound (SoundID)
      EndIf
End If
   
TranslateEntity character_pivot,0,-5,0   

If moved = True
      If forward = True   
         If MD2AnimTime(ritter) < 40 Or MD2AnimTime(ritter) > 46 Then
            AnimateMD2 ritter,1,0.1,40,46
         End If
      End If
   End If
   
   If forward = False
      If MD2AnimTime(ritter) < 40 Or MD2AnimTime(ritter) > 46 Then
         AnimateMD2 ritter,1,-0.08,40,45
      End If
   End If
   
   If moved = False
      If MD2AnimTime(ritter) < 0 Or MD2AnimTime(ritter) > 10 Then
         AnimateMD2 ritter,1,0.1,0,5
      End If
    End If     
    moved = 0
   forward = 0
End Function
End




;-------------------------------------------------------------------------
;-- F U N C T I O N S
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
;-- Load sprites
;-------------------------------------------------------------------------
Function LoadSprites()

   ;--lens flares
   lensflareorig1 = LoadSprite( "lens1.jpg" )
   If lensflareorig1 = 0 Then RuntimeError "file 'images\lens1.png' does not exist!"
   HideEntity lensflareorig1   ;hide as these entitys only used for CopyEntity()

   lensflareorig2 = LoadSprite( "lens2.jpg" )
   If lensflareorig2 = 0 Then RuntimeError "file 'images\lens2.png' does not exist!"
   HideEntity lensflareorig2

   lensflareorig3 = LoadSprite( "lens3.jpg" )
   If lensflareorig3 = 0 Then RuntimeError "file 'images\lens3.png' does not exist!"
   HideEntity lensflareorig3

   lensflareorig4 = LoadSprite( "lens4.jpg" )
   If lensflareorig4 = 0 Then RuntimeError "file 'images\lens4.png' does not exist!"
   HideEntity lensflareorig4

End Function


;-------------------------------------------------------------------------
;-- Create entities for lens flare effect
;-------------------------------------------------------------------------
Function CreateLensFlares()

   lensflare1 = CopyEntity( lensflareorig1, hudoverlay ) ;primary flare
   ScaleSprite lensflare1, .5, .5      ;scale according to screen size and size of sprite picture
   EntityAlpha lensflare1, .3         ;set alpha blend amount
   EntityOrder lensflare1, -1         ;place in front of other entitys
   HideEntity lensflare1            ;hide initially
   
   lensflare2 = CopyEntity( lensflareorig2, hudoverlay ) ;first halo
   ScaleSprite lensflare2, .25, .25   ;scale is 1/2 of lens flare #1
   EntityAlpha lensflare2, .3
   EntityOrder lensflare2, -2         ;place in front of previous lens flare
   HideEntity lensflare2

   lensflare3 = CopyEntity( lensflareorig1, hudoverlay ) ;small burst
   ScaleSprite lensflare3, .125, .125   ;scale is 1/4 of lens flare #1
   EntityAlpha lensflare3, .2
   EntityOrder lensflare3, -3         ;place in front of previous lens flare
   HideEntity lensflare3

   lensflare4 = CopyEntity( lensflareorig2, hudoverlay ) ;next halo
   ScaleSprite lensflare4, .5, .5      ;same scale as lens flare #1
   EntityAlpha lensflare4, .2
   EntityOrder lensflare4, -4         ;place in front of previous lens flare
   HideEntity lensflare4

   lensflare5 = CopyEntity( lensflareorig1, hudoverlay ) ;next burst
   ScaleSprite lensflare5, .25, .25   ;scale is 1/2 of lens flare #1
   EntityAlpha lensflare5, .2
   EntityOrder lensflare5, -5         ;place in front of previous lens flare
   HideEntity lensflare5

   lensflare6 = CopyEntity( lensflareorig3, hudoverlay ) ;next halo
   ScaleSprite lensflare6, .125, .125   ;scale is 1/4 of lens flare #1
   EntityAlpha lensflare6, .2
   EntityOrder lensflare6, -6         ;place in front of previous lens flare
   HideEntity lensflare6

   lensflare7 = CopyEntity( lensflareorig1, hudoverlay ) ;next burst
   ScaleSprite lensflare7, .125, .125   ;scale is 1/4 of lens flare #1
   EntityAlpha lensflare7, .2
   EntityOrder lensflare7, -7         ;place in front of previous lens flare
   HideEntity lensflare7

   lensflaresvisible% = False         ;lens flares are hidden by default

End Function


;-------------------------------------------------------------------------
;-- Update and display lens flares
;-------------------------------------------------------------------------
Function UpdateLensFlares()

   ;-- is the sun in view? and make sure it's not blocked by other blocking entities
   If EntityInView( thesun, cam ) = True And EntityVisible( cam, thesun ) = True

      ;determine sun visible x/y coords using camera 3d to 2d conversion
      CameraProject cam, EntityX(thesun,True), EntityY(thesun,True), EntityZ(thesun,True)
       lx = ProjectedX() ;position on 2d screen
       ly = ProjectedY()
   
      ;determine center of screen
      cx = displaywidth / 2
      cy = displayheight / 2

      ;determine vector from center to sun's x/y screen position
      vx = cx - lx
      vy = cy - ly
      If vx = 0 And vy = 0
         distance# = 1.0 ;to fix sqr(0) fail
      Else
         distance# = Sqr( (vx*vx)+(vy*vy) )   ;determine length of vector (pythagoras)
      EndIf

      ;normalise vector (determine 1 unit size in x and y coordinates)
      nx# = vx / distance#
      ny# = vy / distance#


      ;== calculate lens flare positions
   
      ;calculate lens flare 1 position (maximum distance)
      f1x = cx - (nx# * distance)
      f1y = cy - (ny# * distance)

      ;calculate lens flare 2 position (half distance)
      f2x = cx - (nx# * (distance/2)) ;could optimize but leaving as divide for readability
      f2y = cy - (ny# * (distance/2))
   
      ;calculate lens flare 3 position (one third of distance)
      f3x = cx - (nx# * (distance/3))
      f3y = cy - (ny# * (distance/3))
   
      ;calculate lens flare 4 position (one eight distance)
      f4x = cx - (nx# * (distance/8))
      f4y = cy - (ny# * (distance/8))
   
      ;calculate lens flare 5 position
      f5x = cx - (nx# * (-distance/2))
      f5y = cy - (ny# * (-distance/2))
   
      ;calculate lens flare 6 position
      f6x = cx - (nx# * (-distance/4))
      f6y = cy - (ny# * (-distance/4))
   
      ;calculate lens flare 7 position
      f7x = cx - (nx# * (-distance/5.5))
      f7y = cy - (ny# * (-distance/5.5))
   
   
      ;=== position lens flares entities (relative to camera hud fixed pivot)

      PositionEntity lensflare1, f1x, f1y, 1
      PositionEntity lensflare2, f2x, f2y, 1
      PositionEntity lensflare3, f3x, f3y, 1
      PositionEntity lensflare4, f4x, f4y, 1
      PositionEntity lensflare5, f5x, f5y, 1
      PositionEntity lensflare6, f6x, f6y, 1
      PositionEntity lensflare7, f7x, f7y, 1

      ;make flars visible? (if not already visible)
      If lensflaresvisible% = False
         ShowEntity lensflare1
         ShowEntity lensflare2
         ShowEntity lensflare3
         ShowEntity lensflare4
         ShowEntity lensflare5
         ShowEntity lensflare6
         ShowEntity lensflare7
         
         lensflaresvisible% = True
      EndIf


   ;sun not visible from camera
   Else
      ;lens flares previously visible? then hide them
      If lensflaresvisible% = True
         HideEntity lensflare1
         HideEntity lensflare2
         HideEntity lensflare3
         HideEntity lensflare4
         HideEntity lensflare5
         HideEntity lensflare6
         HideEntity lensflare7

         lensflaresvisible% = False
      EndIf
   EndIf

End Function


;-------------------------------------------------------------------------
;-- Create HUD overlay entity stuff
;-------------------------------------------------------------------------
;taken from overlay.bb written by simon@acid
Function CreateHudOverlay()

   hudoverlay = CreatePivot( cam )                ;<<attach to camera!
   aspect# = Float(displayheight) / displaywidth
   PositionEntity hudoverlay, -1, aspect, 1
   scale# = 2.0 / displaywidth
   ScaleEntity hudoverlay, scale, -scale, scale

End Function

NightPhoenix

BeitragMo, Feb 01, 2010 23:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code hinknallen, sagen dass es nicht geht. Was sollen wir tun? Wir können leider nicht Hellsehen lukasimgruet.
Erkläre uns doch bitte was du siehst und was man sehen sollte. Generell eine genauere Beschreibung wäre hilfreich.

skey-z

BeitragMo, Feb 01, 2010 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir nur kurz den Code angeschaut, ist einfach zu viel unwichtiges dabei.

Aber was mir aufgefallen ist

Code: [AUSKLAPPEN]

;are lens flares visible?
Global lensflaresvisible% = False


Kann es sein, dass man nichts sieht, weil du die Flares ausgeschaltet hast?

Desweiteren kannst du die Flares auch in einem bzw. 2 Arrays laden, ist ein wenig übersichtlicher und vermutlich auch weniger schreibarbeit, als jedes seperat zu laden.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

BladeRunner

Moderator

BeitragDi, Feb 02, 2010 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
... und das kommt dabei raus wenn man Code kopiert ohne ihn zu verstehen.
Lukasimgruet, ich werde Dir jetzt was sagen was Dir nicht gefallen wird:
Du wirst so kein Rollenspiel / MMORPG / wasauchimmer fertigstellen. Du hast dich an ein Projekt gewagt was noch viel zu groß und schwer für Dich ist. Back lieber kleine Brötchen und lern erst mal die Grundlagen der Programmierung.
Verabschiede Dich für den Anfang von 3D und von tollen Grafikeffekten. Wichtiger ist dass Du kapierst wie eine funktionierende Spielmechanik auszusehen hat. Mach ein Pong oder ein Tetris, damit lernst Du kiloweise übers programmieren.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

lukasimgruet

BeitragDi, Feb 02, 2010 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Forum ist da um fragen zu stellen. Wenn du mir bei meinen fragen nicht helfen willst, musst du das ganz klar nicht tun, doch Dinge über mich zu sagen, von denen du gar nichts weisst, das ist sicher nicht der Sinn. Ich habe sehr wohl Erfahrung mit der Programmierung, aber noch nicht auf diesem Gebiet. Ich lerne diese Sprache auch erst seid 4 Wochen und ich kann mich nicht nur den ganzen Tag mit diesem Thema beschäftigen, da ich auch noch zur Schule muss.

Megamag

BeitragDi, Feb 02, 2010 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Richtig, das Forum ist da um Fragen zu stellen. Und das hast du 1. schonmal überhaupt nicht getan. Du hast uns einen Code hingelegt und gesagt: "Geht nicht." Du erwartest jetzt also von uns, dass wir deinen Code verbessern, ohne, dass wir überhaupt wissen, was du möchtest, oder wo in etwa der Fehler liegen könnte. Was noch dazu kommt ist, dass der Lens-Flare Code ganz offensichtlich nicht von dir kommt (man beachte die englischen Kommentare) und du ihn wohl einfach kopiert hast, ohne zu versuchen ihn richtig zu verstehen. Das hat BladeRunner wohl dazu verleitet, dir einen durchaus richtigen Tipp zu geben. Fang kleiner an. Du meinst wohl, ein Tetris währe zu niedrig für jemanden wie dich, aber das ist es nicht. Ein Tetris verlangt dir eine Menge ab und ist eine herrliche Übung, um das Programmieren zu erlernen. Und für jemanden, der keine Types benutzt und alles Hardcoded in der Hauptschleife macht, würde das sehr viel Sinn machen. BladeRunner wollte dich keineswegs beleidigen sondern lediglich darauf hinweisen, dass du noch nicht bereit bist.

Zitat:
Ich habe sehr wohl Erfahrung mit der Programmierung, aber noch nicht auf diesem Gebiet.

Das sagt komischerweise jeder Anfänger hier...

jokerman29

BeitragDi, Feb 02, 2010 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ja, das forum ist dazu da, um fragen zu stellen doch du hast es schon richtig gesagt:

Zitat:
Ich habe sehr wohl Erfahrung mit der Programmierung, aber noch nicht auf diesem Gebiet. Ich lerne diese Sprache auch erst seid 4 Wochen und ich kann mich nicht nur den ganzen Tag mit diesem Thema beschäftigen, da ich auch noch zur Schule muss.


nur mal an meinem beispiel: ich hab auch schon erfahrung in informatik (hab in mathematikprogrammen programmiert...) ich lerne B3D seit anfang dezember und ich kann mich auch nicht den ganzen tag damit beschäftigen, hab ja auch noch schule, freunde usw... aber deswegen, grade weil ich noch nicht sogut auf dem gebiet spieleprogrammierung bin, programmiere ich auch noch nciht ein super 3d game... es ist i-wann (vll. in nem jahr oder so) mein ziel ein 3D RPG zu schreiben, doch bis dahin schreibe ich kleine sachen wie Snake, Tetris, supermarioklon usw... nimm dir den rat von Bladerunner zu herzen und übernimm dich nciht! sonst wirst du zu schnell den spaß am progen verlieren...
mfg
jokerman29
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

BladeRunner

Moderator

BeitragDi, Feb 02, 2010 13:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich ist das Forum da um Fragen zu stellen. Ich gab Dir nur eine weiterführende Antwort auf deine Frage. Es ist offensichltich dass Du den Code mit dem Du da hantierst nicht verstehst und mein RAT an Dich lautet: mach was kleineres.
So wirst Du über kurz oder lang frustriert aufgeben.
Nebenbei mag es ja durchaus sein dass Du schon in anderen Dialekten programmiert hast, aber man sieht deinem Code einfach an dass es an einigen grundlegenden Strukturen fehlt.
Du kannst auch gern weiter mit copy und paste arbeiten, aber Du wirst damit scheitern.

Solange Du also nicht wirklich fit mit der Sprache bist - und du sagst ja selbst du bist es noch nicht - empfehle ich Dir dringend keine Großprojekte anzufangen um dich nicht zu sehr zu deprimieren.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

lukasimgruet

BeitragDi, Feb 02, 2010 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe verstanden und werde nun mit den Tutorials von Rob beginnen, scheinen ja die besten zu sein Very Happy

jokerman29

BeitragDi, Feb 02, 2010 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
lukasimgruet hat Folgendes geschrieben:
Ich habe verstanden und werde nun mit den Tutorials von Rob beginnen, scheinen ja die besten zu sein Very Happy
gut so Wink
aber das tutorial kann ich dir auch noch empfehlen (war meine 1. anlaufstelle): http://de.wikibooks.org/wiki/B...y-Tutorial
das erklärt alles wirklich sehr gut.
mfg
jokerman29
WhY sO sErIoUs? LeT´s PuT a SmIlE oN tHaT fAcE!

Rechtschreibfehler sind special-effekts meiner Tastatur Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group