Seite 1 von 1

Textur-Problem

Verfasst: 18.03.2011 16:37
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

Re: Textur-Problem

Verfasst: 19.03.2011 21:07
von dllfreak2001
Da bist du nicht alleine, bei mir sieht es genauso aus.

Re: Textur-Problem

Verfasst: 19.03.2011 21:38
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

Re: Textur-Problem

Verfasst: 20.03.2011 23:36
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.

Re: Textur-Problem

Verfasst: 20.03.2011 23:50
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.

Re: Textur-Problem

Verfasst: 21.03.2011 00:08
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. ...

Re: Textur-Problem

Verfasst: 21.03.2011 07:54
von DarkDragon
Allerdings sollte man LoadTexture ohne absoluten Pfad aufrufen, denn dafür sind eigentlich die 3DArchive da.

Re: Textur-Problem

Verfasst: 21.03.2011 07:55
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: