kleines Texturenproblem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

maximilius

Betreff: kleines Texturenproblem

BeitragDi, Mai 31, 2005 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo BlitzForum User,

um mich an Blitz 3D heranzutasten probier ich hie und da ein wenig rum.
Als ich ein bisschen mit Texturierung von Meshes experimentierte, stieß ich auf ein Problem.

Obwohl die Vertexpunkte der 4 Dreiecke in meinem Testprogramm an ihren Schnittpunkten die gleiche Position haben, entsteht ein schwarzer Strich in der Textur:
user posted image

Ich vermute, dass irgendeine Blitz3D-interne Skalierung der Grastextur diesen Strich verursacht.

Nun natürlich die Frage: Wie bekomm ich den Strich weg?

Hier mal der Code (es ist nur ein Testprogramm, bitte zerreist mich nicht in der Luft, weil der Code zu lang ist)
BlitzBasic: [AUSKLAPPEN]
Graphics3D 640,480
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera, 50, -50, -100

brush = CreateBrush(255, 255, 255)
mesh = CreateMesh()
mesh2 = CreateMesh()
mesh3 = CreateMesh()
mesh4 = CreateMesh()
surface = CreateSurface(mesh, brush)
surface2 = CreateSurface(mesh2, brush)
surface3 = CreateSurface(mesh3, brush)
surface4 = CreateSurface(mesh4, brush)

v0 = AddVertex(surface, 50, 0, 0, 0.5, 0.5)
v1 = AddVertex(surface, 100, -50, 0, 1, 1)
v2 = AddVertex(surface, 0, -50, 0, 0, 1, 0)
v3 = AddVertex(surface2, 50, 0, 0, 1, 1)
v4 = AddVertex(surface2, 150, 0, 0, 0, 1)
v5 = AddVertex(surface2, 100, -50, 0, 0.5, 0.5)
v6 = AddVertex(surface3, 0, -50, 0, 0.5, 0.5)
v7 = AddVertex(surface3, 50, -100, 0, 1, 1)
v8 = AddVertex(surface3, -50, -100, 0, 0, 1, 0)
v9 = AddVertex(surface4, 0, -50, 0, 1, 1)
v10 = AddVertex(surface4, 100, -50, 0, 0, 1)
v11 = AddVertex(surface4, 50, -100, 0, 0.5, 0.5)

AddTriangle(surface,v0,v1,v2)
AddTriangle(surface2,v3,v4,v5)
AddTriangle(surface3,v6,v7,v8)
AddTriangle(surface4,v9,v10,v11)

UpdateNormals mesh
UpdateNormals mesh2
UpdateNormals mesh3
UpdateNormals mesh4

texture = LoadTexture(\"texturen\gras01.bmp\")
texture2 = LoadTexture(\"texturen\weg.bmp\", 4)

TextureBlend texture2, 1
TextureBlend texture2, 1
EntityTexture mesh, texture, 0, 0
EntityTexture mesh, texture2, 0, 1
EntityTexture mesh2, texture, 0, 0
EntityTexture mesh2, texture2, 0, 1
EntityTexture mesh3, texture, 0, 0
EntityTexture mesh3, texture2, 0, 1
EntityTexture mesh4, texture, 0, 0
EntityTexture mesh4, texture2, 0, 1


speed = 0
While Not KeyHit(1)
If KeyDown(203)
TurnEntity camera, 0, 0, 1
EndIf
If KeyDown(205)
TurnEntity camera, 0, 0, -1
EndIf
If KeyDown(208)
TurnEntity camera, -1, 0, 0
EndIf
If KeyDown(200)
TurnEntity camera, 1, 0, 0
EndIf
If KeyHit(78)
speed = speed + 1
EndIf
If KeyHit(74)
speed = speed - 1
EndIf
MoveEntity camera, 0, 0, speed
RenderWorld
Flip
Wend
End

Hier noch die beiden Texturen (aber als .jpg)
user posted image
user posted image

lg maximilius
Ich habe mir meine Meinung gebildet, bitte verwirren Sie mich nicht mit Tatsachen!

maximilius

BeitragMi, Jun 01, 2005 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem wurde gelöst.

Die schwarze obere Kante der Textur wurde meiner Vermutung nach durch Texturkachelung noch mit an das Ende der Dreiecke gehangen und es entstand durch Mischen von Anfang und Ende der Textur dieser schwarze Strich.

Durch Manipulation der Textur konnte ich also nun das Problem lösen.

lg maximilius
Ich habe mir meine Meinung gebildet, bitte verwirren Sie mich nicht mit Tatsachen!

Lunatix

BeitragMi, Jun 01, 2005 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Also da ich dich in der Luft zerreißen soll falls der code zu lang ist...RATSCH, Blut Spritz, Knochen flieg!! Wink

-Loade dir MS3D runter
-Mach ein Flaches Terrain
bastel dir deine Textur als ein bild in nem malprogramm zusammen(z.B. Paint Shop 7 pro)
-Mache die Textur auf das terrain

Verwende diesen Code:
BlitzBasic: [AUSKLAPPEN]

Graphics3D 800,600,32,2
SetBuffer BackBuffer

Global Terrain,Camera

Camera=CreateCamera
PositionEntity camera, 50, -50, -100

Terrain=LoadMesh(\"NamedesMeshes.endung\")

speed = 0
While Not KeyHit(1)
If KeyDown(203)
TurnEntity camera, 0, 0, 1
EndIf
If KeyDown(205)
TurnEntity camera, 0, 0, -1
EndIf
If KeyDown(208)
TurnEntity camera, -1, 0, 0
EndIf
If KeyDown(200)
TurnEntity camera, 1, 0, 0
EndIf
If KeyHit(78)
speed = speed + 1
EndIf
If KeyHit(74)
speed = speed - 1
EndIf
MoveEntity camera, 0, 0, speed
RenderWorld
Flip
Wend
End




Das wäre dein code, nur ein bissl einfacher. 8)

MFG JP[/syntax]
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

maximilius

BeitragMi, Jun 01, 2005 13:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort JunkProgger, aber ich kann deinen Code leider nicht dafür einsetzen.
Ziel meiner Übung war es, dass ich einzelnen Dreiecken wärend der Laufzeit eine andere Textur geben kann.

Desswegen hab ich erst mit einem großen Mesh und Surfaces, die jeweils einen anderen Brush haben, rumexperimentiert.
Nun habe ich es mit vielen Meshs ausprobiert.
(Habe irgendwo gelesen, dass das sogar schneller ist, weil Meshes, die nicht sichtbar sind, dann nicht mitberechnet werden)

lg maximilius
PS: Ich schrieb „Bitte zerreist mich nicht in der Luft“ Wink
Ich habe mir meine Meinung gebildet, bitte verwirren Sie mich nicht mit Tatsachen!

Lunatix

BeitragDo, Jun 02, 2005 8:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, na dann flick ich dich mal eben wieder zusammen Wink
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group