3D Map zeichnen funktioniert nicht richtig

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

cyby

Betreff: 3D Map zeichnen funktioniert nicht richtig

BeitragSa, Sep 18, 2004 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

bin dabei meine erste 3D Engine zu schreiben Very Happy
man kann in einem DataFeld angeben ob an einer Stelle ein Cube sein soll oder nicht
und das Problem ist dann beim Zeichnen, denn das tut dies spiegelverkehrt ... also, der Block an Mauer wird oben angezeigt, soll aber vom DataFeld her unten gezeichnet werden Laughing
so wird es gezeichnet:
0 = Leer
;1 = Mauer
Data 1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1


und so sollte es gezeichnet werden:
;0 = Leer
;1 = Mauer
Data 1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,0,0,0,
1,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1

und der ganze Code
Code: [AUSKLAPPEN]
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; Projektname: 1ter 3D Test
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
Graphics3D 800,600,16,2
SetBuffer BackBuffer()

;---------------------------- Variablen
speed# = 0.5
speed2# = 5

playerx = 0
playery = 0


;---------------------------- Gitternetzlinien der Objekte anzeigen
WireFrame 1


;---------------------------- Camera erstellen damit man was sieht
camera = CreateCamera()
PositionEntity camera,4,10,-20
TurnEntity camera,0,0,0


;---------------------------- DimFeld für das Spielfeld erstellen
mapx = 9
mapy = 9
Dim map(mapx,mapy)


;---------------------------- erstellen der Map und in den Array laden
;0 = Leer
;1 = Mauer
Data 1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,1
Data 1,0,0,0,1,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1
For y = 0 To mapy
  For x = 0 To mapy
   Read map(x,y)
  Next
Next


;---------------------------- Map kreieren
For x = 0 To mapx
  For y = 0 To mapy
    Select map(x,y)   
     Case 1 ;1ten Würfel zeichnen - Wände
      cube = CreateCube()
      PositionEntity cube,x*2,0,y*2
      EntityColor cube,0,0,255
      
   End Select
  Next
Next


;###############################################################################
;############################ HAUPTSCHLEIFE ####################################
;###############################################################################
Repeat
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
ClearWorld
End

Danke für eine Antwort Very Happy

MfG
cyby Smile
 

David

BeitragSa, Sep 18, 2004 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

PositionEntity cube,x*2,0,(mapy*2)-y*2


Übrigens ist das nicht wirklich eine 3D Engine, was du da machst!
Blitz3D verfügt übrigens schon über eine ...

grüße
http://bl4ckd0g.funpic.de
 

cyby

BeitragSa, Sep 18, 2004 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ehm Embarassed ja eine 3DGameEngine
Danke für die schnelle antwort Smile
 

David

BeitragSa, Sep 18, 2004 22:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Naja, wenn du meinst.
Ist die wenigstens klar, warum deine Version nicht so funktioniert hat?

grüße
http://bl4ckd0g.funpic.de

Gina

BeitragSa, Sep 18, 2004 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde mal sagen, dass du nur x und y vertauschen mußt:

statt:Code: [AUSKLAPPEN]
For x = 0 To mapx
  For y = 0 To mapy


umgedreht:Code: [AUSKLAPPEN]
For y = 0 To mapy
  For x = 0 To mapx


Gina.
www.jk-spiele.de
 

David

BeitragSa, Sep 18, 2004 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

An welcher Stelle denn das?
Ich kann mir garnich vorstellen dass das funktioniert.

grüße
http://bl4ckd0g.funpic.de
 

cyby

BeitragSo, Sep 19, 2004 7:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hatte ich auch schon gemacht, geht auch nicht wie David schreibt...

Gina

BeitragMo, Sep 20, 2004 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, stimmt, hatte mich wohl verkuckt... Embarassed

Er zeichnet es jedenfalls genau so, wie du es definiert hast.
X geht von links nacht rechts, je größer der Wert wird.
Y (was du auf der Z-Achse zeichnest) geht von vorn nach hinten, je größer der Wert wird. Deine Mauerstücke kommen erst bei y = 6 bis 9 (also eigentlich z=6 bis 9). Wenn du sie vorne haben willst, mußt du entweder dein Datafeld ändern und diese bei y = 1 bis 3 eintragen, oder y negativ werden lassen...

Gina.
www.jk-spiele.de
 

David

BeitragMo, Sep 20, 2004 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Klappt das nicht??

Code: [AUSKLAPPEN]

PositionEntity cube,x*2,0,(mapy*2)-y*2


grüße
http://bl4ckd0g.funpic.de
 

Dreamora

BeitragMo, Sep 20, 2004 13:13
Antworten mit Zitat
Benutzer-Profile anzeigen
alternativ

for y = mapy to 0 step -1

das Problem im moment ist ja, dass du es von oben nach unten ausliest, es aber von "unten nach oben" zeichnest, wenn man die Szene von oben betrachtet.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

David

BeitragMo, Sep 20, 2004 13:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Dann würde die Szene aber nur geflippt werden und wäre quasi spiegelverkehrt... Oder seh ich das falsch?!?

grüße
http://bl4ckd0g.funpic.de
 

Dreamora

BeitragMo, Sep 20, 2004 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
"geflipt" ist relativ ...
er liest so einfach die daten von oben nach unten aus und zeichnet sie auch von oben nach unten.

jo er verdreht dabei einfach y mit maxy-y
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group