multiple textures on one cube

Blitz3D Forums/Blitz3D Programming/multiple textures on one cube

Oh-Hello(Posted 2006) [#1]
Ok Im creating a very simple slot machine game and i need to put a different texture(picture) on each side of the cube. Im kinda stuck and need a little help.

Thanks,
Michael


Naughty Alien(Posted 2006) [#2]
Use brushes and assign whatever you want to each side of cube..


Oh-Hello(Posted 2006) [#3]
Thanks i knew it was an easy solution


Oh-Hello(Posted 2006) [#4]
Well im still having one little problem i cant seem to get the texture on just one side of the cube it goes on to all sides when i just want it on one side.

need a little more help.


Naughty Alien(Posted 2006) [#5]
you have to get surface you want out of your cube with GETSURFACE command..and then you can apply your brushes on to it..for your cube you should have 6 surfaces so eg.

Surf1=getsurface(cube,1)
Surf2=getsurface(cube,2)
Surf3=getsurface(cube,3)
Surf4=getsurface(cube,4)
Surf5=getsurface(cube,5)
Surf6=getsurface(cube,6)

then you can assign to each surface your already created brush..


Oh-Hello(Posted 2006) [#6]
Well... my cube doesnt already have 6 surfaces so i know that i need to create surfaces using the CREATESURFACE command but i not quite sure how to use this command to create a surface just on one side of the cube.

ps. ive just started using blitz so im a little lost but thanks for all the help!!


Naughty Alien(Posted 2006) [#7]
I said that cube is consist of 6 surfaces, just in purpose of explanation..in order to reach total number surfaces of your cube, or any other mesh, use CountSurfaces(cube), eg.
Total_Surfaces=CountSurfaces(cube)..then you will know how many surfaces you actually have and then trough for...next loop access each of them and do your brush painting stuff..


Oh-Hello(Posted 2006) [#8]
yes I need to create more surfaces though so i can put a texture on each side. right now my cube has only 1 surface.


Steven Noyce(Posted 2006) [#9]
I would recomend using a 3d modelling program to do this, but if you don't want to, you could use the following little program. I don't know if this is the best way to do this, because it is my first expirience making a mesh with code, but it seems to work ok.
Graphics3D 640,480
camera=CreateCamera()
PositionEntity camera,0,0,-5

tex1=CreateBrush(255,255,255)
tex2=CreateBrush(255,255,0)
tex3=CreateBrush(255,0,0)
tex4=CreateBrush(0,0,255)
tex5=CreateBrush(0,255,255)
tex6=CreateBrush(255,0,255)

cube=CreateMesh()
surf1=CreateSurface(cube,tex1)
surf2=CreateSurface(cube,tex2)
surf3=CreateSurface(cube,tex3)
surf4=CreateSurface(cube,tex4)
surf5=CreateSurface(cube,tex5)
surf6=CreateSurface(cube,tex6)
AddVertex(surf1,1,1,1)
AddVertex(surf1,1,-1,1)
AddVertex(surf1,-1,-1,1)
AddVertex(surf1,-1,1,1)
AddTriangle(surf1,2,1,0)
AddTriangle(surf1,3,2,0)

AddVertex(surf2,1,1,-1)
AddVertex(surf2,1,-1,-1)
AddVertex(surf2,-1,-1,-1)
AddVertex(surf2,-1,1,-1)
AddTriangle(surf2,0,1,2)
AddTriangle(surf2,0,2,3)

AddVertex(surf3,1,1,1)
AddVertex(surf3,1,-1,1)
AddVertex(surf3,1,-1,-1)
AddVertex(surf3,1,1,-1)
AddTriangle(surf3,0,1,2)
AddTriangle(surf3,0,2,3)

AddVertex(surf4,-1,1,1)
AddVertex(surf4,-1,-1,1)
AddVertex(surf4,-1,-1,-1)
AddVertex(surf4,-1,1,-1)
AddTriangle(surf4,2,1,0)
AddTriangle(surf4,3,2,0)

AddVertex(surf5,1,-1,-1)
AddVertex(surf5,-1,-1,-1)
AddVertex(surf5,-1,-1,1)
AddVertex(surf5,1,-1,1)
AddTriangle(surf5,2,1,0)
AddTriangle(surf5,3,2,0)

AddVertex(surf6,1,1,-1)
AddVertex(surf6,-1,1,-1)
AddVertex(surf6,-1,1,1)
AddVertex(surf6,1,1,1)
AddTriangle(surf6,0,1,2)
AddTriangle(surf6,0,2,3)

While Not KeyDown(1)
TurnEntity cube,1,1,1
UpdateWorld
RenderWorld
Flip
Wend
End

I hope it helps!


Oh-Hello(Posted 2006) [#10]
Thank You
That was exactly what i need to know, how to create the vertex and triangles part.


I greatly appriciated all the help!!!


Oh-Hello(Posted 2006) [#11]
ok im still having a problem with this code.


Graphics3D 640,480
camera=CreateCamera()
PositionEntity camera,0,0,-5

tex1=LoadBrush("double bar.jpg")
tex2=LoadBrush("double bar.jpg")
tex3=LoadBrush("double bar.jpg")
tex4=LoadBrush("double bar.jpg")
tex5=LoadBrush("double bar.jpg")
tex6=LoadBrush("double bar.jpg")


cube=CreateMesh()
surf1=CreateSurface(cube,tex1)
surf2=CreateSurface(cube,tex2)
surf3=CreateSurface(cube,tex3)
surf4=CreateSurface(cube,tex4)
surf5=CreateSurface(cube,tex5)
surf6=CreateSurface(cube,tex6)

AddVertex(surf1,1,1,1)
AddVertex(surf1,1,-1,1)
AddVertex(surf1,-1,-1,1)
AddVertex(surf1,-1,1,1)
AddTriangle(surf1,2,1,0)
AddTriangle(surf1,3,2,0)

AddVertex(surf2,1,1,-1)
AddVertex(surf2,1,-1,-1)
AddVertex(surf2,-1,-1,-1)
AddVertex(surf2,-1,1,-1)
AddTriangle(surf2,0,1,2)
AddTriangle(surf2,0,2,3)

AddVertex(surf3,1,1,1)
AddVertex(surf3,1,-1,1)
AddVertex(surf3,1,-1,-1)
AddVertex(surf3,1,1,-1)
AddTriangle(surf3,0,1,2)
AddTriangle(surf3,0,2,3)

AddVertex(surf4,-1,1,1)
AddVertex(surf4,-1,-1,1)
AddVertex(surf4,-1,-1,-1)
AddVertex(surf4,-1,1,-1)
AddTriangle(surf4,2,1,0)
AddTriangle(surf4,3,2,0)

AddVertex(surf5,1,-1,-1)
AddVertex(surf5,-1,-1,-1)
AddVertex(surf5,-1,-1,1)
AddVertex(surf5,1,-1,1)
AddTriangle(surf5,2,1,0)
AddTriangle(surf5,3,2,0)

AddVertex(surf6,1,1,-1)
AddVertex(surf6,-1,1,-1)
AddVertex(surf6,-1,1,1)
AddVertex(surf6,1,1,1)
AddTriangle(surf6,0,1,2)
AddTriangle(surf6,0,2,3)


While Not KeyDown( 1 )

TurnEntity cube,7,0,0


UpdateWorld
RenderWorld

count_surf=CountSurfaces(cube)
Text 0,0,"This mesh has "+count_surf+" surface(s)"
Flip

Wend

End



When i run this the texture i want does not show up on the cube. its just grey. Could anyone tell me what is wrong.

Thanks

ps sorry i dont know how to put it in a code box.


bradford6(Posted 2006) [#12]
my opinion.

much better to fire up 3D modeller and create cube in that with 6 different surfaces.

try unwrap3d as well


Shambler(Posted 2006) [#13]
You are not specifying texture co-ordinates in the AddVertex commands.

AddVertex(surf1,1,1,1,1,1)
AddVertex(surf1,1,-1,1,1,0)
AddVertex(surf1,-1,-1,1,0,0)
AddVertex(surf1,-1,1,1,0,1)
Bradford has the best idea, use a modelling package.

Forum Codes Here http://www.blitzbasic.com/faq/faq_entry.php?id=2


Steven Noyce(Posted 2006) [#14]
I would definately encourage you to use a modeling program, but if you don't want to, here is the complete code:
Graphics3D 640,480
camera=CreateCamera()
PositionEntity camera,0,0,-5
CameraClsColor camera,100,100,100

tex=CreateTexture(256,256)
SetBuffer TextureBuffer(tex)
Color 200,150,75
Oval 1,1,254,254
SetBuffer BackBuffer()

tex1=CreateBrush(255,255,255)
tex2=CreateBrush(255,255,0)
tex3=CreateBrush(255,0,0)
tex4=CreateBrush(0,0,255)
tex5=CreateBrush(0,255,255)
tex6=CreateBrush(255,0,255)

BrushTexture tex1,tex
BrushTexture tex2,tex
BrushTexture tex3,tex
BrushTexture tex4,tex
BrushTexture tex5,tex
BrushTexture tex6,tex

cube=CreateMesh()
surf1=CreateSurface(cube,tex1)
surf2=CreateSurface(cube,tex2)
surf3=CreateSurface(cube,tex3)
surf4=CreateSurface(cube,tex4)
surf5=CreateSurface(cube,tex5)
surf6=CreateSurface(cube,tex6)
AddVertex(surf1,1,1,1,0,0)
AddVertex(surf1,1,-1,1,0,1)
AddVertex(surf1,-1,-1,1,1,1)
AddVertex(surf1,-1,1,1,0,1)
AddTriangle(surf1,2,1,0)
AddTriangle(surf1,3,2,0)

AddVertex(surf2,1,1,-1,0,1)
AddVertex(surf2,1,-1,-1,1,1)
AddVertex(surf2,-1,-1,-1,1,0)
AddVertex(surf2,-1,1,-1,0,0)
AddTriangle(surf2,0,1,2)
AddTriangle(surf2,0,2,3)

AddVertex(surf3,1,1,1,1,0)
AddVertex(surf3,1,-1,1,1,1)
AddVertex(surf3,1,-1,-1,0,1)
AddVertex(surf3,1,1,-1,0,0)
AddTriangle(surf3,0,1,2)
AddTriangle(surf3,0,2,3)

AddVertex(surf4,-1,1,1,1,0)
AddVertex(surf4,-1,-1,1,1,1)
AddVertex(surf4,-1,-1,-1,0,1)
AddVertex(surf4,-1,1,-1,0,0)
AddTriangle(surf4,2,1,0)
AddTriangle(surf4,3,2,0)

AddVertex(surf5,1,-1,-1,1,0)
AddVertex(surf5,-1,-1,-1,0,0)
AddVertex(surf5,-1,-1,1,0,1)
AddVertex(surf5,1,-1,1,1,1)
AddTriangle(surf5,2,1,0)
AddTriangle(surf5,3,2,0)

AddVertex(surf6,1,1,-1,1,1)
AddVertex(surf6,-1,1,-1,0,1)
AddVertex(surf6,-1,1,1,0,0)
AddVertex(surf6,1,1,1,1,0)
AddTriangle(surf6,0,1,2)
AddTriangle(surf6,0,2,3)

While Not KeyDown(1)
TurnEntity cube,1,1,1
UpdateWorld
RenderWorld
Flip
Wend
End

Hope it helps!