[bb] PlaceBallOnEachVertex(mesh) Function by Sarakan [ 1+ years ago ]

Started by BlitzBot, June 29, 2017, 00:28:39

Previous topic - Next topic

BlitzBot

Title : PlaceBallOnEachVertex(mesh) Function
Author : Sarakan
Posted : 1+ years ago

Description : This code will place a number on each vertex in a mesh to help you when you need to know each vertex's number.

Code :
Code (blitzbasic) Select
Function PlaceBallOnEachVertex(mesh)
surface = GetSurface(mesh,1)
For temp = 0 To CountVertices(surface) - 1

tempball = CreateSphere(8)
PositionEntity tempball,VertexX#(surface,temp), VertexY#(surface,temp), VertexZ#(surface,temp)
EntityColor tempball,190,0,0
EntityAlpha tempball,.4
EntityParent tempball, mesh
NameEntity tempball,"Vertex " + temp

tempimg = CreateTexture(Len(temp) * 10,15)
SetBuffer TextureBuffer(tempimg)
Cls
Text 1,1,temp
SetBuffer BackBuffer()

vert_sprite = CreateSprite()
EntityTexture vert_sprite,tempimg
PositionEntity vert_sprite,VertexX#(surface,temp), VertexY#(surface,temp), VertexZ#(surface,temp),1
EntityParent vert_sprite, tempball
Next
End Function



;;;;;;;;;;;;;;;;;;;;;;;;;EXAMPLE
The following is the example of how to use this function

Graphics3D 800,600,16,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Global camera = CreateCamera()
Global light = CreateLight(camera)
MoveEntity camera,5,4,-6



meshy_terrain = CreateTerrainMesh(5,7)


PlaceBallOnEachVertex(meshy_terrain)  ;<======== HERE IT IS




While Not KeyDown(1)
Get_Input()
RenderWorld
Text 1,1, "Arrow keys, A key, and Z key move camera"
Flip
Cls
Wend

End



Function PlaceBallOnEachVertex(mesh)
surface = GetSurface(mesh,1)
For temp = 0 To CountVertices(surface) - 1

tempball = CreateSphere(8)
PositionEntity tempball,VertexX#(surface,temp), VertexY#(surface,temp), VertexZ#(surface,temp)
EntityColor tempball,190,0,0
EntityAlpha tempball,.4
EntityParent tempball, mesh
NameEntity tempball,"Vertex " + temp

tempimg = CreateTexture(Len(temp) * 10,15)
SetBuffer TextureBuffer(tempimg)
Cls
Text 1,1,temp
SetBuffer BackBuffer()

vert_sprite = CreateSprite()
EntityTexture vert_sprite,tempimg
PositionEntity vert_sprite,VertexX#(surface,temp), VertexY#(surface,temp), VertexZ#(surface,temp),1
EntityParent vert_sprite, tempball
Next
End Function


Function CreateTerrainMesh(x,y)
;x = how many horizontal vertices
;y = how many vertical vertices

mesh = CreateMesh()
surf = CreateSurface(mesh)
If x < 2 Or y < 2 Then Return mesh ;in case user gives a bad number simply return the mesh
For tempx = 1 To x
For tempy = 1 To y
AddVertex(surf,tempx*4,0,tempy*4)
Next
Next

For v0 = 0 To (x*y)-y-2
For Z = 1 To x*y
If v0 = z*y-1 Then v0 = v0 + 1
Next
v1 = V0 + 1
v2 = v1 + y
v3 = v0 + y
AddTriangle(surf,v0,v1,v2)
AddTriangle(surf,v0,v2,v3)
Next

Return mesh
End Function


Function Get_Input()
shift = 0
up = 0
down = 0
left_key = 0
right_key = 0
a = 0
z = 0
If KeyDown(shiftkey) = 1 Then shift = 1
If KeyDown(200) = 1 Then up = 1
If KeyDown(208) = 1 Then down = 1
If KeyDown(203) = 1 Then Left_key = 1
If KeyDown(205) = 1 Then Right_key = 1
If KeyDown(30) = 1 Then a = 1
If KeyDown(44) = 1 Then z = 1

If right_key = 1 Then MoveEntity camera,1,0,0
If left_key = 1 Then MoveEntity camera,-1,0,0
If up = 1 Then MoveEntity camera,0,0,1
If down = 1 Then MoveEntity camera,0,0,-1
If a = 1 Then MoveEntity camera,0,1,0
If z = 1 Then MoveEntity camera,0,-1,0
If KeyDown(211) Then TurnEntity camera,0,2,0
If KeyDown(209) Then TurnEntity camera,0,-2,0
End Function


Comments :


CyberHeater(Posted 1+ years ago)

 Please post example code.  Can't get this to work.


CyberHeater(Posted 1+ years ago)

 I found out that I needed to scale the sprite and ball so it was visible.  It was way too small for me to see.


Sarakan(Posted 1+ years ago)

 Added Example.  BTW does anyone know how to make my code public domain?


Warren(Posted 1+ years ago)

 I think you just did.


simonh(Posted 1+ years ago)

 <div class="quote"> Added Example. BTW does anyone know how to make my code public domain? </div>Please see <a href="../Community/posts8571-3.html?topic=33710" target="_blank">this</a> topic.


Sarakan(Posted 1+ years ago)

 Thank you...It is now PD...though now that I'm running it on a mesh and resizing the mesh...I can see a slight problem of the spheres becoming larger in size.  I kinda just wanted them to stay the same size once made.Should I make a function to normalize the spheres back to original size(though I dislike giving a function out and forcing you to add more code to your program) or leave this as is since this is mostly for use in debugging a mesh's vertice?