Commit Graph

2547 Commits

Author SHA1 Message Date
52eb61f84b Fix state losses for recursive outliner trees (e.g. datablocks editor)
In previous optimization in outliner I assumed that order in treehash was not important.
But testing outliner in datablocks mode revealed a problem: when user expands multiple recursive levels and then closes any element, it always closed the top level of recursion.
Now it should work fine with recursive trees.
Now treehash contains groups of elements indexed by (id,nr,type). Adding an element with the same (id,nr,type) results in appending it to existing group. No duplicates are possible in treehash.
This commit should also make lookups a little bit faster, because searching in small arrays by "used" is faster than searching in hashtable with duplicates by "id,nr,type,used".
2013-08-23 20:35:00 +00:00
785a67f396 Partial revert of recenr cu->disp merge commit
That ended up in tricky code trying to mimic depsgraph
branch behavior API-wise preserving texspace and bound
box calculation compatible with previous releases.

So for now bring cu->disp back to the trunk but keep
texpsace and boundbox APIs the same as in the branch.

This keeps texpsapce and boundbox behavior fully compatible
with previous releases and still makes API the same as
for meshes.
2013-08-21 07:40:19 +00:00
2dcb1d7002 Remove unused bounding box from MetaBall
--
svn merge -r58150:58151 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:41:13 +00:00
527ddb0a5b Move bevel list and path from Curve to Object datablock
I know this is not so much nice to have this guys hanging
around in a general Object datablock and ideally they better
be wrapped around into a structure like DerivedMesh or
something like this. But this is pure runtime only stuff and
we could re-wrap them around later.

Main purpose of this is making curves more thread safe,
so no separate threads will ever start freeing the same path
or the same bevel list.

It also makes sense because path and bevel shall include
deformation coming from modifiers which are applying on
pre-tesselation point and different objects could have
different set of modifiers. This used to be really confusing
in the past and now data which depends on object is stored
in an object, making things clear for understanding even.

This doesn't make curve code fully thread-safe due to
pre-tesselation modifiers still modifies actual nurbs and
lock is still needed in makeDispListsCurveTypes, but this
change makes usage of paths safe for threading.

Once modifiers will stop modifying actual nurbs, curves
will be fully safe for threading.

Actually, this commit also contains wrapping runtime curve
members into own structure

This allows easier assignment on file loading, keeps curve-
specific runtime data grouped and saves couple of bytes in
Object for non-curve types.

--
svn merge -r57938:57939 ^/branches/soc-2013-depsgraph_mt
svn merge -r57957:57958^/branches/soc-2013-depsgraph_mt
2013-08-19 09:25:24 +00:00
0312b18319 Get rid of a display list stored in Curve datablock
This display list was only used for texture space calculation,
and even there this display list was only used for bounding
box calculation.

Since we already do have bounding box in a curve datablock
there's no reason to duplicate non-modified display list
just to calculate bounding box later, let's just calculate
bounding box at the first point.

This makes code a little be more thread-safe but curves are
still not safe for threads at all because of bevel list and
path. That would be solved later.

--
svn merge -r57939:57940 ^/branches/soc-2013-depsgraph_mt
2013-08-19 09:13:15 +00:00
47c23750e8 style cleanup: indent/whitespace 2013-08-19 01:48:44 +00:00
fd7bffa3c5 replace calls to BLI_linklist_append with BLI_linklist_prepend where order us unimportant, since append steps over the whole list each time. 2013-08-16 13:06:40 +00:00
24ce60cfe4 Merge plane track feature from tomato branch
This commit includes all the changes made for plane tracker
in tomato branch.

Movie clip editor changes:

- Artist might create a plane track out of multiple point
  tracks which belongs to the same track (minimum amount of
  point tracks is 4, maximum is not actually limited).

  When new plane track is added, it's getting "tracked"
  across all point tracks, which makes it stick to the same
  plane point tracks belong to.

- After plane track was added, it need to be manually adjusted
  in a way it covers feature one might to mask/replace.

  General transform tools (G, R, S) or sliding corners with
  a mouse could be sued for this. Plane corner which
  corresponds to left bottom image corner has got X/Y axis
  on it (red is for X axis, green for Y).

