Here's a little example using your code.
I didn't know your height values so I put in random numbers. Which causes the ground to look a little jagged.
I also setup the terrain to receive Texture Additive shadows.
With a little more work you could make a nice terrain generator.
Code: Select all
Enumeration
  #Camera
  #Texture
  #Material
  #Light
  #Terrain
  #SphereMesh
  #Sphere
EndEnumeration
Declare MyTerrain(Size)
If InitEngine3D(#PB_Engine3D_DebugLog)
  InitSprite()
  InitKeyboard()
  InitMouse()
  
ExamineDesktops()
DesktopW=DesktopWidth(0)
DesktopH=DesktopHeight(0)
Define.f MouseX,MouseY,KeyX,KeyY
If OpenWindow(0, 0, 0, DesktopW, DesktopH, "Basic Terrain Generator")
  If OpenWindowedScreen(WindowID(0), 0, 0, DesktopW, DesktopH, 0, 0, 0)
    
    Add3DArchive(#PB_Compiler_Home+"\Examples\3D\Data\Textures",#PB_3DArchive_FileSystem)
    
    LoadTexture(#Texture,"grass.jpg")
    CreateMaterial(#Material,TextureID(#Texture))
    ;Need to scale the material for texture repeat
    ScaleMaterial(#Material, 0.1, 0.1)
    
    CreateSphere(#SphereMesh,5)
    CreateEntity(#Sphere,MeshID(#SphereMesh),MaterialID(#Material),0,20,0)
    
    MeshHandle=MyTerrain(100)
    Result = IsMesh(MeshHandle)
    If Result <> 0
      CreateEntity(#Terrain, MeshID(MeshHandle), MaterialID(#Material))
      EntityRenderMode(#Terrain, 0)
    EndIf
  
    CreateLight(#Light,RGB(0,0,0),50,50,0)
    SetLightColor(#Light,#PB_Light_DiffuseColor,RGB(255,255,255))
    
    AmbientColor(RGB(100,100,100))
    
    CreateCamera(#Camera, 0, 0, 100, 100)
    MoveCamera(#Camera, 50, 25, -50, #PB_Absolute)
    CameraLookAt(#Camera,0,0,0)
    CameraBackColor(#Camera,RGB(80,80,80))
    
    WorldShadows(#PB_Shadow_TextureAdditive, 100, RGB(200, 200, 200), 2048)
    
    Repeat
      Event=WaitWindowEvent()   
      
      If ExamineMouse()
        MouseX = -MouseDeltaX()/10
        MouseY = -MouseDeltaY()/10
      EndIf
      
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -0.2
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = 0.2
        Else
          KeyX = 0
        EndIf
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -0.2
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = 0.2
        Else
          KeyY = 0
        EndIf
      EndIf
      
      RotateCamera(#Camera, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera(#Camera, KeyX, 0, KeyY)
      RenderWorld()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape)
  EndIf
EndIf  
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
    
    
Procedure MyTerrain(Size)
  Define.f U,V,UVoffset
  TerLen = Size
  UVoffset = 1 / TerLen
  Handle=CreateMesh(#PB_Any, #PB_Mesh_TriangleList, #PB_Mesh_Static)
    For btz = 0 To TerLen - 1
      offset = 1
      For btx = 0 To TerLen - 1
        ;bty = HeightMapSector.MapSector(btx, btz)\Height / 8
        ;I don't know your old height values. So, I put in random numbers.
        bty = Random(1,0)
        MeshVertexPosition(btx-(TerLen*0.5), bty, btz-(TerLen*0.5))
        MeshVertexNormal(0, 0, 0)
        MeshVertexTextureCoordinate(U, V)
        V = V + UVoffset
      Next
      U = U + UVoffset
      V = 0
    Next   
    For btz = 0 To TerLen - 2
      For btx = 0 To TerLen - 2
        btf = btz * TerLen + btx
        MeshFace(btf+0, btf+TerLen, btf+TerLen+1)
        MeshFace(btf+TerLen+1, btf+1, btf+0)
      Next
    Next   
  FinishMesh(#True)
  NormalizeMesh(Handle)
  ProcedureReturn Handle
EndProcedure