Textur-Problem

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Textur-Problem

Beitrag von scoty »

Hallo zusammen,
ich bin gerade dabei mir die 3d-Funktionen anzueignen. Meine Programmgrundlage ist das Beispeil MeshManual.pb.
Hier ist schon mein erstes Problem, das Programm arbeitet korrekt, nur wird die Textur clouds.jpg schon gar nicht angezeigt sondern nur blaue Farbe.
Weiß vielleicht jemand wo mein Problem liegt?
Muss ich vorher noch irgendetwas zusätzlich installieren?
Oder liegt mein Problem im Texturaufruf versteckt?
Ich arbeite mit den Beispieldateien aus der aktuellsten Version.

Wäre schön, wenn jemand einen Rat für mich hat, gruß scoty
Benutzeravatar
dllfreak2001
Beiträge: 2925
Registriert: 07.09.2004 23:44
Wohnort: Bayern

Re: Textur-Problem

Beitrag von dllfreak2001 »

Da bist du nicht alleine, bei mir sieht es genauso aus.
I´a dllfreak2001
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Textur-Problem

Beitrag von STARGÅTE »

Jo hat mich auch etwas genervt, als ich etwas mit 3D experimentiert habe.

Darum jetzt mal hier eine "neue" Version wie man ein Wurfel macht ...
Mit Textur und Licht ...

Code: Alles auswählen

InitSprite()
InitSprite3D()
InitEngine3D()

UsePNGImageDecoder()
UsePNGImageEncoder()

Enumeration
	#Window
	#Camera
	#Mesh
	#Image
	#Entity
	#Material
	#Texture
EndEnumeration

