Mercurial > hg > Members > e085711
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); |