Code archives/3D Graphics - Effects/VectorGFX example

This code has been declared by its author to be Public Domain code.

Download source code

VectorGFX example by MCP2007
A way to create retro-style 3d vector objects with optional hidden line removal.

Cheers,

Roy
;*** VectorGFX - R. Ferriby

Graphics3D 800,600,32,0
SetBuffer BackBuffer()
AntiAlias 1
AppTitle "VectorGFX demo - R Ferriby"

Global camera%=CreateCamera()
PositionEntity camera,0,0,-40

vectorcube%=CreateVectorMesh()

AddVector(vectorcube,-1,-1,-1, -1,1,-1)	; 0,1
VectorTo(vectorcube,1,1,-1)		; 1,2
VectorTo(vectorcube,1,-1,-1)		; 2,3
CloseVector(vectorcube,0,3)		; 3,0

AddVector(vectorcube,-1,-1, 1, -1,1, 1)	; 4,5
VectorTo(vectorcube,1,1, 1)		; 5,6
VectorTo(vectorcube,1,-1, 1)		; 6,7
CloseVector(vectorcube,7,4)		; 7,4

CloseVector(vectorcube,0,4)		; 0,4
CloseVector(vectorcube,1,5)		; 1,5
CloseVector(vectorcube,2,6)		; 2,6
CloseVector(vectorcube,3,7)		; 3,7

ScaleEntity vectorcube,10,10,10
EntityColor vectorcube,255,255,255

cube%=CreateCube()      ; used for hidden line removal
EntityFX cube,5
EntityColor cube,0,0,0
ScaleEntity cube,10,10,10
alpha#=0
r%=255 : g%=255 : b%=255

While Not KeyHit(1)
	If KeyDown(200)
		alpha=alpha+0.01
		If alpha>1.0
			alpha=1.0
		EndIf
	EndIf
	If KeyDown(208)
		alpha=alpha-0.01
		If alpha<0.0
			alpha=0.0
		EndIf
	EndIf
	If KeyDown(2)
		r=255 : g=255 : b=255
	EndIf
	If KeyDown(3)
		r=255 : g=0 : b=0
	EndIf
	If KeyDown(4)
		r=0 : g=255 : b=0
	EndIf
	If KeyDown(5)
		r=0 : g=0 : b=255
	EndIf
	EntityAlpha cube,alpha
	EntityColor vectorcube,r,g,b
	TurnEntity cube,0.1,0.2,0.3
	TurnEntity vectorcube,0.1,0.2,0.3
	CameraClsMode camera,1,1
	WireFrame 1
	ShowEntity vectorcube
	HideEntity cube
	RenderWorld
	CameraClsMode camera,0,0
	WireFrame 0
	ShowEntity cube
	HideEntity vectorcube
	RenderWorld
	Text 10,10,"Up - increase solidity"
	Text 10,30,"Down - decrease solidity"
	Text 10,50,"Keys 1,2,3,4 - change color"
	Text 10,70,"ESC - quit"
	Flip 1
Wend
End


Function CreateVectorMesh%()
	Local mesh%=CreateMesh()
	Local surf%=CreateSurface(mesh)
	EntityFX mesh,17
	Return mesh
End Function

Function AddVector(mesh%,x1#,y1#,z1#,x2#,y2#,z2#)
	Local surf%=GetSurface(mesh,1)
	Local v1%,v2%

	v1=AddVertex(surf,x1,y1,z1)
	v2=AddVertex(surf,x2,y2,z2)
	AddTriangle(surf,v1,v2,v1)
End Function

Function VectorTo(mesh,x2#,y2#,z2#)
	Local surf%=GetSurface(mesh,1)
	Local v1,v2%
	v2=AddVertex(surf,x2,y2,z2)
	v1=v2-1
	AddTriangle(surf,v1,v2,v1)
End Function

Function CloseVector(mesh,v1%,v2%)
	Local surf%=GetSurface(mesh,1)
	AddTriangle(surf,v1,v2,v1)
End Function

Comments

None.

Code Archives Forum