Made the new "superknife" tool much stabler
then it was, though a few minor quirks remain.
Rather then the shortest-distance-in-graph method
I was using to rebuild the mesh post-knife I
reworked it to build a triangulation instead,
then merge the triangles into the right correct
faces.
Multires interpolation now works on cases like
simple cubes. (though it isn't perfect
when bevelling sharp corners).
Normal flipping is handled correctly, and
multires interpolation now works on
normal-inconsistent meshes (so long as
they are manifold, at least).
Multires interpolation is now nearly perfect, but has some
issues on faces whose angle to each other isn't relatively
shallow (probably need to use some sort of fast spatial structure
to more accurately project multires points).
It also doesn't work super well with bevel (mostly due to a
flipped normals bug in bevel I need to get around to fixing).
And, for some reason extrude tends to explode the multires
geometry (it should just be copying it).
Since edge cut doesn't do anything yet with face interpolation,
cuts that arn't exactly centered will move the underlying multires
geometry around a bit..
Multires interpolation is considerably better
now, though it still has a problem with occasionally
producing little random tangent spikes. Still, it's
far better then it was.
Also fixed a bug in dissolve faces.
Improved edge subdivide. The last tool panel
is a bit clearer, with a "quad/tri" checkbox
(that, in addition to turning on the old
singe-edge-triangluation feature also
automatically switches cornervert to Inner Vert
if it is Straight, to avoid producing ngons).
I also rewrote fractal to be more likes its name, and
removed the "smoothness" parameter (which never
worked, anyway, even in trunk). Also removed the
grid fill paramter, it wasn't all that useful.
Multires interpolation. It's quite usable yet; I wanted to avoid
subsurfing the multires data and ray tracing original/new
topology. The result is kindof like trunk's interpolation.
I'll see how much better I can get it. I might have to go with
the full-on ray tracing solution. Right now, it's not very good.
Also made it so trunk files with multires open correctly.
Coded a new modifier, "Precision UV Interpolation",
that triangulates, subdivides, then uses brecht's mean
value interpolation to interpolate face data.
Textures on ngon faces get interpolated a bit nicer, in
other words (though concave cases, e.g. 'N', don't work very well).
Bevel! Implemented bevel (from scratch). Man is
this tool way cooler then I thought it was. Note that
uv/vcol interpolation is working (loop level data) but
vert/edge data (like vgroups) likely still needs
work.
Fixed view selected code. Made MDisps->disps use the
special allocation library I wrote as a
temporary fix to MDeformGroup->dw problems.
Why was the vgroup solution reused? It's really slow,
and its hard to tie in something like mempool or memarena.
The hackish allocator I wrote really needs to go, eventually,
or be folded into guardedalloc.
Also fixed a customdata bug with modifiers.
Mirror modifier no longer uses bmesh, but is now
100% CDDM. This is faster; the sluggishness was
driving me crazy. Still need to deal with UVs,
but that shouldn't be hard.
Layer height used to be controlled with brush radius, quite confusing decision.
Added new property for brushes - height for adjusting affectable brush height
(it could be not only layer height in the future).