====================
The MeshDeform modifier can deform a mesh with another 'cage' mesh.
It is similar to a lattice modifier, but instead of being restricted
to the regular grid layout of a lattice, the cage mesh can be modeled
to fit the mesh better.
http://www.blender.org/development/current-projects/changes-since-244/modifiers/
Implementation Notes:
- OpenNL has been refactored a bit to allow least squares matrices to
be built without passing the matrix row by row, but instead with
random access. MDef doesn't need this actually, but it's using this
version of OpenNL so I'm just committing it now.
- Mean value weights for polygons have been added to arithb.c, a type
of barycentric coordinates for polygons with >= 3 vertices. This
might be useful for other parts of blender too.
====================
This changes the way hinge bones are transformed when their parent bones
are also selected. Before it just disabled transform for these, now they
are rotated and scaled as well, but without influencing the transform
center, which gives behaviour as if they were regular bones.
* when setting the face, images with alpha's will set the texface's alpha option.
* added a draw even to redraw view3d and uv/image view - so the Draw Faces button redraws properly.
* made a macro for checking if the object will draw with textures
* textured meshes in editmode only draw a selected face overlay (otherwise the entire mesh would get a plue tint wich isnt
nice for viewing textures), the selected highlight is still there, this is how Face/UV mode looked.
* Alpha clipping STILL had a case where it wasnt disabled and the interface had its alpha clipped, this should be fixed now.
added an option to reload selected strip data (Alt+R - same as reloading images in the imaeg
viewer)
made the sequencer max memory limit 16gig for 64bit's.
This is a new feature that can make using AO a lot more attractive when rendering
animations with vector blur. It uses the speed vector info calculated in the 'Vec'
speed vector pass, in order to reduce AO samples where pixels are moving more
quickly. There's not much point calculating all those AO samples when the result is
going to be smeared anyway, so you can save a bit of render time by doing
a more noisy render in those areas.
You can use this with a new slider in the Adaptive QMC settings 'Adapt Vec'. The
higher the value, the more aggressively it will reduce samples. 0.0 means no
reduction, and 1.0 reduces one sample per pixel of average displacement for that
pixel. 0.25 or so generally gives decent results, but it depends on how fast things
are moving.
Here's a demo (compare the final blurred result, and render times):
http://mke3.net/blender/devel/raytracing/adapt_speed_off2.jpghttp://mke3.net/blender/devel/raytracing/adapt_speed_on2.jpg
And a less contrived example, a short clip from macouno's 'petunia' bconf animation:
http://mke3.net/blender/devel/raytracing/petunia-adaptvec-noblur-h264.movhttp://mke3.net/blender/devel/raytracing/petunia-adaptvec-blur-h264.mov
* Removed the old get_con_subtarget_name function and fixed the places that used it. This was only suitable for single-target constraints.
* PyConstraints interface drawing should now no longer draw multiple-target fields on top of each other
* Removed double call to BPY_pyconstraint_update when the Update button was clicked. I found this while debugging why PyConstraints didn't seem to be working yet...
Once again, I've recoded the constraints system. This time, the goals were:
* To make it more future-proof by 'modernising' the coding style. The long functions filled with switch statements, have given way to function-pointers with smaller functions for specific purposes.
* To make it support constraints which use multiple targets more readily that it did. In the past, it was assumed that constraints could only have at most one target.
As a result, a lot of code has been shuffled around, and modified. Also, the subversion number has been bumped up.
Known issues:
* PyConstraints, which were the main motivation for supporting multiple-targets, are currently broken. There are some bimport() error that keeps causing problems. I've also temporarily removed the doDriver support, although it may return in another form soon.
* Constraints BPy-API is currently has a few features which currently don't work yet
* Outliner currently only displays the names of the constraints instead of the fancy subtarget/target/constraint-name display it used to do. What gets displayed here needs further investigation, as the old way was certainly not that great (and is not compatible with the new system too)
This adds fractional FPS support to blender and should finally
make NTSC work correctly.
NTSC has an FPS of 30.0/1.001 which is approximately 29.97 FPS.
Therefore, it is not enough to simply make frs_sec a float, since
you can't represent this accurately enough.
I added a seperate variable frs_sec_base and FPS is now
frs_sec / frs_sec_base.
I changed all the places, where frs_sec was used to my best knowledge.
For convenience sake, I added several macros, that should make life
easier in the future:
FRA2TIME(a) : convert frame number to a double precision time in seconds
TIME2FRA(a) : the same in the opposite direction
FPS : return current FPS as a double precision number
(last resort)
This closes bug #6715
Standard framerates not supported / breaks sync -- 23.967 29.967 etc.
https://projects.blender.org/tracker/?func=detail&aid=6715&group_id=9&atid=125
Please give this heavy testing with NTSC files, quicktime in/export
and the python interface.
Errors are most probably only spotted on longer timelines, so that is
also important.
The patch was tested by Troy Sobotka and me, so it most probably should
work out of the box, but wider testing is important, since errors are
very subtle.
Enjoy!
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.
snapping to unselecrted strips didnt work (I didnt notice find_neighboring_sequence needed them to be touching, added find_next_prev_sequence to get the next/prev seq)
added select linked (L and Ctrl+L)
added Ctrl +/- select more/less
- added a new redraw type - REDRAWMARKER, at the moment this draws the same windows as REDRAWANIM, but this may not always be true, and it is more explicit whats
happening, This replaced 5 or so draw calls in quite a few places.
Sequencer Feature, Split Image Sequence.
Splits a image sequence into strips. useful for importing frames for animatics.
Also added undo calls in a few places that did not have it.
Grab/Extend from frame - similar to a feature thats know as ripple editing in other applications. this is a fast way to add or remove frames
from
clips. to use.
Select all, drag the playbak head to the area you want to extend and press Ekey, the clips will be extended on the side the playhead that
the mouse is on.
Also did more cleanups to sequencer transform code.
changed teh way single images operate,
* they dont act like a sequence of 1 image - so you can drag and resize without the trouble of having teh center image.
* they draw without the single frame in them. and no 'gutter?' strip drawing.
* the start frame is always set to be where the handles start.
This is done in the transform and draw areas of the sequencer. added 2 functions,
fix_single_image_seq - moves the seq start without any visible change - so it will load in older blend's
check_single_image_seq - quick way to check for single image.
rewrote the part that deals with moving the strips on the X axis - only user visible functionality is that you can move the seq bounds in one step now.
internally added macro's to make dealing with sequence's less touble.
by Fahrezal Effendi (exavolt)
This adds an additional preference to the view and controls section, which uses the mouse's position as the centre of the zoom when zooming in the 3D View with Ctrl-MMB or the mouse wheel. It's very nice for big scenes, thanks Fahrezal!
A nice todo would be to add this for 2D views as well.
This patch adds prefetch buffering to the sequencer
(see the tracker for additional details:
https://projects.blender.org/tracker/?func=detail&aid=7307&group_id=9&atid=127
)
We create seperate render threads (currently one, because of the fact,
that sequence rendering modifies global structures...), that
render up to the defined userpref value "Prefetch frames" in advance.
(Pressing Alt-A will _first_ fill the buffer and then start playing.)
Bassam and I did some extensive testing, so it should work.
If you don't configure your number of prefetch frames, prefetching is disabled!
(Sane defaults... :)
Also: if the machine is definitely too slow and runs out of the prefetch
area, prefetching is disabled automatically and we are back to good old
frame skipping mode.
My Dual Athlon is able to handle 4 parallel DV streams at once (sometimes
a little bit choppy, but prefetching is never disabled!)
I fixed also a long standing bug in the audio code, that made playback run
backwards at the beginning...
As with the Action and NLA editors, I've refactored the transform code for the IPO editor to get rid of the special (and clunky) transform loop that had been created. The approach this time is closer to the one taken for the UV/Image editor.
What's New/Will-be-possible-in-the-future:
* Numeric input now works for the IPO editor
* Proportional Edit support for the IPO editor will eventually be added.
* Rotation (hopefully), once some hotkeys have been remapped
Known Problems:
* If a keyframe moves past neighbouring keyframes and the transform gets cancelled, it doesn't get restored correctly. This problem is quite icky to resolve (I've got a large hack for this, but that currently segfaults randomly).
* When scaling, the dashed-line (helpline) is drawn from the wrong starting co-ordinates. This does not affect the actual scaling though
* Trying to scale BezTriples with autohandles still doesn't work if either of the handles haven't been transformed yet. This behaviour was already present prior to this commit.
work for same results.
- UV Stitch with the V key was not working (as stated in the menu)
- Rotate UV's and Colors now have an option for CCW (was in the menu
but not implimented)
- Draw face dot in UV when in face mode
I've refactored the Action and NLA Editor Transform tools to use the Transform System instead of setting up their own transform loops. This should have happened ages ago, but no-one got around to doing so.
* There are still a few bugs left to iron out of a few features, but on the whole it should work as well as it used to. These are: the values which get displayed when working with NLA-scaled actions may not all be correct yet; and the Time-Slide tool in the Action Editor is currently kindof broken.
* One of the main benefits of this work, is that it is now possible to use Numeric Input during Transforms.
* Also, a bug that meant that it was not possible to negatively scale keyframes in the Action Editor has been resolved.
this bug is in 2.45 but can work around by setting it manually
---
import sys as pysys
try:
pysys.modules['__main__'].__arm_weakrefs
except:
pysys.modules['__main__'].__arm_weakrefs = {}
---
changed how draw modes work - when displaying textured meshes in editmode, only draw selected edges when "Edge Draw" is not enabled. this makes it easy to see the texture/mapping without edges getting in the way.
This means editmode can draw like UV/Face mode did when "Draw Edges" was disabled.
Also made the active vert/edge/face color themeable, still need to set the default to somthing other then pink.
using the last selected face was almost good enough however when selecting verts and edges the last selected face would become inactive and the space image would flicker about too much.
The active face is used for getting the space image at the moment and keeps scripts that use this flag working also.
This has 2 commands to get and set, so the variable is not accessed directly.
all "UV Calculate" scripts work now
last commit crashed when in solid draw mode, it seems subsurf modifier is ignoring the displayMask since MTFACE is available. just made it do a null check for now.
uvcalc_follow_active_coords.py - should be done inC and put in the snap menu.
Changed how the sticky setting is stored in DNA - (as a char rather then 2 flags).
replaced the UV/FACE icon with another needed for the sticky menu.
removed 2 unused icons.
commented the UV transform panel since it only had 2 buttons in it.
depgraph update calls needed to be added to Ctrl+V/E/F menu's because some commands were crashing.
Bumped the subversion to 2, so the default aspect is set to 1:1.
Made "Repeat Image" option time image drawing and bail out early if its taking too long. (quater of a sec max) this could be avoided if the texture was drawn on a quad, but that wouldnt support other image draw options.
This is a good short term solution because it was possibly to lock up blender if you zoomed out a long way then enabled "Repeat Image".
added an optional view setting - Repeat/Tile image display so mapping with tiled textures you dont have to guess the locations or look in the 3d view to see what your mapping to.
copy and face menu was missing depgraph update calls.
changed how image replace works,
it used to load a new image and then assign that image to all faces in meshes active UV layer.
without replacing images in textures or images on inactive UV layers
now it simply changes the filename of the existing image and reloads the contense.
This is different in some other subtle ways,
1) replace used to use an existing image if it was available,
this could be confusing because when I replaced with an image I didnt like, but had alredy applied to objects in some other scene, replacing again would alter the images from models unintentionally.
2) since replace used to load a new image, it would load with a new name. at the moment the name is left unchanged,
This is better when dealing with linked libraries. because when replacing a images, anything linking to that texture gets broken. since imaged can get automatically named strings longer then its possible to enter into the user interface, you could wind up with some really annoying cases where it wasnt possible to type in the original name again.
Since this replace effects everything usiung the image, we may want to have 2 replace functions, "Replace Globaly" and "Replace in Mesh"
When mapping multiple images on 1 mesh, the UV coordinates often overlap and in many cases you only want to edit the uv coords for the faces applied to that image,
this is an option that only displays UV's for faces use the currently displayed image.
this is mainly because adding pose keyframes recalculates every handle so importing became increasingly slow.
added a 'fast' argument to insertkey that python api's insertPoseKey can make use of since it alredy accepts a 'fast' option.
The ~4450 frame, 31 bone BVH imports in ~108sec now
Seperated editmode switch statement in space.c's event handling,
if editmode is disabled, or the images is a render or composite, UV editing operations are ignored.
In previous releases it has given an annoying warning if selecting or scaling is attempted when out of UV/Face mode.
This is implimented by defining macro's that take the mode into account when get/set/checking the selection and that a face can be drawn.
When this is enabled, things work a bit differently
* all faces are drawn in the UV view (except hidden faces).
* selecting faces/verts in the UV window selects them on the mesh also and vice vercer.
* when EditMode (Face only) is enabled, selecting faces in the UV view is not sticky.
* hiding/(de)select all and invert selection simle call the editmesh functions.
* there is no way to select 1 uv corner of 1 face (because a mesh cannot have this as a valid selection) either all UV's that use a vert (sticky), or the whole face.
Now it is possible to do Copy+Paste in the Action Editor, like in the IPO Editor. There are two new buttons in the Action Editor header for this, using the familiar icons.
* To copy...
Select the keyframes you wish to copy, and the channels that they occur in (except for ShapeKey mode, where it is not possible to select channels). Click copy button.
* To paste...
Place the current frame where you want the first of the keyframes from the buffer is to be pasted. Select all channels you wish the keyframes to be pasted into. Click paste button.
Currently, keyframes are only pasted into 'compatible' curves (i.e. LocX keyframes can only go to LocX, and so on). This may change after user feedback, if this is found to be too restrictive.
== Code Changes ==
I've made a few changes which allow this code to be nicer.
* renamed insert_vert_ipo to insert_vert_icu, as that represents its actual purpose better (and changed all occurrences I could find)
* created a new function, insert_bezt_icu, which does the actual inserting of provided BezTriple data to a given IpoCurve
* recoded insert_vert_icu to use this new function, and also the IPO-Editor keyframe pasting (i.e. pasting in Editmode)
added a stap menu to the UV/Image window for snapping the selection and cursor.
reverted to drawing face dots in editmode when Limit Selection is enabled. even though its not needed for selection its consistent and dosnt look like modes are being changed.
* UV coord buttons overlapped others since merging uv/face and editmode.
* added some quad join and triangulate into the Ctrl+F face menu.
* active face cant be hidden anymore.
The WKey menu was way too big and not well organized, re-arranged keys like this.
Ctrl+V - Vert Menu (remove doubles, smooth...)
Ctrl+E - Edge Menu - left as is
Ctrl+F - Face Menu - (flip normals, shading, Rotate and Mirror UV's/Colors)
Wkey menu only has subdivide in it now.
filesel.c - only show the relative paths option if the file is saved, (flag on by default caused the image to silently fail loading on my system, and gave permission errors on a users), also removed a warning.