comparison webGL/test/resources/makeXmlObj.js @ 2:be36da713ffd

update makeXmlObj.js
author NOBUYASU Oshiro
date Mon, 31 May 2010 03:25:15 +0900
parents b67b790dcf4f
children 10344afb38a6
comparison
equal deleted inserted replaced
1:94c790cbd930 2:be36da713ffd
1 function parseXml( url ) { 1 function parseXml( url ) {
2 var http = new JKL.ParseXML( url ); 2 var http = new JKL.ParseXML( url );
3 var data = http.parse()["OBJECT-3D"]; 3 var data = http.parse()["OBJECT-3D"];
4 var xmlObj = new Object(); 4 var xmlObj = new Object();
5
5 if (data["surface"][0]) { 6 if (data["surface"][0]) {
6 for (var i in data["surface"]) { 7 for (var i in data["surface"]) {
7 var obj = xmlObj[data["surface"][i]["name"]] = new Object(); 8 var obj = xmlObj[data["surface"][i]["name"]] = new Object();
8 obj.vertex = splitVector(data["surface"][i]["coordinate"]); 9 obj.vertex = splitVector(data["surface"][i]["coordinate"]);
9 obj.normal = splitVector(data["surface"][i]["normal"]); 10 obj.normal = splitVector(data["surface"][i]["normal"]);
10 obj.texCoords = splitVector(data["surface"][i]["texture"]); 11 obj.texCoords = splitVector(data["surface"][i]["texture"]);
12 var xmlObjImage = data["surface"][i]["image"];
13 obj.image = 'data:image/png;base64,'+xmlObjImage["#text"];
11 } 14 }
12 } else { 15 } else {
13 var obj = xmlObj[data["surface"]["name"]] = new Object(); 16 var obj = xmlObj[data["surface"]["name"]] = new Object();
14 obj.vertex = splitVector(data["surface"]["coordinate"]); 17 obj.vertex = splitVector(data["surface"]["coordinate"]);
15 obj.normal = splitVector(data["surface"]["normal"]); 18 obj.normal = splitVector(data["surface"]["normal"]);
16 obj.texCoords = splitVector(data["surface"]["texture"]); 19 obj.texCoords = splitVector(data["surface"]["texture"]);
20 var xmlObjImage = data["surface"]["image"];
21 obj.image = 'data:image/png;base64,'+xmlObjImage["#text"];
17 } 22 }
18 return xmlObj; 23 return xmlObj;
19 } 24 }
20 25
21 function splitVector(str) { 26 function splitVector(str) {
22 return str.replace(/^\s+/g, "").replace(/\s+/g, " ").split(" "); 27 // return str.replace(/^\s+/g, "").replace(/\s+/g, " ").split(" ");
28 return str.replace(/^\s+/g, "").replace(/\s+/g, " ").replace(/\s$/g, "").split(" ");
23 } 29 }
24 30
25 function makeXmlObj(ctx, xmlObj) 31 function makeXmlObj(ctx, xmlObj)
26 { 32 {
27 var geometryData = [ ]; 33 var geometryData = [ ];
28 var normalData = [ ]; 34 var normalData = [ ];
29 var texCoordData = [ ]; 35 var texCoordData = [ ];
30 var indexData = [ ]; 36 var indexData = [ ];
31 var i = 0; 37 var index = 0;
32 var j = 0; 38 for(var i=0; xmlObj.vertex[i]; i++){
33 var k = 0;
34 while (xmlObj.vertex[i]) {
35 geometryData.push(parseFloat(xmlObj.vertex[i])); 39 geometryData.push(parseFloat(xmlObj.vertex[i]));
36 if ( (i % 3) == 0) { 40 if ( (i % 3) == 0) {
37 indexData.push(k); 41 indexData.push(index);
38 k++; 42 index++;
39 } 43 }
40 i++;
41 } 44 }
42 k = 0; 45 for(i=0; xmlObj.texCoords[i]; i++){
43 while (xmlObj.texCoords[k]) { 46 texCoordData.push(parseFloat(xmlObj.texCoords[i]));
44 texCoordData.push(parseFloat(xmlObj.texCoords[k]));
45 k++;
46 } 47 }
47 while (xmlObj.normal[j]) { 48 for(i=0; xmlObj.normal[i]; i++){
48 normalData.push(parseFloat(xmlObj.normal[j])); 49 normalData.push(parseFloat(xmlObj.normal[i]));
49 j++;
50 } 50 }
51 51
52 var retval = { }; 52 var retval = { };
53 53
54 retval.normalObject = ctx.createBuffer(); 54 retval.normalObject = ctx.createBuffer();
55 ctx.bindBuffer(ctx.ARRAY_BUFFER, retval.normalObject); 55 ctx.bindBuffer(ctx.ARRAY_BUFFER, retval.normalObject);
56 ctx.bufferData(ctx.ARRAY_BUFFER, new WebGLFloatArray(normalData), ctx.STATIC_DRAW); 56 ctx.bufferData(ctx.ARRAY_BUFFER, new WebGLFloatArray(normalData), ctx.STATIC_DRAW);