removing spatial interpolation if lines are straight
diff --git a/player/index.html b/player/index.html
index 3c1e4df..4c6f63b 100644
--- a/player/index.html
+++ b/player/index.html
@@ -12,8 +12,8 @@
}
#bodymovin{
background-color:#333;
- width:500px;
- height:600px;
+ width:700px;
+ height:700px;
/*width:800px;
height:500px;*/
display:block;
diff --git a/player/js/elements/htmlElements/HCameraElement.js b/player/js/elements/htmlElements/HCameraElement.js
index bae1d78..c1e3396 100644
--- a/player/js/elements/htmlElements/HCameraElement.js
+++ b/player/js/elements/htmlElements/HCameraElement.js
@@ -33,6 +33,7 @@
comp = this.comp.threeDElements[i];
comp[0].style.perspective = comp[0].style.webkitPerspective = this.pe.v+'px';
comp[1].style.transformOrigin = comp[1].style.mozTransformOrigin = comp[1].style.webkitTransformOrigin = "0px 0px 0px";
+ comp[0].style.transform = comp[0].style.webkitTransform = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';
}
};
diff --git a/player/js/utils/PropertyFactory.js b/player/js/utils/PropertyFactory.js
index a6fa72d..feb334c 100644
--- a/player/js/utils/PropertyFactory.js
+++ b/player/js/utils/PropertyFactory.js
@@ -328,6 +328,21 @@
}
function KeyframedMultidimensionalProperty(elem, data, mult){
+ console.log(data);
+ var i, len = data.k.length;
+ var s, e,to,ti;
+ for(i=0;i<len-1;i+=1){
+ if(data.k[i].to && data.k[i].s && data.k[i].e ){
+ s = data.k[i].s;
+ e = data.k[i].e;
+ to = data.k[i].to;
+ ti = data.k[i].ti;
+ if(bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],s[0] + to[0],s[1] + to[1],s[2] + to[2]) && bez.pointOnLine3D(s[0],s[1],s[2],e[0],e[1],e[2],e[0] + ti[0],e[1] + ti[1],e[2] + ti[2])){
+ data.k[i].to = null;
+ data.k[i].ti = null;
+ }
+ }
+ }
this.keyframes = data.k;
this.offsetTime = elem.data.st;
this.k = true;
diff --git a/player/js/utils/bez.js b/player/js/utils/bez.js
index 6d8f10b..ad04cbb 100644
--- a/player/js/utils/bez.js
+++ b/player/js/utils/bez.js
@@ -7,6 +7,21 @@
return bm_abs(((x2 - x1) * (y3 - y1)) - ((x3 - x1) * (y2 - y1))) < 0.00001;
}
+ function pointOnLine3D(x1,y1,z1, x2,y2,z2, x3,y3,z3){
+ /* x1 y1 1 x1 y1
+ x2 y2 1 x2 y2
+ x3 y3 1 x3 y3
+
+ x1 z1 1
+ x2 z2 1
+ x3 z3 1
+
+ */
+ var det1 = (x1*y2) + (y1*x3) + (x2*y3) - (x3*y2) - (y3*x1) - (x2*y1);
+ var det2 = (x1*z2) + (z1*x3) + (x2*z3) - (x3*z2) - (z3*x1) - (x2*z1);
+ return det1 > -0.0001 && det1 < 0.00001 && det2 > -0.00001 && det2 < 0.00001;
+ }
+
function getEasingCurve(aa,bb,cc,dd,encodedFuncName) {
if(!encodedFuncName){
encodedFuncName = ('bez_' + aa+'_'+bb+'_'+cc+'_'+dd).replace(/\./g, 'p');
@@ -198,7 +213,9 @@
getEasingCurve : getEasingCurve,
getBezierLength : getBezierLength,
getNewSegment : getNewSegment,
- buildBezierData : buildBezierData
+ buildBezierData : buildBezierData,
+ pointOnLine2D : pointOnLine2D,
+ pointOnLine3D : pointOnLine3D
};
}