Countvertices and Counttriangles don't work?

Blitz3D Forums/Blitz3D Programming/Countvertices and Counttriangles don't work?

mrtricks(Posted 2004) [#1]
For some reason, however I code it, it always returns zero.


fredborg(Posted 2004) [#2]
Maybe there are zero vertices/tris in the surface you are checking...

Try this:
function DebugMeshCounts(mesh)
n_surfs = countsurfaces(mesh)
debuglog "surfaces: "+n_surfs
for s = 1 to n_surfs
surf = getsurface(mesh,s)
n_verts = countvertices(surf)
n_tris = counttriangles(surf)
debuglog "surface "+s+" verts: "+n_verts+" tris: "+n_tris
t_verts = t_verts+n_verts
t_tris = t_tris+n_tris
next
debuglog "total verts: "+t_verts
debuglog "total tris: "+t_tris
end function



mrtricks(Posted 2004) [#3]
Thanks. I just found a funny thing though which explains it all. I'm using AddMesh to add one to another, and it always seems to add the mesh to surface 2 of the destination mesh. I didn't even create surface 2.


Shambler(Posted 2004) [#4]
If the mesh you are adding has different surface attributes to the target mesh Blitz will create new surfaces in the target mesh.


mrtricks(Posted 2004) [#5]
Mmmm... what attributes could they be? I haven't even done anything with the surface. I created a surface, then used AddMesh straight away. Maybe I need to PaintSurface the first surface?

[edit] No, that doesn't work. Even if I don't create surface 1, using AddMesh results in 2 surfaces.


DJWoodgate(Posted 2004) [#6]
Are you saying you have a completely empty mesh and you add a mesh to this that has only one surface and you end up with two surfaces? (that would be weird). Or does the mesh you are adding to already have a surface? If it does and the two surfaces have been painted with the same brush then I would expect the surfaces to be merged, unless of course the vertex limit would be exceeded in which case I would expect a second surface to be created. If you have not painted both the surfaces though maybe they are being created with different attributes or some attributes are undefined. I have not tried that but it would not suprise me.


Shambler(Posted 2004) [#7]
Check out this example, it may clear things up, then again lol

Graphics3D 800,600

mesh=CreateMesh()
    s1=CountSurfaces(mesh)

surf=CreateSurface(mesh)
    s2=CountSurfaces(mesh)

cube=CreateCube()
AddMesh cube,mesh
    s3=CountSurfaces(mesh)

sphere=CreateSphere()
brush=CreateBrush(255,0,0)
PaintMesh sphere,brush
AddMesh sphere,mesh
    s4=CountSurfaces(mesh)


While Not KeyHit(1)
Text 0,0,"Surfcount of mesh "+s1+" because we haven't made any surfaces yet"
Text 0,10,"Surfcount after creating a surface "+s2+" we just created one surface"
Text 0,20,"Surfcount after addmeshing the cube "+s3+" the cube has the same brush properties as the empty surface"
Text 0,30,"Surfcount after addmeshing the sphere "+s4+" the sphere has different brush properties to the cube"
Flip
Wend




mrtricks(Posted 2004) [#8]
That's what I thought. I've been using the same brush though so I don't know what's up. Also I am adding the mesh to a mesh with no surfaces, and still getting 2. I need to really take a good look at my code.