OK big10p,
I think I've got something more in line with what your looking for! It's definately on the right track anyway.
You can add textures too if you really want them but personally I think it looks fine the way it is :)
The idea is that you pre-cache your glowing vector geometry inside standard blitz meshes then clone as many as you like with CopyEnitity as and when you need them.
Should be fast enough!
Sorry I could'nt give you something more interesting to look at though!
Mess around with it and see what you think.
;*** GlowVectors - R. Ferriby
Graphics3D 800,600,32,0
SetBuffer BackBuffer()
AntiAlias 1
AppTitle "GlowVectors demo - R Ferriby"
;create ortho camera
Global camera%=CreateCamera()
CameraProjMode camera,2
CameraZoom camera,1.0/GraphicsWidth()
PositionEntity camera,0,100,0
AlignToVector camera,0,-1,0,3
Global template_mesh%=CreateTemplateMesh()
Global template_surf%=GetSurface(template_mesh,1)
;*** vector geometry
box%=CreateVectorMesh()
AddVector2D(box,-100, 100, 100, 100,2,255,160,0)
AddVector2D(box, 100, 100, 100,-100,2,255,160,0)
AddVector2D(box, 100,-100,-100,-100,2,255,160,0)
AddVector2D(box,-100,-100,-100, 100,2,255,160,0)
;*** add glow geometry
AddVector2D(box,-100, 100, 100, 100,20,255,160,0,0.25)
AddVector2D(box, 100, 100, 100,-100,20,255,160,0,0.25)
AddVector2D(box, 100,-100,-100,-100,20,255,160,0,0.25)
AddVector2D(box,-100,-100,-100, 100,20,255,160,0,0.25)
While Not KeyHit(1)
TurnEntity box,0,1,0
RenderWorld
Text 10,10,TrisRendered()
Flip 1
Wend
End
Function CreateVectorMesh%()
Local mesh%=CreateMesh()
Local surf%=CreateSurface(mesh)
EntityFX mesh,32+2+1+16
EntityBlend mesh,3
Return mesh
End Function
Function AddVector2D(mesh%,x1#,z1#,x2#,z2#,linethickness#=2,red#=255,green#=255,blue#=255,alpha#=1)
Local surf%,i%,c%,v1%,v2%,vi%,tv2%,tv3%
Local piv%=CreatePivot()
Local nx#,nz#,l#,x#,y#,z#
nx=x2-x1 : nz=z2-z1
l=Sqr(nx*nx+nz*nz)
If l=0 Then l=1
nx=nx/l : nz=nz/l
If Abs(nx)<0.00001 Then nx=0
If Abs(nz)<0.00001 Then nz=0
AlignToVector piv,nx,0,nz,3
ScaleEntity piv,1.0/linethickness,1.0/linethickness,1.0/linethickness
surf=GetSurface(mesh,1)
c=CountVertices(template_surf)
v1=AddVertex(surf,x1,0,z1,0,0)
VertexColor(surf,v1,red,green,blue,alpha)
v2=AddVertex(surf,x2,0,z2,0,0)
VertexColor(surf,v2,red,green,blue,alpha)
For i=0 To c-1
x=VertexX(template_surf,i)
z=VertexZ(template_surf,i)
TFormVector x,0,z,0,piv
x=TFormedX() : z=-TFormedZ()
vi=AddVertex(surf,x1+x,0,z1+z,0,0)
VertexColor surf,vi,red,green,blue,0
vi=AddVertex(surf,x2-x,0,z2-z,0,0)
VertexColor surf,vi,red,green,blue,0
Next
;*** make triangles
tv2=v1+2 : tv3=v2+2
For i=1 To c-1
AddTriangle(surf,v1,tv2,tv2+2)
AddTriangle(surf,v2,tv3,tv3+2)
tv2=tv2+2 : tv3=tv3+2
Next
AddTriangle(surf,v1+2,v1,v2)
AddTriangle(surf,v1+2,v2,v2+c+c)
AddTriangle(surf,v1,v1+c+c,v2+2)
AddTriangle(surf,v1,v2+2,v2)
FreeEntity piv
End Function
Function CreateTemplateMesh%(numsegments%=16)
Local mesh%,surf%,i%,v%
Local angle#,ang_inc#
mesh=CreateMesh()
surf=CreateSurface(mesh)
ang_inc=360.0/numsegments
angle=-90
For i=0 To numsegments/2
v=AddVertex(surf,Sin(angle),0,Cos(angle),0,1)
VertexColor(surf,v,255,255,255,0)
angle=angle+ang_inc
Next
HideEntity mesh
Return mesh
End Function
Cheers,
Roy