[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25633] trunk/blender/source/blender/ render/intern/source/rendercore.c: fix crash on baking from selected to active, however need to validate this against 2. 4x to make sure displacement for eg gives the same results

Campbell Barton ideasman42 at gmail.com
Wed Dec 30 23:35:22 CET 2009


Revision: 25633
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25633
Author:   campbellbarton
Date:     2009-12-30 23:35:22 +0100 (Wed, 30 Dec 2009)

Log Message:
-----------
fix crash on baking from selected to active, however need to validate this against 2.4x to make sure displacement for eg gives the same results

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/rendercore.c

Modified: trunk/blender/source/blender/render/intern/source/rendercore.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/rendercore.c	2009-12-30 22:23:50 UTC (rev 25632)
+++ trunk/blender/source/blender/render/intern/source/rendercore.c	2009-12-30 22:35:22 UTC (rev 25633)
@@ -2254,9 +2254,7 @@
 
 static int bake_intersect_tree(RayObject* raytree, Isect* isect, float *start, float *dir, float sign, float *hitco, float *dist)
 {
-	//TODO
-	assert( 0 );
-#if 0
+	//TODO, validate against blender 2.4x, results may have changed.
 	float maxdist;
 	int hit;
 
@@ -2266,15 +2264,20 @@
 	else
 		maxdist= FLT_MAX + R.r.bake_biasdist;
 	
-	//TODO normalized direction?
-	VECADDFAC(isect->start, start, dir, -R.r.bake_biasdist);
-	isect->dir[0] = dir[0]*sign;
-	isect->dir[1] = dir[1]*sign;
-	isect->dir[2] = dir[2]*sign;
+	/* 'dir' is always normalized */
+	VECADDFAC(isect->start, start, dir, -R.r.bake_biasdist);					
+
+	isect->vec[0] = dir[0]*maxdist*sign;
+	isect->vec[1] = dir[1]*maxdist*sign;
+	isect->vec[2] = dir[2]*maxdist*sign;
+
 	isect->labda = maxdist;
 
+	/* TODO, 2.4x had this...
+	hit = RE_ray_tree_intersect_check(R.raytree, isect, bake_check_intersect);
+	...the active object may NOT be ignored in some cases.
+	*/
 	hit = RE_rayobject_raycast(raytree, isect);
-	//TODO bake_check_intersect
 	if(hit) {
 		hitco[0] = isect->start[0] + isect->labda*isect->vec[0];
 		hitco[1] = isect->start[1] + isect->labda*isect->vec[1];
@@ -2284,8 +2287,6 @@
 	}
 
 	return hit;
-#endif
-	return 0;
 }
 
 static void bake_set_vlr_dxyco(BakeShade *bs, float *uv1, float *uv2, float *uv3)





More information about the Bf-blender-cvs mailing list