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