   Model File Format question
  Almost every model format I look at stores a triangles data structure in the file. Is there a reason why anyone would want to store raw triangles in the file instead of storing an optimized mesh in a Triangle Strip format? Is there a reason why data is duplicated in a model format such as 3DS or ms3d?I'm assuming it's because a 3d editor can easily manipulate triangles, rather then rebuilding a mesh each time a modification is made.Are there any 3D formats that store their data as a Triangle Strip (or any other optimized format)? Is this a viable option for a file format?   
Quote:Original post by RealMarkPAre there any 3D formats that store their data as a Triangle Strip (or any other optimized format)?Not any you'd want to use. Quote:Original post by RealMarkPIs this a viable option for a file format?It's not a particularly clever way of doing things, since it would inherently modify the source data (which would have been authored as tri's in Max/Maya etc). Imho, it's up to you to make those modifications - it's not really something a file format should be doing.   ;  In that case, is there a defacto (or best) algorithm for converting Triangles into Triangle Strips?   ;  I've been told that nvidia has one that is freely distributed.But really; it's quite easy to program one.  But it is CPU intensive O(n^3) for a perfect optimization or close to O(n^2) for an acceptable one :O(n^3) solution :for every remaining vertex-start a strips from this vertex for every possible strip start (ie : if many vertices touch that vertex; there are many possible strip start).-if there are more faces not yet stripped; do a degenerate triangle to reach vertices to that face.Do that recursively and return the best resultThe good news is : there are multiple easy optimizations AND it is quite easily multi-threadable.  So you can end up with O(n^2) on multiple threads wich makes it very acceptable.   ;  For the modern PC graphics card you should prefer indexed triangle soup over triangle strips.  Even though they take up a little more space, "triangle soup" can be optimized for the graphics card data cache to yield big performance benefits. It is up to the drivers to optimize the triangle soup for the specific video card, and they do an excellent job of it.  You can use D3D mesh vertex objects or OpenGL VBOs, since they both perform the optimizations.  But sometimes you really do need triangle strips.  Not everybody gets to develop for the PC with modern graphics cards.  In that case, indexed triangle strips are the way to go.  In that case, check out NVidia's free NvTriStrip library.   ;  In my current project I'm trying to increase fps using triangle strips. So I tried NVTriStrip and Stripe.Stripe also gives quite good results and it writes triangle strips into .obj format. So you don't need to reconstruct strips from triangles.Then I found Balancer. Balancer keeps materials, and triangle strips that I reconstruct seem to always have the same material. The freely distributed beta of Balacer Lite works with small meshes only. So nobody knows how good it is for large meshes. But my meshes are all small, so by now it does a good job for me.   