Seite 1 von 1

Warum wird die Textur nicht angezeigt?

Verfasst: 20.07.2006 10:01
von Lebostein
Hi,

hier mal ein kleines 3D-Engine-Beispiel:

Code: Alles auswählen

#MeshMap = 0
#Entity = 0
#Material = 0
#Textur = 0
#Camera = 0

; Berechnung der Kartengröße

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

UsePNGImageDecoder()

OpenScreen(800, 600, 32, "TEX")

Add3DArchive(".", #PB_3DArchive_FileSystem)
LoadTexture(#Textur, "wasser_02.png")

CreateMesh(#MeshMap, 10)
SetMeshData(#MeshMap, #PB_Mesh_Vertex, ?NodeList, 3)
SetMeshData(#MeshMap, #PB_Mesh_Face, ?FaceList, 1)
CreateMaterial(#Material, TextureID(#Textur))
CreateEntity(#Entity, MeshID(#MeshMap), MaterialID(#Material), 0.0, 0.0, 0.0)

CreateCamera(#Camera, 0, 0, 100, 100)
CameraLocate(#Camera, 0.0, 0.0, 2.0)
CameraRenderMode(#Camera, #PB_Camera_Textured)
CameraLookAt(#Camera, 0.0, 0.5, 0.0)

Repeat

  ExamineMouse()
  ExamineKeyboard()
  RenderWorld()
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)

DataSection

  NodeList:
  Data.f -1.0,  0.0,  0.0
  Data.f  1.0,  0.0,  0.0
  Data.f  0.0,  1.0,  0.0

  FaceList:
  Data.w 0, 1, 2

EndDataSection
hier die zugehörige Textur:

Bild

Mein Problem: Das Dreieck ist einfach nur blau. Ich kann keine Struktur der Textur erkennen. Wo ist meine Fehler? Muss ich die Textur noch rigendwie skalieren, damit sie auf dem Dreieck zu erkennen ist?

Verfasst: 20.07.2006 14:33
von Ground0
Hallo

Also es fehlen bei dir die UVCoordinaten...

Hab den Code mal angepasst... könte noch Fehler haben in dne UV Positionen...

Code: Alles auswählen

#MeshMap = 0
#Entity = 0
#Material = 0
#Textur = 0
#Camera = 0

; Berechnung der Kartengröße

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

UsePNGImageDecoder()

OpenScreen(1024, 768, 32, "TEX")

Add3DArchive("\", #PB_3DArchive_FileSystem)
LoadTexture(#Textur, "wasser_02.png")

CreateMesh(#MeshMap, 100)
SetMeshData(#MeshMap, #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, ?NodeList, 3)
SetMeshData(#MeshMap, #PB_Mesh_Face, ?FaceList, 1)
CreateMaterial(#Material, TextureID(#Textur))
CreateEntity(#Entity, MeshID(#MeshMap), MaterialID(#Material), 0.0, 0.0, 0.0)
ScaleEntity(#Entity,10,10,10)
CreateCamera(#Camera, 0, 0, 100, 100)
CameraLocate(#Camera, 0.0, 0.0, 40.0)
;CameraRenderMode(#Camera, #PB_Camera_Wireframe)
CameraLookAt(#Camera, 0.0, 0.0, 0.0)

Repeat

  ExamineMouse()
  ExamineKeyboard()
  RenderWorld()
  FlipBuffers()

Until KeyboardPushed(#PB_Key_Escape)

DataSection

  NodeList:
  Data.f -1.0,  0.0,  0.0
  Data.f 0,0  ;UV Koordinaten 
  Data.f  1.0,  0.0,  0.0
  Data.f 1,1  ;UV Koordinaten 
  Data.f  0.0,  1.0,  0.0
  Data.f 1,0  ;UV Koordinaten 

  FaceList:
  Data.w 0, 1, 2

EndDataSection
Gruss Ground0

Verfasst: 20.07.2006 15:10
von Lebostein
Ah, super Danke!

In der Beziehung ist die PB-Hilfe noch sehr verbesserungswürdig. Es steht ja nicht mal drin, welcher Datentyp für die einzelnen Einträge zu verwenden ist (außer bei den #PB_Mesh_Face .w)