// forked from ahn's Ameba Pigg Sample /** * PIGG COLLECTION 2011 FALL WINTER * * @author Masayuki Komatsu * http://sekiryou.com/ * http://twitter.com/sekiryou_com */ package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.geom.Matrix; import flash.geom.Matrix3D; import flash.geom.PerspectiveProjection; import flash.geom.Point; import flash.geom.Rectangle; import flash.geom.Utils3D; import flash.geom.Vector3D; import flash.system.Security; import flash.display.Loader; import flash.system.LoaderContext; import flash.net.URLRequest; import flash.net.URLLoader; import flash.system.ApplicationDomain; import net.hires.debug.Stats; [SWF(width = 465, height = 465, backgroundColor = 0xFFFFFF, frameRate = 24)] public class Main extends Sprite { private var projection:PerspectiveProjection; private var projectionMatrix3D:Matrix3D; private var mtx3D:Matrix3D = new Matrix3D(); private var mtx3DIdentity:Vector.<Number> = mtx3D.rawData; private var cameraMtx3D:Matrix3D = new Matrix3D(); private var projectedVerts:Vector.<Number> = new Vector.<Number>(); private var objectList:Vector.<Object3D> = new Vector.<Object3D>(); private var objectCloneList:Vector.<Object3D> = new Vector.<Object3D>(); private var mtrx:Matrix = new Matrix(); private var screen:Sprite = new Sprite(); private var screenBitmap:Bitmap; private const POINT_ZERO:Point = new Point(0, 0); private var loader:Loader; private var maleModelTexture:BitmapData; private var femaleModelTexture:BitmapData; private var modelRect:Rectangle = new Rectangle(0, 0, 512, 512); private var texMF:BitmapData; private var texMM:BitmapData; private var fd_00_01:BitmapData; private var fd_00_02:BitmapData; private var fd_01_01:BitmapData; private var fd_01_02:BitmapData; private var fd_02_01:BitmapData; private var fd_02_02:BitmapData; private var fd_03_01:BitmapData; private var fd_03_02:BitmapData; private var fd_04_01:BitmapData; private var md_00_01:BitmapData; private var md_00_02:BitmapData; private var md_01_01:BitmapData; private var md_01_02:BitmapData; private var md_02_01:BitmapData; private var md_02_02:BitmapData; private var md_03_01:BitmapData; private var md_03_02:BitmapData; private var md_04_01:BitmapData; private var ms0:Slot; private var ms1:Slot; private var ms2:Slot; private var ms3:Slot; private var fs0:Slot; private var fs1:Slot; private var fs2:Slot; private var fs3:Slot; private var title:Sprite; private var tmpIndices:Vector.<int> = new Vector.<int>(); private var tmpUvts:Vector.<Number> = new Vector.<Number>(); private var offsetX:Number = 0; private var offsetY:Number = 0; private var offsetZ:Number = 0; private var rotX:Number = 0; private var rotY:Number = 0; private var rotZ:Number = 0; private var value:Number = 0; public function Main() { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { //Security.allowDomain("sekiryou.com"); projection = new PerspectiveProjection(); //projection.fieldOfView = 40; projection.focalLength = 560; projectionMatrix3D = projection.toMatrix3D(); screen = new Sprite(); screen.mouseChildren = false; mtrx.a = 1; mtrx.b = 0; mtrx.c = 0; mtrx.d = 1; mtrx.tx = 465 * 0.5; mtrx.ty = 465 * 0.5; screenBitmap = new Bitmap(new BitmapData(465, 465, false, 0x000000)); addChild(screenBitmap); screenBitmap.visible = false; //var url:String = "resource.swf"; var url:String = "http://sekiryou.com/lab/resource_0001.swf" var context :LoaderContext = new LoaderContext(); context.applicationDomain = ApplicationDomain.currentDomain; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, recourceLoader); loader.load(new URLRequest(url), context); } private function recourceLoader(e:Event):void { var fSlot:Sprite = new Sprite(); fSlot.x = 0; fSlot.y = 400; addChild(fSlot); var mSlot:Sprite = new Sprite(); mSlot.x = 235; mSlot.y = 400; addChild(mSlot); var Btn_none:Class = loader.contentLoaderInfo.applicationDomain.getDefinition( "btn_none" ) as Class; fs0 = new Slot(); fs0.addItem(new Btn_none(48, 48)); fs0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_00_01" ) as Class)(48, 48)); fs0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_00_02" ) as Class)(48, 48)); fs0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_04_02" ) as Class)(48, 48)); fs0.changeItem(); fs0.x = 140; fs0.addEventListener("costumeChange", femaleCostumeChange); fSlot.addChild(fs0); fs1 = new Slot(); fs1.addItem(new Btn_none(48, 48)); fs1.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_01_01" ) as Class)(48, 48)); fs1.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_01_02" ) as Class)(48, 48)); fs1.changeItem(); fs1.x = 30; fs1.addEventListener("costumeChange", femaleCostumeChange); fSlot.addChild(fs1); fs2 = new Slot(); fs2.addItem(new Btn_none(48, 48)); fs2.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_02_01" ) as Class)(48, 48)); fs2.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_02_02" ) as Class)(48, 48)); fs2.changeItem(); fs2.x = 195; fs2.addEventListener("costumeChange", femaleCostumeChange); fSlot.addChild(fs2); fs3 = new Slot(); fs3.addItem(new Btn_none(48, 48)); fs3.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_03_01" ) as Class)(48, 48)); fs3.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fb_03_02" ) as Class)(48, 48)); fs3.changeItem(); fs3.x = 85; fs3.addEventListener("costumeChange", femaleCostumeChange); fSlot.addChild(fs3); ms0 = new Slot(); ms0.addItem(new Btn_none(48, 48)); ms0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_00_01" ) as Class)(48, 48)); ms0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_00_02" ) as Class)(48, 48)); ms0.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_04_01" ) as Class)(48, 48)); ms0.changeItem(); ms0.x = 140; ms0.addEventListener("costumeChange", maleCostumeChange); mSlot.addChild(ms0); ms1 = new Slot(); ms1.addItem(new Btn_none(48, 48)); ms1.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_01_01" ) as Class)(48, 48)); ms1.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_01_02" ) as Class)(48, 48)); ms1.changeItem(); ms1.x = 30; ms1.addEventListener("costumeChange", maleCostumeChange); mSlot.addChild(ms1); ms2 = new Slot(); ms2.addItem(new Btn_none(48, 48)); ms2.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_02_01" ) as Class)(48, 48)); ms2.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_02_02" ) as Class)(48, 48)); ms2.changeItem(); ms2.x = 195; ms2.addEventListener("costumeChange", maleCostumeChange); mSlot.addChild(ms2); ms3 = new Slot(); ms3.addItem(new Btn_none(48, 48)); ms3.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_03_01" ) as Class)(48, 48)); ms3.addItem(new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mb_03_02" ) as Class)(48, 48)); ms3.changeItem(); ms3.x = 85; ms3.addEventListener("costumeChange", maleCostumeChange); mSlot.addChild(ms3); fd_00_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_00_01" ) as Class)(49, 28); fd_00_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_00_02" ) as Class)(46, 23); fd_01_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_01_01" ) as Class)(32, 32); fd_01_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_01_02" ) as Class)(89, 33); fd_02_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_02_01" ) as Class)(40, 26); fd_02_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_02_02" ) as Class)(39, 20); fd_03_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_03_01" ) as Class)(67, 41); fd_03_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_03_02" ) as Class)(60, 44); fd_04_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "fc_04_01" ) as Class)(51, 48); //fd_04_02 = new (ApplicationDomain.currentDomain.getDefinition( "fc_04_02" ) as Class)(51, 48); md_00_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_00_01" ) as Class)(38, 37); md_00_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_00_02" ) as Class)(38, 49); md_01_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_01_01" ) as Class)(127, 79); md_01_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_01_02" ) as Class)(113, 147); md_02_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_02_01" ) as Class)(44, 25); md_02_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_02_02" ) as Class)(44, 28); md_03_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_03_01" ) as Class)(60, 44); md_03_02 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_03_02" ) as Class)(40, 43); md_04_01 = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "mc_04_01" ) as Class)(59, 68); modelInit(); } private function modelInit():void { var tex00:BitmapData = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "Texture00" ) as Class)(512, 512); var tex01:BitmapData = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "Texture01" ) as Class)(512, 512); var tex02:BitmapData = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "Texture02" ) as Class)(512, 256); texMF = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "ModelFemale" ) as Class)(256, 256); texMM = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "ModelMale" ) as Class)(256, 256); femaleModelTexture = new BitmapData(256, 256, true, 0x00000000); maleModelTexture = new BitmapData(256, 256, true, 0x00000000); femaleModelTexture.copyPixels(texMF, texMF.rect, POINT_ZERO); maleModelTexture.copyPixels(texMM, texMM.rect, POINT_ZERO); var tmp:Object3D = new ObjectStage(); objectList.push(tmp); tmp.px = 0; tmp.py = 3; tmp.pz = 12; tmp.texture = tex00; tmp = new ObjectCatwalk(); objectList.push(tmp); tmp.px = 0; tmp.py = 3; tmp.pz = 0; tmp.texture = tex01; for (var i:int = 0; i < 4; i++ ) { tmp = new ObjectModel(); objectList.push(tmp); tmp.px = 0; tmp.py = 3; tmp.pz = i * 7 - 5; if (i% 2 == 1) { tmp.texture = femaleModelTexture; } else { tmp.texture = maleModelTexture; } } for (i = 0; i < 5; i++ ) { tmp = new ObjectCrowd(); objectList.push(tmp); tmp.px = 4.5 + Math.random() * 1.5; tmp.py = 3; tmp.pz = 5 - i * 3; tmp.texture = tex02; tmp = new ObjectCrowd(); objectList.push(tmp); tmp.px = -4.5 - Math.random() * 1.5; tmp.py = 3; tmp.pz = 5 - i * 3; tmp.uvts[0] *= -1; tmp.uvts[2] *= -1; tmp.uvts[4] *= -1; tmp.uvts[6] *= -1; tmp.texture = tex02; } addEventListener(Event.ENTER_FRAME, update); title = new (loader.contentLoaderInfo.applicationDomain.getDefinition( "Title" ) as Class)(); title.x = 465 * 0.5; title.y = 465 * 0.5; addChild(title); addEventListener(Event.ENTER_FRAME, titleDesolve); screenBitmap.visible = true; } private var titleCount:int = 0; private function titleDesolve(e:Event = null):void { title.scaleX += 0.007; title.scaleY += 0.007; titleCount += 1; if (titleCount > 150) { title.visible = false; removeEventListener(Event.ENTER_FRAME, titleDesolve); } } private function femaleCostumeChange(e:Event):void { //base femaleModelTexture.copyPixels(texMF, texMF.rect, POINT_ZERO); //foot if (fs2.selectableItemID == 1) femaleModelTexture.copyPixels(fd_02_01, fd_02_01.rect, new Point(106, 196), null, null, true); else if (fs2.selectableItemID == 2) femaleModelTexture.copyPixels(fd_02_02, fd_02_02.rect, new Point(106, 202), null, null, true); //bottom if (fs0.selectableItemID == 1) femaleModelTexture.copyPixels(fd_00_01, fd_00_01.rect, new Point(106, 168), null, null, true); else if (fs0.selectableItemID == 2) femaleModelTexture.copyPixels(fd_00_02, fd_00_02.rect, new Point(107, 168), null, null, true); else if (fs0.selectableItemID == 3) femaleModelTexture.copyPixels(fd_04_01, fd_04_01.rect, new Point(104, 144), null, null, true); //cap if (fs1.selectableItemID == 1) femaleModelTexture.copyPixels(fd_01_01, fd_01_01.rect, new Point(146, 70), null, null, true); else if (fs1.selectableItemID == 2) femaleModelTexture.copyPixels(fd_01_02, fd_01_02.rect, new Point(80, 70), null, null, true); //top if (fs3.selectableItemID == 1) femaleModelTexture.copyPixels(fd_03_01, fd_03_01.rect, new Point(97, 142), null, null, true); else if (fs3.selectableItemID == 2) femaleModelTexture.copyPixels(fd_03_02, fd_03_02.rect, new Point(100, 143), null, null, true); } private function maleCostumeChange(e:Event):void { //base maleModelTexture.copyPixels(texMM, texMM.rect, POINT_ZERO); //foot if (ms2.selectableItemID == 1) maleModelTexture.copyPixels(md_02_01, md_02_01.rect, new Point(103, 199), null, null, true); else if (ms2.selectableItemID == 2) maleModelTexture.copyPixels(md_02_02, md_02_02.rect, new Point(101, 196), null, null, true); //bottom if (ms0.selectableItemID == 1) maleModelTexture.copyPixels(md_00_01, md_00_01.rect, new Point(109, 168), null, null, true); else if (ms0.selectableItemID == 2) maleModelTexture.copyPixels(md_00_02, md_00_02.rect, new Point(109, 168), null, null, true); else if (ms0.selectableItemID == 3) maleModelTexture.copyPixels(md_04_01, md_04_01.rect, new Point(100, 144), null, null, true); //cap if (ms1.selectableItemID == 1) maleModelTexture.copyPixels(md_01_01, md_01_01.rect, new Point(60, 38), null, null, true); else if (ms1.selectableItemID == 2) maleModelTexture.copyPixels(md_01_02, md_01_02.rect, new Point(72, 18), null, null, true); //top if (ms3.selectableItemID == 1) maleModelTexture.copyPixels(md_03_01, md_03_01.rect, new Point(98, 142), null, null, true); else if (ms3.selectableItemID == 2) maleModelTexture.copyPixels(md_03_02, md_03_02.rect, new Point(110, 143), null, null, true); } private function update(e:Event = null):void { var i:int var j:int var len:int; var len2:int; value += 0.008; offsetX = 0 + (Math.cos(value) + 1) / 2 * 8; offsetY = 0 + Math.cos(value * 2) * -1; offsetZ = -14; rotX = -4 - (Math.cos(value) + 1) / 2 * 8; rotY = (Math.cos(value) + 1) / 2 * -30; //rotZ = 0; cameraMtx3D.rawData = mtx3DIdentity; cameraMtx3D.appendTranslation(-offsetX, -offsetY, -offsetZ); cameraMtx3D.appendRotation(-rotX, Vector3D.X_AXIS); cameraMtx3D.appendRotation(-rotY, Vector3D.Y_AXIS); //cameraMtx3D.appendRotation(-rotZ, Vector3D.Z_AXIS); objectCloneList.length = 0; len = objectList.length; for (i = 0; i < len; i++) { objectList[i].rx = 90; if (objectList[i].isMove) { if (objectList[i].px > 0) { objectList[i].px -= 0.03; objectList[i].ry = -45; } else if (objectList[i].pz > -12) { objectList[i].pz -= 0.03; if (objectList[i].ry < 0) { objectList[i].ry += 0.5; } } else { objectList[i].px = 3; objectList[i].pz = 15; } } mtx3D.rawData = mtx3DIdentity; mtx3D.appendRotation(objectList[i].rx, Vector3D.X_AXIS); mtx3D.appendRotation(objectList[i].ry, Vector3D.Y_AXIS); mtx3D.appendTranslation(objectList[i].px, objectList[i].py, objectList[i].pz); objectList[i].runningAnimationIndex = 1; if (objectList[i].isBoneHold) { objectList[i].animationList[objectList[i].runningAnimationIndex].animationPlay(); len2 = objectList[i].boneList.length; for (j = 0; j < len2; j++) { if (objectList[i].runningAnimationIndex != 0 && objectList[i].animationList[objectList[i].runningAnimationIndex].poseList[j]) { objectList[i].boneList[j].boneMatrix = objectList[i].animationList[objectList[i].runningAnimationIndex].poseList[j]; } else { objectList[i].boneList[j].boneMatrix.rawData = mtx3DIdentity; objectList[i].boneList[j].boneMatrix.append(objectList[i].boneList[j].initMatrix); } } objectList[i].updateBone(objectList[i].boneList[0], mtx3D); objectList[i].bcVertices.length = 0; len2 = objectList[i].vertexList.length; for (j = 0; j < len2; j++) { var tmpV3D:Vector3D = objectList[i].combMatrixList[objectList[i].vertexList[j].matrixIndex[0]].transformVector(objectList[i].vertexList[j].v3D); objectList[i].bcVertices.push(tmpV3D.x, tmpV3D.y, tmpV3D.z); } mtx3D.append(cameraMtx3D); objectList[i].c = mtx3D.rawData[14]; mtx3D.rawData = mtx3DIdentity; mtx3D.append(cameraMtx3D); mtx3D.transformVectors(objectList[i].bcVertices, objectList[i].cVertices); } else { mtx3D.append(cameraMtx3D); mtx3D.transformVectors(objectList[i].vertices, objectList[i].cVertices); objectList[i].c = mtx3D.rawData[14]; } objectCloneList.push(objectList[i]); } objectCloneList.sort( function(p1:Object, p2:Object):Number { return (p2.c + p2.layer) - (p1.c + p1.layer); } ); screenBitmap.bitmapData.fillRect(screenBitmap.bitmapData.rect, 0x000000); var g:Graphics = screen.graphics; g.clear(); mtx3D.rawData = mtx3DIdentity; mtx3D.append(projectionMatrix3D); len = objectCloneList.length; for (i = 0; i < len; i++) { tmpIndices.length = 0; tmpUvts.length = 0; tmpUvts = tmpUvts.concat(objectCloneList[i].uvts); len2 = objectCloneList[i].mesh.length; for (j = 0; j < len2; j++) { var i0x:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i0 * 3 + 0 >> 0]; var i0y:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i0 * 3 + 1 >> 0]; var i0z:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i0 * 3 + 2 >> 0]; var i1x:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i1 * 3 + 0 >> 0]; var i1y:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i1 * 3 + 1 >> 0]; var i1z:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i1 * 3 + 2 >> 0]; var i2x:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i2 * 3 + 0 >> 0]; var i2y:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i2 * 3 + 1 >> 0]; var i2z:Number = objectCloneList[i].cVertices[objectCloneList[i].mesh[j].i2 * 3 + 2 >> 0]; objectCloneList[i].mesh[j].c = i0x * i0x + i0y * i0y + i0z * i0z; var tmp:Number = i1x * i1x + i1y * i1y + i1z * i1z; if (objectCloneList[i].mesh[j].c > tmp) { objectCloneList[i].mesh[j].c = tmp; } tmp = i2x * i2x + i2y * i2y + i2z * i2z; if (objectCloneList[i].mesh[j].c > tmp) { objectCloneList[i].mesh[j].c = tmp; } } objectCloneList[i].mesh.sort( function(p1:Polygon, p2:Polygon):Number { return p2.c - p1.c; } ); len2 = objectCloneList[i].mesh.length; for (j = 0; j < len2; j++) { tmpIndices.push( objectCloneList[i].mesh[j].i0, objectCloneList[i].mesh[j].i1, objectCloneList[i].mesh[j].i2 ); } projectedVerts.length = 0; Utils3D.projectVectors(mtx3D, objectCloneList[i].cVertices, projectedVerts, tmpUvts); g.beginBitmapFill(objectCloneList[i].texture); g.drawTriangles(projectedVerts, tmpIndices, objectCloneList[i].uvts, "negative"); g.endFill(); } screenBitmap.bitmapData.draw(screen, mtrx); } } } import flash.display.BitmapData; import flash.geom.Matrix3D; class Object3D /*extends Sprite*/ { public var isMove:Boolean; public var c:Number = 0; public var px:Number; public var py:Number; public var pz:Number; public var vx:Number; public var vy:Number; public var vz:Number; public var rx:Number = 0; public var ry:Number = 0; public var rz:Number = 0; public var tx:Number = 0; public var ty:Number = 0; public var tz:Number = 0; public var vertexList:Vector.<Vertex>; public var vertices:Vector.<Number> = new Vector.<Number>(); public var wVertices:Vector.<Number> = new Vector.<Number>(); public var cVertices:Vector.<Number> = new Vector.<Number>(); public var bcVertices:Vector.<Number> = new Vector.<Number>(); public var indices:Vector.<int> = new Vector.<int>(); public var uvts:Vector.<Number> = new Vector.<Number>(); public var mesh:Vector.<Polygon> = new Vector.<Polygon>(); public var isBoneHold:Boolean; public var boneList:Vector.<Bone> = new Vector.<Bone>(); public var combMatrixList:Vector.<Matrix3D> = new Vector.<Matrix3D>(); public var runningAnimationIndex:int; public var animationList:Vector.<Animation>; public var texture:BitmapData; public var layer:Number; public function Object3D() {} public function updateBone(target:Bone, parentWorldMatrix:Matrix3D):void { var tmpBoneMatrix:Matrix3D = target.boneMatrix.clone(); tmpBoneMatrix.append(parentWorldMatrix); combMatrixList[target.id] = target.offsetMatrix.clone(); combMatrixList[target.id].append(tmpBoneMatrix); if (target.firstChild) updateBone(target.firstChild, tmpBoneMatrix); if (target.sibling) updateBone(target.sibling, parentWorldMatrix); } } import flash.geom.Vector3D; class Vertex { private var _v3D:Vector3D; private var _x:Number; private var _y:Number; private var _z:Number; private var _weight:Array; private var _matrixIndex:Array; public function Vertex(x:Number, y:Number, z:Number) { _x = x; _y = y; _z = z; _weight = [0, 0, 0]; _matrixIndex = [0, 0, 0, 0]; _v3D = new Vector3D(_x, _y, _z); } public function get x():Number { return _x; } public function get y():Number { return _y; } public function get z():Number { return _z; } public function get weight():Array { return _weight; } public function set weight(value:Array):void {_weight = value;} public function get matrixIndex():Array { return _matrixIndex; } public function set matrixIndex(value:Array):void {_matrixIndex = value;} public function get v3D():Vector3D { return _v3D; } public function set v3D(value:Vector3D):void {_v3D = value;} } import flash.geom.Vector3D; class Polygon { public var c:Number = 0; public var x:Number = 0; public var y:Number = 0; public var z:Number = 0; public var i0:int = 0; public var i1:int = 0; public var i2:int = 0; public function Polygon(i0:int, i1:int, i2:int) { this.i0 = i0; this.i1 = i1; this.i2 = i2; } } import flash.geom.Matrix3D; import flash.geom.Vector3D; class Bone { private var _id:int; public var defMatrix:Matrix3D = new Matrix3D(); public var boneMatrix:Matrix3D = new Matrix3D(); public var initMatrix:Matrix3D = new Matrix3D(); public var offsetMatrix:Matrix3D = new Matrix3D(); private var mtx3DIdentity:Vector.<Number> = boneMatrix.rawData; private var _firstChild:Bone; private var _sibling:Bone; public function Bone() { } public function get id():int {return _id;} public function set id(value:int):void {_id = value;} public function get firstChild():Bone {return _firstChild;} public function set firstChild(value:Bone):void {_firstChild = value;} public function get sibling():Bone {return _sibling;} public function set sibling(value:Bone):void {_sibling = value;} } import flash.geom.Matrix3D; class Animation { private var partList:Vector.<int>; private var runningKeyList:Vector.<int>; private var keyListArray:Vector.<Object>; public var poseList:Vector.<Matrix3D>; private var _count:Number; private var _maxFrame:int; private var _isLoop:Boolean; public function Animation() { init(); } private function init():void { _count = 0; _maxFrame = 0; keyListArray = new Vector.<Object>(); partList = new Vector.<int>(); runningKeyList = new Vector.<int>(); poseList = new Vector.<Matrix3D>(); } public function keyRegister(tag:int, keyList:Array):void { keyListArray.push(keyList); partList.push(tag); runningKeyList.push(0); poseList.push(null); var len:int = keyList.length; for (var i:int = 0; i < len; i++) { if (_maxFrame < keyList[i].frame) { _maxFrame = keyList[i].frame } } } public function animationPlay():void { var len:int = partList.length; for (var i:int = 0; i < len; i++) { if (keyListArray[i][runningKeyList[i] + 1 << 0]) { if (keyListArray[i][runningKeyList[i] + 1 << 0].frame <= _count) { runningKeyList[i] += 1; } } if (keyListArray[i][runningKeyList[i] + 1 << 0]) { var complementPose:Matrix3D = keyListArray[i][runningKeyList[i]].pose.clone(); complementPose.interpolateTo(keyListArray[i][runningKeyList[i] + 1 << 0].pose, (_count - keyListArray[i][runningKeyList[i]].frame) / (keyListArray[i][runningKeyList[i] + 1 << 0].frame - keyListArray[i][runningKeyList[i]].frame)); poseList[partList[i]] = complementPose; } else { poseList[partList[i]] = keyListArray[i][runningKeyList[i]].pose.clone(); } } _count += 1.2; if (_count > _maxFrame) { _count = 0; len = runningKeyList.length; for (i = 0; i < len; i++) { runningKeyList[i] = 0; } } } } import flash.display.Shader; import flash.display.Shape; import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.events.Event; import flash.events.MouseEvent; import caurina.transitions.Tweener; class Slot extends Sprite { private var items:Array; private var implementationItem:Sprite; private var implementationImage:Bitmap; private var selectableItem:Sprite; public var selectableItemID:int; private var arrangementX:Number; private var arrangementY:Number; private var appX:Number; private var appY:Number; private var mouseArea:Sprite; public function Slot() { items = []; selectableItemID = 0; addEventListener(MouseEvent.ROLL_OUT, onSlotClose); appY = -1; arrangementX = 56; arrangementY = 56; selectableItem = new Sprite(); selectableItem.x = -24; addChild(selectableItem); implementationItem = new Sprite(); implementationItem.buttonMode = true; implementationItem.addEventListener(MouseEvent.ROLL_OVER, onItemSelect); implementationItem.x = -24; addChild(implementationItem); implementationImage = new Bitmap(new BitmapData(48, 48)); implementationItem.addChild(implementationImage); mouseArea = new Sprite(); mouseArea.visible = false; addChild(mouseArea); hitArea = mouseArea; } public function addItem(itemImage:BitmapData):void { var tmp:Item = new Item(items.length, itemImage); tmp.buttonMode = true; tmp.addEventListener(MouseEvent.CLICK, onItemClick); selectableItem.addChild(tmp); items.push(tmp); mouseArea.graphics.clear(); mouseArea.graphics.beginFill(0x000000); if (appY == 1) { mouseArea.graphics.drawRect(arrangementX * -0.5, 0, arrangementX, appY * arrangementY * items.length + 1); } else { mouseArea.graphics.drawRect(arrangementX * -0.5, arrangementY, arrangementX, appY * arrangementY * (items.length + 1)); } } private function onItemSelect(e:MouseEvent):void { var len:int = items.length; for (var i:int = 0; i < len; i++) { Tweener.addTween(items[i], { y : appY * arrangementY * (i + 1), time : 0.3, transition : "easeInOutCubic"}); } } private function onSlotClose(e:MouseEvent):void { var len:int = items.length; for (var i:int = 0; i < len; i++) { Tweener.addTween(items[i], { y : 0, time : 0.5, transition : "easeInOutCubic"}); } } private function onItemClick(e:MouseEvent):void { selectableItemID = e.target.id; changeItem(); } public function changeItem():void { implementationImage.bitmapData = items[selectableItemID].image; //event dispatchEvent(new Event("costumeChange")); } } import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; class Item extends Sprite { private var _id:int; private var _image:BitmapData; public function Item(count:int, itemImage:BitmapData) { _id = count; _image = itemImage addChild(new Bitmap(_image)); } public function get id():int { return _id; } public function get image():BitmapData { return _image; } } import flash.display.Sprite; import flash.geom.Vector3D; import flash.geom.Matrix3D; class ObjectStage extends Object3D { public function ObjectStage() { init(); } private function init():void { var i:int; var len:int; isBoneHold = false; vertices.push( -10.000000, -2.000000, 0.000200, -2.000000, -2.000000, 0.000200, -2.000000, 0.000000, 0.000200, -10.000000, -1.000000, 0.000200, -2.000000, -0.000000, 7.000200, -10.000000, -1.000000, 7.000200, -10.000000, -1.000000, 0.000200, -2.000000, 0.000000, 0.000200, 10.000000, -1.000000, 7.000200, 2.000000, -0.000000, 7.000200, 2.000000, 0.000000, 0.000200, 10.000000, -1.000000, 0.000200, 10.000000, -1.000000, 0.000200, 2.000000, 0.000000, 0.000200, 2.000000, -2.000000, 0.000200, 10.000000, -2.000000, 0.000200 ); vertexList = new Vector.<Vertex>(); len = vertices.length; for (i = 0; i < len; i += 3) { vertexList.push(new Vertex(vertices[i], vertices[i + 1], vertices[i + 2])); } indices.push( 0, 3, 2, 2, 1, 0, 4, 7, 6, 6, 5, 4, 8, 11, 10, 10, 9, 8, 12, 15, 14, 14, 13, 12 ); uvts.push( 0.604564, -0.533549, 0.665407, -0.951469, 0.526100, -0.971750, 0.534911, -0.543689, 0.033491, -0.961610, 0.042302, -0.533550, 0.534911, -0.543689, 0.526100, -0.971750, 0.038374, -0.492087, 0.038374, -0.041991, 0.556342, -0.041990, 0.556342, -0.492087, 0.556342, -0.492087, 0.556342, -0.041990, 0.702320, -0.066320, 0.629331, -0.504252 ); isMove = false; layer = 0; len = indices.length; for (i = 0; i < len; i += 3) { var tmp:Polygon = new Polygon( indices[i], indices[i + 1 >> 0], indices[i + 2 >> 0] ); mesh.push(tmp); } } } import flash.display.Sprite; import flash.geom.Vector3D; import flash.geom.Matrix3D; class ObjectCatwalk extends Object3D { public function ObjectCatwalk() { init(); } private function init():void { var i:int; var len:int; isBoneHold = false; vertices.push( 2.000000, 16.000000, 0.000000, -2.000000, 16.000000, 0.000000, -2.000000, -10.000000, 0.000000, 2.000000, -10.000000, -0.000000, -5.000000, 16.000000, 0.000000, 5.000000, 16.000000, 0.000000, 5.000000, 16.000000, 7.000000, -5.000000, 16.000000, 7.000000, -2.000000, 16.000000, 0.000000, -5.000000, 16.000000, 0.000000, -2.000000, 12.000000, -0.000000, 5.000000, 16.000000, 0.000000, 2.000000, 16.000000, 0.000000, 2.000000, 12.000000, -0.000000 ); vertexList = new Vector.<Vertex>(); len = vertices.length; for (i = 0; i < len; i += 3) { vertexList.push(new Vertex(vertices[i], vertices[i + 1], vertices[i + 2])); } indices.push( 0, 3, 2, 2, 1, 0, 4, 7, 6, 6, 5, 4, 8, 10, 9, 11, 13, 12 ); uvts.push( 0.950796, -0.025359, 0.950796, -0.164065, 0.049204, -0.164066, 0.049204, -0.025359, 0.182526, -0.204169, 0.770460, -0.204169, 0.770460, -0.615722, 0.182526, -0.615722, 0.606990, -0.719302, 0.669407, -0.802526, 0.496024, -0.802526, 0.286063, -0.724185, 0.223645, -0.807409, 0.112680, -0.724185 ); isMove = false; layer = 1000; len = indices.length; for (i = 0; i < len; i += 3) { var tmp:Polygon = new Polygon( indices[i], indices[i + 1 >> 0], indices[i + 2 >> 0] ); mesh.push(tmp); } } } import flash.display.Sprite; import flash.geom.Vector3D; import flash.geom.Matrix3D; class ObjectCrowd extends Object3D { public function ObjectCrowd() { init(); } private function init():void { var i:int; var len:int; isBoneHold = false; vertices.push( 3.000000, 0.000000, 2.000000, -3.000000, 0.000000, 2.000000, -3.000000, 0.000000, 0.000000, 3.000000, -0.000000, 0.000000 ); vertexList = new Vector.<Vertex>(); len = vertices.length; for (i = 0; i < len; i += 3) { vertexList.push(new Vertex(vertices[i], vertices[i + 1], vertices[i + 2])); } indices.push( 0, 3, 2, 2, 1, 0 ); uvts.push( 0.974124, -0.799155, 0.030759, -0.799155, 0.030759, -0.170246, 0.974124, -0.170245 ); layer = 0; len = indices.length; for (i = 0; i < len; i += 3) { var tmp:Polygon = new Polygon( indices[i], indices[i + 1 >> 0], indices[i + 2 >> 0] ); mesh.push(tmp); } } } import flash.display.Sprite; import flash.geom.Vector3D; import flash.geom.Matrix3D; class ObjectModel extends Object3D { public function ObjectModel() { init(); } private function init():void { var i:int; var len:int; isBoneHold = true; for (i = 0; i < 7; i++) { var tmpBone:Bone = new Bone(); boneList.push(tmpBone); } boneList[0].firstChild = boneList[1]; boneList[1].sibling = boneList[5]; boneList[1].firstChild = boneList[2]; boneList[2].sibling = boneList[3]; boneList[3].sibling = boneList[4]; boneList[5].sibling = boneList[6]; boneList[0].initMatrix.rawData = Vector.<Number>([1,0,0,0,0,0,1,0,0,-1,0,0,0.04520000144839287,0.9764999747276306,0.3668999969959259,1]); boneList[1].initMatrix.rawData = Vector.<Number>([-0.9984999895095825,0,0.054999999701976776,0,-0.054999999701976776,0,-0.9984999895095825,0,0,-1,0,0,0,1,0,1]); boneList[2].initMatrix.rawData = Vector.<Number>([0.8514000177383423,0.5245000123977661,0,0,0.5245000123977661,-0.8514000177383423,0,0,0,0,-1,0,0.09539999812841415,0.41119998693466187,0,1]); boneList[3].initMatrix.rawData = Vector.<Number>([0.8325999975204468,-0.5537999868392944,0,0,-0.5537999868392944,-0.8325999975204468,0,0,0,0,-1,0,-0.17759999632835388,0.4050000011920929,0,1]); boneList[4].initMatrix.rawData = Vector.<Number>([-0.9929999709129333,-0.11789999902248383,0,0,-0.11789999902248383,0.9929999709129333,0,0,0,0,-1,0,0,0.44780001044273376,0,1]); boneList[5].initMatrix.rawData = Vector.<Number>([-0.9993000030517578,0,-0.03779999911785126,0,-0.03779999911785126,0,0.9993000030517578,0,0,1,0,0,-0.09390000253915787,1,0.05550000071525574,1]); boneList[6].initMatrix.rawData = Vector.<Number>([-0.9998999834060669,0,0.012900000438094139,0,0.012900000438094139,0,0.9998999834060669,0,0,1,0,0,0.11509999632835388,1,0.052000001072883606,1]); len = boneList.length; for (i = 0; i < len; i++) { boneList[i].id = i; combMatrixList.push(new Matrix3D()); } vertices.push( 0.257300, 0.095900, 0.957900, 0.286500, -0.003700, 0.957900, 0.581200, -0.023800, 0.957900, 0.435000, 0.192000, 0.957200, 0.320700, 0.368200, 0.960200, 0.233700, 0.221200, 0.957900, 0.257300, 0.095900, 0.957900, 0.435000, 0.192000, 0.957200, 0.176600, 0.441200, 0.957900, 0.233700, 0.221200, 0.957900, 0.320700, 0.368200, 0.960200, -0.529600, 0.174500, 0.957900, -0.297100, -0.032000, 0.957900, -0.213200, 0.162200, 0.957900, -0.369600, 0.334900, 0.958700, -0.369600, 0.334900, 0.958700, -0.213200, 0.162200, 0.957900, -0.162300, 0.231400, 0.957900, -0.247700, 0.422800, 0.959000, -0.162300, 0.231400, 0.957900, -0.224000, 0.059500, 0.957900, 0.285500, -0.018200, 0.957900, 0.233700, 0.221200, 0.957900, -0.124500, 0.471200, 0.957900, -0.247700, 0.422800, 0.959000, -0.162300, 0.231400, 0.957900, -0.124500, 0.471200, 0.957900, -0.162300, 0.231400, 0.957900, 0.233700, 0.221200, 0.957900, 0.176600, 0.441200, 0.957900, 0.285500, -0.018200, 0.957900, -0.224000, 0.059500, 0.957900, 0.034600, -0.107500, 0.957900, 0.034600, -0.107500, 0.957900, -0.224000, 0.059500, 0.957900, -0.318800, -0.087300, 0.957900, 0.024800, -0.186000, 0.957900, 0.285500, -0.018200, 0.957900, 0.034600, -0.107500, 0.957900, 0.046600, -0.177500, 0.957900, 0.413800, -0.159000, 0.957900, 0.413800, -0.159000, 0.957900, 0.046600, -0.177500, 0.957900, 0.040100, -0.263500, 0.957900, 0.367500, -0.360700, 0.957900, 0.024800, -0.186000, 0.957900, -0.318800, -0.087300, 0.957900, -0.214500, -0.178700, 0.957900, 0.021700, -0.301100, 0.957900, 0.021700, -0.301100, 0.957900, -0.214500, -0.178700, 0.957900, -0.367400, -0.306700, 0.957900, -0.139700, -0.436700, 0.957900, 0.367500, -0.360700, 0.957900, 0.040100, -0.263500, 0.957900, -0.103900, -0.399900, 0.957900, 0.063600, -0.514100, 0.957900, -0.124500, 0.471200, 0.957900, 0.176600, 0.441200, 0.957900, 0.721800, 0.576000, 0.956000, -0.716200, 0.587000, 0.958300, -0.830000, 0.934900, 0.961100, -0.716200, 0.587000, 0.958300, 0.721800, 0.576000, 0.956000, 0.788600, 0.837000, 0.955900, -0.830000, 0.934900, 0.961100, 0.788600, 0.837000, 0.955900, 0.684200, 1.752300, 0.916100, -0.664600, 1.719300, 0.925100, -0.664600, 1.719300, 0.925100, 0.684200, 1.752300, 0.916100, -0.028900, 1.951800, 0.939400, -0.124500, 0.471200, 0.957900, -0.716200, 0.587000, 0.958300, -0.569300, 0.190000, 0.991300, 0.721800, 0.576000, 0.956000, 0.176600, 0.441200, 0.957900, 0.573700, 0.014900, 1.000400 ); vertexList = new Vector.<Vertex>(); len = vertices.length; for (i = 0; i < len; i += 3) { vertexList.push(new Vertex(vertices[i], vertices[i + 1], vertices[i + 2])); } indices.push( 0, 3, 2, 2, 1, 0, 4, 7, 6, 6, 5, 4, 8, 10, 9, 11, 14, 13, 13, 12, 11, 15, 18, 17, 17, 16, 15, 19, 22, 21, 21, 20, 19, 23, 25, 24, 26, 29, 28, 28, 27, 26, 30, 32, 31, 33, 36, 35, 35, 34, 33, 37, 40, 39, 39, 38, 37, 41, 44, 43, 43, 42, 41, 45, 48, 47, 47, 46, 45, 49, 52, 51, 51, 50, 49, 53, 56, 55, 55, 54, 53, 57, 60, 59, 59, 58, 57, 61, 64, 63, 63, 62, 61, 65, 68, 67, 67, 66, 65, 69, 71, 70, 72, 74, 73, 75, 77, 76 ); uvts.push( 0.586521, -0.306953, 0.595737, -0.273530, 0.694067, -0.265197, 0.646431, -0.338094, 0.609199, -0.397598, 0.579342, -0.348970, 0.586521, -0.306953, 0.646431, -0.338094, 0.561457, -0.422759, 0.579342, -0.348970, 0.609199, -0.397598, 0.324074, -0.337500, 0.400643, -0.267264, 0.429732, -0.331679, 0.378400, -0.390233, 0.378400, -0.390233, 0.429732, -0.331679, 0.447106, -0.354524, 0.419611, -0.418926, 0.447106, -0.354524, 0.425560, -0.297438, 0.595338, -0.268703, 0.579342, -0.348970, 0.461052, -0.433422, 0.419611, -0.418926, 0.447106, -0.354524, 0.461052, -0.433422, 0.447106, -0.354524, 0.579342, -0.348970, 0.561457, -0.422759, 0.595338, -0.268703, 0.425560, -0.297438, 0.511027, -0.240244, 0.511027, -0.240244, 0.425560, -0.297438, 0.393091, -0.248893, 0.507329, -0.214074, 0.595338, -0.268703, 0.511027, -0.240244, 0.514644, -0.216772, 0.637441, -0.220954, 0.637441, -0.220954, 0.514644, -0.216772, 0.512019, -0.188079, 0.620861, -0.153830, 0.507329, -0.214074, 0.393091, -0.248893, 0.427412, -0.217813, 0.505658, -0.175625, 0.505658, -0.175625, 0.427412, -0.217813, 0.375658, -0.175867, 0.451011, -0.131222, 0.620861, -0.153830, 0.512019, -0.188079, 0.463175, -0.143304, 0.518512, -0.104236, 0.461052, -0.433422, 0.561457, -0.422759, 0.735421, -0.481204, 0.265910, -0.462597, 0.223388, -0.574410, 0.265910, -0.462597, 0.735421, -0.481204, 0.753177, -0.567410, 0.223388, -0.574410, 0.753177, -0.567410, 0.705020, -0.864842, 0.265289, -0.833236, 0.265289, -0.833236, 0.705020, -0.864842, 0.469126, -0.919196, 0.461052, -0.433422, 0.265910, -0.462597, 0.319881, -0.334787, 0.735421, -0.481204, 0.561457, -0.422759, 0.702313, -0.293930 ); var weightDataList:Array = []; var vertexIndexList:Array = []; weightDataList.push([]); vertexIndexList.push([]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([17, 19, 25, 27, 5, 9, 22, 28, 21, 30, 37, 32, 33, 38, 20, 31, 34]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([23, 26, 57, 72, 11, 14, 15, 13, 16, 12, 18, 24]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([8, 29, 58, 76, 4, 10, 0, 6, 1, 2, 3, 7]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([61, 65, 60, 62, 73, 68, 69, 71, 67, 70, 64, 66, 59, 63, 75, 74, 77]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([36, 45, 48, 49, 52, 51, 47, 50, 35, 46]); weightDataList.push([1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000]); vertexIndexList.push([40, 41, 44, 53, 56, 55, 43, 54, 39, 42]); len = vertexIndexList.length; for (i = 0; i < len; i++) { var len2:int = weightDataList[i].length; for (var j:int = 0; j < len2; j++) { vertexList[vertexIndexList[i][j]].weight.unshift(weightDataList[i][j]); vertexList[vertexIndexList[i][j]].matrixIndex.unshift(i); } } boneList[0].offsetMatrix.rawData = Vector.<Number>([ 1.000000,0.000000,0.000000,0.000000, 0.000000,0.000000,-1.000000,0.000000, 0.000000,1.000000,0.000000,0.000000, 0.000000,0.000000,0.000000,1.000000 ]); boneList[1].offsetMatrix.rawData = Vector.<Number>([ -0.998500,-0.055000,-0.000000,0.000000, -0.055000,0.998500,-0.000000,0.000000, 0.000000,-0.000000,-1.000000,0.000000, -0.000000,-0.000000,1.000000,1.000000 ]); boneList[2].offsetMatrix.rawData = Vector.<Number>([ -0.879000,-0.476900,0.000000,0.000000, 0.476900,-0.879000,-0.000000,0.000000, 0.000000,0.000000,1.000000,0.000000, -0.296900,0.300100,-1.000000,1.000000 ]); boneList[3].offsetMatrix.rawData = Vector.<Number>([ -0.800900,0.598800,0.000000,0.000000, -0.598800,-0.800900,-0.000000,0.000000, 0.000000,-0.000000,1.000000,0.000000, 0.372200,0.238800,-1.000000,1.000000 ]); boneList[4].offsetMatrix.rawData = Vector.<Number>([ 0.998000,0.063100,0.000000,0.000000, -0.063100,0.998000,-0.000000,0.000000, -0.000000,0.000000,1.000000,0.000000, 0.052800,-0.444600,-1.000000,1.000000 ]); boneList[5].offsetMatrix.rawData = Vector.<Number>([ -0.999300,-0.037800,0.000000,0.000000, 0.037800,-0.999300,0.000000,0.000000, 0.000000,0.000000,1.000000,0.000000, -0.091700,-0.059000,-1.000000,1.000000 ]); boneList[6].offsetMatrix.rawData = Vector.<Number>([ -0.999900,0.012900,0.000000,0.000000, -0.012900,-0.999900,0.000000,0.000000, 0.000000,0.000000,1.000000,0.000000, 0.114400,-0.053400,-1.000000,1.000000 ]); var tmpAnimation:Animation = new Animation(); animationList = new Vector.<Animation>(new Animation()); animationList.push(tmpAnimation); tmpAnimation.keyRegister( 3, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ 0.832600, -0.553800, -0.000000, 0.000000, -0.553800, -0.832600, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, -0.177600, 0.405000, -0.000000, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ 0.806300, -0.564500, 0.176700, 0.000000, -0.590000, -0.788900, 0.171700, 0.000000, 0.042500, -0.242700, -0.969200, 0.000000, -0.177600, 0.405000, -0.000000, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ 0.832600, -0.553800, -0.000000, 0.000000, -0.553800, -0.832600, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, -0.177600, 0.405000, -0.000000, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ 0.658900, -0.683800, 0.313600, 0.000000, -0.375600, -0.660300, -0.650400, 0.000000, 0.651800, 0.310700, -0.691900, 0.000000, -0.177600, 0.405000, -0.000000, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ 0.832600, -0.553800, -0.000000, 0.000000, -0.553800, -0.832600, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, -0.177600, 0.405000, -0.000000, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 2, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ 0.851400, 0.524500, -0.000000, 0.000000, 0.524500, -0.851400, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, 0.095400, 0.411200, 0.000000, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ 0.820800, 0.541800, 0.181000, 0.000000, 0.541100, -0.635800, -0.550400, 0.000000, -0.183100, 0.549700, -0.815000, 0.000000, 0.095400, 0.411200, -0.000000, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ 0.851400, 0.524500, -0.000000, 0.000000, 0.524500, -0.851400, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, 0.095400, 0.411200, 0.000000, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ 0.897800, 0.306800, -0.315800, 0.000000, 0.427800, -0.778000, 0.460200, 0.000000, -0.104500, -0.548300, -0.829700, 0.000000, 0.095400, 0.411200, -0.000000, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ 0.851400, 0.524500, -0.000000, 0.000000, 0.524500, -0.851400, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, 0.095400, 0.411200, 0.000000, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 1, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ -0.998500, 0.000000, 0.055000, 0.000000, -0.055000, 0.000000, -0.998500, 0.000000, -0.000000, -1.000000, -0.000000, 0.000000, 0.000000, 1.000000, -0.000000, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ -0.983100, 0.156500, 0.095100, 0.000000, -0.096400, -0.000500, -0.995300, 0.000000, -0.155700, -0.987700, 0.015600, 0.000000, 0.000000, 1.000000, -0.000000, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ -0.998500, 0.000000, 0.055000, 0.000000, -0.055000, 0.000000, -0.998500, 0.000000, -0.000000, -1.000000, -0.000000, 0.000000, 0.000000, 1.000000, -0.000000, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ -0.995100, 0.034900, 0.092100, 0.000000, -0.091600, 0.015700, -0.995700, 0.000000, -0.036200, -0.999300, -0.012400, 0.000000, 0.000000, 1.000000, -0.000000, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ -0.998500, 0.000000, 0.055000, 0.000000, -0.055000, 0.000000, -0.998500, 0.000000, -0.000000, -1.000000, -0.000000, 0.000000, 0.000000, 1.000000, -0.000000, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 0, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ 1.000000, 0.000000, -0.000000, 0.000000, 0.000000, -1.000000, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, 0.045200, 0.976500, 0.366900, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ 1.000000, 0.000000, -0.000000, 0.000000, 0.000000, -1.000000, 0.000000, 0.000000, -0.000000, -0.000000, -1.000000, 0.000000, 0.045200, 0.976500, 0.366900, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 6, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ -0.999900, 0.000000, 0.012900, 0.000000, 0.012900, 0.000000, 0.999900, 0.000000, 0.000000, 1.000000, -0.000000, 0.000000, 0.115100, 1.000000, 0.052000, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ -0.994500, -0.052000, -0.091300, 0.000000, -0.105100, 0.492500, 0.863900, 0.000000, 0.000000, 0.868700, -0.495300, 0.000000, 0.115100, 1.000000, 0.052000, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ -0.999900, 0.000000, 0.012900, 0.000000, 0.012900, -0.000000, 0.999900, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.115100, 1.000000, 0.052000, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ -0.961000, -0.006300, 0.276500, 0.000000, 0.244700, -0.484800, 0.839700, 0.000000, 0.128800, 0.874600, 0.467500, 0.000000, 0.115100, 1.000000, 0.052000, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ -0.999900, 0.000000, 0.012900, 0.000000, 0.012900, 0.000000, 0.999900, 0.000000, 0.000000, 1.000000, -0.000000, 0.000000, 0.115100, 1.000000, 0.052000, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 5, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ -0.999300, 0.000000, -0.037800, 0.000000, -0.037800, 0.000000, 0.999300, 0.000000, 0.000000, 1.000000, -0.000000, 0.000000, -0.093900, 1.000000, 0.055500, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ -0.994500, -0.080800, 0.066000, 0.000000, 0.100300, -0.567500, 0.817200, 0.000000, -0.028500, 0.819400, 0.572500, 0.000000, -0.093900, 1.000000, 0.055500, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ -0.999300, 0.000000, -0.037800, 0.000000, -0.037800, 0.000000, 0.999300, 0.000000, 0.000000, 1.000000, -0.000000, 0.000000, -0.093900, 1.000000, 0.055500, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ -0.945100, -0.023500, -0.325900, 0.000000, -0.269200, 0.621600, 0.735600, 0.000000, 0.185300, 0.783000, -0.593800, 0.000000, -0.093900, 1.000000, 0.055500, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ -0.999300, 0.000000, -0.037800, 0.000000, -0.037800, 0.000000, 0.999300, 0.000000, 0.000000, 1.000000, -0.000000, 0.000000, -0.093900, 1.000000, 0.055500, 1.000000 ]) ) }, ] ); tmpAnimation.keyRegister( 4, [ { frame : 1, pose : new Matrix3D( Vector.<Number>([ -0.993000, -0.117900, -0.000000, 0.000000, -0.117900, 0.993000, -0.000000, 0.000000, 0.000000, -0.000000, -1.000000, 0.000000, 0.000000, 0.447800, -0.000000, 1.000000 ]) ) }, { frame : 8, pose : new Matrix3D( Vector.<Number>([ -0.974200, -0.137400, -0.178800, 0.000000, -0.141700, 0.989900, 0.011000, 0.000000, 0.175500, 0.036000, -0.983800, 0.000000, 0.000000, 0.447800, -0.000000, 1.000000 ]) ) }, { frame : 15, pose : new Matrix3D( Vector.<Number>([ -0.993000, -0.117900, -0.000000, 0.000000, -0.117900, 0.993000, -0.000000, 0.000000, 0.000000, -0.000000, -1.000000, 0.000000, 0.000000, 0.447800, -0.000000, 1.000000 ]) ) }, { frame : 22, pose : new Matrix3D( Vector.<Number>([ -0.982800, -0.183200, -0.022700, 0.000000, -0.182800, 0.983000, -0.018000, 0.000000, 0.025600, -0.013500, -0.999600, 0.000000, 0.000000, 0.447800, -0.000000, 1.000000 ]) ) }, { frame : 29, pose : new Matrix3D( Vector.<Number>([ -0.993000, -0.117900, -0.000000, 0.000000, -0.117900, 0.993000, -0.000000, 0.000000, 0.000000, -0.000000, -1.000000, 0.000000, 0.000000, 0.447800, -0.000000, 1.000000 ]) ) }, ] ); animationList.push(tmpAnimation); isMove = true; layer = 0; len = indices.length; for (i = 0; i < len; i += 3) { var tmp:Polygon = new Polygon( indices[i], indices[i + 1 >> 0], indices[i + 2 >> 0] ); mesh.push(tmp); } } } PIGG COLLECTION 2011 FALL WINTER