Commit Graph

10681 Commits

Author SHA1 Message Date
Daniel Dunbar a92a513c19 - missed commit of file with mesh_calc_normals 2005-07-17 21:24:43 +00:00
Daniel Dunbar e6e9b1ea80 - replace displistmesh_calc_normals by mesh_calc_normals
- convert MeshDerivedMesh to calculate new vertex normals and such
   on initialize, means copy free conversion to DispListMesh
 - replace vertex access through function by direct access fo
   MeshDerivedMesh
 - shadeDispList was not getting correct orco's
2005-07-17 20:12:16 +00:00
Daniel Dunbar 75fefdc5a7 - need to release object DerivedMesh prior to release object data 2005-07-17 19:15:06 +00:00
Ton Roosendaal 141e577353 More fixes thanks to irc testing;
- On exit editmode and after deleting bones, a pointer in PoseChannels
  was not set NULL correctly, causing potential crashes.
- Action Window: select on 'ipo key' (little icon) didn't select/deselect
  the associated bone (old bug!)
- After unlinking an Action, the blue color in bones was not cleared

Also:

- Improved selection in editmode, doing it in 2 stages. Makes it a lot more
  accurate.
2005-07-17 19:08:04 +00:00
Daniel Dunbar a229931ce6 - switch shadeDispList to use DLM face normals if available 2005-07-17 18:51:50 +00:00
Daniel Dunbar 033f3d5126 - switch shadeDispList to always using DispListMesh from
mesh_get_derived_final... a bit slower atm because of extraneous
   copying (will be fixed shortly) but normals are correct for deformed
   meshes now (don't think they ever have been)
2005-07-17 18:37:27 +00:00
Daniel Dunbar 61fe766897 - removed unused DL_TRIA type 2005-07-17 17:43:15 +00:00
Daniel Dunbar 726aea881c - convert mesh_modifier to return deformed verts instead of
leaving in a DL_VERTS type displist (and modifying mesh)
 - removed DL_VERTS displist type (woot woot)
 - makeDispListMesh now puts deformed verts in object->derivedDeform
 - switch over other system parts to new deformed vert storage,
   still kinda hacky and maybe some inconsistencies... will be
   sorted out soon enough.
 - moved build_particle_system to makeDispListMesh... this may have
   adverse side effects, needs to be sorted out with depgraph system
2005-07-17 17:41:03 +00:00
Daniel Dunbar 099b3e786c - made particles use displistmesh not DerivedMesh interface 2005-07-17 17:33:09 +00:00
Daniel Dunbar 675f18707e - back out ton's vertex_duplilist "fix" 2005-07-17 16:16:22 +00:00
Ton Roosendaal d5ccd35f4c While checking old bugreports on the todo tracker, found weak issue in
current depgraph... that's when an object has multiple "parents", which
have different relation types. (one parent moves Object, the other
deforms). In that case the result was undefined.

Solved it nicely with the DAG building code, resulting in quicker flushing
of changes even.
Also noted a bug in the drawview.c 'object_handle_update' call, which
should not check for layers. The DAG flushing clears recalc flags for
invisible layers, if possible. Now need to write that @#!# doc!
2005-07-17 12:20:08 +00:00
Ton Roosendaal 3ab974ca58 Bugfix #2836
Crash in Vertex-duplicator when there's an empty Mesh. Simply added check
for dm pointer. :)
2005-07-17 09:49:02 +00:00
Ton Roosendaal ef73b6f140 New: B-Bones now support adjusting the 'handle length', with the values
"In" and "Out" in the new posemode Panel, editing buttons.

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

Fix in image.c: just an unitialized variable.
2005-07-17 08:58:42 +00:00
Daniel Dunbar 581df16520 - add DerivedMesh *derivedDeform to struct Object, this is temporary
until fullblown modifier system comes in, need it now to move forward.
2005-07-17 05:34:35 +00:00
Daniel Dunbar e1c653c5c3 - convert vertex_duplilist to use mesh_get_derived_deform
- convert object_apply_deform to use mesh_get_derived_deform
 - convert build_particle_system to use mesh_get_derived_deform
 - remove apply option from mesh_modifier

