Revision: 21173
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21173
Author:   yukishiro
Date:     2009-06-26 21:17:08 +0200 (Fri, 26 Jun 2009)

Log Message:
-----------
fix one bug in light rotation, but it is still wrong

Modified Paths:
--------------
    branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
    
branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
    branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c

Modified: 
branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c     
2009-06-26 15:48:09 UTC (rev 21172)
+++ branches/soc-2009-yukishiro/source/blender/blenkernel/intern/lightenv.c     
2009-06-26 19:17:08 UTC (rev 21173)
@@ -54,7 +54,7 @@
 // TODO: simple function to return value for 3 channels. needs improvement
 void def_synthetic(float theta, float phi, float val[3], void *data)
 {
-       if (theta < M_PI / 6) {
+       if (theta < M_PI / 12) {
                val[0] = val[1] = val[2] = 1.0;
        }
        else {

Modified: 
branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c
===================================================================
--- 
branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c   
    2009-06-26 15:48:09 UTC (rev 21172)
+++ 
branches/soc-2009-yukishiro/source/blender/editors/sculpt_paint/paint_light.c   
    2009-06-26 19:17:08 UTC (rev 21173)
@@ -695,9 +695,8 @@
 /************************ light paint rotation ************************/
 typedef struct RotateOperation {
        ARegion *ar;
+       RegionView3D *rv3d;
        float trackvec[3];
-       float quat[4];
-       int origx, origy, oldx, oldy;
        int origkey;
 } RotateOperation;
 
@@ -723,6 +722,7 @@
                {
                        float phi, si, q1[4], dvec[3], newvec[3];
                        calctrackballvec(&rop->ar->winrct, event->x, event->y, 
newvec);
+
                        VecSubf(dvec, newvec, rop->trackvec);
 
                        si= sqrt(dvec[0]*dvec[0]+ dvec[1]*dvec[1]+ 
dvec[2]*dvec[2]);
@@ -732,16 +732,17 @@
                        Normalize(q1+1);
                        
                        while (si > 1.0) si -= 2.0;
-                       phi = si * M_PI / 10.0;
+                       phi = si * M_PI / 2.0;
 
                        si= sin(phi);
                        q1[0]= cos(phi);
                        q1[1]*= si;
                        q1[2]*= si;
                        q1[3]*= si;
+
                        SH_rotateLightEnv(env, q1);
 
-                       QuatMul(rop->quat, q1, rop->quat);
+                       calctrackballvec(&rop->ar->winrct, event->x, event->y, 
rop->trackvec);
 
                        WM_event_add_notifier(C, NC_LIGHTENV|ND_SH_RESULT, 
NULL);
                }
@@ -759,11 +760,9 @@
        RotateOperation *rop;
 
        op->customdata = rop = MEM_callocN(sizeof(RotateOperation), "LightROP");
-       rop->ar= CTX_wm_region(C);
-       rop->origx= rop->oldx= event->x;
-       rop->origy= rop->oldy= event->y;
+       rop->ar = CTX_wm_region(C);
+       rop->rv3d = rop->ar->regiondata;
        rop->origkey= event->type;
-       QuatOne(rop->quat);
 
        calctrackballvec(&rop->ar->winrct, event->x, event->y, rop->trackvec);
 

Modified: branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c
===================================================================
--- branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c      
2009-06-26 15:48:09 UTC (rev 21172)
+++ branches/soc-2009-yukishiro/source/blender/sh/intern/compute.c      
2009-06-26 19:17:08 UTC (rev 21173)
@@ -190,7 +190,7 @@
 static void eval_real_wigner(ShWigner w, float beta, int degree)
 {
        float c = cos(beta), s = sin(beta);
-       int l,m,n, signl, signm, signlm, signmn;
+       int l, m, n, signl, signm, signlm, signmn;
        
        // Degree 0...
        w[0][0][0] = 1;
@@ -694,11 +694,16 @@
 void SH_rotateLightEnv(LightEnv *env, float *quat)
 {
        int deg, l, m, n;
-       float eul[3];
+       float q[3], eul[3];
        float new_coeffs[25][3];
        ShWigner wigner;
 
-       QuatToEul(quat, eul);
+       // XXX
+       q[0]= quat[0];
+       q[1]= quat[2];
+       q[2]= quat[1];
+       q[3]= quat[3];
+       QuatToEul(q, eul);
 
        // create wigner
        deg = env->degree;
@@ -707,9 +712,9 @@
        premultiply_wigner(wigner, eul[0], deg);
 
        // compute new coeffs
+       memset(new_coeffs, 0, 75 * sizeof(float));
        for (l = 0; l <= deg; l++) {
                for (m=-l; m<=l; m++) {
-                       v3_new_vec(0, 0, 0, new_coeffs[l*l+l+m]);
                        for (n=-l; n<=l; n++) {
                                new_coeffs[l*l+l+m][0] += wigner[l][m][n] * 
env->shcoeffs[l*l+l+n][0];
                                new_coeffs[l*l+l+m][1] += wigner[l][m][n] * 
env->shcoeffs[l*l+l+n][1];
@@ -718,7 +723,7 @@
                }
        }
 
-       memcpy(env->shcoeffs, new_coeffs, (deg+1) * (deg+1) * sizeof(float));
+       memcpy(env->shcoeffs, new_coeffs, 75 * sizeof(float));
        free_ShWigner(wigner);
 }
 


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

Reply via email to