Commit Graph

90 Commits

Author SHA1 Message Date
Martin Poirier
1a28bf797e [#18021] Rotating gets locked to axis after trackball rotate mode is entered
Reset transform restriction flags when switching to other transformations while running.

Also don't draw constraint if no constraint flag is on (old annoyance).
2008-11-23 15:27:53 +00:00
Martin Poirier
dac3434b03 [#14398] In Object- and EditMode, global rotate manual input is different than mouse
The sign of the rotation angle was sometimes different between num input and mouse input.
2008-06-22 20:40:13 +00:00
Martin Poirier
b4c123c275 [#14400] Crash on grab/move on axis when nothing selected (patch included)
I used a different fix than the included patch, but that was a pretty nasty crasher (only crash on menu/toolbox, not hotkeys).
2008-06-17 21:17:11 +00:00
Martin Poirier
f4a20f4cc1 [#8146] Objects rotate in wrong direction when using numeric input (R x <num>)
Don't flip axis to face camera on num input.
2008-05-13 10:17:46 +00:00
Chris Want
5d0a207ecb Patch from GSR that a) fixes a whole bunch of GPL/BL license
blocks that were previously missed; and b) greatly increase my
ohloh stats!
2008-04-16 22:40:48 +00:00
Campbell Barton
83c5401896 replace magic numbers with constants for (G.vd->persp), view naming was also using persp as a flag which worked but isnt correct. 2008-04-16 08:48:49 +00:00
Martin Poirier
ca982d2a23 Proper fix for camera transform with snap.
Please email me or report a bug when such problem arise, it's simpler if done properly the first time.
2008-04-08 13:40:05 +00:00
Campbell Barton
2af8964d7c moving the camera on the local Z axis while in the camera view didn't work when snapping was enabled (even though the CTRL key was not pressed) 2008-04-08 11:57:10 +00:00
Brecht Van Lommel
07fa7f5a38 Fix for bug #8219: proportional edit circle was drawing
wrong in the uv editor since editmode integration.
2008-02-16 19:37:33 +00:00
Martin Poirier
d660e29365 === Custom Transform Orientation ===
Custom Orientations can be added with Ctrl-Shift-C (hotkey suggestions are welcomed), this adds and select the new alignment. Custom Orientations can also be added, deleted, selected from the Transform Orientations panel (View -> Transform Orientations). Standard orientations (global, local, normal, view) can also be selected from this panel.

If you plan on using only a single custom orientation and don't really need a list, I suggest you use the hotkey as it adds and selects at the same time.

Custom Orientations are save in the scene and are selected per 3D view (like normal orientation).

Adding from an object, the orientation is a normalized version of the object's orientation.
Adding from mesh data, a single element (vertex, edge, face) must be selected in its respective selection mode. Vertex orientation Z-axis is based on the normal, edge Z-axis on the edge itself (X-axis is on the XoY plane when possible, Y-axis is perpendicular to the rest). Face orientation Z-axis is the face normal, X-axis is perpendicular to the first edge, Y-axis is perpendicular to the rest.
(More logical orientations can be suggested).

I plan to add: 2 vertice (connected or not) => edge orientation , 3 vertice = face orientation

Differences from the patch:
- orientations no longer link back to the object they came from, everything is copy on creation.
- orientations are overwritten based on name (if you add an orientation with the same name as one that already exists, it overwrites the old one)
2008-01-13 18:24:09 +00:00
Martin Poirier
121dab1bcd Fixes for some long standing transform bugs.
- [#6112] is this an extrusion bug?

When extruding, x-mirror was giving weird behavior since the extruded vertice could match with their non-extruded counterpart on the other side.

The solution is to disable x-mirror (with a transform context flag, like disabling PET) in that case.

- External constraint setup calls (BIF_*) didn't setup some internal structs properly.

For the user, this resulted in some transform (extrude particularly) showing a full 3d vector in the header instead of a scalar along the constraint axis (this messed up num input a bit too, you could type values in unused axis).
2007-11-26 01:52:48 +00:00
Campbell Barton
46deddcc62 Image Stamping patch by Diego (and peach request)- stamps image info into metadata and optionally
draws into the
frame.

This patch includes some changes I made...   
* use blenders bitmap fonts (rather then own fonts)
* select font size
* user interface layout changes
* Marker as another image stamp option

Also added some new API calls   
BMF_GetFontHeight(font);
BMF_DrawStringBuf(...);  - so we can draw text into an imbuf's image buffer.
get_frame_marker(frame) - get the last marker from the frame.
IMB_rectfill_area(...) - fill in an image buffer with a rectangle area of color.

TODO - draw stamp info in 3d view, at the moment it just displays in the animation.
2007-10-20 16:17:27 +00:00
Joshua Leung
a38d7d6338 IPO-Transform Bugfix:
Now MMB-constraint select should now work better than it did after the refactor. I've made some changes to setNearestAxis so that it is now an entrypoint from which spacetype (currently divided into 3D or 2D) specific methods can be used. The old code for this (IPO MMB-constraint) has effectively been restored.
2007-10-09 09:30:22 +00:00
Kent Mein
4e2143f639 This commit fixes up a bunch of svn properties to hopefully make things a little nicer for everyone.
Patch provied by gsrb3d

bug tracker #7061

Kent
2007-08-28 10:07:08 +00:00
Martin Poirier
390526f508 === Bugfix ===
[ #6690 ] Shift and widget translation cause an uncontrolled move in side or front view

There was a tentative fix for that earlier, but the limit used was too low. This fixes it and ensures sane output.
2007-05-23 23:09:57 +00:00
Martin Poirier
5faddf5703 === Bugfix ===
Fix float error in Transform Contraint with planar constraints when the plane was perpendicular to the viewport. This could cause some weird erratic behavior.
2007-05-21 18:15:24 +00:00
Campbell Barton
afdd54fa37 moved source and text to american spelling
* colour -> color
* centre -> center
* normalise -> normalize
* modelling -> modeling
2007-04-04 13:18:41 +00:00
Ken Hughes
4e72e4ad2b Fix various gcc warning related to signed/unsigned parameters passed to
OpenGL functions.
2007-03-17 14:15:02 +00:00
Martin Poirier
f4a03182fb === Transform Snap ===
Draw a circle around the snapping point for visual aid.

Different snapping target method, switchable in the 3d view header menu in the Transform menu.

* Closest: Snaps the closest vertex to the point
* Median: Snaps the median of the selection to the point
* Center: Snaps the transform center to the point (this is different from median because you can use Cursor/Boundbox as center)

Fix a bug with constraints/snap handling.
2006-12-19 22:25:07 +00:00
Matt Ebb
e31478f129 Tiny header include fix for a warning I introduced earlier. 2006-08-11 00:26:35 +00:00
Kent Mein
1de0248f6f fixed a typo that must have slipped in ;)
Kent
2006-07-31 04:54:10 +00:00
Matt Ebb
4f7a5fd641 * Made the proportional edit circle draw inverted against
the background - it was very difficult to see with a muted
grid theme colour.
2006-07-31 02:48:45 +00:00
Martin Poirier
233348197e === Bug Fix ===
[ #4272 ] Camera zooming problem
Move the camera in camera view could block inexplicably sometimes.

Was a silly programmation error that any competant compiler should have given a warning for. Alas, I'm using gcc...
2006-06-04 18:38:58 +00:00
Martin Poirier
aab49dff0e === Transform Constraining ===
Bug #3733
Constraining on a perpendicular axis was broken on (half - 1) cases.
Silly oversight on my side which didn't turn out in the test case (moving camera in and out) and only appeared in front view (not side nor top) because of positive reasons.

Frankly, I still think translating an object perpendicular to the viewport is a bit silly, but now, at least, people can be silly in a predictable fashion.
2006-04-10 23:20:18 +00:00
Ton Roosendaal
622f914776 New stuff & fixes in Blender OSA filtering.
While investigating alternative filters (Mitchell), I found two small
errors in the Gauss code, it clipped wrong and multiplied wrong, causing
settings other than filter size 1.0 to not work properly.

Took the last-minute liberty to add more filter types in Blender too.
Also wrote an extensive log about how sampling & filtering in Blender
works.

http://www.blender3d.org/cms/Samples_and_Filtering.723.0.html
2005-11-23 15:20:45 +00:00
Martin Poirier
9ef8c198b2 Transform:
As discussed during meeting, made double key press go for Local when Global was selected.

Two lines of code! ;)
2005-11-20 16:01:56 +00:00
Martin Poirier
e02336653d Fixed backwardstransform.blend bug from orange dudes.
It was literally two lines of code.

This probably fixes a lot of the "constraining transform goes backward" problems.
Was a dumb oversight on my part.
2005-10-23 21:34:20 +00:00
Daniel Dunbar
e0c7d270d9 - assorted minor warning fixes 2005-09-03 16:20:33 +00:00
Martin Poirier
6c9d743ef4 Based on a suggestion from Zr, using line line intersection for single axis projection.
This makes perspective handling a bit better.
2005-08-25 18:03:19 +00:00
Martin Poirier
e12e2469c8 Bretch's patch for 2D transform. Thanks
Using new transform code to handle UV window.

With the ground work done, Transform could more easily be extended to handle IPO window now.

Tracker item: http://projects.blender.org/tracker/?func=detail&atid=127&aid=2946&group_id=9
2005-08-23 18:13:30 +00:00
Chris Burt
a2eefbd7c7 Fixed some warning shenanigans 2005-07-30 01:44:15 +00:00
Martin Poirier
1d27a7676b GCC 4 didn't like static function after non static prototype. Moved prototype to c file and added static to it. 2005-07-24 09:21:31 +00:00
Martin Poirier
0e2302bfa5 Big Transform Manipulator Merge
*NOTE*: Some UI decision done in this commit will most likely be revised, all flame shall go in /dev/null. Constructive discussions of course welcomed.

This commit merges manipulator orientation selection back in "traditional" transform.
That's how it works:
	- The dropdown in the 3D view header is always visible
	- The orientation chosen will be used when choosing an axis with MMB and for the *second* key press of X,Y,Z
		However, Local orientation doesn't use the one calculated by the manipulator. This is to ensure that multiple object local and armatures in pose still works as before.
	- Alt-Space (to change the orientation) works during transform


New Transform orientation: View, using the view axis.

Fixes for the following bugs:
	- Constraint projection code "jammed" if input vector was <0,0,0>, reported a couple of times on IRC. Thanks to Basse for the example file.
	- Transform on texspace crashed on objects without texspace data (camera, lamp, ...). This was reported in tracker.
	- Numinput with lock constraints didn't work correctly. Reported on elysiun

	Probably some others that I'm forgetting

I also moved a couple of functions around in an attempt to make things clearer.
2005-07-24 06:25:00 +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
28a1e8277b Result of 2 weeks of quiet coding work in Greece :)
Aim was to get a total refresh of the animation system. This
is needed because;
- we need to upgrade it with 21st century features
- current code is spaghetti/hack combo, and hides good design
- it should become lag-free with using dependency graphs

A full log, with complete code API/structure/design explanation
will follow, that's a load of work... so here below the list with
hot changes;

- The entire object update system (matrices, geometry) is now
  centralized. Calls to where_is_object and makeDispList are
  forbidden, instead we tag objects 'changed' and let the
  depgraph code sort it out
- Removed all old "Ika" code
- Depgraph is aware of all relationships, including meta balls,
  constraints, bevelcurve, and so on.
- Made depgraph aware of relation types and layers, to do smart
  flushing of 'changed' events. Nothing gets calculated too often!
- Transform uses depgraph to detect changes
- On frame-advance, depgraph flushes animated changes

Armatures;

Almost all armature related code has been fully built from scratch.
It now reveils the original design much better, with a very clean
implementation, lag free without even calculating each Bone more than
once. Result is quite a speedup yes!

Important to note is;

1) Armature is data containing the 'rest position'
2) Pose is the changes of rest position, and always on object level.
   That way more Objects can use same Pose. Also constraints are in Pose
3) Actions only contain the Ipos to change values in Poses.

- Bones draw unrotated now
- Drawing bones speedup enormously (10-20 times)
- Bone selecting in EditMode, selection state is saved for PoseMode,
  and vice-versa
- Undo in editmode
- Bone renaming does vertexgroups, constraints, posechannels, actions,
  for all users of Armature in entire file
- Added Bone renaming in NKey panel
- Nkey PoseMode shows eulers now
- EditMode and PoseMode now have 'active' bone too (last clicked)
- Parenting in EditMode' CTRL+P, ALT+P, with nice options!
- Pose is added in Outliner now, with showing that constraints are in
  the Pose, not Armature
- Disconnected IK solving from constraints. It's a separate phase now,
  on top of the full Pose calculations
- Pose itself has a dependency graph too, so evaluation order is lag free.

TODO NOW;

- Rotating in Posemode has incorrect inverse transform (Martin will fix)
- Python Bone/Armature/Pose API disabled... needs full recode too
  (wait for my doc!)
- Game engine will need upgrade too
- Depgraph code needs revision, cleanup, can be much faster!
  (But, compliments for Jean-Luc, it works like a charm!)
- IK changed, it now doesnt use previous position to advance to next
  position anymore. That system looks nice (no flips) but is not well
  suited for NLA and background render.

TODO LATER;

We now can do loadsa new nifty features as well; like:

- Kill PoseMode (can be option for armatures itself)
- Make B-Bones (Bezier, Bspline, like for spines)
- Move all silly button level edit to 3d window (like CTRL+I = add
  IK)
- Much better & informative drawing
- Fix action/nla editors
- Put all ipos in Actions (object, mesh key, lamp color)
- Add hooks
- Null bones
- Much more advanced constraints...


Bugfixes;

- OGL render (view3d header) had wrong first frame on anim render
- Ipo 'recording' mode had wrong playback speed
- Vertex-key mode now sticks to show 'active key', until frame change

-Ton-
2005-07-03 17:35:38 +00:00
Martin Poirier
a344dca9cf Transform stuff
Cleanup in transform.c: removed uneeded includes and removed REPEAT experiment.

Split off manipulator init function, no need to resort on hacks to setup stuff before starting transform anymore.

Fix0r3d single axis projection for constraints. It deals with perspective correctly now (as much as planar constraints).
2005-06-28 07:58:16 +00:00
Martin Poirier
c00adc5ff8 Transform 2D center was using short. Not good enough when it's it's way off screen. Switched to ints, that fixed the bug in the tracker.
Switching to floats would probably be safer in the long term, but too many things to test to do that now.
2005-06-05 13:50:21 +00:00
Ton Roosendaal
90d7da7b27 Tinsy cleanup of combo drawing Manipulators:
- translate+scale : arrow at end of axis
- translate+rotate: draws axis lines now
- while translate: draws the axis line too

