Age | Commit message (Collapse) | Author |
|
the eve->vn pointer to store temporal data. Need a better solution, do it
later. This just prevents crashing!
|
|
When Modifiers are used in Edit Mode to show the deformed result for
editing, all actual coordinates Blender works with are still the ones from
the original Cage. You can notice that with the Transform Widget or
helper lines while transforming.
Even worse, the actual transformations still happened on the original Cage
as well, making it very hard to edit. That caused the feature to be named
"CrazySpace" (baptized by Andy, afaik?).
This commit calculates the deformation transformation per vertex, and
inverse corrects it, so it's more intuitive editing this way.
Unfortunately all the deformation features of Blender don't use matrices
for defining deform, so the existing code cannot be re-used to retrieve
the correct deformation matrix per vertex. The solution I found is based
on calculating per face the transformation based on its first 3 vertices,
and store this transformation averaged in the face's vertices.
The solution can also only work on entire faces, because the full deform
can only be retrieved using 3 vertices. (using 2 vertices will miss edge-
aligned rotation, using 1 vertex can only retrieve translation).
By deriving the deformations per face, small errors will still happen,
especially on very low-poly Meshes with extreme deformations.
The only alternative I know now, is providing each vertex in
a mesh with 2 extreme small tangent vectors, which get deformed using the
existing code as well. That will mess up the existing deformation code too
much though, this solution has the benefit it works with each deform we can
up with later too.
Last note about CrazySpace: it can only be used to tweak Meshes. Do not
even try to add vertices, extrude, or duplicate. Probably we should disable
this... but preventing user errors isn't always power-user-friendly, eh. :)
|
|
|
|
Moved call to before blo_join_main where pointer gets killed.
Otherwise Blender crashed when appending a file and selecting
relative filenames.
|
|
Constraint Ipos didnt work when the bone/channel had no Action Ipo...
just had to move a line of code. :)
|
|
Note this is based on eulers, so might give the common issues. :)
For most cases it goes fine though, especially with only 1 axis constraint.
|
|
When a file was loaded with curves in invisible layers, the displists
were not created.
|
|
other libraries local.
Also added some securities in the temporal 'sync pose' testing code. It now
asks with a menu to confirm the object to be replaced too. Later more!
|
|
.
|
|
Also, updated the little helper line on the status bar to indicate that
terminating with ctrl-Enter leaves only the verts on the cut line
selected.
Johnny: Please review.
|
|
data. This functionality is going to be in Outliner, for now only use
for testing while consulting me. :)
Usage: New option in SHIFT+F1 append window, "Sync Pose". When pressed, you
can append/load an *Object* of type Armature, this then replaces its
Armature and Pose with the selected Objects. After that it deletes the
appended object.
Note: it currently appends also Objects when used in Pose Constraints...
|
|
- Added subdivide sck upport for vertex groups
- Brought back subdivide-smooth, but it doesn't work as good as before yet,
it used to catch an exception for subdividing the middle vertex of a quad,
with edge-based subdivide it's not that simple. Will check later.
- made "number of cuts" a static variable, so it doesn't jump back to 2
all the time
Coder level notes:
- removed the old subdivide code (yay, over 30k code less!)
- did some minor layout cleanups in the new code (just consistant syntax)
- removed redundant code parts, to enable smooth & vgroup subdiv
- subdivide smooth can do multiple cuts too, but i like to see that only
as option when our smooth formula is good!
Compliment:
I think Johnny really made comprehensible design and nice code here. Was a
joy to work with. :)
|
|
some previously uninitialized parameters.
|
|
creating (reported by Toni)
|
|
Drawing of rotation limits and IK solving was wrong with pose mode
bone offsets.
Also added proper modifier stack update after uv unwrap and lscm.
|
|
- removed euler branch in favor for a 'better solver to come'
- removed some debug vars from lattices
- removed some garbage related to 'borrowing' collision from particles
note SB collision is completly decoupled from particle stuff to allow
: 1. SB collision targets can be 'anything evaluated by modifier stack' but won't be subsurfed (for performace reasons / possible though / see comment in code)
: 2. SB <-> SB collisions
: 3. ( 1. implies that SB collision targets may be animated, hooked, curve deformed , .. ! )
|
|
Now relative filenames that are not below the .blend file
in the directory hierarchy can be used.
CAUTION:
The relative filenames are not updated if the blend file
is moved to another dir or saved into another dir (save as)
We will rely on the smartness of the users for this.
my first official commit - thanks Ton!
|
|
Ipo WIndow, "Make single user" button crashed. Forgot to recode 2 weeks ago
|
|
|
|
ALT+C on mesh without modifier crashed.
|
|
Included a patch by Pablo Marrol! selecting with ALT+CTRL combos
didnt check if there was actually a Mesh in editmode.
|
|
DAG_object_flush_update() always used scene layers, causing updates to go
wrong with 3d windows with "Lock" off (allowing local layer and camera).
This fixes a larger amount of potential issues.
Also: fixed menu title for adding IK constraint to Bone (CTRL+I).
|
|
Just needed to mark a few more edges.
|
|
wasn't being too handy in the text editor, so I've disabled
it here now.
|
|
when it uses subsurf display. Was missing a DAG update.
|
|
ensure the handles never result in a curve that goes beyond the neighbour
control points.
http://www.blender.org/cms/Animation_Curve_Handle.717.0.html
|
|
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.
|
|
|
|
modeling!
It detects the rotation based on the average of all half-selected edges and
the extrude vector. The first rotation might go wrong on extruding parts
of very irregular shapes, but in general it does it fine. Of course, single
vertex clicking or entire shape clicking doesn't rotate.
|
|
always enables bullet, independent of sumo/ode.
So for the 2.4 release, both bullet AND sumo will be enabled. You can choose in the world buttons which physics engine is active for a scene.
sorry if this breaks your builds!
|
|
That caused un-keyed positions to flip back.
|
|
last commit (add constraint menu) to fail on adding floor constraints.
|
|
as well as for Objects. Hotkey: CTRL+ALT+C (bit clumsy I know, but I like
to use the Ckey).
Constraints are added to the active Object or Bone.
Based on selection context, the menu has three versions:
Pose Mode:
- if another bone is selected, bone becomes target
- else if another Object is selected, Object becomes target
- else it adds a new Empty as target
Object Mode
- if another Object is selected: Object becomes target
- else it adds a new Empty as target
Same works this way now for CTRL+I, "Add IK".
To be solved: ALT+C in PoseMode is "Clear Constraints", but in Object Mode
it does "Convert" still...
|
|
Press SHIFT+LMB, and it shows a menu with all Vertex Groups the vertices of
the indicated face has, also allowing selection of Groups.
|
|
In PoseMode, press Wkey or use the Pose pulldown menu. It calculates the
positions of all selected Bone end points, over the time as indicated with
the Scene start/end frame. This then is drawn as a path, with little black
dots on every frame, and a white dot on every 10 frames.
Paths are not saved in files, and not calculated automatic yet on changes.
To make this relative fast, but also reliable, I had to add a new method
in the Dependency graph system, to find exactly (and only) these parents
of an Object that influence its position. This is needed because the path
should show the actual global coordinates of the entire animation system.
|
|
(source\blender\src\editmesh_add.c(122) : error C2466: cannot allocate an array of constant size 0
warning:: ISO C forbids zero-size array `mval')
|
|
by 'eating' contol messages
still there is an issue on how transparent/opaque floating panels should be for messages
... and i am wondering if that should move to 'regular' buttons
|
|
- CTRL+click in EditMesh now extrudes selection. If no selection, it adds
a new vertex. Try it on a full selected monkey. Fun! :)
- CTRL+click now also adds the new stuff aligned with the view, as if you
had translated it to the mouse cursor. Only new vertices are added with
respect to 3D cursor location.
|
|
- Added (BKE_utildefines.h) POINTER_TO_INT(poin) and INT_TO_POINTER(int)
defines, to help fixing issues with switch to 64 bits systems. This
assumes that a) not more than 16GB mem is used and b) that address
space is below the 1<<35 value. The latter has to be confirmed, but it
seems to conform the current 64 bits generation of OSs (for mallocs).
Needless to say; use long if you want to store pointers! This is for
temporal fixing.
- Added editmesh version for mesh-octree lookups, not used yet.
- Fix: ESC on armature posemode restored the actions, should not happen
- Fix: If in NLA an action was 0 frame long, it caused draw error
- Fix: Click on name in Action Window now activates Bones
- Fix: "Snap to" options in Armature editmode now use X-axis mirror edit.
|
|
the object-action-ipo-nla recode 2 weeks ago.
|
|
- Set the button in Paint Panel, Edit buttons context
- It assumes the mesh to be near-perfectly mirrored. Current threshold is
set to 0.0001 (maximum difference allowed).
In order to evaluate proper mirroring, a new option will be added in
Mesh editmode later.
- When the flipped group doesn't exist yet, it creates the group
- Of course this doesn't work for mirror modifier!
New: Select/activate flipped bone or vertex group
- Press SHIFT+F in PoseMode or WeightPaint mode to get the flipped bone.
Is especially to see while painting if the mirror copying works OK.
New: "Apply Envelope to VertexGroup" uses X-mirror option too.
Todo; check on mirror vertex painting, and mirror Mesh editmode....
The implementation is based on a 8x8x8 Octree, where vertex locations are
stored. Vertices on the threshold boundary of an Octree node are filled in
the neighbour nodes as well, ensuring that the lookup works with threshold.
The current size of the Octree gives good speedup, even for 128k vertices
it only needs 256 lookup cycles per checked vertex.
Same code could be used for the bevel tool for example.
src/meshtools.c:
int mesh_octree_table(Object *ob, float *co, char mode)
- mode 's' or 'e' is "start octree" or "end octree"
- mode 'u' is "use", it then returns an index nr of the found vertex.
(return -1 if not found)
|
|
-symtom: looks like rigged SB mesh follows weird goal settings
-cause: arbitary initialisation of 'edge spring rest length' ... must have happend by introducing 'modifyer stacK'
|
|
"why not 0.5?", so I am setting it to 0.5 since it looks way
better that way (I think somebody should really revisit this code
at some point).
|
|
-- add Key module to index page
-- include cross references for Object.colbits in material descriptions
within Object, NMesh and Mesh modules
|
|
2. Edgeloop Delete will pop the undo stack if it fails
3. Small Tweak on CTRL-Subdivide selection
|
|
4 vertices
|
|
|
|
The rotation of the parent of the root in an IK chain was included
in the segment's basis, leading to the DoF / rotation limits to be
computed on the wrong basis.
|
|
when no vertex groups exist, it was referencing illegal memory.
|
|
correctly free constraints.
To ensure the UI not to show any deleted data, after leaving editmode it
now also redraws nla, action and ipo.
|