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;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to