And: GCC was nagging about Martin's precious code!
transform_constraints.c:745: warning: suggest parentheses around comparison
in operand of &

Apparently the if(a & b == c) is undefined? Whatever!
2005-05-29 11:20:49 +00:00
Martin Poirier
14a3166685 Push/Pull didn't do Lock Constraint correctly. Fixed.
Also added an isLockConstraint function that tells if the current constraint is a locking constraint or not.
2005-05-29 09:21:34 +00:00
Martin Poirier
78a395d3d5 Fix MMB code again. (I'm near the "set an accronym for that so it's shorter to time next time" phase...)
This time, probably for good since I've really tested it through and the z factor used there never gives overflow and is correctly calibrated with both the real zfac and the zoom level.
2005-05-19 04:33:38 +00:00
Martin Poirier
1b3498b3f3 Fixing MMB selection code for good.
zfac needed to be inverted to be used properly. Works for extreme close ups and extreme zoom out.
2005-05-18 06:13:50 +00:00
Martin Poirier
7373dcf705 Transform MMB code fixing Ton's last fix.
His fix was good, except that it switched to project_float instead of project_short, and that's not good because we're renormalizing the vector after that, which maximizes the float errors. Since it's scalling the axis anyway with the zfac method, it can use project_short safely (I tested it with the bug tracker file that triggered the fix in the first place).
2005-05-16 08:25:49 +00:00
Ton Roosendaal
49dbf781de Three fixes in 1 commit. :)
- Bug #2530
  The MMB Transform constraint 'chooser' used projection code that didnt
  work when zoomed in extreme. Needed a correction to scale projected
  coordinate according zoomlevel.

