Warum wird die Textur nicht angezeigt?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Warum wird die Textur nicht angezeigt?

Beitrag 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?
Benutzeravatar
Ground0
Beiträge: 318
Registriert: 05.02.2005 02:09
Wohnort: Stilli, Schweiz
Kontaktdaten:

Beitrag 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
lmon Monitoring Service inkl. Clients
lweb Multi-Threaded Webserver
lbup-server Backup Server applikation
lmanager ERP Applikation.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag 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)
Antworten