Commit Graph

54 Commits

Author SHA1 Message Date
1cd4070e35 Fix T43786: Cycles bake disregards Auto Smooth (vertex per-face normals)
Added an utility function which performs vertex split based on the loop
normal so now backing API matches to what's happening in Cycles and BI
in terms of autosplit.

Reviewers: dfelinto, campbellbarton

Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D1174
2015-03-20 12:47:19 +05:00
5721863805 RNA: pass only 0/1 to RNA_property_boolean_set 2015-02-19 12:33:14 +11:00
Dalai Felinto
560c05e8bd Fix T43628: Circular dependency error preventing multiple highpoly objects to bake
Throwing an RPT_ERROR was stopping baking after the first object.
2015-02-11 11:23:03 -02:00
d036ad552f BKE_image: use BKE_image_*** prefix
use bools for return values and some api naming consistency.
2015-01-24 17:26:59 +11:00
870941c87a Fix leak in cycles-bake 2014-12-28 16:00:08 +11:00
af9da0be43 Complementary fix for rB8054372: Follow the common naming scheme by
using negate_mat3_m4 instead of negate_m4.

This avoids changing the behavior and only flips the 3x3 part of the
matrix.
2014-10-30 15:31:18 +01:00
8054372d22 Fix negate_m3 (taking 4x4 matrix)
Cycles bake used incorrectly.
2014-10-30 10:29:37 +01:00
f2c8209756 Fix T40751 preview image not generated after baking.
A DAG_id_tag_update here is enough to fix the problem.
2014-09-19 15:36:49 +02:00
Dalai Felinto
0b4da966f9 Bake-API: more MEM_callocN replacements by MEM_mallocN
Reviewed By: campbellbarton

Differential Revision: https://developer.blender.org/D561
2014-08-31 14:44:42 +02:00
Dalai Felinto
079689107a Bake-API: silencing warnings (and fixing a potential memory-access crash) 2014-08-28 12:14:24 +02:00
Dalai Felinto
ef2a38a966 Bake-API: fix potential error for non square images
Not reported, I wonder why, this should be easy to reproduce. I guess
people really like their textures square ;)
2014-08-27 18:57:11 +02:00
c9dee2b054 Add some missng casts to the size_t 2014-08-06 20:22:24 +06:00
Dalai Felinto
7f9a4c0c42 Bake-API: cleanup - missing (size_t) promotion 2014-07-31 20:09:07 -03:00
Dalai Felinto
9952699978 Bake-API: use size_t instead of width, height
(original patch by Sergey Sharybin)

Note: RNA API can't use size_t at the moment. Once it does this patch
can be tweaked a bit to fully benefit from size_t larger dimensions.
(right now num_pixels is passed as int)

Reviewed By: sergey, campbellbarton
Differential Revision: https://developer.blender.org/D688
2014-07-31 00:35:16 -03:00
Dalai Felinto
234ae0b5ac T41196: Python call of bake operator cause Blender Crash
We could make the exec to also show the progress bar, but I think it is not needed.
2014-07-27 10:37:05 -03:00
Dalai Felinto
e0d4047136 Bake-API: Test for cyclic node connection
If the active image node contributes to the final material shader
(meaning it's either directly or indirectly connected to an Output Node)
the user will receive an alert about circular dependency.

Similar to what we do for Blender internal the baking will still happen,
but the user will receive the alert which should prevent the image
saving to happen if the result was not intentional.

Core function to check for node output written by Lukas Toenne.

Reviewers: lukastoenne, campbellbarton

Differential Revision: https://developer.blender.org/D673
2014-07-23 11:46:13 -03:00
00b29156e0 Defines: replace ELEM3-16 with ELEM(...), that can take varargs 2014-07-20 01:33:40 +10:00
Dalai Felinto
f46223f29e Bake-API: progress (bar) working
Note: This makes no change to the user, the render engine (Cycles) still
need to update the progress during baking. But this is the Blender side
of this.
2014-07-17 10:30:46 -03:00
7bc2f54867 Code cleanup: style 2014-06-22 15:02:27 +10:00
Dalai Felinto
b49e6d04cc Bake-API: small cleanup to prevent unfreed memory when there are baking errors
Fix to be included in 2.71
2014-06-18 19:46:37 -03:00
Dalai Felinto
9cf66d9248 Bake-API: fix for non-NORMAL maps baking black when using cage
Reported by Andy Davies (metalliandy) outside the tracker
Fix to include in 2.71
2014-06-18 19:32:14 -03:00
Dalai Felinto
a3cf97e2aa Fix T4068787 Cycles Bake Selected To Active From Non-Mesh Object Fails With Error
Users can now bake from Mesh, Font, Curve, Surface and Metaballs.
Fix to include in 2.71
2014-06-18 19:20:46 -03:00
Dalai Felinto
fd0b74280e Bake-API: allow custom UV to be baked
Note: the custom UV option is only available when calling the operator
via a script. It's currently not exposed in the UI since it's intended
to be used by scripters

To test it:
bpy.ops.object.bake(type='UV', use_clear=True, uv_layer='MyNewUV')

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D546
2014-06-17 12:16:43 -03:00
Dalai Felinto
2b7ff6de06 Bake-API: increase cage extrusion/ray distance limit
Fix to include in 2.71 (asked via BlenderArtist)
2014-06-13 15:55:05 -03:00
Dalai Felinto
b0708dd718 Bake-API: handle objects with no faces (fix T40601)
Also it has a better error handling for the BVHTree creation
Fix for 2.71
2014-06-13 14:37:59 -03:00
Dalai Felinto
aed67dc8a4 Bake-API: Set Custom Cage to be Cage Object
Suggestion by Andy Davies (metalliandy) to conform with industry standard (custom cage is something else apparently)

Note: this is the last bake related commit I plan for 2.71/rc (unless
everyone agrees that we could squeeze in D546 - custom UVs, which would
be really nice to add for 2.71 scripters)

Note 2: I'll update the wiki docs shortly
2014-06-11 22:49:30 -03:00
Dalai Felinto
a8a536d23d Bake-API: new approach for cage
There is a new option to select whether you want to use cage or not.
When not using cage the results will be more similar with Blender
Internal, where the inwards rays (trying to hit the highpoly objects)
don't always come from smooth normals. So if the active object has sharp
edges and an EdgeSplit modifier you get bad corners.

This is useful, however, to bake to planes without the need of adding
extra loops around the edges.

When cage is "on" the user can decide on setting a cage extrusion or to
pick a Custom Cage object. The cage extrusion option works in a
duplicated copy of the active object with EdgeSplit modifiers removed to
inforce smooth normals. The custom cage option takes an object with the
same number of faces as the active object (and the same face ordering).

The custom cage now controls the direction and the origin of the
rays casted to the highpoly objects. The direction is a ray from the
point in the cage mesh to the equivalent point to the base mesh. That
means the face normals are entirely ignored when using a cage object.

For developers:
When using an object cage the ray is calculated from the cage mesh to
the base mesh. It uses the barycentric coordinate from the base mesh UV,
so we expect both meshes to have the same primitive ids (which won't be
the case if the cage gets edited in a destructive way).

That fixes T40023 (giving the expected result when 'use_cage' is false).

Thanks for Andy Davies (metalliandy) for the consulting with normal
baking workflow and extensive testing. His 'stress-test' file will be
added later to our svn tests folder. (The file itself is not public yet
since he still has to add testing notes to it).

Many thanks for the reviewers.

More on cages:
http://wiki.polycount.com/NormalMap/#Working_with_Cages

Reviewers: campbellbarton, sergey

CC: adriano, metalliandy, brecht, malkavian

Differential Revision: https://developer.blender.org/D547
2014-06-11 02:39:35 -03:00
Dalai Felinto
ddf5ef0401 correction from last commit 2014-06-10 21:36:48 -03:00
Dalai Felinto
8a90edca86 Bake-API: removal of unecessary UV tests, as suggested by Campbell Barton 2014-06-10 20:51:34 -03:00
ae4ed68dfe Code cleanup: style 2014-06-06 07:54:05 +10:00
Dalai Felinto
6f1a64830a Bake-API small cleanup 2014-06-03 02:14:28 -03:00
Dalai Felinto
5f3c8cf72d Fix T40476 - Baking multiple selected objects in Cycles final result
depends on last selected object

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D577
2014-06-03 02:14:12 -03:00
Dalai Felinto
b7eff584b0 Bake-API prevent baking for engines that dont support the baking API
In the future we can fallback to the Blender Internal baking.

Review/Suggestions by Campbell Barton
2014-06-03 02:10:47 -03:00
Dalai Felinto
2a9efa4e51 Bake-API: Support for batch baking
When "Selected to Active" is not on, we bake all the selected objects.
This is the same behaviour we have for Blender Internal.

Dev note: I moved most of the validation tests to outside the bake()
routine so the function can be called in loop.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D560
2014-05-29 22:56:57 -03:00
Dalai Felinto
2057a3a2fc Proper fix T40156 Cycles Baking and applyRotation issues
This should be the final fix for the applyrotation issue. It baffles me
that the fix involves discarding the scale transformations for the
normals but it works so I'm happy with it.

Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D554
2014-05-29 12:20:55 -03:00
3a41797df4 Usual UI messages tweaks. 2014-05-26 20:12:03 +02:00
Dalai Felinto
2ffe037420 Bake-API: shows the baked image in the biggest SpaceImage around (just like Blender Internal)
Reviewers: campbellbarton

Differential Revision: https://developer.blender.org/D544
2014-05-22 22:39:51 -03:00
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
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
2149886033 More UI messages fixes and tweaks. 2014-05-13 15:07:24 +02:00
1c2e6de969 Usual typo and style fixes in UI messages... 2014-05-12 23:08: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
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
Dalai Felinto
d653c70ee6 Bake API: force opengl reload and mipmap recalc (fix T40055) 2014-05-06 19:30:54 -03:00