- added replacement BLI_snprintf for snprintf to avoid MSVC specific #defines for snprintf.
- BLI_snprintf also ensures trailing zero, so helps preventing buffer overflows
Option to draw object name in 3d window corner, now also displays for
meshes the (pinned) shape key name.
Threads: warning fix, added (void) for function declaration.
-----
Bugfix #6174: files larger than (2^31)-1 bytes were reported with negative
sizes in file manager windows. Added a cast to unsigned int before doing
conversions for the UI.
[ #6077 ] Scripts in sub-sub-folders of Blender's scripts folder won't run.
[ #5572 ] Scripts in sub-folders of Blender's scripts folder won't run
- I've added a function in blenlib to join two strings with a path separator in between.
- Willian, Campbell, please check if commit in BPY_menus is ok and test - thanks!
filename and path issues:
[ #6107 ] Animation crashes when ouput folder does not exist
- using the Windows drive as default and only then degrading to the
Blender installation drive and then the first valid drive.
- in case of degrading added error message print to console to make it
transparent
[ #6106 ] fluids - no default path
- setting the default path to U.tempdir where Blender stores temporary files
- path without volume name still caused error when used as name for relative base
- could happen with name in .Blog file saved by older blender version
- fix for [ #6065 ] Blender refuses to save any renders
Now the Snap To Location (Shift S) tools for bones in pose-mode
work correctly. Previously, only one of these tools was implemented,
but it only worked in some cases.
This fixes item #4874 in Todo Tracker. Was patch #5012.
Please read:
http://www.blender3d.org/cms/Imaging.834.0.html
Or in short:
- adding MultiLayer Image support
- recoded entire Image API
- better integration of movie/sequence Images
Was a whole load of work... went down for a week to do this. So, will need
a lot of testing! Will be in irc all evening.
although it has a lot of noise. Not to mention our bad string code gives
a load of warnings.
I've reviewed specifically:
- file reading/write
- dna and library code
- node system
- entire render module
Done a couple of files in src/ too, seemed to be nice errors.
Removed all limitations from render code for maximum threads. The only
define for this now is in BLI_threads.h, and currently set to 8.
Note that each thread renders an entire tile, and also allocates the
buffers for the tiles, so; more threads might work better with smaller
tiles.
IMPORTANT: node system won't work yet with more than 2 threads! So, don't
try material nodes or compositing with over 2 threads. That I'll commit
later today.
What does work (should work :) is AO and soft shadow now.
- Now baking itself is threaded too (like for render, max 2 cpus. Moving
this to 4 cpus is on todo. Goes twice as fast!
- fix: ESC from bake was broken...
- other fix: toolbox menus didn't treat sublevel string lengths OK,
truncating items like for Group library names.
- New perspective projection capability. If a camera is used as the
projection object, the modifier detects whether to do perspective or
orthographic projection based on the camera type. If any other object
type is used as the projection object, orthographic projection is used.
- Orthographic projection actually works properly now.
- The projected UVs are scaled and offset so that the image is centred in
the projecting camera's view.
- AspX and AspY inputs have been added to control the aspect ratio of the
projected UVs.
Also:
- I have added the Mat4MulVec3Project() function to BLI_arithb.h; this
function converts a 3-dimensional vector to homogeneous coordinates
(4-dimensional, with the 4th dimension set to 1), multiplies it with the
given matrix, then projects it back to 3 dimensions by dividing through
with the 4th dimension. This is useful when using projection matrices.
Random seeding is still not perfect in render, especially lack of good
thread support still.
- VectorBlur node was calling seed for each exec, causing other nodes to
get fixed random too.
- added seed in non-OSA main loop for render
- use BLI_srandom, is better than BLI_srand
2006/11/19 00:07:32 CET
Fix for bug #5250: inaccurate conversion between edit and pose mode bones.
Two very bad bugs:
- replacing atan() with atan2() should also remove the M_PI correction!
This is the equivalent:
angle=atan(x/y); if(y<0) angle+=M_PI;
angle= atan2(x, y);
- the new NormalizedVecAngle2() call was negating an input vector, causing
calling code to screw up. All arithb.c calls should not alter input.
Using acos(dot(u, v)) to find the angle between two vectors is quite
inaccurate, and there's a better way to do it, as explained here:
http://www.plunk.org/~hatch/rightway.php
Also changed the use of atan for computing roll to atan2 in some places,
the latter avoids accuracy and division by zero issues.
Loadsa new compo nodes, most added in new menu "Mattes".
- Seperate into YCC
- Combine YCC
- Seperate into YUV
- Combine YUV
- (Chroma) Difference Matte
- Chroma Key
- Luminance Key
- Color Spill correction
Main problem is missing docs still... Bob is working on it, he'll also
make tooltips for all buttons.
Some UI things might change too, like more clear names.
duplicate code. Also removed redundant files from the bsp module,
that where replaced by boolop last year, no sense in updating them
for these changes. On the user level things should still work the
same, this is only preparation work.
Not counting the removed files, -1501 lines of code, not too bad :)
Creates a 4x4 matrix from location, size and euler angles components.
Coded by Joshua Leung (aligorith) for one of his patches. Integrating right now because it's useful in and of itself.
Made nice crashes that way... but not in !@%@$ OSX because it seems to
clear memory unwanted. Solve dit with adding API call in MemArena to default
to callocs.
Also removed malloc() from MemArena, replaced with MEM_mallocN().
with regards to the noise functions in yafray based on Ken Musgrave's
original code.
I had left the 'Copyright' notice in the comments, and according to
Cyril Brulebois this is a problem. In fact, from what I understand this
makes it even impossible to use or modify the code in other software.
But since it is not a verbatim copy of the code but rather based on Musgrave's
work, he suggested I change it to explicitely state that it is in fact
based on the code from the 'Texturing & Modeling' book.
And since the yafray code is in turn based on the blender code, I better
adapt the blender code too.
This reminded me that I also have forgotten to include the copyright notice
in the mersenne twister rng code I used for the Python Noise module.
This does clearly state to include the original notice with any resdistributed
code, in modified form or not. So I added that too.
I hope that solves the problems.
- code for adding 'c:\' on Windows missed fact that BLI_convertstringcode is also used for databrowse.
- now only replacing when path starts with '/', which isn't the case with databrowse
module itself, replacing the special MEM_mallocT/MEM_freeT functions.
Mutex locking is only enabled when threads are running.
There was no good reason to have these separate, it just led to ugly
hacks when calling functions with non-threadsafe malloc from threads.
structured and more maintainable. The old algorithm could leave the mesh in an
inconsistent state during recursive calls, making it quite fragile. The new
algorithm keeps the mesh in a consistent state, and should be more robust.
This commit fixes the issues EdgeSplit was having with non-manifold meshes
(bug #4946, also reported by several other people). EdgeSplit now works
correctly with all the test files I have.
This commit also fixes the BLI_ghash_remove function to correctly decrement
gh->nentries (the number of entries in the hashtable) on a successful removal.
[ #4337 ] Cant refresh the C:\
[ #4710 ] Wrong paths in file selector under user prefs
[ #4353 ] Using ^ char + click on Open/Load = Blender crash
Details:
Fixes for root paths like C:\ on Windows, where Blender still used '/'.
Also contains fixes for relative paths:
- no relative paths for the default dirs (forced to absolute)
- message if using relative paths when .blend file hasn't been saved.
Lastly also added '.' for refresh in root paths. Windows
FindFirstFile/FindNextFile also return '.' and '..', but not in root paths like C:\
This is a new incarnation of compatible_eul(), a function called:
void Mat3ToCompatibleEul(float mat[][3], float *eul, float *oldrot)
It uses the two euler extraction methods as added by Brecht a while ago,
and checks for compatibility each, and then picks the best of the two
based on minimal difference with 'oldrot'.
Gives for rotation key inserting a much higher hitrate for OK eulers.
The 'edge fill' code failed on filling tiny small polygons. It has a limit
check for double points, which was hardcoded set to 0.0003.
That is (commented in code too) a weak part. Better would be to define a
bounding box first, and then derive the limit from that.
Further, the edge fill code uses blender EditEdge data, which fails when
the filling code removes edges. Certainly a topic to work on once, this
code is from the 80ies!
In windows, without temp path set, the 'save buffers' render option crashes.
I've coded a blenlib BLI_is_writable(char *filename) to check for such
cases. This is not much needed in Blender, since the open() command is
checked for. However, file saving happens deep inside the C++ exr lib, and
it throws an exception crash when a file cannot be written.
Small fix, but results are at least less frustrating now. It uses the
"compatible euler" function from inserting key positions here, preventing
euler values to be constrainted that differ weirdly.
I've tried several other approaches to get a definite rotate constraint,
but only constraining a single axes seems to me impossible magic still...
so you can select 2 faces and then get all coplaner faces around both.
Added fp to face and edge edit data so as to store edge length and face area/perimeter. (in the union so minimal overhead)
current implimentation is fairly optimized.
Change to arithb.c was just to command Inpf as being the dot producr.
Added VecAngle2 - needed for grouping by normal and planer faces.
Made select face & edge group ignore hidden faces.
fixed a bug where hiding faces didnt update G.tot*sel
Fixed BLI_exist: In Windows stat doesn't recognize
a dirname ending is a slash, exept when it's
the root dir ("C:\\"), where it is required.
So trailing slashes are only removed when filename
is longer than 3 chars.
Also fixed Python Sys.c that now uses BLI_exist
instead of calling stat directly.
- Renderwin still used a thread-unsafe malloc, in the header text print
- Setting clipping flags in vertices for parts required a mutex lock after
all... I thought it would go fine, but noticed on renders with small
amounts of faces that sometimes faces disappear from a render.
(was doing movie credits, so all faces are visible! Otherwise it would
have hardly been noticable...)
This modifier allows to make arrays of meshes, with multiple offset types:
- constant offset
- offset relative to object width
- offset with scale and rotation based on another object
The number of duplicates can be computed based on a fixed count, fixed length
or length of a curve. Duplicate vertices can be automatically merged.
Nice docs and example files available in the wiki:
http://mediawiki.blender.org/index.php/BlenderDev/ArrayModifier