Commit Graph

3752 Commits

Author SHA1 Message Date
32255b65df - added DerivedMesh.drawMapped{VertNormals,FaceNormals,FaceCenters}EM
functions and implementation for EditmeshDerivedMesh
 - switch drawobject to drawing normals/centers through the DerivedMesh
 - added G_DRAW_VNORMALS flag and button, implementation is not yet complete
   because editmesh normals are not updated regularly
 - switch editmesh draw buttons to use uiDefButBit (can't we get some
   monkey to convert all of the uiDefBut calls with TOG|BIT type? It
   makes grepping the source much nicer)
2005-07-23 07:45:39 +00:00
e125ed5958 - fix a bug with softbody, verts were copied out of order (meant
history was lost... I think, dunno this code well.)
 - commented out code to do merging of quad with 3 verts shared in
   mirror mode... didnt seem worth the effort and mesh still wasnt
   perfect afterwards
 - bug fix, indices for triangles were not swapped correctly in
   mirror, could lead to crash with subsurf in editmode
2005-07-23 06:05:29 +00:00
481a589ca6 - agh!!!! horrible code alert!!! pushdata/popdata in build_particle_system
actually copy Object data and then store it back later. Of course this
   means changes to object during the call are lost (and very hard to track
   down). Eekadoodle!

   Oh yeah, actual commit was to move call to fetch derived mesh above
   pushdata, because this call can alloc cache's in the Object (which won't
   get freed later if it is after pushdata)
2005-07-23 04:37:02 +00:00
7a6c4a23e7 - move build_particle_system to makeDispList, it was getting called
recursively in certain situations. needs review.
2005-07-22 22:01:39 +00:00
dcf210b826 Events added for:
- clear parent (didn't do a recalc data for deformed objects)
- add/remove object name in modifier menu (redraw event)
2005-07-22 21:42:56 +00:00
365bea41d6 Error in drawing of new armature options;
bglPolygonOffset(0) was accidentally called without it being set before,
causing window matrix to go weird. :)
2005-07-22 19:51:08 +00:00
05d45b888b Motion blur didn't work for Object Ipos (rest worked OK), so simple
fix. :)

Also removed the ugly old 'update for newframe' from renderwin.c, the
new call scene_update_for_newframe() does it much friendlier.
2005-07-22 19:24:10 +00:00
cb3d0afd87 - moved mesh_getVertexCos to mesh.c and prototyped
- make mesh_modifier build vertex locations on demand
2005-07-22 17:03:50 +00:00
b6b352e0b7 - got fed up with not being able to put a breakpoint on MEM_
errors, switched MEM_set_error_stream to MEM_set_error_callback
   that calls a function to print result instead of just giving
   a FILE *

Note: requires intern recompile
2005-07-22 16:40:26 +00:00
9e502dae6f - bug fix, old files with me->subdiv==0 crashed, fix to make sure they
don't crash and also changed patch to properly init SubsurfModifierData
2005-07-22 15:09:54 +00:00
e546e81762 - added data arguments to deformer modifiers, in case someone wants
to write one that is based on geometry (and not just vertex position)
 - added editmode versions of modifier deform/apply calls and flag
   to tag modifiers that support editmode
 - added isFinalCalc param to applyModifier, basically a switch to let
   subsurf know if it is calc'ng orco or not (so it can deal with cache
   appropriately). This is kinda hacky and perhaps I can come up with
   a better solution (its also a waste to do a complete subdivide just
   to get vertex locations).
 - changed ccgsubsurf to not preallocate hash's to be approximately correct
   size... this was probably not a big performance savings but means that
   the order of faces returned by the iterator can vary after the first
   call, this messes up orco calculation so dropped for time being.
 - minor bug fix, meshes with only key didn't get vertex normals correctly
   calc'd
 - updated editmesh derivedmesh to support auxiliary locations
 - changed mesh_calc_modifiers to alloc deformVerts on demand
 - added editmesh_calc_modifiers for calculating editmesh cage and final
   derivedmesh's
 - bug fix, update shadedisplist to always calc colors (even if totvert==0)
 - changed load_editMesh and make_edge to build me->medge even if totedge==0
   (incremental subsurf checks this)

todo: add drawFacesTex for ccgderivedmesh

So, modifiers in editmode are back (which means auto-mirror
in edit mode works now) although still not finished. Currently
no cage is computed, the cage is always the base mesh (in
other words, Optimal edge style editing is off), and the final
mesh currently includes all modifiers that work in edit mode
(including lattice and curve). At some point there will be toggles
for which modifiers affect the final/cage editmode derivedmesh's.

