test this please fps and basic veiws welcome
Blitz3D Forums/Blitz3D Programming/test this please fps and basic veiws welcome
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |