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 ) );

that.onLoadComplete();

} else {

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.send( null );

that.onLoadStart();

};

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 () {};
Expand Down Expand Up @@ -37,8 +37,8 @@ THREE.VTKLoader.prototype.load = function ( url, callback ) {

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

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

function v( x, y, z ) {

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

}

var lineIndex=0;

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


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

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

function readNextString() {

while ( 1 ) {

var nextWord = line[ columnIndex ];
columnIndex ++;

if ( columnIndex == lineLength ) {

lineIndex ++;
columnIndex = 0;

if ( lineIndex > lines.length ) {

return '';

}

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

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

if ( nextWord != null ) {

if ( nextWord.length > 0 ) {

return nextWord;

}

}

}

}

// read point data
var found=false;
while (!found)
{
var readString=readNextString();
switch (readString.toUpperCase())
{
case "POINTS":
found=true;
var found = false;
while ( !found ) {

var readString = readNextString();

switch ( readString.toUpperCase() ) {

case 'POINTS':
found = true;
break;
case "":
alert ("error while reading "+url+" : \n");

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

}

}

var newIndex;
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;

}

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

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

for ( var j = 0; j != numberOfPoints; j ++ ) {

for ( coordIndex = 0; coordIndex < 3; coordIndex ++ ) {

do {

number = parseFloat( line[ columnIndex ] );

columnIndex ++;

if ( columnIndex == lineLength ) {

lineIndex ++;
columnIndex = 0;

if ( lineIndex > lines.length ) {

alert ( 'error while reading ' + url + ' : \n' );
return;
}
line=lines[lineIndex].split(" ");
lineLength=line.length;

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

coord[ coordIndex ] = number;
}
v(coord[0],coord[1],coord[2]);

v( coord[ 0 ], coord[ 1 ], coord[ 2 ] );

}

found=false;
while (!found)
{
var readString=readNextString();
switch (readString)
{
case "POLYGONS":
found=true;
found = false;

while ( !found ) {

var readString = readNextString();

switch ( readString ) {

case 'POLYGONS':
found = true;
break;
case "":
alert ("error while reading "+url+" : \n");

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

}

}

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

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

index2 = 0;
var connectivity = [];

for ( var p = 0; p != numberOfpolygonElements; p ++ ) {

do {

number = parseInt( line[ columnIndex ] );

columnIndex ++;

if ( columnIndex == lineLength ) {

lineIndex ++;
columnIndex = 0;

if ( lineIndex > lines.length ) {

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

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

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

connectivity[index2]=number;
index2++;

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

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

connectivity[ index2 ] = number;
index2 ++;

if ( index2 == connectivity[ 0 ] + 1 ) {

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

var numberOfTrianglesInCell = connectivity[ 0 ] - 2;
var vertex1 = triangle[ 0 ] = connectivity[ 1 ];

for ( var i = 0; i < numberOfTrianglesInCell; i ++ ) {

var vertex2 = connectivity[ i + 2 ];
var vertex3 = triangle[ 2 ] = connectivity[ i + 3 ];

f3( vertex1, vertex2, vertex3 );

}

}

}

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

return geometry;

}

0 comments on commit 21a5aa4

Please sign in to comment.