Does anyone know detailed information about how to build amesh by yourself (including mapping data).
Or a little example of building a box.
Mesh data ?
Here is a small sample, I modified this from some code from Danilo.
Strictly speaking you'd just need 8 vertices to make a cube, but for texturing reasons I made a 14 one.
It also took me a while to realize how normals work. But after some experimenting I understand now
Hope this helps.
Strictly speaking you'd just need 8 vertices to make a cube, but for texturing reasons I made a 14 one.
It also took me a while to realize how normals work. But after some experimenting I understand now
Code: Select all
InitEngine3D()
Add3DArchive("Data\" , #PB_3DArchive_FileSystem)
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
End
EndIf
If OpenScreen(640,480,32,"Dabidu")
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
CreateMesh(0)
SetMeshData(0, 0, ?CubeVertices , 14)
SetMeshData(0, 1, ?CubeFacesIndexes , 12)
SetMeshData(0, 2, ?CubeTextureCoordinates, 14)
SetMeshData(0, 3, ?CubeNormals , 14)
;SetMeshData(0, 4, ?CubeColours , 14)
texturID=LoadTexture(1, "Data/oldbric.jpg")
matID=CreateMaterial(0,texturID)
CreateEntity(0, MeshID(0), MatID)
ScaleEntity(0, 3, 3, 3)
EntityLocate(0,0,0,0)
CreateLight(0, RGB(255,255,255),-400,0,0)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,20)
dia=RGB(25,25,25)
AmbientColor(dia)
Repeat
ClearScreen(0,0,0)
;=========================================================================================
If rot
RotateEntity(0, -0.2, 0.3, 0.2)
EndIf
;=========================================================================================
RenderWorld()
;=========================================================================================
; PRINT TEXT
;=========================================================================================
;=========================================================================================
;=========================================================================================
FlipBuffers(1)
;=========================================================================================
; KEYBOARD INPUT
;=========================================================================================
ExamineKeyboard()
If KeyboardPushed(#PB_Key_space)
rot=1
Else
rot=0
EndIf
;=========================================================================================
;=========================================================================================
Until KeyboardPushed(#PB_Key_Escape)
End
DataSection
CubeVertices:
Data.f -0.5, -0.5, -0.5 ; Vertex index 0
Data.f -0.5, -0.5, 0.5 ; Vertex index 1
Data.f 0.5, -0.5, 0.5 ; Vertex index 2
Data.f 0.5, -0.5, -0.5 ; Vertex index 3
Data.f -0.5, 0.5, -0.5 ; Vertex index 4
Data.f -0.5, 0.5, 0.5 ; Vertex index 5
Data.f 0.5, 0.5, 0.5 ; Vertex index 6
Data.f 0.5, 0.5, -0.5 ; Vertex index 7
Data.f -0.5,-0.5, -0.5 ;8
Data.f -0.5, 0.5, -0.5 ;9
Data.f -0.5, 0.5, -0.5 ;10
Data.f 0.5, 0.5, -0.5 ;11
Data.f -0.5,-0.5, -0.5 ;12
Data.f 0.5,-0.5, -0.5 ;13
CubeFacesIndexes:
Data.w 1, 12, 13 ; bottom face
Data.w 13, 2, 1
Data.w 10, 5,6 ; top face
Data.w 6,11,10
Data.w 7, 3, 8 ; back face
Data.w 8, 9, 7
Data.w 6, 2, 3 ; right face
Data.w 3, 7,6
Data.w 5, 1, 2 ; front face
Data.w 2, 6, 5
Data.w 4, 0, 1 ; left face
Data.w 1,5, 4
CubeTextureCoordinates:
Data.f 0.0, 1.0 ; Vertex 0
Data.f 1.0, 1.0 ; Vertex 1
Data.f 2.0, 1.0 ; Vertex 2
Data.f 3.0, 1.0 ; Vertex 3
Data.f 0.0, 2.0 ; Vertex 4
Data.f 1.0, 2.0 ; Vertex 5
Data.f 2.0, 2.0 ; Vertex 6
Data.f 3.0, 2.0 ; Vertex 7
Data.f 4.0, 1.0 ; vertex 8
Data.f 4.0, 2.0 ; Vertex 9
Data.f 1.0, 3.0 ; Vertex 10
Data.f 2.0, 3.0 ; Vertex 11
Data.f 1.0, 0.0 ; Vertex 12
Data.f 2.0, 0.0 ; Vertex 13
CubeNormals:
Data.f -1, -1,-1 ;0
Data.f -1, -1, 1 ;1
Data.f 1, -1, 1 ;2
Data.f 1, -1,-1 ;3
Data.f -1, 1,-1;4
Data.f -1, 1, 1;5
Data.f 1, 1, 1;6
Data.f 1, 1,-1;7
Data.f -1, -1,-1;8
Data.f -1, 1,-1;9
Data.f -1, 1,-1;10
Data.f 1, 1,-1;11
Data.f -1, -1,-1;12
Data.f 1, -1,-1;13
CubeColours:
Data.l $ffff00
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
Data.l $ff0000
EndDataSection 
