Wie bekomme ich eine Textur auf ein Mesh

Probleme beim Erstellen von 3D-Modellen und Texturen, keine Ahnung womit man Musik macht? Dies ist dein Forum.
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Wie bekomme ich eine Textur auf ein Mesh

Beitrag von String »

Angeregt von dem Wurfelmesh.pb Code der Seite
http://www.basicpure.de.vu
Dort gibt es auch das dazugehörige Bild Wurfel.jpg.
Wollte ich das mal austesten.
Und habe den Code für (PB 4.3 Beta4 x86) angepasst.
Aber irgendwie will er die Textur nicht anzeigen.
Außerdem funktioniert
StartDrawing(ScreenOutput()) mit (PB 4.3 Beta4 x86) nicht. Wieso?

Code: Alles auswählen

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

OpenWindow(0, 50, 50, 640, 480, "3D - Würfel", #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)

 ;- Kamera einstellen
 CreateCamera(0,  0,  5, 100, 90)
 CameraLocate(0, 33, 56, -66)
 CameraLookAt(0, 10, 10, 15)
 
DataSection
V_01:
Data.f  00,  00,  00 ;Point 0 *
Data.f  32,  00,  00 ;Point 1 +
Data.f  32,  32,  00 ;Point 2 -
Data.f  00,  32,  00 ;Point 3 /
   
Data.f  00,  00, -32 ;Point 4 !
Data.f  32,  00, -32 ;Point 5 ?
Data.f  32,  32, -32 ;Point 6 $
Data.f  00,  32, -32 ;Point 7 %
   
Data.f  00,  00,  00 ;Point 8 *
Data.f  32,  00,  00 ;Point 9 +
Data.f  32,  00, -32 ;Point 10 ?
Data.f  00,  00, -32 ;Point 11 !
   
Data.f  32,  32,  00 ;Point 12 -
Data.f  00,  32,  00 ;Point 13 /
Data.f  00,  32, -32 ;Point 14 %
Data.f  32,  32, -32 ;Point 15 $
   
Data.f  00,  00,  00 ;Point 16 *
Data.f  00,  32,  00 ;Point 17 /
Data.f  00,  32, -32 ;Point 18 %
Data.f  00,  00, -32 ;Point 19 !
   
Data.f  32,  32,  00 ;Point 20 -
Data.f  32,  00,  00 ;Point 21 +
Data.f  32,  00, -32 ;Point 22 ?
Data.f  32,  32, -32 ;Point 23 $

T_01:  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   
Data.w  0,  1,  2  ;Dreieck 0  (Vorne)
Data.w  0,  2,  3  ;Dreieck 1
Data.w  4,  6,  5  ;Dreieck 2  (Hinten)
Data.w  4,  7,  6  ;Dreieck 3
Data.w  8, 10,  9  ;Dreieck 4  (Unten)
Data.w  8, 11, 10  ;Dreieck 5
Data.w 12, 14, 13  ;Dreieck 6  (Oben)
Data.w 12, 15, 14  ;Dreieck 7
Data.w 16, 17, 18  ;Dreieck 8  (Links)
Data.w 16, 18, 19  ;Dreieck 9   
Data.w 20, 21, 22  ;Dreieck 10 (Rechts)
Data.w 20, 22, 23  ;Dreieck 11
U_01: ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   
Data.f   0/256, 170/256 ; Vertex 0 
Data.f  85/256, 170/256 ; Vertex 1
Data.f  85/256, 255/256 ; Vertex 2  
Data.f   0/256, 255/256 ; Vertex 3
   
Data.f 170/256,  85/256 ; Vertex 4 
Data.f 255/256,  85/256 ; Vertex 5
Data.f 255/256, 170/256 ; Vertex 6  
Data.f 170/256, 170/256 ; Vertex 7

Data.f  85/256,  85/256 ; Vertex 8 
Data.f 170/256,  85/256 ; Vertex 9
Data.f 170/256, 170/256 ; Vertex 10  
Data.f  85/256, 170/256 ; Vertex 11 
   
Data.f  85/256, 170/256 ; Vertex 12 
Data.f 170/256, 170/256 ; Vertex 13
Data.f 170/256, 255/256 ; Vertex 14  
Data.f  85/256, 255/256 ; Vertex 15 
   
Data.f 170/256, 170/256 ; Vertex 16 
Data.f 255/256, 170/256 ; Vertex 17
Data.f 255/256, 255/256 ; Vertex 18  
Data.f 170/256, 255/256 ; Vertex 19
   
Data.f   0/256,  85/256 ; Vertex 20 
Data.f  85/256,  85/256 ; Vertex 21
Data.f  85/256, 170/256 ; Vertex 22  
Data.f   0/256, 170/256 ; Vertex 23
EndDataSection 
 
 
 CreateMesh(0,100)
 
 SetMeshData(0, #PB_Mesh_Vertex,       ?V_01,   24) 
 SetMeshData(0, #PB_Mesh_Face,         ?T_01,   12)
 SetMeshData(0, #PB_Mesh_UVCoordinate, ?U_01,   24)

 
 Add3DArchive(".", #PB_3DArchive_FileSystem)
 CreateEntity(0, MeshID(0), CreateMaterial(0, LoadTexture(0, "wurfel.jpg")))

 EntityLocate(0, 0, 0, 20)
 
 ;- Hauptschleife
 Repeat
  
  RenderWorld()
  
;   StartDrawing(ScreenOutput())
;    FrontColor(RGB(255,255,255)) : BackColor(RGB(0,0,0))
;    DrawText(4, 3,"Position = " +Str(CameraX(0))+ " ; " +Str(CameraY(0))+ " ; " + Str(CameraZ(0)) + Space(10))
;    DrawText(4, 460,"Auf = Num8  |  Ab = Num2  |  Drehen = Strg rechts")
;   StopDrawing()
  
  FlipBuffers(2)
 
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_All)
   Zm = 0 : Xm = 0 : Ym = 0
   If KeyboardPushed(#PB_Key_Up)       : Zm = -2.1 : EndIf
   If KeyboardPushed(#PB_Key_Down)     : Zm =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Right)    : Xm =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Left)     : Xm = -2.1 : EndIf
   If KeyboardPushed(#PB_Key_Pad8)     : Ym =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Pad2)     : Ym = -2.1 : EndIf
   MoveCamera(0, Xm, Ym, Zm)

   If KeyboardPushed(#PB_Key_RightControl)
     ReleaseMouse(0)
     ExamineMouse()
     RotateCamera(0, -MouseDeltaX(), -MouseDeltaY(), 0)
     MouseLocate(320, 240)
   EndIf
  EndIf
  If KeyboardReleased(#PB_Key_RightControl) : ReleaseMouse(1) : EndIf
Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow
CloseScreen()
End
PB v4.**
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Bei mir geht das 2D-Drawing. Allerdings nicht die Textur. Eventuell hat sich das Datenformat für das UV-Mapping geändert. Der Code ist ja schließlich noch für eine sehr alte OGRE-Version geschrieben. Schön dass er immer noch nützlich ist.
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

2D auf nem 3D screen geht mit 4.3 nicht mehr, weil DX9 das nicht unterstützt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Hallo Batze
Hallo Kaeru Gaman

Danke für die Infos!
Ich dachte schon das mit dem 2D währe ein Fehler in PB 4.3.

Das sich das Datenformat für das UV-Mapping geändert hat,
ist zumindest eine logische Erklärung.
Dann muss ich wohl mal sehen,
ob ich das irgendwie hin bekomme.
PB v4.**
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

kannst du gut englisch?
im Internationalen Forum ist die letzten Wochen ne Menge diskutiert worden, wie man was mit 4.3 umsetzen kann.
auch 2D auf 3D und dynamische Texturen wurden mehrfach besprochen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Geht so mit meinen englisch Kenntnissen.
(Mehr schlecht als recht)
Aber ich schau mir das mal an.
Danke für den Tipp :allright:
PB v4.**
Benutzeravatar
String
Beiträge: 69
Registriert: 17.05.2007 16:22

Beitrag von String »

Nochmal Danke!
Wenn man das mit den Texturen erst einmal einigermaßen verstanden hat.
Ist es gar nicht mehr so schwierig.


Hallo Batze
Nicht böse sein hab mal deine Textur verändert und hier abgelegt.
Bild
Textur bitte umbenennen zu Cube.jpg
PB Code und Textur müssen sich im selben
Verzeichnis befinden.

Läuft mit PB 410 / 420 & 430

Code: Alles auswählen

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

OpenWindow(0, 50, 50, 640, 480, "3D - Würfel", #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)

;- Kamera einstellen
CreateCamera(0,  0,  5, 100, 90)
CameraLocate(0, 33, 56, -66)
CameraLookAt(0, 10, 10, 15)

DataSection
  V_01:
  Data.f  00,  00,  00 ;Point 0 *
  Data.f  1,  1,  1 
  Data.f   0/256, 170/256 ; Vertex 0
  Data.f  32,  00,  00 ;Point 1 +
  Data.f  1,  1,  1 
  Data.f  85/256, 170/256 ; Vertex 1
  Data.f  32,  32,  00 ;Point 2 -
  Data.f  1,  1,  1 
  Data.f  85/256, 255/256 ; Vertex 2 
  Data.f  00,  32,  00 ;Point 3 /
  Data.f  1,  1,  1 
  Data.f   0/256, 255/256 ; Vertex 3
  Data.f  00,  00, -32 ;Point 4 !
  Data.f  1,  1,  1 
  Data.f 170/256,  85/256 ; Vertex 4
  Data.f  32,  00, -32 ;Point 5 ?
  Data.f  1,  1,  1 
  Data.f 255/256,  85/256 ; Vertex 5
  Data.f  32,  32, -32 ;Point 6 $
  Data.f  1,  1,  1 
  Data.f 255/256, 170/256 ; Vertex 6 
  Data.f  00,  32, -32 ;Point 7 %
  Data.f  1,  1,  1 
  Data.f 170/256, 170/256 ; Vertex 7
  Data.f  00,  00,  00 ;Point 8 *
  Data.f  1,  1,  1 
  Data.f  85/256,  85/256 ; Vertex 8
  Data.f  32,  00,  00 ;Point 9 +
  Data.f  1,  1,  1 
  Data.f 170/256,  85/256 ; Vertex 9
  Data.f  32,  00, -32 ;Point 10 ?
  Data.f  1,  1,  1 
  Data.f 170/256, 170/256 ; Vertex 10 
  Data.f  00,  00, -32 ;Point 11 !
  Data.f  1,  1,  1 
  Data.f  85/256, 170/256 ; Vertex 11
  Data.f  32,  32,  00 ;Point 12 -
  Data.f  1,  1,  1 
  Data.f  85/256, 170/256 ; Vertex 12
  Data.f  00,  32,  00 ;Point 13 /
  Data.f  1,  1,  1 
  Data.f 170/256, 170/256 ; Vertex 13
  Data.f  00,  32, -32 ;Point 14 %
  Data.f  1,  1,  1 
  Data.f 170/256, 255/256 ; Vertex 14 
  Data.f  32,  32, -32 ;Point 15 $
  Data.f  1,  1,  1 
  Data.f  85/256, 255/256 ; Vertex 15
  Data.f  00,  00,  00 ;Point 16 *
  Data.f  1,  1,  1 
  Data.f 170/256, 170/256 ; Vertex 16
  Data.f  00,  32,  00 ;Point 17 /
  Data.f  1,  1,  1 
  Data.f 255/256, 170/256 ; Vertex 17
  Data.f  00,  32, -32 ;Point 18 %
  Data.f  1,  1,  1 
  Data.f 255/256, 255/256 ; Vertex 18 
  Data.f  00,  00, -32 ;Point 19 !
  Data.f  1,  1,  1 
  Data.f 170/256, 255/256 ; Vertex 19 
  Data.f  32,  32,  00 ;Point 20 -
  Data.f  1,  1,  1 
  Data.f   0/256,  85/256 ; Vertex 20
  Data.f  32,  00,  00 ;Point 21 +
  Data.f  1,  1,  1 
  Data.f  85/256,  85/256 ; Vertex 21
  Data.f  32,  00, -32 ;Point 22 ?
  Data.f  1,  1,  1 
  Data.f  85/256, 170/256 ; Vertex 22
  Data.f  32,  32, -32 ;Point 23 $
  Data.f  1,  1,  1 
  Data.f   0/256, 170/256 ; Vertex 23
  T_01:  ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  Data.w  0,  1,  2  ;Dreieck 0  (Vorne)
  Data.w  0,  2,  3  ;Dreieck 1
  Data.w  4,  6,  5  ;Dreieck 2  (Hinten)
  Data.w  4,  7,  6  ;Dreieck 3
  Data.w  8, 10,  9  ;Dreieck 4  (Unten)
  Data.w  8, 11, 10  ;Dreieck 5
  Data.w 12, 14, 13  ;Dreieck 6  (Oben)
  Data.w 12, 15, 14  ;Dreieck 7
  Data.w 16, 17, 18  ;Dreieck 8  (Links)
  Data.w 16, 18, 19  ;Dreieck 9   
  Data.w 20, 21, 22  ;Dreieck 10 (Rechts)
  Data.w 20, 22, 23  ;Dreieck 11
EndDataSection
 
 CreateMesh(0,100)
 SetMeshData(0, #PB_Mesh_Vertex |#PB_Mesh_Normal |#PB_Mesh_UVCoordinate  ,   ?V_01,   24)
 SetMeshData(0, #PB_Mesh_Face,         ?T_01,   12)
;======================================================
 CompilerPfad$ = #PB_Compiler_Home +"\Examples\Sources\Data\"
 Add3DArchive(".", #PB_3DArchive_FileSystem)
 Add3DArchive(CompilerPfad$, #PB_3DArchive_FileSystem)
;======================================================  
 If FileSize("Cube.jpg") > 0
   CreateEntity(0, MeshID(0), CreateMaterial(0, LoadTexture(0, "Cube.jpg")))
 Else
   If FileSize(CompilerPfad$ + "terrain_texture.jpg") > 0
      CreateEntity(0, MeshID(0), CreateMaterial(0, LoadTexture(0, "terrain_texture.jpg"))) 
   Else
      Debug "Die Bilddatei fehlt"
      End
   EndIf
 EndIf
;======================================================
 EntityLocate(0, -10, -10, 50)  
;- Hauptschleife
 Repeat
  
;======================================================
;-PB v430
;  RotateEntity(0, 1, 1, 1,#PB_Relative)
;======================================================
;-PB v410 & v420
  RotateEntity(0, a, a, a) : a + 1
;======================================================
 
  RenderWorld()
  FlipBuffers(2)
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_All)
   Zm = 0 : Xm = 0 : Ym = 0
   If KeyboardPushed(#PB_Key_Up)       : Zm = -2.1 : EndIf
   If KeyboardPushed(#PB_Key_Down)     : Zm =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Right)    : Xm =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Left)     : Xm = -2.1 : EndIf
   If KeyboardPushed(#PB_Key_Pad8)     : Ym =  2.1 : EndIf
   If KeyboardPushed(#PB_Key_Pad2)     : Ym = -2.1 : EndIf
   MoveCamera(0, Xm, Ym, Zm)
   If KeyboardPushed(#PB_Key_RightControl)
     ReleaseMouse(0)
     ExamineMouse()
     RotateCamera(0, -MouseDeltaX(), -MouseDeltaY(), 0)
     MouseLocate(320, 240)
   EndIf
  EndIf
  If KeyboardReleased(#PB_Key_RightControl) : ReleaseMouse(1) : EndIf
Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow
CloseScreen()
End 
PB v4.**
Antworten