- while editing creases (SHIFT+E) it works like scaling now (towards or
away from center selection).
- ESC while crease edit now works.
(note; doesnt fit in Trans structs...)
- button 'draw edges' and 'draw creases' now exclude each other
instead of right.
This basically swaps left and right, in most window spaces
so you can choose between:
LMB: Cursor/time slider/paint - RMB: Select
or LMB: Select - RMB: Cursor/time slider/paint
Aimed at:
1. Newbies
2. 1 button mouse mac users
3. People like me who are sick of having to constantly keep putting their brains into different modes when
switching between other apps and Blender :)
Yes, the User Preferences window is a bit of a nightmare
now, a layout cleanup will be forthcoming soon...
3d Cursor, only Ob Centers
Median Point, only Ob Centers
They prevent rotation/scaling from effecting the scale/rotation of the objects and just effects their position.
This is handy for aligning objects if you constrain to an axis and scale, as well as other neato things :)
Intrr came up with the code and I hacked it into the GUI
- "Global Pivot": Maintains a global Pivot and Align mode setting for
all 3d views when enabled, instead of seperate settings per 3d view
- "Auto Perspective": Switch to ortho mode automatically on 1/3/7, and
to Perspective when the view is rotated with the mouse
- "Align mode": As suggested on the list, when enabled, transformations
on several objects only transform their locations, not their sizes or
rotations.
- Grid dotted when not 1:1
***ATTENTION***! The User Interface parts of these features have not been
committed, as I work on my own modified UI here. The three features need
toggle buttons to turn them on and off.
I used the following 3 buttons (first two features are in userprefs,
third as a 3d view setting):
uiDefButBitS(block, TOG, USER_AUTOPERSP, B_DRAWINFO, "Auto Persp",
(xpos+edgespace+(3*medprefbut)+(3*midspace)+smallprefbut+2),y3+10,smallprefbut,buth,
&(U.uiflag), 0, 0, 0, 0,
"Automatically switch between orthographic and perspective");
uiDefButBitS(block, TOG, USER_LOCKAROUND, B_DRAWINFO, "Global Pivot",
(xpos+edgespace+(4*midspace)+(4*medprefbut)),y3+10,smallprefbut,buth,
&(U.uiflag), 0, 0, 0, 0,
"Use global pivot setting for all 3d views");
uiDefIconButS(block, TOG|BIT|10, B_AROUND, ICON_ALIGN,
xco+=XIC,0,XIC,YIC,
&G.vd->flag, 0, 0, 0, 0, "Translate only (align)");
Someone needs to add these to the interface in an appropriate manner!
Thanks.
http://www.loria.fr/~levy/Galleries/LSCM/index.htmlhttp://www.loria.fr/~levy/Papers/2002/s2002_lscm.pdf
Implementation Least Squares Conformal Maps parameterization, based on
chapter 2 of:
Bruno Levy, Sylvain Petitjean, Nicolas Ray, Jerome Maillot. Least Squares
Conformal Maps for Automatic Texture Atlas Generation. In Siggraph 2002,
July 2002.
Seams: Stored as a flag (ME_SEAM) in the new MEdge struct, these seams define
where a mesh will be cut when executing LSCM unwrapping. Seams can be marked
and cleared in Edit Mode. Ctrl+EKEY will pop up a menu allowing to Clear or Mark
the selected edges as seams.
Select Linked in Face Select Mode now only selects linked faces if no seams
separate them. So if seams are defined, this will now select the 'face group'
defined by the seams. Hotkey is still LKEY.
LSCM Unwrap: unwrap UV's by calculating a conformal mapping (preserving local
angles). Based on seams, the selected faces will be 'cut'. If multiple
'face groups' are selected, they will be unwrapped separately and packed in
the image rectangle in the UV Editor. Packing uses a simple and fast
algorithm, only designed to avoid having overlapping faces.
LSCM can be found in the Unwrap menu (UKEY), and the UV Calculation panel.
Pinning: UV's can be pinned in the UV Editor. When LSCM Unwrap is then
executed, these UV's will stay in place, allowing to tweak the solution.
PKEY and ALT+PKEY will respectively pin and unpin selected UV's.
Face Select Mode Drawing Changes:
- Draw Seams option to enable disable drawing of seams
- Draw Faces option to enable drawing of selected faces in transparent purple
- Draw Hidden Edges option to enable drawing of edges of hidden faces
- Draw Edges option to enable drawing of edges of visible faces
The colors for these seams, faces and edges are themeable.
Edges in Mesh
- adds automatic when you use creases. For other situations; call the
void make_edges(Mesh *me) in mesh.c. Of course, once in editmode the
edges are automatically recreated.
- in F9 buttons you can add/remove edges too
- both for Mesh and DisplistMesh, so it speeds up drawing quite some in
wireframe
- render for edges can't work... edges have no material nor tface nor col..
so here still the faces are rendered in wire
Creases in Subsurf
- based on the code by Chris McFarlen
- main changes is that now edges are used, saving quite some data in file
- use SHIFT+E in editmode to set edges-sharpness. values go from 0-1
- in F9 buttons you can set draw-crease mode. It draws now blended from
wire color to edge-select color (as provided in Theme)
Known issue: setting sharpness on 1 cube (subdiv 2) gives weird results
with some values... Chris, can you check?
Further; code cleanups, changing 0 in NULL when needed, no warnings, etc etc
messages and pupmenu()s. Edited spelling and grammar,
stylistic consistency, etc.
I added the guidelines and rationale that I used to the
CMS here:
http://www.blender3d.org/cms/Language_and_terminology.338.0.html
Next step is to get icons in there, to make it easier to see
at a glance what sort of message (and how much attention
should be paid to it, or if it can be dismissed with a flick
of the mouse, eg. boring remove doubles notifications)
mockup: http://mke3.net:9000/blender/ui/controls/error_ok_icons.png
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!)