Hmm... I didn't notice that. Sorry, and thanks, I'll check them out.
EDIT:
is the pick object command not compatible with BlitzTerrain? :/
//BLITZ TERRAIN 2.00 EXAMPLE - SMOOTHING AND QUAD ROTATION
//CREATED BY KARL HOBLEY (KAEDROHO) http://www.blitzwerks.co.uk
//PLEASE FREE TO USE THE CODE BELOW IN COMMERCIAL AND NON COMMERCIAL PROJECTS!
//CREATED AND TESTED WITH DBPRO 7.4
//This demo shows how to add smoothing and quad rotation. This will make your terrains look alot more realistic and reduce sharp edges!
//Smoothing has been added in the heightmap loading system (located inside BT BuildTerrain).
//It gets the average of the 8 points around a point then averages that with the point in the middle.
//Quad Rotation basically rotates the quads to the best way they look. This stops triangles from sticking out.
//Look at wireframe mode, you will notice that all the tiles dont face the same direction.
//As far as I know, BlitzTerrain is the ONLY terrain engine to feature Quad Rotation.
//Quad rotation is built into the QuadMap modification system which executes in the BT BuildTerrain command.
//I only needed to add 2 extra lines to enable both of these methods.
//CONTROLS
//ARROWKEYS AND MOUSE - MOVE
// F1 - WIREFRAME ON. F2 - WIREFRAME OFF
//Setup
sync on : sync rate 0 : sync
center text screen width()/2,screen height()/2,"Loading..." : sync : cls
//Load media
global g_HeightmapImgID : global g_TextureImgID : global g_DetailmapImgID
g_HeightmapImgID=1 : g_TextureImgID=2 : g_DetailmapImgID=3
load image "..\Media\heightmap.bmp",g_HeightmapImgID
load image "..\Media\texture.jpg",g_TextureImgID
load image "..\Media\detail.tga",g_DetailmapImgID
//Create terrain
//Make the terrain
global g_TerrainID
g_TerrainID=BT MakeTerrain()
//Set images
BT SetTerrainHeightmap g_TerrainID,g_HeightmapImgID
BT SetTerrainTexture g_TerrainID,g_TextureImgID
BT SetTerrainDetail g_TerrainID,g_DetailmapImgID
//Set some other values
BT SetTerrainScale g_TerrainID,12.0
BT SetTerrainYScale g_TerrainID,2.0
BT SetTerrainSplit g_TerrainID,8
BT SetTerrainDetailTile g_TerrainID,3.0
//LOD
BT SetTerrainLOD g_TerrainID,3 //3 LOD levels
BT SetTerrainLODDistance g_TerrainID,1,1000.0 //LOD Distances start at one and go up to 1 less the LOD level count
BT SetTerrainLODDistance g_TerrainID,2,2000.0
//Smoothing and Quad Rotation
BT SetTerrainSmoothing g_TerrainID,1
BT SetTerrainQuadRotation g_TerrainID,1
//Build
global g_TerrainObjectID
g_TerrainObjectID=1
//This command processes the heightmap and creates all the internal structures for the terrain
BT BuildTerrain g_TerrainID,g_TerrainObjectID
//This command sets the number of sectors get created every call to 'BT ContinueBuild'.
//As we dont need a loading bar, I set this to 0 which makes it create the whole terrain at once
BT SetBuildStep 0
repeat
//This command generates the sectors. It returns the percentage of how much of the terrain it has generated.
//When it has generated the whole terrain it will return -1
progress=BT ContinueBuild()
until progress=-1
//Setup camera
set camera range 10,10000
//Main loop
StartTime=timer()
do
text 0,0,str$( pick object( mousex(), mousey(), 0, 1000 ) )
//Camera movement
Elapsedtime#=(timer()-StartTime)/3000.0+Elapsedtime#*0.7
StartTime=timer()
cx#=camera angle x()+mousemovey()/4.0
if cx#>90.0 then cx#=90.0
if cx#<-90.0 then cx#=-90.0
rotate camera cx#,camera angle y()+mousemovex()/4.0,0.0
if upkey() then move camera 1000.0*Elapsedtime#
if downkey() then move camera -1000.0*Elapsedtime#
if leftkey() then move camera left 1000.0*Elapsedtime#
if rightkey() then move camera left -1000.0*Elapsedtime#
gheight#=BT GetGroundHeight(g_TerrainID,camera position x(),camera position z())
if camera position y()-40<gheight# then position camera camera position x(),gheight#+40,camera position z()
//Wireframe
if keystate(59) then set object wireframe g_TerrainObjectID,1
if keystate(60) then set object wireframe g_TerrainObjectID,0
//Render the terrain
BT SetCurrentCamera 0 //Set current camera to 0 (if the camera has moved/rotated since this command was last called, you must call it again!)
BT UpdateTerrainCull g_TerrainID //Update frustum culling
BT UpdateTerrainLOD g_TerrainID //Update LOD
BT RenderTerrain g_TerrainID //Render the terrain
//FPS
text 10,10,str$(screen fps())
//Position mouse
//Update screen
sync
loop
Pick object always returns 0.