Selaa lähdekoodia

Mesh.exportOBJ()

new Mesh.exportOBJ()
exports a browser downloadable .OBJ file link
László Matuska, BitOfGold 10 vuotta sitten
vanhempi
commit
77415ecc3a
4 muutettua tiedostoa jossa 34951 lisäystä ja 0 poistoa
  1. 34 0
      dist/babylon.js
  2. 34842 0
      dist/babylon.max.js
  3. 33 0
      dist/babylon.noworker.js
  4. 42 0
      src/Mesh/babylon.mesh.js

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 34 - 0
dist/babylon.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 34842 - 0
dist/babylon.max.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 33 - 0
dist/babylon.noworker.js


+ 42 - 0
src/Mesh/babylon.mesh.js

@@ -1897,6 +1897,48 @@ var BABYLON;
          * Update the vertex buffers by applying transformation from the bones
          * @param {skeleton} skeleton to apply
          */
+
+        Mesh.prototype.exportOBJ = function() {
+            var output=[];
+            var g = this.geometry;
+            trunkVerts = g.getVerticesData('position');
+            trunkNormals = g.getVerticesData('normal');
+            trunkUV = g.getVerticesData('uv');
+            trunkFaces = g.getIndices();
+            output.push("mtllib mat.mtl");
+            for(var i=0;i<trunkVerts.length;i+=3){
+                output.push("v "+trunkVerts[i]+" "+trunkVerts[i+1]+" "+trunkVerts[i+2]);
+            }
+            for(i=0;i<trunkNormals.length;i+=3){
+                output.push("vn "+trunkNormals[i]+" "+trunkNormals[i+1]+" "+trunkNormals[i+2]);
+            }
+            for(i=0;i<trunkUV.length;i+=2){
+                output.push("vt "+trunkUV[i]+" "+trunkUV[i+1]);
+            }
+            output.push("g gr1");
+            output.push("usemtl mat");
+            for(i=0;i<trunkFaces.length;i+=3) {
+                output.push(
+                    "f "+(trunkFaces[i+2]+1)+"/"+(trunkFaces[i+2]+1)+"/"+(trunkFaces[i+2]+1)+
+                    " "+(trunkFaces[i+1]+1)+"/"+(trunkFaces[i+1]+1)+"/"+(trunkFaces[i+1]+1)+
+                    " "+(trunkFaces[i]+1)+"/"+(trunkFaces[i]+1)+"/"+(trunkFaces[i]+1)
+                );
+            }
+            var text = output.join("\n");
+            var fileBlob;
+            try{
+                fileBlob=new Blob([text]);
+            }catch(e){
+                var blobBuilder=window.BlobBuilder || window.MozBlobBuilder || window.WebKitBlobBuilder;
+                var bb=new blobBuilder();
+                bb.append([text]);
+                fileBlob=bb.getBlob();
+            }
+            var URL=window.URL || window.webkitURL;
+            var link=URL.createObjectURL(fileBlob);
+            return link;
+        };
+
         Mesh.prototype.applySkeleton = function (skeleton) {
             if (!this.isVerticesDataPresent(BABYLON.VertexBuffer.PositionKind)) {
                 return this;