Bladeren bron

Can read .onj files with normals

Iñigo Valentin 12 jaren geleden
bovenliggende
commit
19fd4952cc
4 gewijzigde bestanden met toevoegingen van 102 en 3 verwijderingen
  1. 2 1
      index.html
  2. 20 0
      obj/star.mtl
  3. 71 0
      obj/star.obj
  4. 9 2
      script/ObJS.js

+ 2 - 1
index.html

@@ -10,7 +10,7 @@
 		<table>
 			<tr>
 				<td>
-					<canvas id="ObJSCanvas" width="400" height="400">
+					<canvas id="ObJSCanvas" width="500" height="500">
 						Your browser does not support the HTML5 canvas tag.
 					</canvas>
 				</td>
@@ -20,6 +20,7 @@
 						<option value="obj/rainbow.obj" selected="selected">Rainbow</option>
 						<option value="obj/cube.obj">Cube</option>
 						<option value="obj/sphere.obj">Sphere</option>
+						<option value="obj/star.obj">Star</option>
 						<option value="obj/monkey.obj">Monkey</option>
 						<option value="obj/bolt.obj">Bolt</option>
 						<option value="obj/multiple.obj">Multiple Objects</option>

+ 20 - 0
obj/star.mtl

@@ -0,0 +1,20 @@
+# Blender MTL File: 'None'
+# Material Count: 2
+
+newmtl Material
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.237610 0.000000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2
+
+newmtl Yellow
+Ns 96.078431
+Ka 0.000000 0.000000 0.000000
+Kd 0.640000 0.633060 0.000000
+Ks 0.500000 0.500000 0.500000
+Ni 1.000000
+d 1.000000
+illum 2

+ 71 - 0
obj/star.obj

@@ -0,0 +1,71 @@
+# Blender v2.70 (sub 0) OBJ File: ''
+# www.blender.org
+mtllib star.mtl
+o Star
+v 0.000000 0.250000 0.000000
+v 0.000000 -0.250000 0.000000
+v 0.500000 0.250000 0.000000
+v 0.500000 -0.250000 0.000000
+v 0.809017 0.250000 -0.587785
+v 0.809017 -0.250000 -0.587785
+v 0.154509 0.250000 -0.475528
+v 0.154509 -0.250000 -0.475528
+v -0.309017 0.250000 -0.951057
+v -0.309017 -0.250000 -0.951057
+v -0.404509 0.250000 -0.293893
+v -0.404509 -0.250000 -0.293893
+v -1.000000 0.250000 -0.000000
+v -1.000000 -0.250000 -0.000000
+v -0.404509 0.250000 0.293893
+v -0.404509 -0.250000 0.293893
+v -0.309017 0.250000 0.951057
+v -0.309017 -0.250000 0.951057
+v 0.154509 0.250000 0.475528
+v 0.154509 -0.250000 0.475528
+v 0.809017 0.250000 0.587786
+v 0.809017 -0.250000 0.587786
+vn 0.000000 1.000000 0.000000
+vn 0.000000 -1.000000 0.000000
+vn 0.885132 0.000000 -0.465340
+vn 0.885131 0.000000 0.465341
+vn -0.169045 -0.000000 -0.985608
+vn 0.716086 0.000000 -0.698012
+vn -0.989607 0.000000 -0.143798
+vn -0.442566 -0.000000 -0.896736
+vn -0.442566 0.000000 0.896736
+vn -0.989607 0.000000 0.143798
+vn 0.716086 0.000000 0.698012
+vn -0.169046 -0.000000 0.985608
+usemtl Yellow
+s off
+f 3//1 1//1 21//1
+f 1//1 3//1 5//1
+f 1//1 5//1 7//1
+f 1//1 7//1 9//1
+f 1//1 9//1 11//1
+f 1//1 11//1 13//1
+f 1//1 13//1 15//1
+f 1//1 15//1 17//1
+f 1//1 17//1 19//1
+f 1//1 19//1 21//1
+f 2//2 4//2 22//2
+f 4//2 2//2 6//2
+f 6//2 2//2 8//2
+f 8//2 2//2 10//2
+f 10//2 2//2 12//2
+f 12//2 2//2 14//2
+f 14//2 2//2 16//2
+f 16//2 2//2 18//2
+f 18//2 2//2 20//2
+f 20//2 2//2 22//2
+usemtl Material
+f 4//3 3//3 21//3 22//3
+f 3//4 4//4 6//4 5//4
+f 5//5 6//5 8//5 7//5
+f 7//6 8//6 10//6 9//6
+f 9//7 10//7 12//7 11//7
+f 11//8 12//8 14//8 13//8
+f 13//9 14//9 16//9 15//9
+f 15//10 16//10 18//10 17//10
+f 17//11 18//11 20//11 19//11
+f 19//12 20//12 22//12 21//12

+ 9 - 2
script/ObJS.js

@@ -542,6 +542,7 @@ function ObJS(){
 		var max = 0;
 		var j;
 		var dist;
+		var fac;
 		var mat = "null";
 		text = text + "\n";
 		while (text.indexOf("\n") != -1){
@@ -565,11 +566,17 @@ function ObJS(){
 				face[f] = new Array();
 				j = 0;
 				while(line.indexOf(" ") != -1){
-					face[f][j] = line.substring(0, line.indexOf(" ")) - 1;
+					face[f][j] = line.substring(0, line.indexOf(" "));
+					if (face[f][j].indexOf('/') != -1)
+						face[f][j] = face[f][j].substring(0, face[f][j].indexOf('/'));
+					face[f][j] = face[f][j] - 1;
 					line = line.substring(line.indexOf(" ") + 1);
 					j = j + 1;
 				}
-				face[f][j] = line - 1;
+				face[f][j] = line;
+				if (face[f][j].indexOf('/') != -1)
+					face[f][j] = face[f][j].substring(0, face[f][j].indexOf('/'));
+				face[f][j] = face[f][j] - 1;
 				face[f][j + 1] = mat;
 				f = f + 1;
 			}