From 22cbc9644b79df60b3f6336f9563debd47fb3ea1 Mon Sep 17 00:00:00 2001 From: hwc487 Date: Thu, 28 Jun 2012 11:44:15 -0700 Subject: Added capability to split a mesh into multiiple parts to avoid buffer overflow situations. --- js/lib/geom/line.js | 46 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) (limited to 'js/lib/geom/line.js') diff --git a/js/lib/geom/line.js b/js/lib/geom/line.js index a016d7a3..f9d0625d 100755 --- a/js/lib/geom/line.js +++ b/js/lib/geom/line.js @@ -413,12 +413,48 @@ exports.Line = Object.create(GeomObj, { indices.push( index ); index++; } - var prim = ShapePrimitive.create(strokeVertices, strokeNormals, strokeTextures, indices, RDGE.globals.engine.getContext().renderer.TRIANGLES, indices.length); - var strokeMaterial = this.makeStrokeMaterial(); - - this._primArray.push( prim ); - this._materialNodeArray.push( strokeMaterial.getMaterialNode() ); +// var prim = ShapePrimitive.create(strokeVertices, strokeNormals, strokeTextures, indices, RDGE.globals.engine.getContext().renderer.TRIANGLES, indices.length); +// this._primArray.push( prim ); +// this._materialNodeArray.push( strokeMaterial.getMaterialNode() ); + + // refine the mesh for vertex deformations + if (strokeMaterial) + { + var primArray; + if (strokeMaterial.hasVertexDeformation()) + { + var paramRange = strokeMaterial.getVertexDeformationRange(); + var tolerance = strokeMaterial.getVertexDeformationTolerance(); + var nVertices = indices.length; + nVertices = ShapePrimitive.refineMesh( strokeVertices, strokeNormals, strokeTextures, indices, nVertices, paramRange, tolerance ); + var subdividedParts = ShapePrimitive.subdivideOversizedMesh( strokeVertices, strokeNormals, strokeTextures, indices ); + + primArray = []; + if (subdividedParts) + { + for (var i=0; i