[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60994] trunk/blender/source/blender/ editors/object/object_bake.c: Enable multires bake to level 0

Sergey Sharybin sergey.vfx at gmail.com
Tue Oct 29 17:43:57 CET 2013


Revision: 60994
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60994
Author:   nazgul
Date:     2013-10-29 16:43:56 +0000 (Tue, 29 Oct 2013)
Log Message:
-----------
Enable multires bake to level 0

Uses trick with crating simple subdivided mesh with
level 1 and bakes against it.

>From quick tests seems to be working correct, more
tests are welcome.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_bake.c

Modified: trunk/blender/source/blender/editors/object/object_bake.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_bake.c	2013-10-29 16:06:21 UTC (rev 60993)
+++ trunk/blender/source/blender/editors/object/object_bake.c	2013-10-29 16:43:56 UTC (rev 60994)
@@ -156,12 +156,6 @@
 			break;
 		}
 
-		if (mmd->lvl == 0) {
-			BKE_report(op->reports, RPT_ERROR, "Multires data baking is not supported for preview subdivision level 0");
-			ok = false;
-			break;
-		}
-
 		if (!me->mtpoly) {
 			BKE_report(op->reports, RPT_ERROR, "Mesh should be unwrapped before multires data baking");
 
@@ -214,28 +208,23 @@
 	DerivedMesh *dm;
 	MultiresModifierData *mmd = get_multires_modifier(scene, ob, 0);
 	Mesh *me = (Mesh *)ob->data;
+	MultiresModifierData tmp_mmd = *mmd;
+	DerivedMesh *cddm = CDDM_from_mesh(me, ob);
 
-	*lvl = mmd->lvl;
-
-	if (*lvl == 0) {
-		DerivedMesh *tmp_dm = CDDM_from_mesh(me, ob);
-
-		DM_set_only_copy(tmp_dm, CD_MASK_BAREMESH | CD_MASK_MTFACE);
-
-		dm = CDDM_copy(tmp_dm);
-		tmp_dm->release(tmp_dm);
+	if (mmd->lvl > 0) {
+		*lvl = mmd->lvl;
 	}
 	else {
-		MultiresModifierData tmp_mmd = *mmd;
-		DerivedMesh *cddm = CDDM_from_mesh(me, ob);
+		*lvl = 1;
+		tmp_mmd.simple = true;
+	}
 
-		DM_set_only_copy(cddm, CD_MASK_BAREMESH | CD_MASK_MTFACE);
+	DM_set_only_copy(cddm, CD_MASK_BAREMESH | CD_MASK_MTFACE);
 
-		tmp_mmd.lvl = *lvl;
-		tmp_mmd.sculptlvl = *lvl;
-		dm = multires_make_derived_from_derived(cddm, &tmp_mmd, ob, 0);
-		cddm->release(cddm);
-	}
+	tmp_mmd.lvl = *lvl;
+	tmp_mmd.sculptlvl = *lvl;
+	dm = multires_make_derived_from_derived(cddm, &tmp_mmd, ob, 0);
+	cddm->release(cddm);
 
 	return dm;
 }




More information about the Bf-blender-cvs mailing list