OBJ Parser

by Admiral Potato

HTML

<!DOCTYPE html>
<html>
    <head>
        <title>THE GAME</title>
    </head>
    <body>
<div id="data">
# Blender v2.62 (sub 0) OBJ File: ''
# www.blender.org
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.0
v 1 1.000000 1.00000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
s off
f 1 2 3 4
f 5 8 7 6
f 1 5 6 2
f 2 6 7 3
f 3 7 8 4
f 5 1 4 8
</div>
    </body>
</html>

JavaScript

var dataDiv = document.getElementById('data');
//console.dir(dataDiv);
var data = dataDiv.innerHTML;
//console.log(data);

var objectList = {};

var bakeMeAnObject = function(name){
    var newObject = {
        name:name,
        points: [],
        faces: []
    };
    objectList[name] = newObject;
    return newObject;
}

//console.log(myObject);
var lineList = data.split("\n");
//console.log(lineList);
var cob = false; //Current Object
for(var i = 0; i < lineList.length; i += 1){
    var line = lineList[i];
    if(line.length > 0){
        var args = line.split(' ');
        if(args[0] === 'o'){
            cob = bakeMeAnObject(args[1]);
        }else if(args[0] === 'v'){
            //console.log('WE GOT AN VERTEX!', args);
            cob.points.push([
                parseFloat(args[1]),
                parseFloat(args[2]),
                parseFloat(args[3])
            ]);
        }else if(args[0] === 'f'){
            console.log('WE GOT AN FACE!', args);
        }
    }
}

console.log(objectList);