Skip to content

Commit

Permalink
Reformated VTKLoader.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrdoob committed Apr 18, 2012
1 parent f3dc454 commit 21a5aa4
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 117 deletions.
4 changes: 0 additions & 4 deletions examples/js/loaders/OBJLoader.js
Expand Up @@ -20,8 +20,6 @@ THREE.OBJLoader.prototype.load = function ( url, callback ) {


callback( that.parse( xhr.responseText ) ); callback( that.parse( xhr.responseText ) );


that.onLoadComplete();

} else { } else {


console.error( 'THREE.OBJLoader: Couldn\'t load ' + url + ' (' + xhr.status + ')' ); console.error( 'THREE.OBJLoader: Couldn\'t load ' + url + ' (' + xhr.status + ')' );
Expand All @@ -35,8 +33,6 @@ THREE.OBJLoader.prototype.load = function ( url, callback ) {
xhr.open( "GET", url, true ); xhr.open( "GET", url, true );
xhr.send( null ); xhr.send( null );


that.onLoadStart();

}; };


THREE.OBJLoader.prototype.parse = function ( data ) { THREE.OBJLoader.prototype.parse = function ( data ) {
Expand Down
268 changes: 155 additions & 113 deletions examples/js/loaders/VTKLoader.js
@@ -1,5 +1,5 @@
/** /**
* @author mrdoob / http://mrdoob.com/ * @author Sebastien Valette sebastien.valette@creatis.insa-lyon.fr
*/ */


THREE.VTKLoader = function () {}; THREE.VTKLoader = function () {};
Expand Down Expand Up @@ -37,8 +37,8 @@ THREE.VTKLoader.prototype.load = function ( url, callback ) {


THREE.VTKLoader.prototype.parse = function ( data ) { THREE.VTKLoader.prototype.parse = function ( data ) {


var geometry=new THREE.Geometry(); var geometry = new THREE.Geometry();
var lines=data.split("\n"); var lines = data.split("\n");


function v( x, y, z ) { function v( x, y, z ) {


Expand All @@ -52,158 +52,200 @@ THREE.VTKLoader.prototype.parse = function ( data ) {


} }


var lineIndex=0; var lineIndex = 0;


var line=lines[0].split(" "); var line = lines[ 0 ].split( ' ' );
var lineLength=line.length; var lineLength = line.length;
var columnIndex=-1; var columnIndex = -1;



function readNextString() {
function readNextString ()
{ while ( 1 ) {
while (1)
{ var nextWord = line[ columnIndex ];
var nextWord=line[columnIndex]; columnIndex ++;
columnIndex++;
if (columnIndex==lineLength) if ( columnIndex == lineLength ) {
{
lineIndex++; lineIndex ++;
columnIndex=0; columnIndex = 0;
if (lineIndex>lines.length)
return (""); if ( lineIndex > lines.length ) {
line=lines[lineIndex].split(" ");
lineLength=line.length; return '';

}

line = lines[ lineIndex ].split( ' ' );
lineLength = line.length;

} }
if (nextWord!=null)
if (nextWord.length>0) if ( nextWord != null ) {
return (nextWord);
if ( nextWord.length > 0 ) {

return nextWord;

}

}

} }

} }


// read point data // read point data
var found=false; var found = false;
while (!found) while ( !found ) {
{
var readString=readNextString(); var readString = readNextString();
switch (readString.toUpperCase())
{ switch ( readString.toUpperCase() ) {
case "POINTS":
found=true; case 'POINTS':
found = true;
break; break;
case "":
alert ("error while reading "+url+" : \n"); case '':
alert ( 'error while reading ' + url + ' : \n' );
return; return;
default:
} }


} }


var newIndex; var newIndex;
var new2old; var new2old;


var numberOfPoints=parseInt(readNextString()); var numberOfPoints = parseInt( readNextString() );

if ( numberOfPoints > 5000000 ) {


if (numberOfPoints>5000000) alert ( 'mesh is too big : ' + numberOfPoints + ' vertices' );
{
alert ("mesh is too big : "+numberOfPoints+" vertices");
return; return;

} }


var coord=[0,0,0]; var coord = [ 0, 0, 0 ];
var index2=0; var index2 = 0;


var number; var number;
var coordIndex; var coordIndex;
for (var j=0;j!=numberOfPoints;j++)
{ for ( var j = 0; j != numberOfPoints; j ++ ) {
for (coordIndex=0;coordIndex<3;coordIndex++)
{ for ( coordIndex = 0; coordIndex < 3; coordIndex ++ ) {
do
{ do {
number=parseFloat(line[columnIndex]);
columnIndex++; number = parseFloat( line[ columnIndex ] );
if (columnIndex==lineLength)
{ columnIndex ++;
lineIndex++;
columnIndex=0; if ( columnIndex == lineLength ) {
if (lineIndex>lines.length)
{ lineIndex ++;
alert ("error while reading "+url+" : \n"); columnIndex = 0;

if ( lineIndex > lines.length ) {

alert ( 'error while reading ' + url + ' : \n' );
return; return;
} }
line=lines[lineIndex].split(" ");
lineLength=line.length; line = lines[ lineIndex ].split( ' ' );
lineLength = line.length;
} }
} while (isNaN(number)) } while ( isNaN( number ) )
coord[coordIndex]=number;
coord[ coordIndex ] = number;
} }
v(coord[0],coord[1],coord[2]);
v( coord[ 0 ], coord[ 1 ], coord[ 2 ] );

} }


found=false; found = false;
while (!found)
{ while ( !found ) {
var readString=readNextString();
switch (readString) var readString = readNextString();
{
case "POLYGONS": switch ( readString ) {
found=true;
case 'POLYGONS':
found = true;
break; break;
case "":
alert ("error while reading "+url+" : \n"); case '':
alert ( 'error while reading ' + url + ' : \n' );
return; return;
default:
} }

} }


var numberOfPolygons=parseInt(readNextString()); var numberOfPolygons = parseInt( readNextString() );
var numberOfpolygonElements=parseInt(readNextString()); var numberOfpolygonElements = parseInt( readNextString() );


index2=0; index2 = 0;
var connectivity=[]; var connectivity = [];
for (var p=0;p!=numberOfpolygonElements;p++)
{ for ( var p = 0; p != numberOfpolygonElements; p ++ ) {
do
{ do {
number=parseInt(line[columnIndex]);
columnIndex++; number = parseInt( line[ columnIndex ] );
if (columnIndex==lineLength)
{ columnIndex ++;
lineIndex++;
columnIndex=0; if ( columnIndex == lineLength ) {
if (lineIndex>lines.length)
{ lineIndex ++;
alert ("error while reading "+url+" : \n"); columnIndex = 0;

if ( lineIndex > lines.length ) {

alert ( 'error while reading ' + url + ' : \n' );
return; return;

} }
line=lines[lineIndex].split(" ");
lineLength=line.length; line = lines[ lineIndex ].split( ' ' );
lineLength = line.length;
} }
} while (isNaN(number)) } while ( isNaN( number ) )


connectivity[index2]=number; connectivity[ index2 ] = number;
index2++; index2 ++;


if (index2==connectivity[0]+1) if ( index2 == connectivity[ 0 ] + 1 ) {
{
var triangle=[0,0,0]; var triangle = [ 0, 0, 0 ];
index2=0; index2 = 0;
var numberOfTrianglesInCell=connectivity[0]-2;
var vertex1=triangle[0]=connectivity[1]; var numberOfTrianglesInCell = connectivity[ 0 ] - 2;

var vertex1 = triangle[ 0 ] = connectivity[ 1 ];
for (var i=0;i<numberOfTrianglesInCell;i++)
{ for ( var i = 0; i < numberOfTrianglesInCell; i ++ ) {
var vertex2=connectivity[i+2];
var vertex3=triangle[2]=connectivity[i+3]; var vertex2 = connectivity[ i + 2 ];
f3(vertex1,vertex2,vertex3); var vertex3 = triangle[ 2 ] = connectivity[ i + 3 ];

f3( vertex1, vertex2, vertex3 );

} }

} }

} }


geometry.computeCentroids(); geometry.computeCentroids();
geometry.computeFaceNormals(); geometry.computeFaceNormals();
geometry.computeVertexNormals(); geometry.computeVertexNormals();
geometry.computeBoundingSphere(); geometry.computeBoundingSphere();
return (geometry);
return geometry;


} }

0 comments on commit 21a5aa4

Please sign in to comment.