Hi Folks,
Ok, here is the code I'm using at the moment. This builds a cube using vertices and triangles and then applies a texture to it. Simple so far. However, the texture goes well odd across different parts of the faces.
Graphics3D 800,600
Type Systems_Type
Field cam, cx#, cy#, cz#, cp
Field lgt, lx#, ly#, lz#
End Type
Global sys.systems_type
Type entities_Type
Field brsh
Field br,bg,bb
Field ent, ex#, ey#, ez#
Field surf
Field er,eg,eb
Field tex
End Type
Global ent.entities_type
; Set up system stuff
sys.systems_type = New systems_type
sys\cam = CreateCamera()
sys\cx = 20 : sys\cy = 30 : sys\cz = 5
sys\lgt = CreateLight(1)
sys\lx = 10 : sys\ly = 40 : sys\cz = 10
AmbientLight 255,255,255
; set up entities
Ent.entities_type = New entities_type
ent\brsh = CreateBrush()
ent\br = 255 : ent\bg = 0 : ent\bb = 0
BrushColor ent\brsh,ent\br, ent\bg, ent\bb
ent\Ent = CreateMesh()
ent\Surf = CreateSurface(ent\ent, ent\brsh)
ent\tex = LoadTexture("twistedlandscape.bmp")
Restore CubeData
Read num_verts
For i = 1 To num_verts
Read vx#,vy#,vz#, vu#, vv#
AddVertex ent\surf, vx,vy,vz, vu, vv
Next
Read num_tris
For i = 1 To num_tris
Read v1#,v2#,v3#
AddTriangle ent\surf, v1,v2,v3
Next
UpdateNormals ent\ent
EntityTexture ent\ent, ent\tex
ScaleEntity ent\ent,10,10,10
EntityShininess ent\ent,.75
PositionEntity ent\ent,ent\ex, ent\ey, ent\ez
PositionEntity sys\lgt,sys\lx, sys\ly, sys\lz
;WireFrame True
SetBuffer BackBuffer()
While Not KeyDown(1)
sys\cp = sys\cp - 1 : If sys\cp<0 Then sys\cp = 359
Movecamera
UpdateWorld
RenderWorld
Flip
Wend
End
Function MoveCamera()
sys\cx = 20*Sin(sys\cp)
sys\cz = 20*Cos(sys\cp)
PositionEntity sys\cam,sys\cx,sys\cy, sys\cz
PointEntity sys\cam, ent\ent
End Function
.CubeData
; Number of Vertices = 8
Data 8
; Front
Data 0,1,0,0,1 ; 0
Data 1,1,0,1,1 ; 1
Data 1,0,0,1,0 ; 2
Data 0,0,0,0,0; 3
; Back
Data 1,1,1,1,1 ; 4
Data 0,1,1,0,1 ; 5
Data 0,0,1,0,0 ; 6
Data 1,0,1,0,1 ; 7
; Number of Triangles
Data 10
Data 0,1,2 ; Front
Data 0,2,3
Data 4,5,6 ; Back
Data 4,6,7
Data 5,0,3 ; Left
Data 5,3,6
Data 1,4,7 ; Right
Data 1,7,2
Data 5,4,1 ; Top
Data 5,1,0
Whoops, premature posting ;0)
So, the question is, do I have to create multiple vertices at the same location to correctly map the texture to? I don't think that very likely but...? How else can I map the texture presented(a square texture) on each face?
Thanks,
Jes