Thanks,
I'm really not sure that redoing your graphics in svg is going to
produce an automatic win. Odds are, you'll have to redo every piece of
artwork. If you want to experiment with svg, try playing around with
Adobe Flash. That's one of the most popular vector graphics
environments out there.
Nathan Mates
--
<*> Nathan Mates - personal webpage http://www.visi.com/~nathan/
# Programmer at Pandemic Studios -- http://www.pandemicstudios.com/
# NOT speaking for Pandemic Studios. "Care not what the neighbors
# think. What are the facts, and to how many decimal places?" -R.A. Heinlein
FWIW, in many cases it "may" be possible to convert (some) raster graphics
into vector graphics through the use of special algos. in particular, one
can detect "edges" (sudden changes in color), and then mark this as an edge.
then one can go "connect the dots" between edges, and eventually form a set
of regions (each region being effectively a loop filled with a homogenous
color).
note that, depending on specifics, it may or may not become necessary to
split non-convex regions (don't know as much about SVG specifically here). I
am aware that this can be done via a variant of the BSP algorithm, only I am
not sure if there is a better approach. note that this would more be needed
due to potential rendering reasons (lacking support for concaves), but the
splitting could potentially reduce the quality of spline-fitting...
then comes the harder part:
in order to gain clean scaling capabilities, one would need to then attempt
to match curves, and effectively replace groups of edge segments with
B-Splines (or similar...).
for all I know, there may already be tools for all this.
notes:
typically one will not get a 1:1 equivalent of the original image;
typically, this approach is less well suited to true-color graphics, where
the results will typically have an obvious change in appearence...
maybe also useful:
http://en.wikipedia.org/wiki/Vectorization_(computer_graphics)
another, much simpler approach, does exist. namely, one can process an image
and convert each pixel into a piece of geometry, and then maybe try to
"smooth" the edges as an additional step (or, it can be done by observing
adjacent pixels and generating a piece of geometry as appropriate).
however, this is a rather poor approach, and also does not tend to produce
particularly scalable images (one will face similar, or worse, issues when
compared to scaling raster images...).
I will also note that, if one is willing to stick with raster images, then
it is possible to implement much better interpolators than the typical
often-used linear interpolators. (for example, as opposed to interpolating
each pixel with a linear interpolator, one uses a cubic spline
interpolator...).
the difference in sharpness and detail in the scaled images is notable...
images remain "reasonably" sharp and accurate, whereas LERP-scaled images,
such as done by the HW and simplictic SW scaling, tends to (much more
quickly) become a blurry mess...
I had also experimented with sinc-based image resampling, however I was not
able to make this work effectively (both very slow, and with the small
windows I was using also not so good quality...). however, it would be
possible to rework and "optimize" this approach, but this is likely to
result (loosely) in a variant of the DWT (Discrete Wavelet Transform). I
have not personally tried this, however.
http://en.wikipedia.org/wiki/Discrete_wavelet_transform
http://en.wikipedia.org/wiki/Fast_wavelet_transform
note that how to make this usable as an image-scaling function would be left
as an excercise for the reader.
FWIW, I will say that the cubic splines are likely to be less effort, and
seem to work well enough...
note: how to construct a 2D cubic spline interpolator is also an excercise
for the reader... (it is not nearly so clean and elegant as the 1D case, as
I had found when doing such...).
or, for static images, one can potentially get them for free via using
GIMP...
(upsample images, maybe do some detail cleanup work...).
technically, for things like texturemaps, ... it may be almost worthwhile to
upscale some textures somewhat with a cubic interpolator, mostly so that one
less often faces the blurry mess resulting from the HW's use of LERP in its
magnification filters (it is, however, typically not so much of an issue
with minimization, as done in the case of trilinear or anistropic
filtering...).
or such...