Texturing Mesh

Blitz3D Forums/Blitz3D Programming/Texturing Mesh

The_Yant(Posted 2010) [#1]
I'm creating a simple tile mesh - rather than CreateCube to save triangles:

Function CreateTile()
	tile=CreateMesh(parent)

	tileSurface=CreateSurface(tile)

	v0=AddVertex(tileSurface,-1,0,-1)
	v1=AddVertex(tileSurface,-1,0,1)
	v2=AddVertex(tileSurface,1,0,1)
	v3=AddVertex(tileSurface,1,0,-1)

	AddTriangle(tileSurface,v0,v1,v2)
	AddTriangle(tileSurface,v2,v3,v0)

	UpdateNormals(tile)
	Return tile
End Function


This works great and saves me lots of triangles - however, I can't seem to texture the mesh. When I apply a texture with EntityTexture the mesh is black and the texture is not applied.

When I switch back to using CreateCube and apply the same texture it works fine.

Any ideas?


_PJ_(Posted 2010) [#2]
Have you tried FlipMesh?
I imagine the tile is facing away from the camera when first created.




Just a note
tile=CreateMesh(parent)

There's no value for parent, so if you wanted a parent for the tile, you ought to pass in parent as a parameter on the function.


The_Yant(Posted 2010) [#3]
Thanks for the reply Malice.

Using FlipMesh makes the "tile" invisible - so I guess the mesh is facing the camera.

Point noted about "parent".

Thanks,
Ian.


The_Yant(Posted 2010) [#4]
This piece of code demonstrates the problem:

Graphics3D 640,480,16,2
SetBuffer BackBuffer()

camera=CreateCamera()
RotateEntity camera,45,0,0

light=CreateLight()
RotateEntity light,45,0,0

aTile1 = CreateFlatTile()
aTile2 = CreateFlatTile()
aTile3 = CreateCube()
aTile4 = CreateCube()

PositionEntity aTile1,-2,-5,4
PositionEntity aTile2,2,-5,4

PositionEntity aTile3,-4,-5,4
PositionEntity aTile4,4,-5,4

EntityColor aTile1,255,0,0
EntityColor aTile3,255,0,0
tileTex = LoadTexture("texture\tile1.png",1)
EntityTexture aTile2, tileTex
EntityTexture aTile4, tileTex

Repeat
	RenderWorld
	UpdateWorld
	Flip
Until KeyHit(1)
End


Function CreateFlatTile()
	tile=CreateMesh()

	tileSurface=CreateSurface(tile)

	v0=AddVertex(tileSurface,-1,0,-1)
	v1=AddVertex(tileSurface,-1,0,1)
	v2=AddVertex(tileSurface,1,0,1)
	v3=AddVertex(tileSurface,1,0,-1)

	AddTriangle(tileSurface,v0,v1,v2)
	AddTriangle(tileSurface,v2,v3,v0)

	UpdateNormals(tile)
	Return tile
End Function


You'll need to provide your own texture.

Thanks,
Ian.


Warner(Posted 2010) [#5]
You need to set UV coords for the vertices:



The_Yant(Posted 2010) [#6]
Thanks for the reply Warner - that's great.

The texture isn't quite right but you have set me off in the right direction.

Thanks very much,
Ian.


Warner(Posted 2010) [#7]
Ow yes, that last line should be: 1.0, 0.0


The_Yant(Posted 2010) [#8]
;-) hey no problem - your help is much appreciated. Thanks again.