Commit Graph

2240 Commits

Author SHA1 Message Date
Campbell Barton
0807c976f4 code cleanup: rename BKE_mesh_to_curve_ex --> BKE_mesh_to_curve_nurblist,
also correct odd indentation.
2013-03-15 10:48:48 +00:00
Campbell Barton
7d585ed475 patch [#34103] check_for_dupid.patch
from Lawrence D'Oliveiro (ldo)

- more comments
- more uses of bool type
- define symbol for length of in_use array in check_for_dupid
2013-03-10 05:46:24 +00:00
Campbell Barton
ddddb7bab1 code cleanup: favor braces when blocks have mixed brace use. 2013-03-09 03:46:30 +00:00
Joshua Leung
181ac91d6d Applying similar optimisations as r.55092 for Animation Data 2013-03-08 10:59:43 +00:00
Ton Roosendaal
a134d9ed51 Speedup for Grease Pencil animators.
Saving and loading gpencil was using different order for the individual list items.
On a 120 Mb gpencil project (yes, animators!) loading time went down from 1 minute 
to a second or two.

Note that this to have effect, you need to save once.

Developer note: check this commit, it uses a new writelist function. You can 
speedup stuff tremendously with keeping saved and read data in sync.
2013-03-07 16:57:53 +00:00
Campbell Barton
f2bb536994 code cleanup: also change BKE_blender.h BLENDER_VERSION_CHAR to 'a' so as not to confuse things. 2013-03-05 14:47:49 +00:00
Ton Roosendaal
dab6f8f559 Bug fix #34534
Fix for 2.66a

The new Copy/Paste objects feature could hang in eternal loop.
Only happens for objects that refer to another scene via linkage.

This fix then crashed Blender, needed to add a NULL check for screens.
2013-03-05 11:19:21 +00:00
Campbell Barton
384948908a patch [#34103] path_util_split_dirstring.patch, path_util_split_dirstring_2.patch, path_util_split_dirstring_3.patch
from Lawrence D'Oliveiro (ldo)

Get rid of BLI_splitdirstring, replace with calls to BLI_split_dirfile, BLI_split_dir_part and BLI_split_file_part as appropriate.
2013-03-05 06:26:10 +00:00
Campbell Barton
e39f05e5fa patch [#34103] fileops_1.patch
from Lawrence D'Oliveiro (ldo) 

Add comments and use of bool type in fileops.c
2013-03-05 03:53:22 +00:00
Campbell Barton
0d5b028d43 patch [#34103] use boolean in path functions and add comments.
path_util_1.patch from Lawrence D'Oliveiro (ldo)
2013-03-04 19:27:51 +00:00
Antony Riakiotakis
f5a28a288b Change default margin for bake to 16 pixels 2013-03-04 15:58:40 +00:00
Brecht Van Lommel
42ca1c8dcd Fix for image transparency backwards compatibility. Now the texture datablock has
a Use Alpha option again. This makes the case where you enabled Premultiply on the
image and disabled Use Alpha on the texture work again.

That's mostly useful when you have a straight alpha image file which has no useful
RGB colors in zero alpha regions (e.g. renders). Then sometimes you don't want to
use the alpha for the texture stack mixing, but you still want to multiply it into
the RGB channels to avoid a blocky transition into zero alpha regions.

This also removes the version patch that copied image datablocks because it's not
reliable and might be causing bug #34434. This does mean we are no longer backwards
compatible for cases where two different texture datablocks with Use Alpha enabled
and disabled where using the same image.
2013-03-04 13:18:14 +00:00
Sergey Sharybin
f186f89a42 Fix #34461: Inconsistent behavior of "Color Mix Node" and "Alpha Over Node"
Added compatibility option "Straight Alpha Output" to image input node

When this option is enabled, image input node will convert float buffer
to straight alpha.

This is not what you'll usually want with new alpha pipeline, nit this
is needed to preserve compatibility with older files saved in 2.65.
In that version byte image are resulting with straight alpha passing
to the compositor and alpha-overing required extra premultiplication
of inputs.

So, that's why Straight Alpha Output is needed -- it's set in versioning
code for byte node images so they'll still output straight alpha.

This option is currently only available in N-panel.

Additional change: added Alpha Mode for image input node to N-panel.
2013-03-01 15:37:15 +00:00
Bastien Montagne
1039135965 More UI messages fixes... 2013-02-28 15:31:20 +00:00
Mitchell Stokes
5331b94607 Hidding the append: already linked message if G.debug is false. This gets rid of some noise in the console for BGE games that run into this case a lot. 2013-02-25 00:03:58 +00:00
Brecht Van Lommel
e8f6caa384 Fix for image alpha version patch with library linked files where the image
datablock is in a different library than the texture datablock. Adjusted the
fix in 54790 to check for this case specifically so it keeps working on other
files that have packed images.

The problem is that blo_do_versions_newlibadr will not return a valid datablock
in some cases with linked libraries. This function is used in various places in
the version patching code and would likely cause problems there as well, needs
to be investigated further.
2013-02-23 20:24:02 +00:00
Ton Roosendaal
5de307122c Bug fix in 2.66 release, irc submitted.
File with packed images crashes on load.

Do-versions now is copying Images, because texture "use alpha" has been removed...
However, it then also copied packaged images, which crashes for some reason.

For now I skip packed image copy, which keeps blender work. This versioning
code needs more checking though.
2013-02-23 14:52:40 +00:00
Campbell Barton
9ef5d2d905 fix for error in the blenderplayer caused by r54727 (can't assume G.main is valid on load). 2013-02-23 01:33:47 +00:00
Campbell Barton
7ad0790189 patch [#34103] Add explanatory comments to dna_genfile.[ch]
from Lawrence D'Oliveiro (ldo)
2013-02-22 13:35:32 +00:00
Sergey Sharybin
ca689e88aa Motion tracking dopesheet
Highlight background depending on number of tracks existing on frame.

This is not so much mathematically accurate displaying where things
shall be improved, but it's nice feedback about which frames better
be reviewed.

Bad frames are tracks < 8, highlighted with red.
OK-ish frame  are 8 <= tracks < 16, highlighted with yellow.

Could be some artifacts with color region start/end, this is a bit
unclear what exactly expected to be highlighted -- frames are
displayed as dots, but in fact they're quite noticeable segments.

---
svn merge -r54572:54573 ^/branches/soc-2011-tomato
2013-02-22 10:13:15 +00:00
Brecht Van Lommel
20220d47e3 Dependency Graph: some refactoring which should have no user visible impact
besides performance in some cases.

* DAG_scene_sort is now removed and replaced by DAG_relations_tag_update in
  most cases. This will clear the dependency graph, and only rebuild it right
  before it's needed again when the scene is re-evaluated.

  This is done because DAG_scene_sort is slow when called many times from
  python operators. Further the scene argument is not needed because most
  operations can potentially affect more than the current scene.

* DAG_scene_relations_update will now rebuild the dependency graph if it's not
  there yet, and DAG_scene_relations_rebuild will force a rebuild for the rare
  cases that need it.

* Remove various places where ob->recalc was set manually. This should go
  through DAG_id_tag_update() in nearly all cases instead since this is now
  a fast operation. Also removed DAG_ids_flush_update that goes along with
  such manual tagging of ob->recalc.
2013-02-21 19:33:04 +00:00
Sergey Sharybin
e5a135e0b2 Fixes for alpha mode do_versions code
Before this change only old flag "Premultiply" was used to
detect alpha mode, which is not enough actually.

Now the logic here is:

- If "Premultiply" was enabled it is likely float image with
  straight alpha, which shall be premultiplied before usage.

  In this case image/sequence Alpha Mode is set to Straight.

- Otherwise use default alpha mode for image format based on
  an extension. This could fail in some cases like TIFF, but
  this wasn't handled fully correct in older blender anyway.

Initial discovered issue was that EXR images saved in older
Blender versions were set to Straight alpha mode, which is
obviously a straight way to lots of headache.
2013-02-19 08:37:08 +00:00
Dalai Felinto
42f9872363 bugfix: [#34220] Blenderplayer no longer working after r54395 commit [segfault due to world not valid]
patch by Sergey Sharybin

note, I still find strange that world was valid and now it is not, but at least we no longer segfaults
2013-02-13 23:09:12 +00:00
Ton Roosendaal
da4711632c Fix for splitting startup and userpref:
The do-version handling for Userdef is outside file reading, which makes
it needed to store the file version in UserDef, so it gets the correct
version to handle.

Thanks Antonis R. for pointing at the omission!

Also removed the mindboggling define. If you do such, then make it
like "MAIN_VERSION_OLDER_THAN() or so.

In general version hacking could be limited much better... ask me
before even thinking to add one, most optimal is to do it in a way
it's not depending on a version ever - forward/backward compatible.
2013-02-13 16:52:14 +00:00
Sergey Sharybin
75cbb07507 Added option to composite/viewer nodes which specifys whether alpha input
is straight or not (premultiplied is default).

This is useful in cases when you want to check on output of such nodes
as keying which does have straight alpha output.

Also added missing do_version code to previous compo do_versions.
2013-02-10 12:20:10 +00:00
Sergey Sharybin
ebf18c6df9 Corrections to alpha pipeline do_versions
Basically they're aimed to solve issues when scene with sky
was used for compositing. If compo used alpha output result
of current trunk would be completely different form hwo it
was before.

Two heuristics here:
- If there's no world or world color is black, it completely
  equals to straight alpha mode, no further magic is needed
  to preserve compatibility

- If scene is used as Render Layer node and something is
  connected to Alpha output of this node, ensure alpha mode
  for this scene is set to Premultiplied.

Basically it shall give better compatibility and make
4K mango project just happy! :)
2013-02-08 16:25:35 +00:00
Brecht Van Lommel
32a6a3eb63 Fix #33747: do better backwards compatibility for image transparency changes.
The use alpha option moved from the texture datablock to the image, and now it
will duplicate the image datablock in case you have one texture using alpha and
the other not.
2013-02-08 15:56:14 +00:00
Sergey Sharybin
fdfa5910b5 Fix #34040: Moving Normal Node with enabled Cycles Material Preview crashes
Issue was caused by couple of circumstances:

- Normal Map node requires tesselated faces to compute tangent space
- All temporary meshes needed for Cycles export were adding to G.main
- Undo pushes would temporary set meshes tessfaces to NULL
- Moving node will cause undo push and tree re-evaluate fr preview

All this leads to threading conflict between preview render and undo
system.

Solved it in  way that all temporary meshes are adding to that exact
Main which was passed to Cycles via BlendData. This required couple
of mechanic changes like adding extra parameter to *_add() functions
and adding some *_ex() functions to make it possible RNA adds objects
to Main passed to new() RNA function.

This was tricky to pass Main to RNA function and IMO that's not so
nice to pass main to function, so ended up with such decision:

- Object.to_mesh() will add temp mesh to G.main
- Added Main.meshes.new_from_object() which does the same as to_mesh,
  but adds temporary mesh to specified Main.

So now all temporary meshes needed for preview render would be added
to preview_main which does not conflict with undo pushes.

Viewport render shall not be an issue because object sync happens from
main thread in this case.

It could be some issues with final render, but that's not so much
likely to happen, so shall be fine.

Thanks to Brecht for review!
2013-02-05 12:46:15 +00:00
Campbell Barton
9ddf928dbd remove stringify macro from alloc's 2013-02-05 09:42:40 +00:00
Monique Dewanchand
ea723386c3 updated fix for [#34089] Crash opening file containing translation node saved before rev54235
some of our artists work to much on trunk :) Especially our beloved Pablo Vazquez.

We increased the blender file sub-version for checking if translate nodes needed to be updated.

Happy blending.
2013-02-04 17:38:37 +00:00
Campbell Barton
69993c5d40 style cleanup: spaces -> tabs 2013-02-04 00:18:09 +00:00
Jeroen Bakker
b58b107db4 Fix for [#34089] Crash opening file containing translation node saved before rev54235 2013-02-03 15:38:06 +00:00
Campbell Barton
c93d6f4606 add missing break in direct_link_constraints, CONSTRAINT_SPACEONCE flag was getting set to CONSTRAINT_TYPE_KINEMATIC. 2013-02-02 04:13:38 +00:00
Campbell Barton
54223ed05b Add active region for operator execution.
This means you can for example, uv unwrap in quad-view and change settings in the toolbar without defaulting back to the first quad-view region available. 

This may be displayed to the user later, for now this is set on executing registrable operators.
2013-01-30 12:22:02 +00:00
Sergej Reich
47c96081d0 rigidbody: Add rigid body constraints
Constraints connect two rigid bodies.
Depending on which constraint is used different degrees of freedom
are limited, e.g. a hinge constraint only allows the objects to rotate
around a common axis.

Constraints are implemented as individual objects and bahave similar to
rigid bodies in terms of adding/removing/validating.

The position and orientation of the constraint object is the pivot point
of the constraint.

Constraints have their own group in the rigid body world.

To make connecting rigid bodies easier, there is a "Connect" operator that
creates an empty objects with a rigid body constraint connecting the selected
objects to active.

Currently the following constraints are implemented:
* Fixed
* Point
* Hinge
* Slider
* Piston
* Generic

Note: constraint limits aren't animatable yet).
2013-01-23 05:56:56 +00:00
Sergej Reich
089cf12435 rigidbody: Add point cache support
Add read/write/interpolate functions.

In order to get rigid body point cache id from object it's now required to pass the
scene to BKE_ptcache_ids_from_object().

Rigid body cache is drawn in the orange color of the bullet logo.
2013-01-23 05:56:34 +00:00
Sergej Reich
fc377c17e3 rigidbody: Add force field support
Force fields work with rigid bodies just like they do with other simulations.

Increase min and max strength of force fields so they can influence heavy rigid
bodies.

TODO: Adjust force field strength based on the time step taken.

Part of GSoC 2010 and 2012.
Authors: Joshua Leung (aligorith), Sergej Reich (sergof)
2013-01-23 05:56:27 +00:00
Sergej Reich
27601aaf01 rigidbody: Add DNA/RNA/BKE infrastructure for the rigid body sim
This is just the basic structure, the simulation isn't hooked up yet.

Scenes get a pointer to a rigid body world that holds rigid body objects.
Objects get a pointer to a rigdid body object.

Both rigid body world and objects aren't used directly in the simulation
and only hold information to create the actual physics objects.

Physics objects are created when rigid body objects are validated.
In order to keep blender and bullet objects in sync care has to be taken
to either call appropriate set functions or flag objects for validation.

Part of GSoC 2010 and 2012.
Authors: Joshua Leung (aligorith), Sergej Reich (sergof)
2013-01-23 05:56:22 +00:00
Ton Roosendaal
e11d22a6b7 Matcap support in 3D Viewport.
Full log is here:
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.66/Usability#Matcap_in_3D_viewport

Implementation notes:

- Matcaps are an extension of Solid draw mode, and don't show in other drawmodes.
  (It's mostly intended to aid modeling/sculpt)

- By design, Matcaps are a UI feature, and only stored locally for the UI itself, and
  won't affect rendering or materials.

- Currently a set of 16 (GPL licensed) Matcaps have been compiled into Blender. 
  It doesn't take memory or cpu time, until you use it.

- Brush Icons and Matcaps use same code now, and only get generated/allocated on
  actually using it (instead of on startup).

- The current set might get new or different images still, based on user feedback.

- Matcap images are 512x512 pixels, so each image takes 1 Mb memory. Unused matcaps get 
  freed immediately. The Matcap icon previews (128x128 pixels) stay in memory.

- Loading own matcap image files will be added later. That needs design and code work 
  to get it stable and memory-friendly.

- The GLSL code uses the ID PreviewImage for matcaps. I tested it using the existing
  Material previews, which has its limits... especially for textured previews the
  normal-mapped matcap won't look good.
2013-01-22 11:18:41 +00:00
Campbell Barton
d1a211188b property change reporting now uses the context again, rather then checking a dir() on context, hard-code common paths.
eg:
  bpy.context.scene.render.resolution_x = 1921
  bpy.context.object.data.use_auto_smooth = True
  bpy.context.object.active_material.diffuse_intensity = 1
  bpy.context.scene.world.exposure = 0.1

also remove duplicate GS() defines
2013-01-22 04:24:01 +00:00
Joshua Leung
40629671f4 Style cleanup 2013-01-21 06:32:09 +00:00
Antony Riakiotakis
1d45242208 Get rid of the BRUSH_FIXED_TEX flag, use mapping modes instead. Version
patched all previous texture paint brushes to use tiled mapping since
mappping is now shared between 2d and 3d painting.
2013-01-16 14:36:13 +00:00
Campbell Barton
ba78e3e312 no need to call BLI_countlist on idproperty groups when comparing. 2013-01-14 12:02:10 +00:00
Ton Roosendaal
ef5a41a89d Three fixes;
- Previous commit had a line of code of WIP project in it... tss

- Packed Library data was not freed

- Removed recent (post 2.65a) code to exclude packed data from Undo system.
  It's internal data thats part of file spec, errors happen for example on
  restoring quit.blend or temp saves.
2013-01-13 12:25:56 +00:00
Ton Roosendaal
6e990de9b0 Usability:
Using Proxy Armature on groups: an Undo now doesn't force a complete re-evalution
of this system anymore, so posing works similar as for regular (non linked)
armatures - an undo step goes back to the previous pose.

Before, an undo made the entire armature go to rest pose. Bad bad :)

I need animators to carefully check - report back if there's other issues!
Tested on Gilga character from Tube Open Movie.
2013-01-13 11:31:01 +00:00
Sergey Sharybin
c92be1a9a5 Correction to do_versions() in 53676
Affect on curve radius only if offset/extrude was used,
otherwise radius could have been used for other things
(like controlling hair) which will likely break
compatibility.

Reported by Tube project guys.
2013-01-10 18:11:56 +00:00
Campbell Barton
18536e201f add a segfault handler that writes out the info log into a crash file alongside the blend file. 2013-01-10 16:37:48 +00:00
Campbell Barton
ceb9701507 don't store bevel weights or edge crease customdata layers in editmode unless they are needed.
configurable in 'Geometry Data' panel, will be added when running crease edges transform for example.
2013-01-10 04:43:31 +00:00
Sergey Sharybin
5fe82bc091 Fix #33796: Curve radius makes affect only in full fill mode 2013-01-09 10:15:12 +00:00
Campbell Barton
02f6645bef fix [#33806] weight paint crash and computer freeze when painting
clear weight paint runtime data on file-load.
2013-01-09 04:17:53 +00:00