提交 802b5376 编写于 作者: Z zz85

Added ExtrudeGeometry Steps and Extrusion by Path. Updated example with Spline Shapes.

上级 6e90ed8c
因为 它太大了无法显示 source diff 。你可以改为 查看blob
......@@ -210,6 +210,30 @@
fishShape.quadraticCurveTo( x + 50, y - 80, x, y );
var fish3d = fishShape.extrude( extrudeSettings );
// Spline Shape + Path Extrusion
var splinepts = [];
splinepts.push( new THREE.Vector2 ( 350, 100 ) );
splinepts.push( new THREE.Vector2 (400, 450 ) );
splinepts.push( new THREE.Vector2 ( -140, 350 ) );
splinepts.push( new THREE.Vector2 ( 0, 0 ) );
var splineShape = new THREE.Shape( );
splineShape.moveTo( 0, 0);
splineShape.splineThru(splinepts);
//splineShape.debug( document.getElementById("debug") );
var extrudePath = new THREE.Path();
extrudePath.lineTo(10,10);
extrudePath.quadraticCurveTo(80,60, 160,10);
extrudePath.quadraticCurveTo(240,-40, 320,10);
extrudeSettings.path = extrudePath;
var splineShape3d = splineShape.extrude( extrudeSettings );
addGeometry( california3d, 0xffaa00, -300, -100, 0, 0, 0, 0, 0.25 );
addGeometry( triangle3d, 0xffee00, -180, 0, 0, 0, 0, 0, 1 );
......@@ -218,7 +242,7 @@
addGeometry( heart3d, 0xff1100, 0, 100, 0, 3.14, 0, 0, 1 );
addGeometry( circle3d, 0x00ff11, 150, 0, 0, 0, 0, 0, 1 );
addGeometry( fish3d, 0x222222, -50, 200, 0, 0, 0, 0, 1 );
addGeometry( splineShape3d, 0x888888, -50, -100, -50, 0, 0, 0, 0.2 );
renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
......
......@@ -13,7 +13,16 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var bezelSize = options.bezelSize !== undefined ? options.bezelSize : 8;
var bezelEnabled = options.bezelEnabled !== undefined ? options.bezelEnabled : false;
var steps = options.steps !== undefined ? options.steps : 3;
var extrudePath = options.path !== undefined ? options.path : null;
var extrudeByPath = false, extrudePts;
if (extrudePath) {
extrudePts = extrudePath.getPoints();
steps = extrudePts.length ;
extrudeByPath = true;
}
// TODO, extrude by path's tangents? also via 3d path?
THREE.Geometry.call( this );
var vertices = shape.getPoints();
......@@ -25,7 +34,9 @@ THREE.ExtrudeGeometry = function( shape, options ) {
var bezelPoints = [];
var reverse = THREE.FontUtils.Triangulate.area( vertices ) > 0 ;
console.log(reverse);
//console.log(reverse);
var i,
vert, vlen = vertices.length,
face, flen = faces.length,
......@@ -44,11 +55,15 @@ THREE.ExtrudeGeometry = function( shape, options ) {
// Including Front facing vertices
var s=1;
for ( ; s <= steps; s++ ) {
console.log(s);
for ( i = 0; i < vlen; i++ ) {
vert = vertices[ i ];
v( vert.x, vert.y, amount/steps * s );
if (!extrudeByPath) {
v( vert.x, vert.y, amount/steps * s );
} else {
v( vert.x, vert.y + extrudePts[s-1].y, extrudePts[s-1].x );
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册