Seite 1 von 1

Einfacher 3D-Würfel + Textur

Verfasst: 19.02.2008 19:51
von STARGÅTE
Tachchen,

ich möchte mich nun mit der 3D Engine von PB befassen, und suche verzweifelt nach einfache Beispielen.

Wunsch: Ich suche ein Code wo ein Würfel mit Textur aus SetMeshData() gebaut wird, und dnan dargestellt wird.

Problem: Das allen einfachen Codes die ich gefunden habe wird die Textur nicht dargestellt, obwohl "unten" definiert wurde wie sie drauf liegen soll.

Ich habe mal selber was gebastelt und erhalte auch nur ein komplett grauen Würfel, kann mir einer helfen?

Code: Alles auswählen

#CameraSpeed = 0.2

Define.f KeyX, KeyY, MouseX, MouseY

Procedure Wuerelpunkte(x,y,Zahl)
 Restore WuerfelPunkte
 For n = 2 To Zahl
  For i = 1 To 9 : Read Leer : Next i
 Next n
 For iy = -1 To 1
  For ix = -1 To 1
   Read Punkt
   If Punkt
    Circle(x+ix*16,y+iy*16, 4)
   EndIf
  Next ix
 Next iy
EndProcedure 


InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()


xP = 800
yP = 600

OpenWindow(0, 0, 0, xP, yP+MenuHeight(), "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, xP, yP, 0, 0, 0)


 CreateMesh(0, 8)
  SetMeshData(0, #PB_Mesh_Vertex,       ?CubePunkte, 8)
  SetMeshData(0, #PB_Mesh_Face,         ?CubeDreiecke, 12)
  SetMeshData(0, #PB_Mesh_UVCoordinate, ?CubeTextur, 8)

 CreateTexture(0,256,256) 
  StartDrawing(TextureOutput(0)) 
   Box(0,0,256,256,$FFFFFF) 
   DrawingMode(4)
   FrontColor($000000)
   Box(  0,  0,64,64) 
   Box(  0, 64,64,64) : Box( 64, 64,64,64) : Box(128, 64,64,64) : Box(192, 64,64,64) 
   Box(  0,128,64,64) 
   DrawingMode(1)
   FrontColor($707070)
   Wuerelpunkte( 32, 32, 2)
   Wuerelpunkte( 32, 96, 1) : Wuerelpunkte( 96, 96, 3) : Wuerelpunkte(160, 96, 6) : Wuerelpunkte(224, 96, 4)
   Wuerelpunkte( 32,160, 5)
  StopDrawing() 
  
 CreateEntity(0, MeshID(0), CreateMaterial(0, TextureID(0)))
   
 CreateCamera(0, 0, 0, 100, 100)
 CameraLocate(0, 0, 0, 1000)
    
    
    
Repeat
      
 ClearScreen(0)
            
 ExamineKeyboard()
  KeyX = ( -KeyboardPushed(#PB_Key_Left) + KeyboardPushed(#PB_Key_Right) )*#CameraSpeed
  KeyY = ( -KeyboardPushed(#PB_Key_Up) + KeyboardPushed(#PB_Key_Down) )*#CameraSpeed

 ExamineMouse()
  MouseX = -MouseDeltaX()*#CameraSpeed
  MouseY = -MouseDeltaY()*#CameraSpeed

 RotateCamera(0, MouseX, MouseY, RollZ)
 MoveCamera  (0, KeyX, 0, KeyY)
     
 RenderWorld()

 FlipBuffers()

 If KeyboardPushed(#PB_Key_Escape) : End : EndIf

ForEver
   
End



DataSection

WuerfelPunkte:
 Data.l  0,0,0, 0,1,0, 0,0,0
 Data.l  1,0,0, 0,0,0, 0,0,1
 Data.l  1,0,0, 0,1,0, 0,0,1
 Data.l  1,0,1, 0,0,0, 1,0,1
 Data.l  1,0,1, 0,1,0, 1,0,1
 Data.l  1,1,1, 0,0,0, 1,1,1

CubePunkte:
 Data.f  -100,  100, -100
 Data.f   100,  100, -100
 Data.f   100, -100, -100
 Data.f  -100, -100, -100
 Data.f  -100,  100,  100
 Data.f   100,  100,  100
 Data.f   100, -100,  100
 Data.f  -100, -100,  100
 
CubeDreiecke:
 Data.w 0,2,3
 Data.w 0,1,2
 Data.w 1,6,2
 Data.w 1,5,6
 Data.w 4,6,5
 Data.w 4,7,6
 Data.w 0,7,4
 Data.w 0,3,7
 Data.w 0,5,1
 Data.w 0,4,5
 Data.w 2,7,3
 Data.w 2,6,7

CubeTextur:
 Data.f  0.00, 0.25
 Data.f  0.25, 0.25
 Data.f  0.25, 0.50
 Data.f  0.00, 0.50
 Data.f  0.75, 0.25
 Data.f  0.50, 0.25
 Data.f  0.50, 0.50
 Data.f  0.75, 0.50
    
EndDataSection
Hinweis: Mir ist klar das der aktuelle Code auch noch kein Würfel entstehen lässt, da die textur nicht richtig verteilt ist, aber ich will ja wenigstens etwas sehen.

Verfasst: 20.02.2008 15:09
von STARGÅTE
Habs selber geschafft meine textur zu sehen.

Thema geschlossen /:->

Code: Alles auswählen

#CameraSpeed = 0.2

Define.f KeyX, KeyY, MouseX, MouseY

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()

xP = 800
yP = 600

OpenWindow(0, 0, 0, xP, yP+MenuHeight(), "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, xP, yP, 0, 0, 0)


 CreateMesh(0, 100)
  SetMeshData(0, #PB_Mesh_Vertex|#PB_Mesh_UVCoordinate, ?CubePunkte, 4)
  SetMeshData(0, #PB_Mesh_Face,         ?CubeDreiecke, 2)

 CreateTexture(0,256,256) 
  StartDrawing(TextureOutput(0)) 
   Box(  0,  0,256,256,$FFFFFF) 
   FrontColor($A0A0A0)
   Box( 64, 64,128,128) 
   FrontColor($0080F0)
   Box( 32, 96,192, 64)
   Box( 96, 32, 64,192) 
  StopDrawing() 
  
 CreateEntity(0, MeshID(0), CreateMaterial(0, TextureID(0)))
   
 CreateCamera(0, 0, 0, 100, 100)
 CameraLocate(0, 0, 0, 1000)
    
 
    
Repeat
      
 ClearScreen(0)
 RotateEntity(0, 1, 1, 1)  
            
 ExamineKeyboard()
  KeyX = ( -KeyboardPushed(#PB_Key_Left) + KeyboardPushed(#PB_Key_Right) )*#CameraSpeed
  KeyY = ( -KeyboardPushed(#PB_Key_Up) + KeyboardPushed(#PB_Key_Down) )*#CameraSpeed

 ExamineMouse()
  MouseX = -MouseDeltaX()*#CameraSpeed
  MouseY = -MouseDeltaY()*#CameraSpeed

 RotateCamera(0, MouseX, MouseY, RollZ)
 MoveCamera  (0, KeyX, 0, KeyY)
     
 RenderWorld()

 FlipBuffers()

 If KeyboardPushed(#PB_Key_Escape) : End : EndIf

ForEver
   
End

DataSection

CubePunkte:
 ; Punkt
 ; Texturpunkt
 Data.f  -100, -100,    0
 Data.f     0,    0
 Data.f   100, -100,    0
 Data.f     1,    0
 Data.f   100,  100,    0
 Data.f     1,    1
 Data.f  -100,  100,    0
 Data.f     0,    1

CubeDreiecke:
 Data.w  0, 2, 3
 Data.w  0, 1, 2
    
EndDataSection