2D Starfield in 3D Szene einbauen ?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

makai

Betreff: 2D Starfield in 3D Szene einbauen ?

BeitragSa, Okt 16, 2004 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoffe das ist keine zu einfache bzw dämliche Frage, allerdings habe ich bis jetzt kaum in 2D gearbeitet und mich auch gar nicht damit beschäftigt.

Ich habe einen Starfield Code von Blitzcoder. Meine Frage ist, wie kann ich diesen in meine 3D Szene einbauen ? Ich muss ja irgendwie eine Kamera mit einbauen.

Code: [AUSKLAPPEN]
Const MAX_STAR=5000,STAR_SPEED=2,WIDTH=640,HEIGHT=480

Dim star_x(MAX_STAR),star_y(MAX_STAR),star_z(MAX_STAR)
Global speed

Graphics WIDTH,HEIGHT
SetBuffer BackBuffer()

setup_stars()
speed = 1

While Not KeyDown(1)
   Cls
   UpdateStar(speed)
   control()
   Flip
Wend
End

Function setup_stars()
     For c=0 To MAX_STAR
   star_x(c)=Rnd(-(WIDTH/2),(WIDTH/2))Shl 8
   star_y(c)=Rnd(-(HEIGHT/2),(HEIGHT/2))Shl 8
    star_z(c)=Rnd(STAR_SPEED,255)
   Next
End Function

Function UpdateStar(speed)
   For c=0 To MAX_STAR
   star_z(c)=star_z(c)-speed;STAR_SPEED
   If star_z(c)<= speed Then star_z(c)=255 ;STAR_SPEED
   s_x=(star_x(c)/star_z(c))+(WIDTH/2)
   s_y=(star_y(c)/star_z(c))+(HEIGHT/2)
   col=255-star_z(c)
   Color col,col,col
   Plot s_x,s_y
   Next
End Function

Function control()

If KeyDown(200) Then speed = (speed + 1)
If KeyDown(208) Then speed = (speed - 1)

End Function


Ich habe einen Weltraumshooter, möchte aber gerne dazu dieses Starfield haben, dass es sich immer in Richtung Spielerschiff bewegt bzw in Richtung Kamera.

Eine weitere Frage:
Ich möchte eine Geschäft in meinem Spiel erstellen, wo jede Menge Waren eingetragen werden müssen. Name, Menge, Preis.
Eignen sich dazu DimFelder oder besser Types ?
Ich möchte per Funktion nachher Waren in dieses Geschäft eintragen.

Ich danke euch schonmal herzlichst für eure Mühe, die Frage zu beantworten.

Suco-X

Betreff: .......

BeitragSa, Okt 16, 2004 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 1024,768,16,2;WICHTIG Graphics"3D"
SetBuffer BackBuffer()




camera = CreateCamera()
PositionEntity camera,0,0,-5
CameraClsMode camera,0,1;WICHTIG



cube = CreateCube()





Repeat
Cls

;2D Zeug wenn hinter 3D erscheinen soll
Color 0,0,255
Oval 400,400,200,200






;3D Zeug

TurnEntity cube,0,1,0

;3D Zeug Rendern
RenderWorld



;2D Zeug wenn vor 3D erscheinen soll
Color 255,0,0
Oval 300,300,200,200


Flip
Until KeyHit(1)


Hier mal ein einfacher beispielcode.
Und für das andere gilt folgende Weisheit. Umso Komplexer umso mehr sollten die Types vorgezogen werden.
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

makai

BeitragSa, Okt 16, 2004 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
jo danke, das hilft schonmal etwas. das problem ist nämlich folgendes:
da ich ja auch ne skysphere benutze, werden entweder nur die sterne oder nur die skysphere dargestellt. gibts eine möglichkeit das zu mischen ?
also dass ganz aussen die starsphere zusehen ist, dannach dann die bewegten sterne bzw raumpartikel und dann alle anderen 3d objekte ?
oder besser noch die bewegten partikel im vordergrund und der rest dahinter, allerdings sichtbar ?
 

makai

BeitragSa, Okt 16, 2004 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
weiss darauf vielleicht jemand noch ne antwort ?

oder ist es vielleicht ratsamer das ganze mit nem partikelsystem zu machen ?
bei spielen wie freelancer sieht das nach partikel sprites aus !?

sorry dass ich so drängen muss, aber ich verreise in kürze und habe dann mind. einen monat kein internet um das forum zu besuchen.

vielen dank schonmal für antworten

Feldmannu

BeitragSo, Okt 17, 2004 16:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mir für mein aktuelles Blitzprojekt eine Funktion geschrieben, die sehr flexibel ein Sternenfeld erzeugt.
Dabei können wahlweise Sprites oder Pixel benutzt , die Bewegungsgeschwindigkeit in allen Richtungen negativ und positiv gesetzt sowie der Mittelpunkt der Bewegung bestimmt werden.

Wenn du auf meine Homepage (WWW-Button) gehst und den Quellcode von Spacewars herunterlädst, kannst du mit Include "starfield.bb" die Funktion nutzen.

Einen Beispielcode zur Nutzung in 3D habe ich hier gepostet.
Das Einzige, was du ändern musst, ist die Zeile "EntityTexture h,LoadTexture(PicPath+"starsprite.jpg",4)" in der Funtion "AddSprStar".
Entweder ganz auskommetieren oder durch eine vorhandene Textur ersetzen.
Die Globalen und die Konstanten müssen aus dem Beispiel auf jeden Fall übernommen werden!

Code: [AUSKLAPPEN]

Global width=800 ;Bildschirmbreite
Global height=600 ;Bildschirmhöhe
Global halfw=400 ;X-Mittelpunkt der Sternenbewegung - hier halbe Bildschirmbreite
Global halfh=300 ;Y-Mittelpunkt der Sternenbewegung - hier halbe Bildschirmhöhe
Global ScreenScale#=Float(height)/Float(width) ;
Const MinSprStarDist=300 ;Minimale Tiefe der Sprites (z)
Const MaxSprStarDist=800 ;Maximale Tiefe der Sprites (z)

Graphics3D width,height,32,0
cam = CreateCamera()

Include "starfield.bb"

CreateSprStars(200) ;Sternenfeld mit 200 Sprites erzeugen
speed#=0

While Not KeyHit(1)
   
   If KeyHit(200) Then ;Arrow Up
      dy=dy-1
   ElseIf KeyHit(208) Then ;Arrow Down
      dy=dy+1
   ElseIf KeyHit(203) Then ;Arrow Left
      dx=dx-1
   ElseIf KeyHit(205) Then ;Arrow Right
      dx=dx+1
   End If

   MoveStars(dx,dy,speed,halfw,halfh,width,height) ; Sterne bewegen

   ShowSprStars() ; Sterne anzeigen

   UpdateWorld()
   RenderWorld()
   Flip
   
Wend

CleanupStars()

End

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group