OpenGL draw.
(BTW: the previous commit also solves raytrace errors with negative scaled
objects...)
Further a cleanup of displaylist flags and object/base flags. The #define
ACTIVE is moved to filesel.c (only used here).
The GONNA_MOVE #define got a OB_ added in front.
Mirror Object is assigned to Ctrl-M and I've add Ctrl-M to call Mirror Edit (on top of M alone) for practical reason. We should consider switching both to Ctrl-M for pratical reasons but I kept M for backward compatibility
Also added the menu and toolbox counterparts.
Minor addition to arithb.c: A function to print vectors to the console. Easier for debuging.
new Properties panel (was first called Transform Properties). They include the
same settings as were previously found in the window header: Anim toggle,
Start/End frame, Speed, Tiles toggle, X repeat and Y repeat.
The Tiles button used to work incorrectly in 2.25, this is now fixed too.
The drawing of the UV Vertex transform buttons in the Properties panel used to
give popup error messages when in Edit Mode (uv_tface_editing_is_allowed is not
silent). Also these buttons would still draw in Edit Mode. Both are problems
are solved now.
Problem: when appending data, it called the local_all() function, which
indeed made all data local, including all other dynamic linked data.
Not very nice... but mixing dynamic & appending data from single file is
headcrunching code.
Solution: when appending data, it now only makes local_all() the data from
that specific library file, leaving dynamic data from other files linked.
(Bug report 1183)
[SCons] Build with Solid as default when enabling the gameengine in the build process
[SCons] Build solid and qhull from the extern directory and link statically against them
That was about it.
There are a few things that needs double checking:
* Makefiles
* Projectfiles
* All the other systems than Linux and Windows on which the build (with scons) has been successfully tested.
- added mesh_set_smooth_flag, mesh_delete_material_index function
- isolated some globals
- got rid of reliance on meshdata in buttons_editing.c and material.c
(MVert,MFace,etc) off into DNA_meshdata_types.h, to isolate areas
of source that actually edit mesh *data* vs. areas that just edit
mesh object information.
* Created a MESH_MAX_VERTS macro in DNA_mesh_types.h
* fixed vert limit for converting displistmesh ==> mesh
* fixed vert limit when doing boolean operations
different objects shouldn't share flags this way (still sharing of
other mesh flags in renderer... ickity pickity, but I'm not fixing now)
- removed some unnecessary uses of DNA_mesh_types.h
bones in one armature that were constrained to bones in another
armature, which in turn were constrained to a non-armature object
weren't getting updated correctly.
This fixes bf-blender bug #955 (thanks Appolux).
Note: This commit need not be logged in future release notes (was
caused by recent armature speed ups).
* Armatures that had constraint targets inside other armatures
weren't transform()-ing correctly
* Issues with lattice deformed objects that are parents of bones
when rendering an animation. Seems to be mostly OK now with the
exception of the first rendered frame -- weird bugs like this have
plagued blender for ages, which leads me to believe that
RE_rotateBlenderScene() is a piece of garbage that nobody understands
(especially me).
* made a few helper functions to clean up some repeated code related
to clearing constraint status and rebuilding displists.
Hard to describe other than by saying:
* Updates, re-thought organisation, etc based on testing
and feedback from 2.30 -> 2.31
* A *lot* of missing entries added
* Toolbox expanded, tidied and more consistent with
pulldown menus
* A lot of functionality hidden behind secondary pupmenu()s is now exposed through arguments, so that
they can be more easily explored from the pulldowns and
toolbox.
This is the reason for the many changed files in this
commit - had to clean up editing functions. Mixing
interface code in the middle of editing functionality is not
good for menus and toolboxes. Please don't do it!
At this stage, the menu and toolbox system (at least for most window spaces) should be just about 'stable' and 'complete'. It's now up to people to keep them up to date :)
- removed rendermesh_uses_displist (no longer relevant)
- converted appropriate me->flag tests to using mesh_uses_displist
- made vert and face counting (for info header) use proper counts
- changed flip_subdivision to allow level==0 argument
- ps. thanks for subsurf orco fix ton
constrained bone is flagged for updating (not just an IK parent) we
should update the constrainted bone (except possibly when the
subtarget bone shares the parent). This solves the "Character doesn't
crouch when I pull his spine downward" bug reported in the testing
builds forum.
- reduced main subsurf interface to two functions to make DispListMesh
structures from an editmesh or a regular mesh. for the most part this
means that to implement a geometry modifier you only need to write
these two functions (not very plugable yet however).
- added displistmesh_from_mesh and displistmesh_from_editmesh functions
which allow simple support of subdivLevel(0) subsurfs, somewhat handy
for testing things (like why orco doesn't work for subsurf).
* A patch to make sure that constraints on bones that point to
external objects are evaluated correctly (and that the bones that
depend on these bones are evaluated correctly, etc, ad nauseum).
This addresses some of intrr's issues (the blender-related ones,
that is).
* Make sure that deformed displists are updated when the user
manipulates any of the constraint buttons.
* Added a nice little function, ik_chain_looper(), that executes a
callback for every bone in an IK chain.
----------------------------
Another (major) armature speed up for bones with many constraints.
When tranform()-ing, figure out which bones need to be recalculated
beforehand and only update those bones.
---------------------------
"Delay Deform" option for armatures.
The button is under the X-ray bones button in the edit buttons.
With this armature option selected, manipulations in pose mode
will only deform children after the transformation is finished.
While hardly an optimal solution to the slow armature crisis, this
gives about 4 times speed up on some meshes (ah well, at least lets
me isolate armature vs. displist slowdowns while profiling).
--------------------------
Major speed up for armatures during times when you aren't
posing a figure.
Background: the calculation of poses generated by actions and the
calculation of displists were getting somewhat out of sync.
This was being remedied by 'clearing the constraint done flag'
of the pose channels and recalculating the displists every time
the 3d view was redrawn, making life slow and unpleasant.
Commenting out the code that was doing this, then reinserting
the 'clearing the constraint done flag' at the right times
made things a bit more perky.
Fixed by checking the object type and changing the up and track axis accordingly.
Also added some comments in the DNA file (recompiling makedna because of comments is fun!)
- Moved a couple of undo_push_mesh after the action has been confirmed (mainly bevel, merge and mirror)
- Split mirror in two functions, interface and functionality
- Simplified the code of the merge function
http://projects.blender.org/tracker/index.php?func=detail&aid=760&group_id=9&atid=125
When using numerical input with scaling, axis that did not have any input scaled to 0 (it defaults to 1 now). Fix inspired by Koryo's patch (it was easier to recode it than to apply the patch and then run through the code to see if he didn't forget anything).
Also fixed some other stuff (the variables didn't reset correctly at some point).
I thought this was a nice addition, so I'm commiting it.
To Ton for easier changelog creation: When constraining to an axis, numerical input is limited (and will switch automaticly) to that axis.
Original e-mail
-------------------------------
I was playing with the axis constraints for grab and scale transforms
and I thought that the behavior was slightly illogical. Without axis
constraints, I think everything is great, but once a constraint is used
some irregularities show up. (Note, this is not a bug, it's more of a
possible improvement)
When you enter grab or scale mode, then constrain the transformation to
a
particular axis, then enter numeric entry mode by hitting a number or
'n', there is no reason for you to try and edit the numeric value of a
non-constrained axis which is the current behavior.
E.g. You grab an object and want to move it along the z-axis, so you
enter grab mode and either hit 'z' or the middle mouse button and you
move the mouse to get an idea of how it looks. You decide that you
want to use a value of +4.2 with numeric entry; now you have to enter
the following sequence: 'g', 'z', 'move mouse', 'tab', 'tab', '4.2',
'enter'. However, you're already constrained to the z-axis, so you
should not have to enter 'tab', 'tab'.
The included patch changes the behavior of grab and scale transforms so
that if you are constrained to an axis, and enter numeric entry mode
via
'n' or by hitting a number, you will immediately begin editing the
appropriate axis, and will not have to hit 'tab'.
This may not seem like a big improvement (because it's not), but I feel
that it improves the workflow of a commonly used task slightly and does
not negatively impact any other aspects of the program.
I welcome feedback on this idea.
--
- Nathanael Law <njlaw@xyrodian.com>
The interesting part:
Bevelling functions for meshes.
Accessible through the Wkey menu.
You then have to enter the recursivity level (Warning, don't use 3 on a big mesh) and interactivly set the bevel width by moving the mouse. It draws the new faces in yellow. Ctrl constraint to 0.1 multiples, Shift switches to low gear, Space to type a value directly.
Support for selective bevelling isn't really working yet, so be sure to select all the vertices beforehand.
The less interesting part:
Code done by intrr (logical stuff, how the algorithm works) and me (math stuff and the interactive bevel width code).
The splitting and bevelling algorithm is not yet fully optimized, and the face shrinking math still doesn't like too big bevel width values. So this will have to be cleaned too.
Selective bevel is on the list next.
If you have any questions about how the code works, send the questions regarding the logic of the method to intrr and math questions to me.
This is very much testing code (or should I say teasing code), so please don't flood me with bug reports. (This excludes OFFICIAL Blender developpers who were there at the meeting and pretty much know what the limitations of the code is and what it should do.)
There's a bug left with local axis constraints, but it's only a minor annoyance and fixing it would take more time that I can give (finals at the U you know...)
Also deleted some vestige of an old feature that was disabled.
colors. This because of the pretty weird (ab)use of load & make editmesh...
For each added undo step, the load_editmesh was fed with an empty mesh
to assign data to, without knowledge of what was in the original mesh.
That way UV and color data got lost.
Solved it in 2 steps:
1. removing the ->tface pointer from EditVlak, and make TFace a builtin
struct inside EditVlak. This didnt cost much extra mem, since it already
stored UV and color. This enabled some pretty cleanup in editmesh.c as
well, storing tface pointers was cumbersome.
2. for each undo step, it then generates always a tface and mcol block to
link to the undo Mesh.
Even when it wasn't in the actual Mesh, at exit editmode the original
Mesh is used as reference anyway, and undo-meshes are freed correctly.
The enormous commit is because I had to change the BLI_editVert.h file, and
found it was included in about every file unnecessary. I removed it there.
ALso found out that subsurf has code ready (unfinished) to make UV coords for
the displaylist in EditMode as well, nice to know for later...
standard starts with 0.5 sec. Turn the threshold value up to effectively
disable it when you dislike it. But give it a try!
- added 'Home' after splitting window for buttonswindow