What do you know, this leaves only one callsite for mesh_modifier
and one "user" site for DL_VERTS...
2005-07-17 05:20:57 +00:00
Daniel Dunbar e6f4527813 - added DerivedMesh.getMinMax function (calls DO_MINMAX on all vertices)
- static'd boundbox_displist
 - added getMinMax implementations for all existing DerivedMesh
   implementations (mesh, editmesh, displistmesh, and ccgsubsurf)
2005-07-17 04:17:33 +00:00
Daniel Dunbar b3169b22b8 - convert give_parvert to use mesh_get_derived_deform 2005-07-17 01:29:12 +00:00
Daniel Dunbar bbb83af14c - converted write_videoscape_mesh to use mesh_get_derived_deform 2005-07-17 01:23:43 +00:00
Daniel Dunbar 67d58c0f45 - added DirectMesh.getVert{Co,No} functions
- added mesh_get_derived_deform function (always returns a DerivedMesh
   corresponding to deformed (but not subdivided) mesh). used in places
   where original mesh is to be displayed but with deformed coordinates
   (vpaint for example).
 - added DirectMesh.getVert{Co,No} implementations for MeshDerivedMesh
 - updated vpaint to use mesh_get_derived_deform
2005-07-17 01:18:59 +00:00
Daniel Dunbar 3166974a67 - switch M_NMesh_GetRawFromObject to always get mesh data from
DerivedMesh (needs testing)
 - added needsFree argument to mesh_get_derived_final
2005-07-16 21:20:44 +00:00
Daniel Dunbar d2fb9ae533 - added dontFreeNors flag to DispListMesh as well
- changed mesh_get_derived_render to always return a DerivedMesh (even if
   no subsurf)
 - changed init_render_mesh to always get the mesh data through a
   DerivedMesh
2005-07-16 21:16:05 +00:00
Daniel Dunbar 6dd382f966 - added dontFreeVerts and dontFreeOther flags to displistmesh for
situations where data can be shared easily.
 - added convertDisplistToMesh function for regular mesh DerivedMesh
   interface (how many times can *you* use mesh in one sentence?)
 - do_puno was uninitialized in init_render_mesh
 - added mesh_get_derived_final (temporary), difference from
   mesh_get_derived is it always returns a derived mesh, even if
   no subsurf.
2005-07-16 21:03:28 +00:00
Ton Roosendaal e67ba0ae33 More armature goodies;
The B-Bones!
(where the B can be read as 'block' or 'bezier' or 'b-spline')

- set option on/off in edit buttons, armature panel
- scaling of B-bones only works in editmode, use ALT+S to make bones fatter
  or thinner. Also works for constrainted transform
- In pose mode, you now have a buttons panel with per-bone settings too
  Here you can find the "segments" button, which allows bones to
  interpolate between previous/next bones, including roll.
- Buttons to control interpolation ("In" and "Out" are disabled, doesn't
  work satisfying yet

NOTE: this doesn't give deform yet! Main purpose for now is to test if this
drawing method serves to animate/pose armatures well.
Still need to review proper interpolation methods... maybe bezier is too
limited.
2005-07-16 19:07:02 +00:00
Daniel Dunbar 8d2176bfeb - removed makeDispList, set_displist_onlyzero
- appropriate callers of makeDispList replaced with depgraph calls
 - unappropriate places just killed... small chance this gives some
   errors in corner cases if dep graph isn't notified (example, font
   family displists) but these can be tracked down as they show up.
 - still a large number of callers of makeDispListCurveTypes, but
   makeDispListMesh has just a few.
2005-07-15 20:56:55 +00:00
Daniel Dunbar 0be013010f - decided it made more sense to make a key_get_active function, switched
to that in editmesh as well as for edit{curve,lattice}
 - added a G.editModeTitleExtra string that gets displayed in header info
   string in editmode. currently used to display "(Key)" when editing a
   key (before there was not UI level display of this info).
2005-07-15 17:55:19 +00:00
Daniel Dunbar 925c024653 - more signedness warning fixes in editsima
- added mesh_get_active_key and replaced code in editmesh to use this
 - removed obsolete code in object_deform
2005-07-15 17:31:58 +00:00
Daniel Dunbar 2501bc1ad6 - static'd several functions in key.c, just for readability 2005-07-15 14:50:48 +00:00
Daniel Dunbar 8da29921ba - added mesh_get_texspace (should be used instead of direct access)
which calculates texspace on demand if need be.
 - removed almost all calls to tex_space_mesh

There may be a few corner cases where this goes wrong (meshes with vertex
keys) but these should get ironed out by coming modifier system.
2005-07-14 21:57:18 +00:00
Daniel Dunbar 0b89046790 - incremental subsurf calc in mesh_changed didn't actually make sure
mesh used subsurf before calc (led to crash when subdiv==0). Woops!
2005-07-14 20:42:43 +00:00
Daniel Dunbar 3929802335 - switch several instances of makeDispList to use more specific version 2005-07-14 18:14:19 +00:00
Daniel Dunbar 6711eb9152 - make mesh_changed invalidate the mesh boundbox as well 2005-07-14 18:06:53 +00:00
Daniel Dunbar b22e3414ca - add mesh_get_bb function to return mesh boundbox and calc if needed
- switch all mesh boundbox access to go through mesh_get_bb
 - switch object_handle_update to call mesh_changed instead of making
   the displist data immediately (delayed calculation)
2005-07-14 18:04:27 +00:00
Daniel Dunbar 3f769ff371 - change subsurf_make_derived_from_editmesh to check that subdivision
levels match before proceeding with incremental (need to build new
   subdivision object if levels have changed)
2005-07-14 17:59:36 +00:00
Daniel Dunbar aa454cd412 - switch to using DAG_object_flush_update instead of mesh_changed
- mesh drawing calculated derived surface before clipping to view matrix,
   waste for offscreen objects
2005-07-14 17:10:44 +00:00
Daniel Dunbar a2694df9d0 - removed line that slipped in by accident 2005-07-14 15:50:43 +00:00
Daniel Dunbar befc2bbc41 - split makeDispList into makeDispList{Mesh,MBall,CurveTypes}, there is
still a makeDispList that dispatches to the appropriate one.
   makeDispList is on the way out and this makes it easier to track down
   exactly which places use makedispList and for what types of objects.
 - switch calls to makeDispList to appropriate more specific function (if
   the object type is known by caller).
 - added mesh_changed function that invalidates cached mesh data (but does
   not rebuild, mesh data gets rebuilt on access). Most old calls to
   makeDispListMesh use this instead now.
2005-07-14 15:48:01 +00:00
Daniel Dunbar 1261dc7e4e - part of DerivedMesh interface change from yesterday that got left out 2005-07-14 15:30:30 +00:00
Ton Roosendaal 967e294d9c Three fixes;
- Armature editmode, while armature was deforming children, was very slow
  because it kept making subsurfs... this goes still hackish :)
- CTRL+A on armatures used loadsa old code, removed all of it! Still works.
- Using "Set smooth" or "Set solid" on file loaded without 3d window
  crashed
2005-07-13 21:28:43 +00:00
Daniel Dunbar 2bde6502f2 - Change DerivedMesh.drawSolidFaces setMaterial argument to return
boolean value indicating whether faces with that material should
   be drawn or not.
2005-07-13 20:16:35 +00:00
Ton Roosendaal 75ae1ae5ef Armature "XRay mode" now draws nicely with solid too. For it to work, I
had to add a new feature to the 3d window, to collect "after draw" objects,
which get drawn as last, after a clear of the zbuffer.

Same method can be used for nice OpenGL transparent draw, the system is
ready for it, do that later.

The huge commit is caused by cleaning up globals from struct Global. Many
variables were unused or just not needed anymore. Did that to move the ugly
G.zbuf to where it belongs, in the View3D space struct. :)
2005-07-13 19:42:08 +00:00
Ton Roosendaal 6a648da13f Another old bug bites the dust! Actually the error was simple... but
thanks to depgraph it executes nicely now. :)

#bug 2397: frame-duplicator using Constraint not evaluated.
2005-07-13 13:56:15 +00:00
Ton Roosendaal 542358265b Couple of small fixes;
- cleaned up 'version correction' a bit. There was code slowing down
  current files even (armatures were evaluated all, even when not in
  current layer, was added to make sure they get converted OK).
  Send me old files that crash now! :)
- on reading older files with path-constraints, a fix had to be added.
- error "badd call to addqueue' found when using header-less window for
  filewindow
2005-07-13 13:30:51 +00:00
Ton Roosendaal 3135b3ab83 Removed initializer str = "";
Seems to give issues in MSVC, and wasn't needed after all.

Further fixed dependencies in constraints between armatures and armatures.
It didn't update the other armature when the armature-object itself moved.
2005-07-13 08:56:07 +00:00
Ton Roosendaal 6787e21a63 Two little bugskis;
- Solid armature drawing didn't do well for negative scaled armatures
- Layer Ipos were not evaluated for invisible objects (there goes another
  exception bypassing dependency...!)
2005-07-12 17:46:39 +00:00
Ton Roosendaal ab45b910cd Constraint "influence" slider didn't work once there was an ipo assigned
once. Variable got initialized too often. :)

Oh! Here's a nice webpage about the previous commit:

http://www.blender3d.org/cms/Armature_draw_modes.629.0.html
2005-07-12 16:00:47 +00:00
Ton Roosendaal 1adf750fc3 Cleanup of Armature 3d drawing.
- In Solid drawmode, bones get drawn solid too now. Including Outline-
  selection color, if that's set.
  Disable it by setting Object-buttons "drawtype" for the Armature.
  Color used for solid bones is in Theme editor.
- EditMode armature now follows (Mesh edit) theme colors (Vertex, Edge)
- PoseMode armature has ThemeColor for selection, and draws three extra
  colors now;
   - blue shade for bones with action Ipos
   - yellow for bones with IK
   - green for bones with a constraint
- "X ray" now only works for PoseMode... needs review, can be done better
- "Draw Names" option uses theme color too, also indicates selection.

Fixes;

- In Armature EditMode, the deformed Mesh goes to rest-position
- Border select didn't clear 'active' flag in Bones in PoseMode
- Mouse-click select didn't work when a dashed line was close to Bone
2005-07-12 15:47:53 +00:00
Martin Poirier 1b466f7765 Hide .file blocks in databrowse/pop menu.
This is mainly useful for scripts that generate/load datablocks for their own use and don't want to burry the user under an avalanche of datablocks he/she doesn't care about.

This adds a user pref "Hide .data" which now acts as a default value when opening a new fileselector.
It is also used when creating data select pop menus.

The "ghost" button in a fileselect window is independant from the userpref. It can be turned on/off individually without affecting

Note: When turning the option on/off, it sometimes take a couple of times before the pop menu registers it. Probably some caching thing. Will have to look at it.

Default value is Off.
2005-07-11 23:49:06 +00:00
Ton Roosendaal 01daf04ea6 - Object buttons, Hooks panel, clear offset didn't redraw correct
- Particle panel was drawing in wrong size
2005-07-11 19:31:15 +00:00
Ton Roosendaal 03c255ac1d New: Armature editmode/posemode now react correctly to HOME or Numpad-DOT
for viewing all or only selection nicely centered.

Fix: Poses without NLA or Action were reset to restposition on file read
or exit editmode.
2005-07-11 17:12:33 +00:00
Ton Roosendaal a17e21dfab SLightly altered rule for the new IpoCurve option "Keep horizontal on
extrema". It now also keeps auto-handles horizontal when the Y coordinate
is exactly identical.

And; made this option default on inserting new curve/keys.
2005-07-11 12:31:15 +00:00