Paparvision3dで各ポリゴンの頂点をいじれるので、三角関数など規則性のある関数で処理してみたら布がゆらめくような動きが表現できました。なかなか面白い。
画面クリックでマテリアル切替。
package
{
import flash.events.Event;
import flash.events.MouseEvent;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.core.proto.LightObject3D;
import org.papervision3d.materials.shadematerials.GouraudMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
/**
*
* @author modoki
*/
public class Main extends BasicView
{
private var mainObj:Plane;
private var si:Number = 0;
private var material_a:GouraudMaterial;
private var material_b:WireframeMaterial;
public function Main():void
{
super(600, 600, true, true, CameraType.FREE);
// カメラ設定初期化
camera.moveForward(200);
camera.moveUp(400);
camera.rotationX = 20;
// ライト設定
var light:LightObject3D = new LightObject3D();
light.x = -500;
light.y = 500;
// Material
material_a = new GouraudMaterial(light, 0xFFFFFF, 0x0000FF);
material_b = new WireframeMaterial();
material_a.doubleSided = true;
material_b.doubleSided = true;
// DisplayObject
mainObj = new Plane(material_a, 800, 500, 10, 5);
mainObj.rotationX = 90;
scene.addChild(mainObj);
// Handler
stage.addEventListener(MouseEvent.MOUSE_UP, clickHandler);
// レンダリング開始
startRendering();
}
/**
*-------------------------------------------------------
* Click
*-------------------------------------------------------
*/
private function clickHandler(e:MouseEvent):void
{
if (mainObj.material == material_a) {
mainObj.material = material_b;
} else {
mainObj.material = material_a;
}
}
/**
*-------------------------------------------------------
* onRenderTick
*-------------------------------------------------------
*/
override protected function onRenderTick(event:Event = null):void {
// 回転
mainObj.roll(-((mouseX - stage.width * .5) / (stage.width * .25)));
// ゆらめき
si += 10;
for ( var i:String in mainObj.geometry.vertices ) {
mainObj.geometry.vertices[i].z = Math.cos((si + (Number(i) * 5)) * Math.PI / 180) * 100;
}
super.onRenderTick(event);
}
}
}
タグ: ActionScript, flash, Papervision3D


はじめまして。
布の動きを表現したくて、こちらの記事を元にwonderflでいじらせていただきました。
もしあれだったら消しますので。。
http://wonderfl.kayac.com/code/e0e3d0e463d68f3fc4cd6c063fdde611297fb2d9