提交 0d3eaed5 编写于 作者: Z zz85

checks for holes order

上级 3f6a5e66
......@@ -11,6 +11,7 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 10;
var bevelSize = options.bevelSize !== undefined ? options.bevelSize : 8;
var bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : false;
var bevelSegments = 3;
var steps = options.steps !== undefined ? options.steps : 1;
var extrudePath = options.path !== undefined ? options.path : null;
......@@ -29,39 +30,66 @@ THREE.ExtrudeGeometry = function( shape, options ) {
THREE.Geometry.call( this );
// Variables initalization
var ahole, h, hl; // looping of holes
var scope = this;
var bevelPoints = [];
// getPoints
var vertices = shape.getSpacedPoints(); // getPoints | getSpacedPoints() you can get variable divisions by dividing by total lenght
var holes = shape.getHoles();
var reverse = THREE.FontUtils.Triangulate.area( vertices ) > 0 ;
if (reverse) {
console.debug("REVERSED");
vertices = vertices.reverse();
reverse = false;
// Maybe we should also check if holes are in the opposite direction...
for (h = 0, hl = holes.length; h < hl; h++ ) {
ahole = holes[h];
if (THREE.FontUtils.Triangulate.area(ahole) < 0 ) {
holes[h] = ahole.reverse();
}
}
reverse = false; // If vertices are in order now, we shouldn't need to worry about them again (hopefully)!
}
var holes = shape.getHoles();
var faces = THREE.Shape.Utils.triangulateShape(vertices, holes);
//var faces = THREE.Shape.Utils.triangulate2(vertices, holes);
//console.log(faces);
//var faces = THREE.FontUtils.Triangulate( vertices, true );
////
/// Handle Vertices
////
var contour = vertices; // vertices has all points but contour has only points of circumference
var ahole, h, hl;
for (h = 0, hl = holes.length; h < hl; h++ ) {
ahole = holes[h];
vertices = vertices.concat(ahole);
}
console.log("same?", contour.length, vertices.length);
var scope = this;
var bevelPoints = [];
//console.log(reverse);
......@@ -84,6 +112,7 @@ THREE.ExtrudeGeometry = function( shape, options ) {
}
// Add steped vertices...
// Including front facing vertices
var s = 1;
......@@ -136,6 +165,12 @@ THREE.ExtrudeGeometry = function( shape, options ) {
}
}
////
/// Handle Faces
////
// Bottom faces
......@@ -167,7 +202,8 @@ THREE.ExtrudeGeometry = function( shape, options ) {
for (h = 0, hl = holes.length; h < hl; h++ ) {
ahole = holes[h];
sidewalls(ahole);
sidewalls(ahole);
//, true
layeroffset += ahole.length;
}
......@@ -179,15 +215,12 @@ THREE.ExtrudeGeometry = function( shape, options ) {
tmpPt = contour[ i ];
//TOREMOVE
//console.log('a', i,j, i-1, k);
j = i;
k = i - 1;
//TOREMOVE
if ( k < 0 ) k = contour.length - 1;
//console.log('b', i,j, i-1, k,vertices.length);
......@@ -205,6 +238,7 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var slen2 = vlen * ( s + 1 );
f4( layeroffset + j + slen1, layeroffset + k + slen1, layeroffset + k + slen2, layeroffset + j + slen2 );
}
......@@ -228,29 +262,29 @@ THREE.ExtrudeGeometry = function( shape, options ) {
function f3( a, b, c ) {
if ( reverse ) { // Can be removed
scope.faces.push( new THREE.Face3( c, b, a ) );
} else {
scope.faces.push( new THREE.Face3( a, b, c ) );
}
// if ( reverse ) { // Can now be removed
//
// 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 ) {
if ( reverse ) {
scope.faces.push( new THREE.Face4( d, c, b, a ) );
} else {
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 ) );
//
// }
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册