提交 2f5303fb 编写于 作者: Z zz85

fixes for reversed faces

上级 3d365cdb
......@@ -22,7 +22,9 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var scope = this;
var bezelPoints = [];
var reverse = THREE.FontUtils.Triangulate.area( vertices ) > 0 ;
console.log(reverse);
var i,
vert, vlen = vertices.length,
face, flen = faces.length,
......@@ -86,16 +88,18 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var j, k, l, m;
// Faces Sides
// Sides Faces
contour.push( contour[ 0 ] ); // in order not to check for boundary indices every time
//contour.push( contour[ 0 ] ); // in order not to check for boundary indices every time
i = contour.length;
while ( --i > 0 ) {
while ( --i >= 0 ) {
lastV = contour[ i ];
// TO OPTIMISE. Reduce this step of checking vertices.
/*
for ( j = 0; j < vlen; j++ ) {
if ( vertices[ j ].equals( contour[ i ] ) ) break;
......@@ -106,11 +110,22 @@ THREE.ExtrudeGeometry = function( shape, options ) {
if ( vertices[ k ].equals( contour[ i - 1 ] ) ) break;
}
}*/
//TOREMOVE
//console.log('a', i,j, i-1, k);
j = i ;
//if (j==vertices.length) j = 0;
k = i - 1;
if (k<0) k = vertices.length-1;
//console.log('b', i,j, i-1, k,vertices.length);
// Create faces for the z-sides of the text
f4( j, k, k + vlen, j + vlen );
// REverse
//f4( k, j, j + vlen, k + vlen);
}
......@@ -128,14 +143,20 @@ THREE.ExtrudeGeometry = function( shape, options ) {
}
function f3( a, b, c ) {
scope.faces.push( new THREE.Face3( a, b, c ) );
if (reverse) {
scope.faces.push( new THREE.Face3( c, b, a ) );
} else {
scope.faces.push( new THREE.Face3( a, b, c ) );
}
}
function f4( a, b, c, d ) {
scope.faces.push( new THREE.Face4( a, b, c, d ) );
if (reverse) {
scope.faces.push( new THREE.Face4( d, c , b , a ) );
} else {
scope.faces.push( new THREE.Face4( a, b, c, d ) );
}
}
......
......@@ -21,13 +21,13 @@ THREE.PathActions = {
LINE_TO: 'lineTo',
QUADRATIC_CURVE_TO: 'quadraticCurveTo', // BEZIER quadratic CURVE
BEZIER_CURVE_TO: 'bezierCurveTo', // BEZIER cubic CURVE
CSPLINE_TO: 'cSplineTo' // TODO cardinal splines
CSPLINE_THRU: 'cSplineTo' // TODO cardinal splines
};
/* Create path using straight lines to connect all points */
THREE.Path.prototype.fromPoints = function( vectors ) {
THREE.Path.prototype.fromPoints = function( vectors /*Array of Vector*/ ) {
var v = 0, vlen = vectors.length;
......@@ -71,6 +71,13 @@ THREE.Path.prototype.bezierCurveTo = function( aCP1x, aCP1y,
};
THREE.Path.prototype.splineThru = function( pts /*Array of Vector*/ ) {
var args = Array.prototype.slice.call( arguments );
this.actions.push( { action: THREE.PathActions.CSPLINE_THRU, args: args } );
}
// TODO ARC
/* Return an array of vectors based on contour of the path */
THREE.Path.prototype.getPoints = function( divisions ) {
......@@ -184,6 +191,10 @@ THREE.Path.prototype.getPoints = function( divisions ) {
}
break;
case THREE.PathActions.CSPLINE_THRU:
break;
}
......@@ -194,6 +205,8 @@ THREE.Path.prototype.getPoints = function( divisions ) {
};
THREE.Path.prototype.getMinAndMax = function() {
var points = this.getPoints();
......
......@@ -22,8 +22,11 @@ THREE.Shape.prototype.constructor = THREE.Path;
/* Returns vertices of triangulated faces | get faces */
THREE.Shape.prototype.triangulate = function() {
return THREE.FontUtils.Triangulate( this.getPoints(), true );
var pts = this.getPoints();
if (THREE.FontUtils.Triangulate.area( pts ) > 0 ) {
pts = pts.reverse();
};
return THREE.FontUtils.Triangulate( pts, true );
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册