Commit Graph

1916 Commits

Author SHA1 Message Date
Campbell Barton cab9bd2bf9 Cleanup 2014-05-23 10:42:24 +10:00
Dalai Felinto 7f089afc8b Bake-API: relaxing in the check for scale uniformity
It still warns the user that there may be an error, but the baking goes
on. Also using the new is_uniform_scaled_m4() instead of float comparison.

Reported and fix suggested by Campbell Barton as a concern over 2bfc3deb
2014-05-22 21:35:58 -03:00
Dalai Felinto 2bfc3debd9 Bake-API: throws error if highpoly object(s) doesn't have uniform scale (fix T40156)
The real fix would be to support non-uniform scaled highpoly objects.
For more information see 8d29739
2014-05-22 15:05:02 -03:00
Dalai Felinto a8a5d68bb5 Bake-API: throws error if there is no UV 2014-05-22 15:05:01 -03:00
Lukas Tönne 7a86765095 Fix T40290: False (or malfunctioning) dependency-cycle warning when adding dupligroup objects to another group.
The new recursion check for groups duplicating themselves has to un-set the LIB_DOIT flag after each object, otherwise it will prevent duplicating a (non-recursive) group multiple times.
2014-05-22 15:46:35 +02:00
Dalai Felinto 8d297394ba Bake API: partial fix T40156 (applyRotation issues)
This fixes most of the cases, the only situation not addressed is when
the highpoly object(s) has non-uniform scale.

mul_transposed_mat3_m4_v3() should take care of non-uniform scales so
I'm a bit confused on why it doesn't work. The lowpoly object can have
any transformation, the only issue is if the highpoly object has
non-uniform scale.

Test file of the remaining issue:
https://developer.blender.org/file/info/PHID-FILE-tpw2xgddyzxtpg3e7xzs/

Reference reading:
http://www.unknownroad.com/rtfm/graphics/rt_normals.html
2014-05-21 15:10:57 -03:00
Bastien Montagne 875aff2a9a Fix T39897: shape keys created while the Relative checkbox is unchecked start out with frame=0
So! First, frame for absolute shape keys: never allow a new key to have the same pos as an
existing one (this does not make sense). This way, the two workflows are possible (create
all keys and then animate ctime, or animate ctime and then create keys where you need them).

Also, fixed UIList for shapekeys, the "absolute" test was wrong, and better to show frame
value, even though not editable, than nothing in case of absolute keys.

And finally, add getter to RNA 'frame' readonly value, so that we output real frame values,
and not dummy internal ones (which are /100) in our API.
2014-05-18 22:05:21 +02:00
Lukas Tönne 003387fab5 Fix T40230: Recursion check when adding objects to groups is incorrect.
rB568f0c7 added a recursion check that is supposed to prevent cyclic
cases where a group includes itself via dupli instancing.

The check function was descending into all groups nested inside the
target group - which works for single level recursion like in the test
case, but does not handle generic recursion. Basically it asked:
"is object X in the group already or in any instanced dupligroup?"

The new check instead asks:
"is group G dupli'd by X or any instanced subgroup thereof?"
which is what we really need to know.
2014-05-17 18:28:30 +02:00
Bastien Montagne 2149886033 More UI messages fixes and tweaks. 2014-05-13 15:07:24 +02:00
Bastien Montagne 1c2e6de969 Usual typo and style fixes in UI messages... 2014-05-12 23:08:31 +02:00
Lukas Tönne 3d7d930e31 Fix for crash when doing "make local object+data" on an empty.
This commit added object data loop, without checking ob->data for NULL:
rB6e5e3b73f37f952420d87a3d8acd07a7f68dd5a3
2014-05-12 07:49:31 +02:00
Dalai Felinto c80e9866c8 Revert "Fix wrong job type used in cycles bake operator, could cause crashes."
This reverts commit 97823f6047.

I was to push a fix based on Brecht's solution (this commit) when he did
the same.

This fix is correct, but it misses replacing WM_JOB_TYPE_OBJECT_BAKE
with WM_JOB_OBJECT_BAKE_TEXTURE in the rest of the file, which may lead
to problems when calling the operator in a quickly sucession -
WM_jobs_test also tests for the same type of JOB.

I created WM_JOB_TYPE_OBJECT_BAKE elsewhere, may as well use it. Unless we revert 20c90ea and f194da3.

I'm fine with either way, just trying to get master to work again ;)
2014-05-09 12:32:26 -03:00
Dalai Felinto f194da3455 Bake API: reports were used after being freed leading to random crashes (fix T40077) 2014-05-09 12:30:32 -03:00
Brecht Van Lommel 97823f6047 Fix wrong job type used in cycles bake operator, could cause crashes.
Ref T40077.
2014-05-09 17:14:13 +02:00
Dalai Felinto 14643167a6 Bake API: small change, forcing Render to not have reports
Again, no functional change, just trying to narrow down the possible
reasons for the random crashes in OSX.
2014-05-08 22:56:50 -03:00
Dalai Felinto 20c90eae14 Bake API: renaming WM_JOB_RENDER_BAKE to WM_JOB_OBJECT_BAKE and use it consistently
Note: that doesnt change much. It definitively doesnt change the random crash OSX is experiencing sometimes.
2014-05-08 22:56:50 -03:00
Lukas Tönne cd60c18be1 Fix T40080: forcefield_toggle_exec() doesn't always enable force field.
Kudos to Brent Baccala for investigating and suggesting a fix.
2014-05-08 08:13:55 +02:00
Campbell Barton dcabd3f81f Fix for dropping images into the 3D View
- wasn't allocing image-user.
- wasn't managing user counts.
2014-05-07 16:53:58 +10:00
Antonis Ryakiotakis 2e07109feb Code cleanup: naming.
Prepend BKE_ to the functions moved in blenkernel for recent bug fix.
2014-05-07 02:59:23 +03:00
Dalai Felinto d653c70ee6 Bake API: force opengl reload and mipmap recalc (fix T40055) 2014-05-06 19:30:54 -03:00
Dalai Felinto 2c4ea2a11e Bake API: fix T40054 - baked image update on uv/imag editor for linear/float/noncolor, ...
All image colorspaces should be displaying correctly in the UV/Image Editor.

Viewport may still present an issue, but it was reported separately
anyways (T40055)

Patch reviewed (and corrected) by Sergey Sharybin
2014-05-06 18:25:41 -03:00
Antonis Ryakiotakis 20f7aaf6be Fix issue discovered while investigating T39950:
Sculpt mode drawing fails after deleting a subsurf modifier
in sculpt mode and undoing.

This was quite difficult to spot. Main cause was that mesh data was not
synchronized properly between undo and sculpt code because we generated
a pbvh on derivedmesh invalidation without really refreshing the rest of
the data. This could result in undo and drawing operating on different
data.

To solve this and avoid bad level calls I had to move quite some code
around. Crazyspace is now moved to blenkernel, as did some sculpt calls
that make sure sculpt data are properly refreshed.
2014-05-06 23:44:06 +03:00
Dalai Felinto 9fe618e309 Fix T40048: Cycles bake crashes Blender [when there is no image]
The struct with the images was not NULL initialized.
2014-05-06 11:59:51 -03:00
Campbell Barton 38a430c027 Fix T40029: Apply transform to empties reset their location
also add check for negative scale
2014-05-05 15:47:25 +10:00
Campbell Barton b82d639f3d Stop all dynamic enums using translations (from blend file data) 2014-05-05 15:23:35 +10:00
Campbell Barton cf069afdfd Fix: T40016 ID Names translated in menus 2014-05-05 15:09:29 +10:00
Campbell Barton a1ba57a008 Fix T40010: Single user looses parent relationship (temporarily) 2014-05-04 08:36:15 +10:00
Campbell Barton 08d899d1e7 Code cleanup: style 2014-05-04 00:41:45 +10:00
Dalai Felinto 97641a0ec9 Bake API - bpy.ops.object.bake()
New operator that can calls a bake function to the current render engine when available. This commit provides no feature for the users, but allows external engines to be accessed by the operator and be integrated with the baking api.

The API itself is simple. Blender sends a populated array of BakePixels to the renderer, and gets back an array of floats with the result.

The Blender Internal (and multires) system is still running independent, but we eventually will pipe it through the API as well. Cycles baking will come next as a separated commit

Python Operator:
----------------
The operator can be called with some arguments, or a user interface can be created for it. In that case the arguments can be ommited and the interface can expose the settings from bpy.context.scene.render.bake

bpy.ops.object.bake(type='COMBINED', filepath="", width=512, height=512, margin=16, use_selected_to_active=False, cage_extrusion=0, cage="", normal_space='TANGENT', normal_r='POS_X', normal_g='POS_Y', normal_b='POS_Z', save_mode='INTERNAL', use_clear=False, use_split_materials=False, use_automatic_name=False)
Note: external save mode is currently disabled.

Supported Features:
------------------
 * Margin - Baked result is extended this many pixels beyond the border of each UV "island," to soften seams in the texture.

 * Selected to Active - bake shading on the surface of selected object to the active object. The rays are cast from the lowpoly object inwards towards the highpoly object. If the highpoly object is not entirely involved by the lowpoly object, you can tweak the rays start point with Cage Extrusion. For even more control of the cage you can use a Cage object.

 * Cage Extrusion - distance to use for the inward ray cast when using selected to active

 * Custom Cage - object to use as cage (instead of the lowpoly object).

 * Normal swizzle - change the axis that gets mapped to RGB

 * Normal space - save as tangent or object normal spaces

Supported Passes:
-----------------
Any pass that is supported by Blender renderlayer system. Though it's up to the external engine to provide a valid enum with its supported passes. Normal passes get a special treatment since we post-process them to converted and "swizzled"

Development Notes for External Engines:
---------------------------------------
(read them in bake_api.c)

* For a complete implementation example look at the Cycles Bake commit (next).

Review: D421
Reviewed by: Campbell Barton, Brecht van Lommel, Sergey Sharybin, Thomas Dinge

Normal map pipeline "consulting" by Andy Davies (metalliandy)
Original design by Brecht van Lommel.

The entire commit history can be found on the branch: bake-cycles
2014-05-02 21:19:08 -03:00
Campbell Barton 2ce3e4639a Fix for making single user objects setting FROMGROUP flag incorrectly 2014-05-01 06:52:10 +10:00
Campbell Barton 4ca67869cc Code cleanup: remove unused includes
Opted to keep includes if they are used indirectly (even if removing is possible).
2014-05-01 04:47:51 +10:00
Campbell Barton 48446870a8 Code cleanup: remove redundant CTX calls 2014-04-30 08:11:47 +10:00
Campbell Barton c67bd49e56 Code cleanup: use 'const' for arrays (editors) 2014-04-27 00:25:15 +10:00
Campbell Barton bef1edb322 Add message for constraint poll
Was confusing for Python devs when these fail silently
2014-04-25 22:05:18 +10:00
Campbell Barton 3a950dc643 Skin mark/clear: replace GHash with GSet 2014-04-21 13:13:15 +10:00
Campbell Barton 4769b44bdd Fix T39745: "Origin to geometry" not working with Text objects. (regression) 2014-04-16 13:19:31 +10:00
Campbell Barton 3216e4b202 API Cleanup: Use BKE_constraint prefix for constraint api 2014-04-11 11:47:07 +10:00
Campbell Barton a15b3c4d11 Code cleanup: use bool 2014-04-11 11:33:29 +10:00
Campbell Barton 9de24c82ba View3D: disable LOD when game engine is disabled or ifdef'd 2014-04-09 11:52:34 +10:00
Campbell Barton 617557b08e Code cleanup: remove TRUE/FALSE & WITH_BOOL_COMPAT define 2014-04-01 15:22:28 +11:00
Bastien Montagne 42fca2f145 Usual UI messages fixes... 2014-03-31 21:15:56 +02:00
Campbell Barton 097a3756c0 Code cleanup: use bool 2014-03-31 23:39:08 +11:00
Campbell Barton 2fc7d04804 Add Simple randomize vertex tool
D432 from Walid Shouman with normal & uniform options added.
2014-03-31 14:56:43 +11:00
Campbell Barton f1962f187f Refactor: Add generic poll ED_transverts_poll 2014-03-31 09:58:17 +11:00
Mitchell Stokes f5b79dff41 Fix T39490: BGE: Text to Mesh, then MouseOver does not work
Non-mesh objects default to no collisions. lordloki provided a
patch that sets the collision properties for a mesh converted from
a curve/meta/surf/text to the default collision properties for
a mesh.
2014-03-30 13:55:10 -07:00
Sergey Sharybin 6e5e3b73f3 Fix T37599: Crash making linked objects local and undo
Root of the issues comes to the fact that it's possible to produce
a situation when library object data uses local object. This is
actually forbidden and not supported by .blend IO.

Made it so Make Local wouldn't produce such an unsupported states.

Reviewers: brecht

Differential Revision: https://developer.blender.org/D372
2014-03-28 17:14:11 +06:00
Campbell Barton a91247c2b4 Code cleanup: unreachable break/return 2014-03-19 12:47:09 +11:00
Campbell Barton 7da2175271 KDTree: deprecate 'normal' argument
Normals for each kdtree node were allocated but never used,
and search args only use in particles/boids code.
2014-03-18 09:14:47 +11:00
Campbell Barton 7b7196e3ad Code cleanup: modifier_skin_customdata_ensure was a bad level call 2014-03-16 21:55:30 +11:00
Campbell Barton 2097e621ed Code cleanup: use r_ prefix for return args 2014-03-16 03:26:23 +11:00