Einfacher 3D-Würfel + Textur

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Einfacher 3D-Würfel + Textur

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten