[Bf-blender-cvs] [42785c1] bake-cycles: Cycles-Bake: Tangent baking from multires

Dalai Felinto noreply at git.blender.org
Fri Apr 25 07:05:24 CEST 2014


Commit: 42785c15b4d6ca75fda45c344cfcd21d55d6b263
Author: Dalai Felinto
Date:   Fri Apr 25 01:56:51 2014 -0300
https://developer.blender.org/rB42785c15b4d6ca75fda45c344cfcd21d55d6b263

Cycles-Bake: Tangent baking from multires

Every time the user bakes a normal tangent map with no active to
selected we (most likely) want to get it from the multiresolution
modifier.

Whiles this is working now, selected to active should be working
correctly just as before.

===================================================================

M	source/blender/editors/object/object_bake_api.c

===================================================================

diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index fc0a7b2..8a0498b 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -552,8 +552,34 @@ static int bake_exec(bContext *C, wmOperator *op)
 				RE_normal_world_to_object(pixel_array_low, num_pixels, depth, result, ob_low, normal_swizzle);
 				break;
 			case R_BAKE_SPACE_TANGENT:
-				RE_normal_world_to_tangent(pixel_array_low, num_pixels, depth, result, me_low, normal_swizzle);
+			{
+				if (is_highpoly) {
+					RE_normal_world_to_tangent(pixel_array_low, num_pixels, depth, result, me_low, normal_swizzle);
+				}
+				else {
+					/* from multiresolution */
+					Mesh *me_nores = NULL;
+					ModifierData *md = NULL;
+					int mode;
+
+					md = modifiers_findByType(ob_low, eModifierType_Multires);
+
+					if (md) {
+						mode = md->mode;
+						md->mode &= ~eModifierMode_Render;
+					}
+
+					me_nores = BKE_mesh_new_from_object(bmain, scene, ob_low, 1, 2, 1, 0);
+					RE_populate_bake_pixels(me_nores, pixel_array_low, num_pixels, images);
+
+					RE_normal_world_to_tangent(pixel_array_low, num_pixels, depth, result, me_nores, normal_swizzle);
+					BKE_libblock_free(bmain, me_nores);
+
+					if (md)
+						md->mode = mode;
+				}
 				break;
+			}
 			default:
 				break;
 		}




More information about the Bf-blender-cvs mailing list