Page 1 of 1

Mesh data ?

Posted: Thu May 27, 2004 10:15 pm
by TIGER
Does anyone know detailed information about how to build amesh by yourself (including mapping data).

Or a little example of building a box.

Posted: Fri May 28, 2004 12:20 am
by MadMax
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 :)

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  
Hope this helps.