- Re-adjusting plane corners makes plane to be "re-tracked"
  for the frames sequence between current frame and next
  and previous keyframes.

- Kayframes might be removed from the plane, using Shit-X
  (Marker Delete) operator. However, currently manual
  re-adjustment or "re-track" trigger is needed.

Compositor changes:

- Added new node called Plane Track Deform.

- User selects which plane track to use (for this he need
  to select movie clip datablock, object and track names).

- Node gets an image input, which need to be warped into
  the plane.

- Node outputs:
  * Input image warped into the plane.
  * Plane, rasterized to a mask.

Masking changes:

- Mask points might be parented to a plane track, which
  makes this point deforming in a way as if it belongs
  to the tracked plane.

Some video tutorials are available:
- Coder video: http://www.youtube.com/watch?v=vISEwqNHqe4
- Artist video: https://vimeo.com/71727578

This is mine and Keir's holiday code project :)
2013-08-16 09:46:30 +00:00
7a6f3d9e43 fix [#36349] Separate mesh by material creates meshes with all the materials from the original 2013-08-14 14:36:43 +00:00
3627541894 BGE: Fixing the memory leaks reported when the BlenderPlayer exits.
They were caused by not having a free_windowmanager_cb set and by not having registered SpaceTypes, which meant data allocated for thosse SpaceTypes could not be freed. These were solved by defining a free_windowmanager_cb for the player that just frees wmWindows, and by making sure we only allocate memory for registered SpaceTypes.
2013-08-10 21:17:46 +00:00
a6c4c6dbc6 Linking Brushes did not link the mask texture properly 2013-08-08 09:45:59 +00:00
9a80fc62d4 Fix crashes that could still happen opening files with the outliner bug that existed
between revision 58855 and 58959. Now it ensures the memory is not freed before reading.
2013-08-07 19:29:15 +00:00
4f29aeeff2 code cleanup: some structs were declaring data when only typedef's were intended, make local vars and functions static. 2013-08-07 03:44:05 +00:00
bff75bafbd Fix crash loading .blend files that have multiple outliners in a screen, saved
with recent outliner optimizations (revision 58855, 3 days ago), in any Blender
version before this commit. On current Blender it would give a double free
warning in the console.

The problem is that it creates a temporary TreeStore on file save. However if you
have multiple outliners this memory block would always be at the same memory
address making it no longer unique. That then meant old memory address lookups on
file read were failing. Solution now is to postpone freeing these temporary memory
blocks until the end so that they are at unique addresses.
2013-08-06 05:35:54 +00:00
d2dbc0b85e more consistent use of checks of BLI_open(), check 'fd < 0' rather then -1. packedfile incorrectly treated 0 as an error value. best not be vague/sloppy with this. 2013-08-04 17:30:47 +00:00
8052bf0ec2 add missing NULL checks from BKE_constraint_get_typeinfo(), so constraints from the future dont crash.
also remove some redundant NULL checks.
2013-08-03 22:03:15 +00:00
66a4077927 fix for [#36260] 2,300 Objects Makes Blender Unresponsive
- performance of outliner was low because of unoptimal data structures.
- now it uses BLI_mempool instead of custom mempool and GHash to make searches for duplicates faster.
- also fix undesired behaviour of BLI_mempool_as_arrayN

thanks to Campbell Barton and Lukas Tönne for helping me get a better fix put together.
2013-08-03 11:35:09 +00:00
5302469834 Some versioning changes/patching of the brush system:
* Change overlay alphas to 33 if not initialized. This should have been
done for 2.67 but better do it now to avoid frustration with overly
transparent overlays. For users that have set this low manually this
will reset the setting to 33 but I think it's less irritating than users
who unwillingly had the setting to 1 and saw nothing when activating the
overlay.

* Allow overlay alpha to be zero as well

* Reset old, now obsolete BRUSH_FIXED flag for brushes that still use
this. I am doing this here to avoid patching hell when the paint brush
is merged, since it's not possible to know the merged version
beforehand, and this flag will be used.
2013-08-02 00:24:34 +00:00
576161b186 fix [#36262] Paste strip with video or sound content from another file crashes Blender
existing code was very stupid.

- all ID pointers for clipboard strips are handled uniformly.
- clipboard stores a duplicate ID pointer which are restored on paste.
- restoring pointers...
-- use ID's that are still in the database (copy&paste within the same file).
-- fallback to name lookup.
-- fallback to loading them from the original filepath (movie-clip and sound only).

also fix bug pasting where initialing the sound wasn't done if there was no frame-offset.
2013-07-24 06:51:04 +00:00
3ff3d1bc0f replace use of strcat() where the string offset is known.
also correct bad logic with converting a textblock to 3d-text, bytes-vs-number of chars wasn't handled right.
2013-07-23 12:49:30 +00:00
c8ed6f79b5 Fix #36225, spacing was halved and set to zero for texture paint brushes that had spacing of 1. Related to own changes to maintain spacing consistent between 2.67-2.66. 2013-07-23 11:13:39 +00:00
824ec5a388 code cleanup: case & brace placement 2013-07-19 10:40:43 +00:00
1c15beb6b2 remove NULL checks on fixed size arrays, also was calling BLI_testextensie_glob every time in the file selector with a blank string. 2013-07-13 14:16:59 +00:00
d4ff53b760 fix [#36066] crash when Tab out text object
the way Curve.len is used at the moment is really stupid, calculate string size on save for now, but should really store the length in bytes and total number of characters.
2013-07-09 06:21:45 +00:00
Lukas Toenne
d75e0f320b Fix #36024. This part fixes user counting for node editor trees. The user count previously would only work correctly for node trees which are part of material, scene, etc. or linked by group nodes. Any
custom pynodes tree edited directly as library data would get a 0 user count on reload and subsequently not be saved. Now the node space follows the same pattern as the image space: the node tree(s) user
count gets incremented on file load and opening in the editor ensures a real user. This leads to 1 "unreal" user for the editor (dropped on reload), but seems to be the only viable solution atm.
2013-07-08 11:38:11 +00:00
418011907c remove nan copyrights from code added since blender become opensource (copy paste errors), also remove BKE_script.h 2013-07-02 10:14:59 +00:00
e64ae3ad7c fix [#35914] Blender crashes when trying to use vertex selection masking on a copy directly after using SHIFT+d 2013-06-30 22:04:03 +00:00
37f5945188 style cleanup 2013-06-25 10:44:30 +00:00
447e9a4cd5 add option to enable auto-execute scripts, but exclude certain directories. 2013-06-18 18:11:52 +00:00
0fab77023d fix for building c++ rna api with recently added smoothgroup api call. 2013-06-14 14:57:35 +00:00
cc3476b07e Fix for
* [#35724] Backdrop zoom can be set to a very small value, making the backdrop disapear.

There were checks in the drawnode that needed to be placed in the readfile.
The checks checked if the zoomlevel was 0.0, then it was defaulted to 1.0, but the zoomvalue had a minimum limit of 0.01, hence it did not work.
Moved the check to the readfile and checked for all values smaller then 0.02. These values are then reset to 1.0

Jeroen & Monique
 - At Mind -
2013-06-14 13:56:00 +00:00
a6b505ef0b style cleanup 2013-06-06 06:02:46 +00:00
Lukas Toenne
4c2a51e1f9 Fix #35640, part 1. Set the id.lib pointer for nested bNodeTree data blocks inside material, scene, etc. on lib_link, so that the UI buttons get disabled when editing linked node trees. Thanks to Brecht
van Lommel for suggesting this fix.
2013-06-05 19:06:27 +00:00
Lukas Toenne
281e538be0 Fix #35570, old group nodes with empty socket name strings crash. The identifier assignment was not taking potentially empty name strings into account. In addition some of the BLI_uniquename calls were
not passing a valid defname parameter, also crashing.
2013-05-30 11:51:21 +00:00
9fb3d3e032 remove redundant includes from cmake and scons. 2013-05-30 02:16:22 +00:00
65baf6ca5c remove duplicate sys-types headers.
also change define checks in BLI_sys_types.h (was warning a lot in linux about unused defines).
2013-05-29 21:38:23 +00:00
225c5fee6b move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading)
remove MEM_sys_types.h which was a duplicate.
2013-05-28 19:35:26 +00:00
6de829cb7a code cleanup: split scons includes onto multiple lines, reduce chance of include conflicts later on. 2013-05-20 18:42:28 +00:00
d3a6c0c834 Smoke simulator: Add flow subframes and ability to set custom particle size.
Previously it was nearly impossible to have fast moving objects emitting smoke or they would just leave behind a row of smoke poofs instead of continious stream of smoke. Now it's possible to set number of subframes for each smoke flow.

Another new thing is ability to set size of smoke flow particles instead of using closest smoke cell. This also works with my earlier "full sample" commit, so no more blocky particles either. :)

For more info check my blog post: http://www.miikahweb.com/en/blog/2013/05/17/blender-smoke-subframes

This commit also includes couple of fixes I spotted while testing:
* Fix: dissolve was applied at different time for low res and high res simulations.
* Fix: full sample setting didn't get copied with domain.
2013-05-17 17:45:37 +00:00
8160027ff8 Fix for version patch in recent smoke commit, was using && instead of &. 2013-05-10 16:57:20 +00:00
2f9f3dd590 Smoke: Add new "Full Sample" option to high resolution smoke panel.
This is hopefully the ultimate solution against smoke blockiness near emitter.

Previously high resolution flow/emitter voxels were generated based on the low resolution ones. So if you had 32 resolution and 4 division high resolution, it still used smoke flow generated from those 32 resolution voxels. Now I introduced a new sampling method called "Full Sample" that generates full resolution flow for for high resolution domain as well.

Read more about it in my blog post: https://www.miikahweb.com/en/blog/2013/05/10/getting-rid-of-smoke-blockiness

Also changed "quick smoke" operator default voxel data interpolation mode to "Cubic B-Spline" to smoothen out it even more.
2013-05-10 16:18:00 +00:00
c1f408c058 Partial revert of own commits r56604 and r56603:
* Reverted the changes to code comments, as suggested by Campbell. It makes it more hard to follow.
* Only keep changes to actual UI messages.
2013-05-09 10:03:38 +00:00
Lukas Toenne
3fb67ac16d Fix for do_versions bug with node groups: The special case of direct input-to-output connections was not handled correctly. In this case both the tonode and fromnode pointers in old node groups are NULL. 2013-05-09 08:29:59 +00:00
e0edac4952 UI naming consistency:
* ShapeKey -> Shape Key. Was called "Shape Key" in most places already.

Pointed out by Dalai, thanks!
2013-05-08 21:41:47 +00:00
9514a28e4f code cleanup: remove redundant check in writedata(). 2013-05-08 13:00:06 +00:00
aa959b4e7d Putting undefined versioning to only older than 2.67. 2013-05-07 16:35:37 +00:00
5455928262 Fix #35122: Blenderplayer crashes when loading level
Issue was caused by ntreeUpdateTree calling for a ntree
which is not in G.main.

This lead to issues in ntreeVerifyNodes (which is called
from ntreeUpdateTree).

Made is so ntreeUpdateTree now accepts main as an argument.
Will work for the release, later we could either solve the
TODO mentioned in ntreeUpdateTree which will eliminate need
in main there or make it so context's main is used from all
over where ntreeUpdateTree is called (currently there're
still some usages of G.main).
2013-05-07 15:28:42 +00:00
88129ac395 Fix for crash when using 2D stabilization for float movie clips
Also removed unneeded image buffer scaling, it was only needed
for "early output" if there was no rotation. That is no longer
supported since it used to pixelate result a lot and interpolation
is always used now.

Saves quite a few of memory and CPU cycles.
2013-05-06 17:59:02 +00:00
ad7a74f58d Another correction to svn rev56509
Initial fix was not fully working, because faulty
edge shared the same address as screen area. This
lead to screen freeing issues -- double free (which
was supressed by guarded allocation actually) but
also freed memory access when iterating via edges
to free them.

Solved by a small hack which removes edges with bad
vertices from edges list. This prevents double-free
and freed memory access cased by corrupted files we're
currently fixing. In other cases this tweak is likely
be harmless -- in worst case scenario it'll lead to
small memory leak, which is not as much lethal as
freed memory access.
2013-05-06 12:27:14 +00:00
5282c4d003 Fix for uninitialized variable in previous commit. 2013-05-06 11:38:21 +00:00