Graphics3D 1024,768,32,1 ClearWorld(1,1,1) Global Player=CreateSphere(32) PositionEntity player,4,4,4 Global MAPRANGE=50;CHANGES THE NUMBER OF TERRAINS IN VIEW Global brush,cam cam=CreateCamera() lgt=CreateLight(2) LightRange lgt,200 PositionEntity cam,0,5,0 RotateEntity cam,0,45,0 CameraRange cam,1,1000 brush=LoadBrush("grass1.png");PLACE ANY TEXTURE HERE ;BrushFX brush,1 Dim Vertx#(11,11) Dim Verty#(11,11) Dim Vertz#(11,11) Dim Maparray.Map_area(100) Type Map_tile Field Maptile Field Active Field tile_id[100] Field Brush_id[100] Field tilex Field tiley Field tilez End Type Type Map_Segm Field Active Field Maptile.Map_tile[10000] End Type Type Map_sect Field Active Field Mapsegm.Map_segm[100] End Type Type Map_area Field Active Field Mapsect.Map_sect[100] End Type For times4=1 To 10 maparray(times4)=New Map_area For times3=1 To 10 maparray(times4)\mapsect[times3]=New map_sect For times2=1 To 10 maparray(times4)\mapsect[times3]\mapsegm[times2]=New Map_Segm For times=1 To 100 maparray(times4)\mapsect[times3]\mapsegm[times2]\maptile[times]=New Map_tile maparray(times4)\mapsect[times3]\mapsegm[times2]\maptile[times]\active=1 Next Next Next Next For tiles=1 To 100 read_Maptile(tiles) log_maptile(tiles) create_maptile(tiles) Next tiles=0 For x=1 To 10 For z=1 To 10 tiles=tiles+1 PositionEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile,x*10,0,z*10 Next Next ;create_skybox() Print maparray(1)\mapsect[1]\mapsegm[1]\maptile[1]\tile_id[32] While Not KeyHit(1) If KeyDown(200) Then MoveEntity cam,0,0,.02 If KeyDown(208) Then MoveEntity cam,0,0,-.02 If KeyDown(203) Then TurnEntity cam,0,.05,0 If KeyDown(205) Then TurnEntity cam,0,-.05,0 EntityParent lgt,cam Hide_it UpdateWorld RenderWorld Flip 0 Wend End .Sector1 Data 3,3,2,1,1,1,1,2,3,3 Data 3,3,2,1,1,1,1,2,3,3 Data 2,2,2,1,1,1,1,2,2,2 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 2,2,2,1,1,1,1,2,2,2 Data 3,3,2,1,1,1,1,2,3,3 Data 3,3,2,1,1,1,1,2,3,3 Function Read_Maptile(tiles) Restore Sector1 For times=1 To 100 Read maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times] maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]=maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times] Next End Function Function log_maptile(tiles) For high=1 To 9 times=0 For x=1 To 10 For z=1 To 10 times=times+1 If maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\tile_id[times]=high Then vertx#(x,z)=-6+x verty#(x,z)=high/2-1 vertz#(x,z)=-6+z vertx#(x,z+1)=-6+x verty#(x,z+1)=high/2-1 vertz#(x,z+1)=-6+z+1 vertx#(x+1,z+1)=-6+x+1 verty#(x+1,z+1)=high/2-1 vertz#(x+1,z+1)=-6+z+1 vertx#(x+1,z)=-6+x+1 verty#(x+1,z)=high/2-1 vertz#(x+1,z)=-6+z EndIf Next Next Next End Function Function create_maptile(tiles) maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile=CreateMesh() surf=CreateSurface(maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile,brush) For x=1 To 10 For z=1 To 10 v1=AddVertex (surf,vertx#(x,z),verty#(x,z),vertz#(x,z),0,0) v2=AddVertex (surf,vertx#(x,z+1),verty#(x,z+1),vertz#(x,z+1),0,1) v3=AddVertex (surf,vertx#(x+1,z+1),verty#(x+1,z+1),vertz#(x+1,z+1),1,1) v4=AddVertex (surf,vertx#(x+1,z),verty#(x+1,z),vertz#(x+1,z),1,0) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) Next Next UpdateNormals maparray(1)\mapsect[1]\mapsegm[1]\maptile[tiles]\maptile End Function Function Hide_it() For times=1 To 100 If EntityDistance(maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile,cam)>maprange Then HideEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile EndIf If EntityDistance(maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile,cam)<maprange Then ShowEntity maparray(1)\mapsect[1]\mapsegm[1]\maptile[times]\maptile EndIf Next End Function Function create_skybox() mesh = CreateMesh() ;front face brush = LoadBrush("front.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,-1,+1,-1,0,0 AddVertex surface,+1,+1,-1,1,0 AddVertex surface,+1,-1,-1,1,1 AddVertex surface,-1,-1,-1,0,1 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ;right face brush = LoadBrush("right.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,+1,+1,-1,0,0 AddVertex surface,+1,+1,+1,1,0 AddVertex surface,+1,-1,+1,1,1 AddVertex surface,+1,-1,-1,0,1 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ;back face brush = LoadBrush("back.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,+1,+1,+1,0,0 AddVertex surface,-1,+1,+1,1,0 AddVertex surface,-1,-1,+1,1,1 AddVertex surface,+1,-1,+1,0,1 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ;left face brush = LoadBrush("left.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,-1,+1,+1,0,0 AddVertex surface,-1,+1,-1,1,0 AddVertex surface,-1,-1,-1,1,1 AddVertex surface,-1,-1,+1,0,1 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ;top face brush = LoadBrush("top.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,-1,+1,+1,0,1 AddVertex surface,+1,+1,+1,0,0 AddVertex surface,+1,+1,-1,1,0 AddVertex surface,-1,+1,-1,1,1 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ;bottom face brush = LoadBrush("bottom.jpg",49) surface = CreateSurface(mesh,brush) AddVertex surface,-1,-1,-1,1,0 AddVertex surface,+1,-1,-1,1,1 AddVertex surface,+1,-1,+1,0,1 AddVertex surface,-1,-1,+1,0,0 AddTriangle surface,0,1,2 AddTriangle surface,0,2,3 FreeBrush brush ScaleMesh mesh,200,200,200 FlipMesh mesh EntityFX mesh,1 ; make fullbright Return mesh UpdateNormals mesh End Function
test this please fps and basic veiws welcome
Blitz3D Forums/Blitz3D Programming/test this please fps and basic veiws welcome any how do you get those code tags to work :(
the above is part of a massive terrain gen prog im working on
each base map is 10,10
and is contained in areas sectors segments
to give maps 10,000,000 tiles on average
working on a lod routein
and texturing editor
the above is part of a massive terrain gen prog im working on
each base map is 10,10
and is contained in areas sectors segments
to give maps 10,000,000 tiles on average
working on a lod routein
and texturing editor
it's (code)...(/code) - and use [] insead of ()
[tag] [/tag]
The problem is you're not using lower-case characters in your tags, Duck. You got the names right.
thanks lads god if you could have heard that outburst
:) what a plonka
:) what a plonka
I will be creating 50 to 100+ baseset for four different tiers to make anything from valleys to mountains
there will be up to 5 textures styles per baseset
with a max of 10 textures included
going to be posting this one free for those who have trouble modelling and have to use memory robbing terrains commands
there will be up to 5 textures styles per baseset
with a max of 10 textures included
going to be posting this one free for those who have trouble modelling and have to use memory robbing terrains commands
sounds good, thanks for sharing!
jfk - I've always wanted to ask: What does "EO-11110" mean? I think the EO means "executive order," but what are the numbers for?
binary for "30" ????
;note another possiblity of terrain editor ;duckstab ;left mouse sellect triangle ;q vert up ;a vert down ;arrow keys rotate map ;page up and down zoom ;create a texture with a black background and a white circle outline for target (30 by 30) ;create a texture with a green background with a 1 pixle border for vertile (30 by 30) Graphics3D 1024,768,32,1 ClearWorld(1,1,1) Global cam1=CreateCamera() Global lgt1=CreateLight() Global mesh Global picked#,tri,surface Global v1x#,v1y#,v1z#,v1 Global v2x#,v2y#,v2z#,v2 Global v3x#,v3y#,v3z#,v3 PositionEntity cam1,0,2,-40 Global tex=LoadBrush("vertile.png") target=LoadImage("target.png") mesh_create2 RotateEntity mesh,90,0,0 While Not KeyHit(1) If KeyDown(200) Then TurnEntity mesh,.1,0,0 If KeyDown(203) Then TurnEntity mesh,0,-.1,0 If KeyDown(208) Then TurnEntity mesh,-.1,0,0 If KeyDown(205) Then TurnEntity mesh,0,.1,0 If KeyDown(201) Then MoveEntity cam1,0,0,.1 If KeyDown(209) Then MoveEntity cam1,0,0,-.1 If KeyDown(16) And picked>0 Then movevert1 If KeyDown(30) And picked>0 Then movevert2 If MouseHit(1) Then getpicked UpdateWorld RenderWorld Text 100,100,"picked="+picked Text 100,115,"Tri="+tri Text 100,130,"vert1 x="+v1x+" y="+v1y+" z="+v1z DrawImage target,MouseX(),MouseY() Flip 0 Wend End Function mesh_create1() mesh=CreateMesh() For x=1 To 10 For z=1 To 10 surf=CreateSurface(mesh) v1=AddVertex(surf,x-5,0,z-4) v2=AddVertex(surf,x-5,0,z-5) v3=AddVertex(surf,x-4,0,z-5) v4=AddVertex(surf,x-4,0,z-4) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) Next Next UpdateNormals Mesh EntityColor mesh,50,255,30 End Function Function mesh_create2() mesh=CreateMesh() surf=CreateSurface(mesh,tex) For x=1 To 20 For z=1 To 20 v1=AddVertex(surf,x-10,0,z-9,0,0) v2=AddVertex(surf,x-10,0,z-10,0,1) v3=AddVertex(surf,x-9,0,z-10,1,1) v4=AddVertex(surf,x-9,0,z-9,1,0) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) Next Next UpdateNormals Mesh EntityColor mesh,50,255,30 EntityPickMode mesh,2 End Function Function mesh_create2b() mesh=CreateMesh() surf=CreateSurface(mesh,tex) For x=1 To 20 For z=1 To 20 v1=AddVertex(surf,x-10,0,z-9,0,0) v2=AddVertex(surf,x-10,0,z-10,0,1) v3=AddVertex(surf,x-9,0,z-10,1,1) v4=AddVertex(surf,x-9,0,z-9,1,0) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) Next Next UpdateNormals Mesh EntityColor mesh,50,255,30 EntityPickMode mesh,2 End Function Function mesh_create3() mesh=CreateMesh() For x=1 To 10 For z=1 To 10 surf=CreateSurface(mesh) v1=AddVertex(surf,x-5,0,z-4) v2=AddVertex(surf,x-5,0,z-5) v3=AddVertex(surf,x-4,0,z-5) v4=AddVertex(surf,x-4,0,z-4) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) t3=AddTriangle(surf,v3,v2,v1) t4=AddTriangle(surf,v1,v4,v3) Next Next UpdateNormals Mesh EntityColor mesh,50,255,30 End Function Function mesh_create4() mesh=CreateMesh() surf=CreateSurface(mesh) For x=1 To 90 For z=1 To 98 v1=AddVertex(surf,x-5,0,z-4,0,0) v2=AddVertex(surf,x-5,0,z-5) v3=AddVertex(surf,x-4,0,z-5) v4=AddVertex(surf,x-4,0,z-4) t1=AddTriangle(surf,v1,v2,v3) t2=AddTriangle(surf,v3,v4,v1) t3=AddTriangle(surf,v3,v2,v1) t4=AddTriangle(surf,v1,v4,v3) Next Next UpdateNormals Mesh EntityColor mesh,50,255,30 End Function Function Getpicked() picked=CameraPick(cam1,MouseX()+15,MouseY()+15) If picked>0 Then getvert End Function Function Getvert() tri=PickedTriangle() surface=GetSurface(mesh,1) v1=TriangleVertex(surface,tri,0) v1x=VertexX(surface,v1) v1y=VertexY(surface,v1) V1z=VertexZ(surface,v1) End Function Function movevert1() v1y=v1y+.001 VertexCoords (surface,v1,v1x,v1y,v1z) End Function Function movevert2() v1y=v1y+-.001 VertexCoords (surface,v1,v1x,v1y,v1z) UpdateNormals mesh End Function
working on another possible method of terrain gen
what would does the public think would suit them better
i know the verts are not morphing properly added to many verts in testing code
That looks cool
Going to implement controls for
1 quad raise lower
2 quad tilt 4way
3 tri raise lower
4 tri tilt 4way
5 vert 1 to 4 raise or lower as in each
this prog will export to a dat file or even b3d if i get it working well enough
.texture editor in progress
1 quad raise lower
2 quad tilt 4way
3 tri raise lower
4 tri tilt 4way
5 vert 1 to 4 raise or lower as in each
this prog will export to a dat file or even b3d if i get it working well enough
.texture editor in progress
I couldn't get anything to work except for moving the map, zooming, and clicking the triangles.
pick a tri then use q or a to move the verts
I did - nothing happened.
you need to hold down the key Q or A
I'll try again.
;3d terrain editor in progress ;duckstab ;left mouse select triangle ;hold q vert up ;hold a vert down ;arrow keys rotate map ;page up and down zoom ;create a texture with a black background and a white circle outline for target (30 by 30) ;create a texture with a green background with a 1 pixle border for vertile (30 by 30) Graphics3D 1024,768,32,1 ClearWorld(1,1,1) Global cam1=CreateCamera() Global lgt1=CreateLight() Global mesh Global picked#,tri,surface Global v1x#,v1y#,v1z#,v1 Global v2x#,v2y#,v2z#,v2 Global v3x#,v3y#,v3z#,v3,uvmap1#,uvmap2# Dim Vert#(21,21) PositionEntity cam1,0,2,-40 tex=LoadTexture("vertile.png") target=LoadImage("target.png") mesh_create EntityTexture mesh,tex ScaleTexture tex,.05,.05 ;EntityColor mesh,255,126,46 RotateEntity mesh,90,0,0 While Not KeyHit(1) If KeyDown(200) Then TurnEntity mesh,.1,0,0 If KeyDown(203) Then TurnEntity mesh,0,-.1,0 If KeyDown(208) Then TurnEntity mesh,-.1,0,0 If KeyDown(205) Then TurnEntity mesh,0,.1,0 If KeyDown(201) Then MoveEntity cam1,0,0,.1 If KeyDown(209) Then MoveEntity cam1,0,0,-.1 If KeyDown(16) And picked>0 Then movevert1 If KeyDown(30) And picked>0 Then movevert2 If MouseDown(1) Then getpicked UpdateWorld RenderWorld Text 100,100,"picked="+picked Text 100,115,"Tri="+tri Text 100,130,"vert1 x="+v1x+" y="+v1y+" z="+v1z Text 100,145,"uv1="+uvmap1 Text 100,160,"uv2="+uvmap2 DrawImage target,MouseX(),MouseY() Flip 0 Wend End Function Mesh_create() mesh=CreateMesh() surf=CreateSurface(mesh) For x=1 To 21 For z=1 To 21 vert(x,z)=AddVertex(surf,x-9,0,z-9,(x*.05)-.05,((z*.05)-.05)) Next Next For x=1 To 20 For z=1 To 20 AddTriangle surf,vert(x,z),vert(x+1,z),vert(x,z+1) AddTriangle surf,vert(x,z+1),vert(x+1,z),vert(x+1,z+1) Next Next UpdateNormals Mesh EntityPickMode mesh,2 End Function Function Getpicked() picked=CameraPick(cam1,MouseX()+15,MouseY()+15) If picked>0 Then getvert End Function Function Getvert() tri=PickedTriangle() surface=GetSurface(mesh,1) v1=TriangleVertex(surface,tri,0) v2=TriangleVertex(surface,tri,1) v3=TriangleVertex(surface,tri,2) v1x=VertexX(surface,v1) v1y=VertexY(surface,v1) V1z=VertexZ(surface,v1) v2x=VertexX(surface,v2) v2y=VertexY(surface,v2) V2z=VertexZ(surface,v2) v3x=VertexX(surface,v3) v3y=VertexY(surface,v3) V3z=VertexZ(surface,v3) uvmap1=VertexV# ( surface,v1,0 ) uvmap2=VertexU# ( surface,v1,1) End Function Function movevert1() v1y=v1y+.003 v2y=v2y+.003 v3y=v3y+.003 VertexCoords (surface,v1,v1x,v1y,v1z) VertexCoords (surface,v2,v2x,v2y,v2z) VertexCoords (surface,v3,v3x,v3y,v3z) UpdateNormals mesh End Function Function movevert2() v1y=v1y-.003 v2y=v2y-.003 v3y=v3y-.003 VertexCoords (surface,v1,v1x,v1y,v1z) VertexCoords (surface,v2,v2x,v2y,v2z) VertexCoords (surface,v3,v3x,v3y,v3z) UpdateNormals mesh End Function
updated code slimline added testing for vertical move of tris