OpenWindow(#Window, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)

CreateCamera(#Camera, 0, 0, 100, 100)
CameraBackColor(#Camera, $FFFFFF)
CameraLocate(#Camera, 0, 0, 1000)
CameraRenderMode(#Camera, #PB_Camera_Textured)

CreateMesh(#Mesh, 100)
SetMeshData(#Mesh, #PB_Mesh_Vertex|#PB_Mesh_Normal|#PB_Mesh_UVCoordinate, ?VertexNormalData, 24)
SetMeshData(#Mesh, #PB_Mesh_Face, ?FaceData, 12)

Add3DArchive(GetTemporaryDirectory(), #PB_3DArchive_FileSystem)
CatchImage(#Image, ?Wuerfel_png)
SaveImage(#Image, GetTemporaryDirectory()+"Wuerfel.png", #PB_ImagePlugin_PNG)
LoadTexture(#Texture, GetTemporaryDirectory()+"Wuerfel.png")

CreateMaterial(#Material, TextureID(#Texture))

CreateEntity(#Entity, MeshID(#Mesh), MaterialID(#Material))

ScaleEntity(#Entity, 100, 100, 100)

CreateLight(#PB_Any, $FF0000, 150, -100, 100)
CreateLight(#PB_Any, $0000FF, -150, -100, 100)
CreateLight(#PB_Any, $00FF00, 0, 200, 100)

Repeat
	
	ClearScreen($FFFFFF)
	
	RotateEntity(#Entity, 0, 1, Sin(ElapsedMilliseconds()/1000), #PB_Relative)
	
	RenderWorld()
	
	FlipBuffers()
	
Until WindowEvent() = #PB_Event_CloseWindow


DataSection
	VertexNormalData: ; Vertex : Normal : Textur : 
	; Vorn
	Data.f -1,-1, 1 : Data.f  0, 0, 1 : Data.f 0.00, 0.25
	Data.f  1,-1, 1 : Data.f  0, 0, 1 : Data.f 0.25, 0.25
	Data.f -1, 1, 1 : Data.f  0, 0, 1 : Data.f 0.00, 0.50
	Data.f  1, 1, 1 : Data.f  0, 0, 1 : Data.f 0.25, 0.50
	; Hinten
	Data.f -1,-1,-1 : Data.f  0, 0,-1 : Data.f 0.50, 0.25
	Data.f  1,-1,-1 : Data.f  0, 0,-1 : Data.f 0.75, 0.25
	Data.f -1, 1,-1 : Data.f  0, 0,-1 : Data.f 0.50, 0.50
	Data.f  1, 1,-1 : Data.f  0, 0,-1 : Data.f 0.75, 0.50
	; Unten
	Data.f -1,-1,-1 : Data.f  0,-1, 0 : Data.f 0.25, 0.25
	Data.f  1,-1,-1 : Data.f  0,-1, 0 : Data.f 0.50, 0.25
	Data.f -1,-1, 1 : Data.f  0,-1, 0 : Data.f 0.25, 0.50
	Data.f  1,-1, 1 : Data.f  0,-1, 0 : Data.f 0.50, 0.50
	; Oben
	Data.f -1, 1,-1 : Data.f  0, 1, 0 : Data.f 0.75, 0.25
	Data.f  1, 1,-1 : Data.f  0, 1, 0 : Data.f 1.00, 0.25
	Data.f -1, 1, 1 : Data.f  0, 1, 0 : Data.f 0.75, 0.50
	Data.f  1, 1, 1 : Data.f  0, 1, 0 : Data.f 1.00, 0.50
	; Rechts
	Data.f  1,-1,-1 : Data.f  1, 0, 0 : Data.f 0.25, 0.00
	Data.f  1, 1,-1 : Data.f  1, 0, 0 : Data.f 0.50, 0.00
	Data.f  1,-1, 1 : Data.f  1, 0, 0 : Data.f 0.25, 0.25
	Data.f  1, 1, 1 : Data.f  1, 0, 0 : Data.f 0.50, 0.25
	; Links
	Data.f -1,-1,-1 : Data.f -1, 0, 0 : Data.f 0.25, 0.50
	Data.f -1, 1,-1 : Data.f -1, 0, 0 : Data.f 0.50, 0.50
	Data.f -1,-1, 1 : Data.f -1, 0, 0 : Data.f 0.25, 0.75
	Data.f -1, 1, 1 : Data.f -1, 0, 0 : Data.f 0.50, 0.75
	FaceData: ; Face
	;Vorne
	Data.w 0,3,2
	Data.w 0,1,3
	;Hinten
	Data.w 4,7,5
	Data.w 4,6,7
	;Unten
	Data.w 8,11,10
	Data.w 8,9,11
	;Oben
	Data.w 12,15,13
	Data.w 12,14,15
	;Rechts
	Data.w 16,19,18 
	Data.w 16,17,19
	;Links
	Data.w 20,23,21 
	Data.w 20,22,23
EndDataSection

DataSection
	Wuerfel_png:
	Data.q $0A1A0A0D474E5089,$524448490D000000,$4000000040000000,$E60B250000000208,$4D41670400000089
	Data.q $61FC0B8FB1000041,$4144495A01000005,$830EED59ED436854,$8CCEE6F7D1F40C20,$9EB05685A5A410C5
	Data.q $719FB3BBDA0C96BF,$715167E2ECF85EDB,$4BACB9E1EFCFFE12,$C0401CF1C09E80E0,$953E845421088147
	Data.q $A7A2BD5B0E023E0F,$0468818F95D861F2,$BE55B0E023EA9298,$00C7CAEC30F9E7F6,$AD87FE3E0FE8A043
	Data.q $3E56B0C3E4502646,$561FE3EEDCB3C406,$DF9DAB121B405397,$97F0EB81F7C900FA,$F4AC587E0DF6BDDF
	Data.q $A695207DAA020E99,$99D2C71F7EA25E73,$48DE67DEAF0E7CE2,$BE7E21084E52B540,$E908672BC26378EF
	Data.q $C793442C78ED0DF6,$FF6F9300954AF0B4,$CA17BE73408D1E82,$00FB3A789A06F569,$0601F7E7D7524345
	Data.q $7D12FAEB571FBE7D,$0FA1303EEA812C20,$E5F9EE7A75530250,$03EDA0296A0063A6,$6FD79EAFFFB77B2D
	Data.q $C041D79EA870D847,$6363CC2421088158,$A8D39FD109CCACE5,$652660203B335F95,$8FA9ED4C4908A1A7
	Data.q $FA9ECC0278F03EF9,$324CEA81454C4FEC,$01400A005002835C,$02801400A0050028,$CE2F8142BC0A0050
	Data.q $00F8C5BD31D2C518,$AE444E4549000000,$0000000000826042
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
scoty
Beiträge: 64
Registriert: 18.10.2005 16:43
Wohnort: Raum Hildesheim

Re: Textur-Problem

Beitrag von scoty »

Danke für die Antworten.

Ich habe gerade versucht den Beispielcode lauffähig zu machen. Bis jetzt noch ohne Erfolg.
Habe erst mal die JPEG-Decoder hinzugefügt, daran lag es aber nicht.

Da mein eigenes Programm auf dem Beispiel basiert, versuche ich es auch zum laufen zu bekommen, sollte es mir gelingen, melde ich mich wieder.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Textur-Problem

Beitrag von NicTheQuick »

Bei mir gibt der Debugger zu folgender Zeile '0' aus.

Code: Alles auswählen

Debug LoadTexture(#Texture, GetTemporaryDirectory()+"Wuerfel.png")
Aber unter '/tmp/Wuerfel.png' ist alles da und kann gelesen werden.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Textur-Problem

Beitrag von STARGÅTE »

Das mit dem Catch/Save ist eigentlich nur drin, weil es kein CatchTexture gibt -.-

Warum er nun den Würfel bei euch nicht laden will ist mir rätselhaft ...
Ich habe schon den Umlaut entfernt, da es sonst probleme bei mir gab ...

Mal mit einer anderen Textur probiert ?
Anderer Decoder?
also:

Code: Alles auswählen

UseJPEGImageEncoder()
UseJPEGImageDecoder()
SaveImage(#Image, GetTemporaryDirectory()+"Wuerfel.jpg", #PB_ImagePlugin_JPEG)
LoadTexture(#Texture, GetTemporaryDirectory()+"Wuerfel.jpg")
BTW: Das seltsamme an der 3D-Engine ist, das er "Wuerfel.png" nicht laden will, wenn es ein JPG ist, scheinbar ist ihm die Endung sehr wichtig ^^
Was aber irgendwie totaler blödsinn ist, schließlich kann ich genausogut eine Datei namens "Laber.exe" als PNG laden solange der Inhalt zum PNG gehört ...
Das es immer noch Programme/Routienen gibt die sich auf die Dateiendung verlassen ist mir schleierhaft.
Wozu gibs denn MagicNumbers und usw. ...
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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Textur-Problem

Beitrag von DarkDragon »

Allerdings sollte man LoadTexture ohne absoluten Pfad aufrufen, denn dafür sind eigentlich die 3DArchive da.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
grapy
Beiträge: 108
Registriert: 09.09.2004 09:05

Re: Textur-Problem

Beitrag von grapy »

Schönes Beispiel :-)

Also bei mir gings auf Anhieb.
Nur

Code: Alles auswählen

InitSprite3D()
und

Code: Alles auswählen

ClearScreen($FFFFFF)
sind überflüssig.

Gruß grapy :mrgreen:
Antworten