flash on 2013-1-13

by ohisama
ugokan nannde
♥0 | Line 109 | Modified 2013-01-23 12:36:48 | MIT License
play

ActionScript3 source code

/**
 * Copyright ohisama ( http://wonderfl.net/user/ohisama )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/he08
 */

//ugokan nannde
package
{
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.view.stats.StatsView;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.cameras.*;
    import org.papervision3d.lights.*;
    import org.papervision3d.objects.primitives.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.materials.utils.*;
    import org.papervision3d.materials.shadematerials.*;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.render.QuadrantRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.core.geom.renderables.Triangle3D;
    import org.papervision3d.core.geom.renderables.Vertex3D;
    import org.papervision3d.core.geom.TriangleMesh3D;
    import org.papervision3d.core.geom.Lines3D;
    import org.papervision3d.core.geom.renderables.Line3D;
    import org.papervision3d.core.utils.MeshUtil;
    import org.papervision3d.core.math.NumberUV;
    import org.papervision3d.core.proto.MaterialObject3D;
    import org.papervision3d.materials.special.LineMaterial;
    import org.papervision3d.materials.BitmapFileMaterial;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.materials.BitmapMaterial;
    import org.papervision3d.objects.primitives.Sphere;
    public class test4 extends BasicView
    {
        public function test4()
        {
            setMesh();
            _camera.zoom = 500;
            startRendering();
        }
        private function enterFrameHandler(event : Event) : void 
        {
            //c.rotationY += 1;
        }
        private function setMesh() : void
        {
            var objFile : String = "http://210.169.132.184/~ohi/pawn.obj";
            var loader : URLLoader = new URLLoader();
            scene.removeChildByName("myObject");
            loader.addEventListener(Event.COMPLETE , function() : void
            {
                var line : Array = String(loader.data).split("\n");
                var len : int = line.length;
                var lineArr : Array = new Array();
                var vArr : Array = new Array();
                var vtArr : Array = new Array();
                var fArr : Array = new Array();
                for (var i : int = 0 ; i < len ; i ++)
                {
                    lineArr = String(line[i]).split(" ");
                    if (lineArr[0] == "v")
                    {
                        vArr.push(new Array(lineArr[1], lineArr[2], lineArr[3]));
                    }
                    else if (lineArr[0] == "vt")
                    {
                        vtArr.push(new Array(Number(lineArr[1]), Number(lineArr[2])));
                    }
                    else if (lineArr[0] == "f")
                    {
                        if (lineArr.length == 4)
                        {
                            fArr.push(new Array(lineArr[1], lineArr[2], lineArr[3]));
                        }
                        else
                        {
                            fArr.push(new Array(lineArr[1], lineArr[2], lineArr[3], lineArr[4]));
                        }
                    }
                }
                var mesh : TriangleMesh3D = new TriangleMesh3D(null , new Array(), new Array(), null);
                len = fArr.length;
                for (i = 0 ; i < len ; i ++)
                {
                    var len2 : int = fArr[i].length;
                    var vertex3DArr : Array = new Array();
                    var texture3DArr : Array = new Array();
                    for (var j : int = 0 ; j < len2 ; j ++)
                    {
                        var index : int = String(fArr[i][j]).split("/")[0] - 1;
                        var vertex3D : Vertex3D = new Vertex3D(vArr[index][0] , vArr[index][1] , vArr[index][2]);
                        mesh.geometry.vertices.push(vertex3D);
                        vertex3DArr[j] = vertex3D;
                        var index2 : int = String(fArr[i][j]).split("/")[1] - 1;
                        texture3DArr[j] = new NumberUV(vtArr[index2][0], 1 - vtArr[index2][1]);
                    }
                    mesh.geometry.faces.push(new Triangle3D(mesh, new Array(vertex3DArr[0], vertex3DArr[1], vertex3DArr[2]), null, new Array(texture3DArr[0], texture3DArr[1], texture3DArr[2])));
                    if (len2 == 4)
                    {
                        mesh.geometry.faces.push(new Triangle3D(mesh, new Array(vertex3DArr[3], vertex3DArr[0], vertex3DArr[2]), null, new Array(texture3DArr[3], texture3DArr[0], texture3DArr[2])));
                    }
                }
                mesh.geometry.ready = true;
                scene.addChild(mesh, "myObject");
            });
            loader.load(new URLRequest(objFile));
        }
    }
}