Thought I would post what I found today after running some numbers. I
tested 4 different single skin meshes. What I did was count the number of
unique vertices, normals and UV's in each mesh. Basiclly what I found out
is the following:
1) Charles Bloom said "On a regular mesh, there are only N/2 real
vertices." I read this a couple of time and wondered where he came up with
this. Looking at the 4 models I did indeed see that they all had roughly
had half the number unique vertices then number of faces. I am guessing
Charles come up with this based on raw experience. Good thing to know...
2) In all 4 cases the storage for having 2 lists of indices (vertex /
texcoord) was 40% larger. This was based on a 2byte index. So it seems
quite clear that introducing redundant a vertex when you have more then one
texcoord assigned to the vertex, is the way to go.
3) I think that introducing a redundant vertex due to more then one normal
assigned to the vertex should be done with care. Only normals that fail the
smoothening cuttoff should cause a redundant vertex to be introduced.. If
you don't introduce a redundant vertex when an edge is expected to be
preserved then I think you will get a visit from your artist yelling at you.
For all the other normals, I think that you can get away with finding 1 best
fit normal for each vertex since I don't think people will pick up on the
difference in shading.
Question: With a model that is 1000-1200 triangles, could I use a modified
md2 compression? The md2's if I recall, used a 3 char's for all the
vertices that got scaled by a global float. This worked well for low poly
characters but I suspect that the higher the poly count the worse this
looks. What if you used 3 shorts instead? Anyone try this? Maybe a 12.4?
What about this same method for vertex weights?
----- Original Message -----
From: Gil Gribb <ggribb@...>
Sent: Saturday, February 17, 2001 9:43 AM
Subject: Re: [Algorithms] Character format.
> We are using indexed scheme on the psx2. We don't overwrite our input, we
> use a small, double output buffer. You can't really use strips anyway if
> want good mipmapping.
> > BTW I think we can start to discuss some amount of PS2 NDA stuff, since
> > Dominic posted a little bit of a leak on Gamasutra; hence I figure
> > he says there is fair game to say here. (for example, that the VU1 has
> > of memory).
> > At 11:07 AM 2/17/2001 +1030, Adam Batters wrote:
> > >The real problem is that because there's such a small amount of memory
> > >the vector units you want to overwrite your input data with your output
> > >data, which obviously excludes you from using indexed data.
> > Yeah, that's a good point that I hadn't really considered. I have
> > this "mini-vertex buffer" scheme on the PS2, though not really in the
> > quality that I desired. We managed to fit 220 verts (double buffered)
> > memory. Obviously, you don't output a full 400 vert strip at once; you
> > several little GS strips from each input chunk and output them.
> > I think it's definitely a good way to go if your per-vertex work is
> > expensive, since you reduce the number of verts to transform and light
> > factor of almost 2. If you're not doing a lot of work on the verts,
> > obviously not a win, since the really fast one-pass method overwriting
> > input
> > is the way to go.
> > ----------------------------------------------------
> > Charles Bloom cbloom@... http://www.cbloom.com
> > _______________________________________________
> > GDAlgorithms-list mailing list
> > GDAlgorithms-list@...
> > http://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
> GDAlgorithms-list mailing list