Forked from: TheCoolMuseum's 法線マップテスト diff:32 法線マップテストをちょっと高速化 ByteArrayを使用したビットマップ塗りつぶしのテスト uwi forked:1favorite:9lines:63license : MIT License modified : 2009-10-22 21:11:59 Embed Tweet // forked from TheCoolMuseum's 法線マップテスト // forked from TheCoolMuseum's 法線マップ作成テスト // forked from TheCoolMuseum's forked from: ByteArrayを使用したビットマップ塗りつぶしのテスト // forked from TheCoolMuseum's ByteArrayを使用したビットマップ塗りつぶしのテスト // forked from TheCoolMuseum's flash on 2009-7-12 // ByteArrayを使用したビットマップ塗りつぶしのテスト package { import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.events.*; public class FlashTest extends Sprite { private var iWidth:int; private var iHeight:int; private var frameBuffer:BitmapData; public function FlashTest() { iWidth = stage.stageWidth; iHeight = stage.stageHeight; frameBuffer = new BitmapData(iWidth, iHeight, true); _n = new Array(iWidth * iHeight); for(var y:int=0; y<iHeight; y++){ var pos:int = y*iWidth; for(var x:int=0; x<iWidth; x++){ var nrm:Vector3D = new Vector3D(x/iWidth*2-1,y/iHeight*2-1,0,0); var len:Number = nrm.length; if(len > 1){ nrm.z = 0; }else{ nrm.z = Math.sin(Math.acos(len)); } nrm.normalize(); _n[pos] = nrm; pos++; } } addChild(new Bitmap(frameBuffer)); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove); } private var _n : Array; private var frameImg:ByteArray = new ByteArray(); private function mouseMove(e:MouseEvent):void{ var ray:Vector3D = new Vector3D(); ray.x = mouseX/iWidth*2-1; ray.y = mouseY/iHeight*2-1; var len:Number = ray.length; if(len>1){ ray.z = 0; }else{ ray.z = Math.sin(Math.acos(len)); } ray.normalize(); frameImg.position = 0; for(var y:int=0; y<iHeight; y++){ var pos:int = y*iWidth*4; for(var x:int=0; x<iWidth; x++){ var v : Vector3D = _n[y*iWidth+x]; var diffuse : int = (v.x * ray.x + v.y * ray.y + v.z * ray.z) * 255; if(diffuse <= 0)diffuse = 0; frameImg[pos] = 0xff; frameImg[pos+1] = diffuse; frameImg[pos+2] = diffuse; frameImg[pos+3] = diffuse; pos+=4; } } frameBuffer.setPixels(frameBuffer.rect, frameImg); } } } Code Fullscreen Preview Fullscreen plankton TheCoolMuseu.. selflash tkinjo bongiovi015 paq 178ep3 hi_noon matsumos Math.acos Vector3D ByteArray setPixels normalize mouseY MouseEvent.MOUSE_MOVE mouseX position addEventListener Math.sin MouseEvent rect BitmapData addChild stageWidth Bitmap length stageHeight Array sort new page view favorite forked pv2761 外部ファイルを用いた法線マップテスト TheCoolMuseum forked:3 favorite:32lines:78 (diff:53) tag: 3D beautifl ホラー