Also, very nice new feature is that incremental subsurf in object
mode returns a ccgderivedmesh object instead of copying to a new
displistmesh. This can make a *huge* speed difference, and is very
nice for working with deformed armatures (esp. with only small
per frame changes).
2005-07-22 07:37:15 +00:00
4060b82567 - put {} around the various minmax defines... this was a nice bughunt 2005-07-22 05:03:04 +00:00
438b5a6733 Fix for bug #2766: Shear shortcut broken
The problem is that the shear shortcut that was originally chosen was
eaten up by the shortcut to switch to the scale blezmo. Changed the
shortcut to CTRL + ALT + SHIFT + S which is painful but seeing as how
shear in object mode has limited use, I don't think it will cause any
real problems. I also updated the menu entry to match.

This was assigned to Martin but he's busy so I did it... and if I did it
wrong... blame him for not fixing it sooner ;)
2005-07-22 03:25:29 +00:00
451161c29e - bump blender version
- warning fixes (unused vars)
 - added do_lib_versions for patches that need to happen
   after linking and updated some patches.

There are still issues where patches can go wrong, particularly
if an Object is linked from another file. However, this should
fix all crashes.
2005-07-21 22:34:01 +00:00
96a6a38e00 New drawmode for the Armature geeks!
It was noticed that Bones dont perform well in 'xray' drawing, for that
purpose a very minimal style would serve best.
This new option "Line" draws a solid line with bitmap circles in endings.

http://www.blender.org/cms/Armature_draw_modes.629.0.html

Or temporal pics:

http://www.blender.org/bf/rt1.jpg
http://www.blender.org/bf/rt.jpg
2005-07-21 22:03:27 +00:00
24f2b61fdb - add comments to BKE_DerivedMesh.h about which functions are called in editmode
- gcc warning fixes
 - start work to make CCGDerivedMesh able to run in object mode (hint: more
   speed improvements)
 - fix modifier move down tooltip
2005-07-21 21:19:38 +00:00
33709bf6e2 - shuffled editmesh derived function name/function
- added ModifierTypeInfo.freeData function
 - added modifier_{new,free] utility function
 - added ccgSubSurf_getUseAgeCounts to query info
 - removed subsurf modifier faking (ME_SUBSURF flag is no
   longer valid). subsurf modifier gets converted on file load
   although there is obscure linked mesh situation where this
   can go wrong, will fix shortly. this also means that some
   places in the code that test/copy subsurf settings are broken
   for the time being.
 - shuffled modifier calculation to be simpler. note that
   all modifiers are currently disabled in editmode (including
   subsurf). don't worry, will return shortly.
 - bug fix, build modifier didn't randomize meshes with only verts
 - cleaned up subsurf_ccg and adapted for future editmode modifier
   work
 - added editmesh.derived{Cage,Final}, not used yet
 - added SubsurfModifierData.{mCache,emCache}, will be used to cache
   subsurf instead of caching in derivedmesh itself
 - removed old subsurf buttons
 - added do_modifiers_buttons to handle modifier events
 - removed count_object counting of modifier (subsurfed) objects...
   this would be nice to add back at some point but requires care.
   probably requires rewrite of counting system.

New feature: Incremental Subsurf in Object Mode

The previous release introduce incremental subsurf calculation during
editmode but it was not turned on during object mode. In general it
does not make sense to have it always enabled during object mode because
it requires caching a fair amount of information about the mesh which
is a waste of memory unless the mesh is often recalculated.

However, for mesh's that have subsurfed armatures for example, or that
have other modifiers so that the mesh is essentially changing on every
frame, it makes a lot of sense to keep the subsurf'd object around and
that is what the new incremental subsurf modifier toggle is for. The
intent is that the user will enable this option for (a) a mesh that is
currently under active editing or (b) a mesh that is heavily updated
in the scene, such as a character.

I will try to write more about this feature for release, because it
has advantages and disadvantages that are not immediately obvious (the
first user reaction will be to turn it on for ever object, which is
probably not correct).
2005-07-21 20:30:33 +00:00
9449f0b24f - changed GetRawFromObject to always return mesh name/info... this
is a behavior change from prev releases, used to be only NMesh that
   were not from a subsurf would have name...
