[sldev] 3D mesh support, vs lossless compressed sculpts

Carlo Wood carlo at alinoe.com
Fri Mar 20 11:15:28 PDT 2009


I have spend most of my time studying sculpties lately.
They are indeed very limited. I definitely second
support for a raw mesh (which hopefull will then also
be possible to be used for avatar shapes!).

The current situation is this:

If a cam moves further away, the viewer switches to
another LOD (level of detail), meaning that it switches
from 33x33 points to 17x17 points, and finally to
9x9 points.

The sculpties we are talking about do not like lossy
compression: they are such that as soon as you throw
away points the result is pure junk. LOD simply doesn't
work for such sculpties (it works for rocks, not for
chairs, or staircases).

As a result, the designers of sculpties are forced
to restrict themselves to 9x9 grids in the first
place (8x8 rectangles): thus, the scultpie exists of
64 flat rectangles, where each rectangle exists of
32 triangles! That is 30 triangles MORE than needed :(.

[ There is an additional problem that I ran into:
  for some scultpies the viewer doesn't even switch
  to 8x8/9x9, but switches to a totally unrelated 'sphere'
  shape. I have not yet been able to figure out under
  what circumstances this happens. If anyone can tell
  me why this happens and how it can be avoid, please! ]

I have the following proposal:

Currently sculpties work as follows:

Consider an image of 64x64 pixels (24 bits each)

 63   * + * + * + ...
 62   * + * + * + ...
      + + + + + + ...
 60   * + * + * + ...
      + + + + + + ...
      .
      .
      .
      + + + + + + ...
  0   * + * + * + ...
      0   2   4   ...

Then in the highest LOD, all *'s are used, that is:
All pixels with even coordinates, and instead of
row and column 64, row and column 63 is used (because
row/col 64 don't exist). Then, depending on the
stitching type, some/all points in row's 0 and 63 and
some/all points column 63 are also ignored. But in
the 'plane' stitching type, all 33 rows and cols are
used.

One level of detail lower (17x17), the following points are used:

 63   * + + + * + ...
 62   + + + + + + ...
      + + + + + + ...
 60   * + + + * + ...
      + + + + + + ...
      .
      .
      .
      + + + + + + ...
  0   * + + + * + ...
      0   2   4   ...

In other words, continuing to consider 63 as 64,
every row and column that is a multiple of 4.

Wouldn't it make a lot more sense to use the 33x33
square of pixels with coordinates (x, y),
where 0 <= x <= 32, and 0 <= y <= 32 for
the highest LOD, and then use 33 <= x,y <= 50
for the next LOD and 51 <= x,y <= 59 for
the last LOD?

That way people can define their own LOD.

Even better would be to not degrade the LOD
at all these type of sculpties: that is simply
not possible and doing so only demands to
design 8x8 sculpties in order to make them
still look acceptable at larger distances :(

-- 
Carlo Wood <carlo at alinoe.com>


More information about the SLDev mailing list