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 |