- NKEY panel for objects: click on left/right side of scale button now
  goes with increments of 0.1 (was 1.0)

- Moving window edges in Screen: prevented top header from becoming too
  small due to grid-snapping. Was visible now with using Texture Font.
2005-05-13 09:22:37 +00:00
Martin Poirier
d07dccc386 Found some time do sanitize the big Transform call:
- Splited off the event treatment into a fonction of its own
- Splited off the initialisation phase into a function of its own (will have to do it for the manipulator function too)
	Calling transform now works like this:
		initTransform(mode, context)
		- possible post init calls, constraints mostly
		Transform()
		- eventually, the postTransform function, so that Transform is just a simple big loop which could in the end just be tied in the blender event system instead.
- Added a state variable in TransInfo to replace the ret_val local variable. Possible values are: TRANS_RUNNING, TRANS_CANCEL, TRANS_CONFIRM
- Tied MMB and the hotkey select for constraint together, so selecting an axis with MMB and pressing the axis key after that goes to local mode on that axis. Much less confusing.
2005-05-10 04:21:11 +00:00
Martin Poirier
3676fb1b3f Fixed rotating, didn't take parent into account properly (hmmm, I'm sure this worked before).
That was bug #2516: http://projects.blender.org/tracker/?func=detail&atid=125&aid=2516&group_id=9

Also turned back some changes Ton did to drawing object constraint lines. Explained the why in a longish comment.
2005-05-09 23:37:35 +00:00
Ton Roosendaal
d10862a9da Fix for negative scaling & Mirror menu in Object mode (CTRL+M)
Hope Martin likes this simple hack. :)

Also; added flag in constraint to denote whether its local or not. That
way its possible to:

- prevent local scale and rotate on multiple objects to change own position
- draw constraint lines cleaner
2005-05-07 21:04:55 +00:00
Martin Poirier
61f2736ec3 Local axis constraint external call. Had to do it in a very hackish way which highlight a design problem in the code. To solve it (and would solve other problems too), we'd have to split off the initialisation function. Not terribly hard to do but I'm overwhelmed with work...
Push/Pull had a problem with constraints enabling/disabling. Fixed

Restablished infinite line for constraint draw (when not using manipulator) as discussed in meeting.
2005-05-02 02:18:13 +00:00
Martin Poirier
6379ff9b70 Toying a bit with MMB behavior:
MMB click with no constraint selects a constraint right away (the axis selector doesn't flash on screen)
MMB click with a constraint removes the constraint
MMB click-drag in both case (with and without a constraint) uses the axis selector.

stopConstraint didn't remove the CON_SELECT flag, so cancelling transform while selecting a constraint and then reentering transform was funny. Fixed
2005-04-24 01:18:13 +00:00
Martin Poirier
c1a7b8b7a1 Local axis constraints for pose mode. Added
Camera rotation fix (was off centered because it used persinv instead of viewinv. Now rotation center is always center screen in camera mode. (Still need to fix the helpline not showing)
Numinput constraint function was no good, didn't check if a constraint was even on... Fixed.
Rotation was missing constraint text in header print. Fixed.
2005-04-22 01:14:15 +00:00
Matt Ebb
3dbae624d3 * Brought over a 'mode' parameter to drawcircball to prevent
further loss of Hos' hair during tuhopuu merges.

This doesn't change any user functionality. 'Mode' can be
GL_LINE_LOOP for a circle outline (as it currently is), GL_POLYGON
for a filled circle, or whatever gl mode you like.
2005-04-20 08:26:22 +00:00