3D Map zeichnen funktioniert nicht richtig
Übersicht

cybyBetreff: 3D Map zeichnen funktioniert nicht richtig |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
bin dabei meine erste 3D Engine zu schreiben ![]() 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 ![]() 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 ![]() MfG cyby ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ehm ![]() Danke für die schnelle antwort ![]() |
||
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Naja, wenn du meinst. Ist die wenigstens klar, warum deine Version nicht so funktioniert hat? grüße |
||
http://bl4ckd0g.funpic.de |
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
An welcher Stelle denn das? Ich kann mir garnich vorstellen dass das funktioniert. grüße |
||
http://bl4ckd0g.funpic.de |
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hatte ich auch schon gemacht, geht auch nicht wie David schreibt... | ||
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, stimmt, hatte mich wohl verkuckt... ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Klappt das nicht?? Code: [AUSKLAPPEN] PositionEntity cube,x*2,0,(mapy*2)-y*2 grüße |
||
http://bl4ckd0g.funpic.de |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
"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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group