create a new parameter for materials.pop() to not remove material slot.
this way the mat_nr is still the old one.
for the default behaviour we now have material remapping (i.e. data_delete_material_index_id(id, index)).
This new function is brought from the material_slot remove function.
- making local object data - Curve/Mesh/MBall lost references to linked materials.
- joining a linked mesh object into a local one lost the link.
As well as these reported bugs, checked all local functions for consistency/correctness and found other cases which would also fail.
- making local metaball didn't ensure unique ID name.
- make_local_armature() was missing check for object users - main body of code would never run.
- local particles didn't set the dupli-group or textures to extern.
checked all local functions for consistency/correctness.
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.
on smooth/flat flag on faces. This does give better results for low poly
game models, but there's just too much functionality that depends on this
(modifiers, displacey, editmode tools, extrude, ...), that there's not
enough time to fix these before the release.
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.
into account that some tools use normals for things other than display. Now
we properly initialize vertex normals at flat faces too.
Also fixed a normal refresh issue, and deduplicated CDDM/mesh normal
calculation code.
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).
weighted normals as the render engine, and the render engine will copy
normals from the mesh rather than always recalculating them.
Subsurf/multires still use regular vertex normals, but they are expected
to be sufficiently high resolution to not need this.
This means that normal maps displayed in the viewport actually match the
render engine exactly and don't have artifacts due to this discrepancy.
It of course also avoids unexpected surprises where your render normals
look different than your viewport normals.
Subversion bumped to 4 for version patch to recalculate normals.
Patch by Morten Mikkelsen, with some small changes.
Fixed join meshes, and an annoying modifier bug (making modifiers
not work in editmode). Also fixed a tesselation bug.
Also got edge slide to work right, yay! Dunno why I couldn't get
it working right before; took me twenty minutes to fix.
- use NULL rather then 0 where possible (makes code & function calls more readable IMHO).
- set static variables and functions (exposed some unused vars/funcs).
- use func(void) rather then func() for definitions.
tested that correcting invalid meshes works by generating random meshes and checking that only the first call to mesh.validate() makes changes.
found 2 bugs in mesh validation.
- face sorting array wasn't assigned correct indices.
- removing invalid edges used wrong comparison.
Use object's displists for storing deformed tesselated curve. Was unable to
totally get rid of curve's displist because of how texture space is calculating.
only tags the ID and does the actual flush/update delayed, before the next
redraw. For objects the update was already delayed, just flushing wasn't
yet.
This should help performance in python and animation editors, by making
calls to RNA property update quicker. Still need to add calls in a few
places where this was previously avoided due to bad performance.
Also use const char in many other parts of blenders code.
Currently this gives warnings for setting operator id, label and description since these are an exception and allocated beforehand.
I've got my testing framework done now. It's based on
recording events at the GHOST level. This has issues;
a test created on one computer might not pass on
another, due to floating point inaccuracies (though
I tried to blunt this a bit).
This isn't appropriate for general use. I
wrote it for personal use, and other devs might
find it useful for their personal use as well.
However, it lacks the reliability you'd need for
a real unit testing framework.
This isn't meant to replace lief's work, by any means, which
is a real unit testing framework.
- Revert of my old change in curve->mesh conversion
- Do not ignore DL_POLYs for surfaces -- they will never be filled,
but ignore them for 2d curves -- they'll be filled with INDEX3 parts.