2005-07-21 16:46:13 +00:00
676b9013ea Tsk, noob mistake in intrr's radiosity commit (not collecting invisible faces).
Didn't check pointer, so it crashed if the mesh didn't have TFaces.
2005-07-21 05:43:49 +00:00
15f6ce46b1 - apologies, made stupid newbie error in makesdna change (I'm blushing),
which majorly borked DNA and meant crashes everywhere. (C pointer
   arith, you know)
2005-07-21 02:56:45 +00:00
f17ecb5789 - add option argument to makesdna for path within which to look
for DNA includes instead of assuming run from in source dir
 - remove casts to long before comparing pointers (warning fix)
2005-07-20 20:46:01 +00:00
734d5b2dba - renderer always goes through DerivedMesh atm, means no need
to recalc vertex normals (can be assumed good)
2005-07-20 18:15:40 +00:00
bacb560634 - readfile incorrectly increased user count for Lattice & Curve
modifier objects
 - make unlink_object clear Lattice & Curve Modifier object references
 - add expand_modifiers for liblinking

There really needs to be a more consistent and unified way of dealing
with datablock references between objects. It should be possible to
make this generic so that lib_link, expand_, DEP graph, unlink,
oops and maybe outliner can use a single API. The code to deal with
this is too bulky and error prone at the moment.
2005-07-20 18:04:50 +00:00
8a947c27ab - fix convert XXX _to mesh to recalc mesh data 2005-07-20 16:45:41 +00:00
dc232fda47 Wow! A new feature!
- made ModifierData.isDisabled optional
 - Added new modifier type: Mirror
    o modifier system isn't running in editmode yet so still
      don't have mirrored editing, but otherwise it is pretty
      cool. code even goes to tricks to make sure mirror join
      looks nice in degenerate cases.
    o this kind of commit is basically the upshot of all the
      previous commits - in that implementing a new modifier
      changes only about 3 files and still integrates nearly
      completely.
2005-07-20 07:11:26 +00:00
eb9d466b48 - orco fix for build effect, didn't copy input vertex cos over (duh!) 2005-07-20 04:56:15 +00:00
38e0d79e68 - for some reason mesh_create_derived_no_deform took the raw data (not
an object) but this is not going to work... I can't remember the reason
   I did it this way in the first place either! oops! regardless, switch
   to all mesh_ derived accessors taking object argument. there is still
   a bug in render orco calculation though. (hunt hunt)
 - removed python files that should have been ditched in previous commit
2005-07-20 04:44:02 +00:00
259c7b6cad - added modifier_dependsOnTime to check if modifier needs updating
based on time change. would be nice if dep graph could handle this.
 - made dep check if modifiers need update on time change
 - fix render crash (access null)
 - added new Build Effect modifier type. compared to old one works as
   a full member of modifier system, means can apply subsurf, etc on
   it, reorder, what have you. and it is all nice and self contained.
 - removed old Build effect, old files convert to new style on load
 - couldn't help myself, added a randomize feature to build effect
 - removed Python BuildEffect support
2005-07-20 04:14:21 +00:00
ba28fc489a - added an array shuffling function to BLI_rand 2005-07-20 03:33:44 +00:00
87e76e8560 - fix for particle related crash in editmode. particle system calculation
is pretty haphazard at the moment, needs to be reviewed before next
   release (as does duplis).
2005-07-20 02:23:09 +00:00
3e843f80d7 Improper indentation in getParentBoneName docstring.
I must say, the use of hard tab in the doc files is very annoying as it goes against what is done for the rest of the source code.
2005-07-20 00:03:52 +00:00
d18600520e - added ModifierTypeInfo.updateDepgraph function, responsible for building
appropriate relations in dep graph (modifiers respond to scene changes
   correctly now)
 - update modifier buttons to trigger depgraph rebuild if needed
2005-07-19 23:04:34 +00:00
259a6fe8be - fixed subsurf_make_derived_from_dlm 2005-07-19 20:42:34 +00:00
fd6a1732e2 - vertex indexing in softbody was wrong after I switch loop direction 2005-07-19 20:29:22 +00:00
1df154d140 - split {curve,lattice,armature}_deform_verts out of mesh_deform
- removed mesh_deform (merge into mesh_modifier)
 - switch python lattice_apply function to use object_apply_deform,
   this isn't exactly equivalent but the python system shouldn't
   have been calling that deep into the kernel anyway.

New feature: Modifier stack
 - added Object.modifiers (list of ModifierData elements)
 - added DNA_modifier_types.h
     o contains type definition for the file data for the various
       modifier types
 - added BKE_modifier.h
     o contains modifierType_get_info (access to modifier type registry)
     o structs and defines for runtime modifier usage
 - updated mesh_calc_modifiers to evaluate modifier stack (note that
   for the time being it also evaluates the old style modifiers so files
   should load and work as normal).
 - add file handling modifier code (todo: don't replicate on object copy)
 - add modifier stack UI code (lives in object panel)


Only real new feature at the moment is that you can apply lattices and
curves *after* a subdivision surface which was never possible before.

Todo:
 - DEP graph updating does not work correctly yet, so you generally have
   to tab cycle to see results.
 - editmode calculation does not use modifier stack.
 - bug fixes (there must be a few in there somewhere)
2005-07-19 20:14:17 +00:00
f1763b2f08 Fix: CTRL+Click adding bones didn't attach them to the parent! 2005-07-19 19:25:17 +00:00
2801c8b20a __ bug fix__
- internal methods for mathutils class need to incref before returning a pointer to self
  * memory allocation errors (freeing bad pointers) were appearing after repeatedly calling internal methods on the same object due to ref counts.
2005-07-19 18:47:25 +00:00
19abd72baa Couple of fixes combined;
- With Actions on a Pose, ESC in transform restored wrong.
  This is solved similar to ipos now, storing a 'last time evaluated'.
  Could be extended to ghosting... soon.
- Moving the little yellow 'key blocks' in Action window didn't update
  3d window. ALso the 'lock' option didn't work, and flashed header.
- Pose Transform: noticed there were still errors in cases, especially
  with actions. Painfully tried to build the desired matrix now.
- Removed obsolete Bone pointer from TransData
2005-07-19 16:12:56 +00:00
b344db3670 First step towards restoring / improving subdivide 'beauty'.
Beauty button now is Beauty and Short.

Works as follows

Beauty on: If a face is selected, only subdivide the longest 2 sides
Beauty & Short on: If a face is selected, only subdivide the shortest 2 sides

1 problem atm is when more than 2 sides are equal. Must add code to check for this and disable beauty on that face. Use with caution! :)

Also restoring selection needs to be tweaked here.

Side Note: for most accurate subdividing, use edge mode and select only the edges you wish to cut rather than relying on beauty.
2005-07-19 15:37:18 +00:00
8d2d045079 -Patch submitted by Campbell Barton
-Fixed matrix.invert() to return the correct inverse matrix
2005-07-19 14:17:07 +00:00
29855c895c Grms... removed too happily a part of depgraph yesterday. That fix was OK,
but doesn't make the removed code obsolete :)
Error was that transform on deformed objects didn't set recalc flags
2005-07-19 11:47:22 +00:00
e700b79587 Removed last remainder of old transform. The function is still called
special_aftertrans_update() though...
2005-07-19 11:21:01 +00:00
5f22838822 Bugfix #2818
On importing a file (dxf for example), the active filename got set to the
imported filename, causing save-over to use that too. Tracked it down to
be a very old feature... better to remove this, doesn't work according
specs!
2005-07-19 10:50:13 +00:00
8fa42457ca 1) Removed old annoyance in adding armature or bones.
- Add Armature or Bone (SHIFT+A) now adds by default a single Bone, view
  aligned and of unit-size 1.
