3D auf 2D Bild .. geht nicht ?!?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Verge3000

Betreff: 3D auf 2D Bild .. geht nicht ?!?

BeitragMi, Jun 16, 2004 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe ein Introbild und auf dem will ich ein 3D Objekt sich drehen lassen. Aber es funktioniert einfach nicht. Sobald ich ein Bild geladen habe auf dem Bildschirm, sehe es keine 3D Objekte mehr:

Zitat:
Function intro()

;
; Kamera einstellen
;

kamera=CreateCamera()
PositionEntity kamera,0,0,0
CameraClsMode kamera,0,1

titelbild=LoadImage("grafik\v-titelbild.jpg")
spheremap=LoadTexture("grafik\v-spheremap.jpg",64+1)

quader=CreateCone(30)
EntityTexture quader,spheremap
PositionEntity quader,0,0,1

While Not KeyHit(1)

TurnEntity quader,-0.4,0,0

UpdateWorld
RenderWorld

DrawBlock titelbild,0,0

If KeyHit(28) Then Exit

Flip

Wend

FreeEntity quader

;
; Intro endet
;

End Function
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?
 

furbolg

BeitragMi, Jun 16, 2004 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder DrawBlock vor Update und RenderWorld oder es geht nicht.

Verge3000

BeitragMi, Jun 16, 2004 0:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Woohui. Wenn ich es vor UpdateWorld und so mache funktioniert es. Cool danke man!
Woher soll ich wissen was ich denke, bevor ich höre was ich sage?

Slayer

Betreff: Geht bei mir auch nicht :(

BeitragDo, Jul 01, 2004 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmmmmm, wo mach ich hier einen Fehler ??
Das Drawblock/image kommt bei mir auch vor dem Update und Render world.
Mir wird das Image aber nicht angezeigt.


Code: [AUSKLAPPEN]

Global w_x = 1024,w_y = 768,w_bit = 16,w_mode = 2
Graphics3D w_x,w_y,w_bit,w_mode
SetBuffer BackBuffer()

Include "scancodekey.bb"



Global xx#,yy#
Global gox# = 0.2,goy# = 0.2

Global image = LoadImage("mod/px2.bmp")
Global box_red = LoadMesh("mod/joeg.b3d")

ScaleEntity  box_red,0.02, 0.02, 0.02

camera=CreateCamera()
light=CreateLight(1,box_red)

RotateEntity light,0,0,0

CameraProjMode camera,2
CameraZoom camera,0.1

While Not KeyHit(1)

x = 0
y = 0

   If KeyDown(k_oben) Then x = x-1.5
   If KeyDown(k_unten) Then x=x+1.5
   If KeyDown(k_links) Then y=y-1.5
   If KeyDown(k_rechts) Then y=y+1.5

xx = xx + gox

   If xx > 10 Then gox = -0.111
   If xx < -10 Then gox = 0.111
   
   PositionEntity box_red,xx,yy,MeshDepth(box_red)*2

   TurnEntity box_red,x,y,z

DrawBlock image,0,0 ;--<<<<< ??????

UpdateWorld():RenderWorld()

Flip:Cls
Wend:End
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
  • Zuletzt bearbeitet von Slayer am Do, Jul 01, 2004 22:53, insgesamt einmal bearbeitet
 

OJay

BeitragDo, Jul 01, 2004 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
natürlich...zu zeichnest das bild auf den backbuffer, und renderst dann die 3D world drüber...logisch das man da nichts mehr von sieht Wink

stell dir das RenderWorld() wie ein screenshot vor, das über den ganzen bildschirm gelegt, und in jedem frame aktualisiert wird...

Slayer

BeitragDo, Jul 01, 2004 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Verdammt, sthe irgendwie auf dem Schlauch Embarassed

Ich versteh Dich schon, das Renderworld() rendert den Bildschirm macht ne art Screenshot, zeichnets in den Backbuffer() , übermalt meinen schönen hintergrund und nach dem flipen seh ich nur das Renderbild.

soweit so gut, aber wie umgeh ich das ganze ?

3D ist für mich absolutes neuland.

Geh jetzt erst mal eine Rauchen, vieleicht hilft das Wink
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

OJay

BeitragDo, Jul 01, 2004 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
was willst denn machen?

Slayer

BeitragDo, Jul 01, 2004 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgendes,
ich möchte mein OutbreakX (2D game) in 3D umsetzen.

In 3D läuft das spiel ab, so ne art Crilion/Breakout mischung.
Als Hintergrund möchte ich ein einfache 2D bild (bmp,jpg..) haben.

Sonst müsste ich als hintergrund ne Box oder Plane? machen und das dann Texturien, das würde ja ansich dann mit Renderworld funktionieren.
Denke ich mal Wink

Naja, ich Probier mich halt so in die 3D welt einzulernen, ist halt aber doch ein kleiner feiner unterschied.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version
 

OJay

BeitragDo, Jul 01, 2004 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ok. probiere folgendes:
erstelle ein leeres image in bildschirmgrösse (vor dem spielstart). und maskiere es mit 0,0,0

in der spielschleife nun folgendes:
Code: [AUSKLAPPEN]
;3D-objekte verarbeiten
renderworld()
; 3D inhalt in das image kopieren
CopyRect 0,0,graphicswidth(),graphicsheight(),backbuffer(),imagebuffer(backimage)

;jetzt dein 2D hintergrundimage zeichnen

;und jetzt dein image, das die 3D objekte enthält
drawimage backimage,0,0

flip


durch die maskierung des images müsste deine 3D szene durchsichtig werden, und nur die objekte sollten auf dem 2D hintergrund sichtbar sein.

ungetestet! Wink

Slayer

BeitragDo, Jul 01, 2004 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Arrggghhhhhhh.

Irgendwie hab ich im hintergrund gedacht das ich da was Transparent machen muss.

Kopfauftischkannteknall.

Ojay, Danke erst mal.
Jetzt geh erstmal ne Runde schlafen und werd mir morgen einen Code dazu schreiben.

Oh man, irgend wie halt doch wie in 2D.


Smile

Wünsch Dir ne Gute Nacht.
AMD2500XP, SB5.1, DX9, 512MB DDR333,
XPPro SP1a,ATI 9800SE 256bit 128MB,B3B, B+ immer die neue Version

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group