move vert

Blitz3D Forums/Blitz3D Programming/move vert

dmaz(Posted 2004) [#1]
Ok, I've been racking my brain on this for the last 2 hours... I hope someone can help.

All I'm trying to do is move the top vertex (0), away from or towards the base while still being able to rotate the triangle... that MoveVert doesn't do it, argh!

Graphics3D 800,600

pivot = CreatePivot()
cam = CreateCamera(pivot)
MoveEntity cam,0,0,-10

Global axis=CreatePivot()

mesh = CreateMesh()
surf = CreateSurface(mesh)

s# = .5
l# = 4

v0 = AddVertex(surf, 0, s*l, 0)
v1 = AddVertex(surf, s, 0,   0)
v2 = AddVertex(surf,-s, 0,   0)
AddTriangle(surf,v0,v1,v2)
EntityColor mesh, 10, 10,255

a# = 0
fps_milli=MilliSecs(): fps_counter=0:fpsworst=1000
While Not KeyDown(1)
	
	If KeyDown(203) Then TurnPoints surf,0,3,  0,  0,  1 ;left
	If KeyDown(205) Then TurnPoints surf,0,3,  0,  0, -1 ;right
		
	If KeyDown(200) Then l=l+.01:MoveVert(surf,2,l) ;up
	If KeyDown(208) Then l=l-.01:MoveVert(surf,2,l) ;down
	
	RenderWorld
	
	fps_counter=fps_counter+1
	If  (MilliSecs()-fps_milli)>999		
		fpstot=fps_counter
		fps_milli=MilliSecs() 
		fps_counter=0 
	EndIf
	If fpstot<fpsworst And fpstot>0 Then fpsworst = fpstot
	Text 0,20, "   FPS: "+fpstot+"/"+fpsworst
	Text 0,40, "  tris: "+TrisRendered()
	Flip ;False
Wend
End

Function MoveVert(surf%,v%,l#)
	vx#=VertexX(surf,v)+(l*VertexNX(surf,v))
	vy#=VertexY(surf,v)+(l*VertexNY(surf,v))
	vz#=VertexZ(surf,v)+(l*VertexNZ(surf,v))
	VertexCoords surf,v,vx,vy,vz
End Function

Function TurnPoints(surf%,vertexIndex%,numberOfVertices%,x#,y#,z#)
	RotateEntity axis,x,y,z
	For i = vertexIndex To vertexIndex+numberOfVertices-1
		TFormPoint VertexX(surf,i),VertexY(surf,i),VertexZ(surf,i),axis,0
		VertexCoords surf,i,TFormedX(),TFormedY(),TFormedZ()
	Next
End Function



jfk EO-11110(Posted 2004) [#2]
Probably you need to use the UpdateNormals Command before you use VertexNX etc. stuff.