- Then use E-key (extrude) to draw chains, this option now doesn't popup
  the "OK" requester anymore, so works fast
- Another new method is using CTRL+click to add Bones

This makes it working identical to the other edit modes in Blender. The old
modal loop for drawing bones just wasn't working well either.

Related to this; have a real set of useful Armature primitives?

2) Removed event REMAKEALLIPO, which was added in NaN days for testing, and
proved to be extremely slow. Code is moved now to editnla.c.
Thanks Tom Hendrick to pointing to this nasty buggy feature!
2005-07-19 10:06:57 +00:00
1baf64cd45 Bug fix; pose mode transform didn't count # of selected bones correctly,
skipping selected bones with parent but without "IK to Parent"
2005-07-19 08:02:27 +00:00
da93fdc9ee Added DAG flush to NMesh when updating geometry (was needed after zr's latest commits).
I added that in mesh_update, if anyone has a better idea, feel free to fix it.
2005-07-19 05:35:35 +00:00
59a2980611 - some missing changes for switch of mesh_modifier to
deform new verts array.

I don't really know how to use softbody, so it would be nice
if someone would test this for me.
2005-07-19 04:27:43 +00:00
09b5272639 - split mesh_deform off from object_deform
- changed mesh_modifier, sbObjectStep, object_deform to take vertexCo
   argument instead of operating on mesh
 - fixed bug where a derived mesh would not be returned in editmode
 - removed object_wave, replaced by init_wave_deform and calc_wave_deform
 - moved cached DerivedMesh to Object, not Mesh... fixes heisenbugs
   with linked objects
2005-07-19 02:36:21 +00:00
8962195f21 Fix for bug #2848 This flushes selection upward in subdivide based on select mode. So faces with all edges selected should now be selected as well. 2005-07-19 02:23:52 +00:00
3181991e86 - silly bug, didn't test for hash before freeing 2005-07-19 01:12:14 +00:00