<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PuchilogPlus &#187; jiglib</title>
	<atom:link href="http://blog.puchiplus.com/tag/jiglib/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.puchiplus.com</link>
	<description>Flash/Actionscript</description>
	<lastBuildDate>Tue, 10 May 2011 06:41:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>jiglib 3D Physics Engine #2</title>
		<link>http://blog.puchiplus.com/2009/10/jiglib-3d-physics-engine-2.php</link>
		<comments>http://blog.puchiplus.com/2009/10/jiglib-3d-physics-engine-2.php#comments</comments>
		<pubDate>Sun, 11 Oct 2009 05:06:30 +0000</pubDate>
		<dc:creator>laqu</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[jiglib]]></category>

		<guid isPermaLink="false">http://blog.puchiplus.com/?p=514</guid>
		<description><![CDATA[メモ ご覧になるには最新のFlashPlayerが必要です。 // package classes { import flash.events.Event; import org.papervision3d.view.BasicView; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.primitives.Cone; import org.papervision3d.objects.primitives.Plane; import jiglib.plugin.papervision3d.Papervision3DPhysics; import jiglib.plugin.papervision3d.Pv3dMesh; import jiglib.geometry.JBox; [SWF(width="450",height="300",backgroundColor="#ffffff",frameRate="30")] public class Main extends BasicView { private var rootNode : DisplayObject3D; private var physics : Papervision3DPhysics; public static const FROOR_SIZE : uint=2000; public static const CONE_NUM : uint=5; public static [...]]]></description>
			<content:encoded><![CDATA[<p>メモ</p>
<p><span id="more-514"></span></p>
<div style="border: 3px solid #00b2ee; margin: 10px 0px; width: 450px; height: 300px;">
<div id="jiglib2">ご覧になるには<a title="Adobe Flash Player ダウンロードセンター" href="http://www.adobe.com/go/getflashplayer_jp" target="blank">最新のFlashPlayer</a>が必要です。
</div>
<p><script type="text/javascript">// <![CDATA[
var params = {};
params.wmode="transparent";
swfobject.embedSWF("http://blog.puchiplus.com/img/jikken/jiglib/jiglib_2.swf", "jiglib2", "450", "300", "9.0.0", "http://blog.puchiplus.com/img/expressInstall.swf",  params);
// ]]&gt;</script>
</div>
<p><!--more--></p>
<pre class="brush:as3;wrap-lines: false;">
package classes
{
	import flash.events.Event;

	import org.papervision3d.view.BasicView;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.objects.primitives.Cone;
	import org.papervision3d.objects.primitives.Plane;

	import jiglib.plugin.papervision3d.Papervision3DPhysics;
	import jiglib.plugin.papervision3d.Pv3dMesh;
	import jiglib.geometry.JBox;

	[SWF(width="450",height="300",backgroundColor="#ffffff",frameRate="30")]

	public class Main extends BasicView
	{
		private var rootNode : DisplayObject3D;
		private var physics : Papervision3DPhysics;

		public static const FROOR_SIZE : uint=2000;
		public static const CONE_NUM : uint=5;
		public static const CONE_RADIUS : uint=80;
		public static const CONE_HEIGHT : uint=200;

		public function Main():void
		{
			super(450,300,false);
			init();
		}

		private function init():void
		{
			camera.y = 400;
			camera.z = -1500;

			rootNode = new DisplayObject3D  ;
			scene.addChild(rootNode);

			physics = new Papervision3DPhysics(rootNode,9.8);

			var floor:Plane = new Plane(new WireframeMaterial(0),FROOR_SIZE,FROOR_SIZE);
			rootNode.addChild(floor);
			var floorBox : JBox=new JBox(new Pv3dMesh(floor),FROOR_SIZE,1,FROOR_SIZE);
			floorBox.y = -500;
			floorBox.rotationX = 90;
			floorBox.movable = false;
			physics.addBody(floorBox);

			for (var i : uint = 0; i < cone_NUM; i++)
			{
				var cone : Cone = new Cone(new WireframeMaterial(0xFF0000),CONE_RADIUS,CONE_HEIGHT,6,4);
				scene.addChild(cone);
				var coneBox : JBox = new JBox(new Pv3dMesh(cone),CONE_RADIUS*2,CONE_RADIUS*2,CONE_HEIGHT);
				coneBox.y = 1000;
				coneBox.friction = 0.2;
				coneBox.restitution = 1.2;
				physics.addBody(coneBox);
			}

			startRendering();
		}

		protected override function onRenderTick(e:Event=null):void
		{
			physics.step();
			super.onRenderTick(e);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.puchiplus.com/2009/10/jiglib-3d-physics-engine-2.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jiglib 3D Physics Engine #1</title>
		<link>http://blog.puchiplus.com/2009/07/jiglib-3d-physics-engine.php</link>
		<comments>http://blog.puchiplus.com/2009/07/jiglib-3d-physics-engine.php#comments</comments>
		<pubDate>Wed, 29 Jul 2009 01:46:46 +0000</pubDate>
		<dc:creator>laqu</dc:creator>
				<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[jiglib]]></category>
		<category><![CDATA[Papervision3D]]></category>

		<guid isPermaLink="false">http://blog.puchiplus.com/?p=498</guid>
		<description><![CDATA[3ヶ月以上空いてしまいました。 jiglib 3D Physics Engineという各種3Dライブラリで物理シミュレーションを行うことができるライブラリを触ってみました。 対応している3Dライブラリはjiglibのバージョンr92の時点でPapervision3D・Away3D・Sandyの3つ。 自分はPV3Dしか使ったことないのでPV3D+jiglibの環境です。 ご覧になるには最新のFlashPlayerが必要です。 // package { import flash.events.Event; import org.papervision3d.view.BasicView; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.DisplayObject3D; import jiglib.plugin.papervision3d.Papervision3DPhysics; import jiglib.physics.RigidBody; import net.hires.debug.Stats; /** * @author laqu */ public class Main extends BasicView { private var rootNode:DisplayObject3D; private var physics:Papervision3DPhysics; private var floor:RigidBody; public static const CUBE_SIZE:uint=150; public static const CUBE_NUM:uint=15; [...]]]></description>
			<content:encoded><![CDATA[<p>3ヶ月以上空いてしまいました。</p>
<p><a href="http://www.jiglibflash.com/blog/" target="_blank">jiglib 3D Physics Engine</a>という各種3Dライブラリで物理シミュレーションを行うことができるライブラリを触ってみました。</p>
<p>対応している3Dライブラリはjiglibのバージョンr92の時点でPapervision3D・Away3D・Sandyの3つ。</p>
<p>自分はPV3Dしか使ったことないのでPV3D+jiglibの環境です。</p>
<p><span id="more-498"></span></p>
<div style="border: 3px solid #00b2ee; margin: 10px 0px; width: 450px; height: 300px;">
<div id="jiglib1">ご覧になるには<a title="Adobe Flash Player ダウンロードセンター" href="http://www.adobe.com/go/getflashplayer_jp" target="blank">最新のFlashPlayer</a>が必要です。
</div>
<p><script type="text/javascript">// <![CDATA[
var params = {};
params.wmode="transparent";
swfobject.embedSWF("http://blog.puchiplus.com/img/jikken/jiglib/jiglib_1.swf", "jiglib1", "450", "300", "9.0.0", "http://blog.puchiplus.com/img/expressInstall.swf",  params);
// ]]&gt;</script>
</div>
<pre class="brush:as3;wrap-lines: false;">
package
{
	import flash.events.Event;

	import org.papervision3d.view.BasicView;
	import org.papervision3d.materials.WireframeMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.DisplayObject3D;

	import jiglib.plugin.papervision3d.Papervision3DPhysics;
	import jiglib.physics.RigidBody;

	import net.hires.debug.Stats;

	/**
	 * @author laqu
	 */
	public class Main extends BasicView
	{
		private var rootNode:DisplayObject3D;
		private var physics:Papervision3DPhysics;
		private var floor:RigidBody;

		public static const CUBE_SIZE:uint=150;
		public static const CUBE_NUM:uint=15;

		//Constructor
		public function Main():void
		{
			super(450,300,false);
			stage.quality=&quot;low&quot;;
			init();
		}

		private function init() : void
		{
			addChild(new Stats());

			rootNode=new DisplayObject3D();
			scene.addChild(rootNode);

			camera.y=400;
			camera.z=-2000;

			physics=new Papervision3DPhysics(rootNode,9.8);

			//Create Floor
			floor=physics.createGround(new WireframeMaterial(0), 2000, 0);
			floor.y=-500;

			//Create Cubes
			for(var i:uint=0;i &lt; Main.CUBE_NUM;i++)
			{
				var matlist:MaterialsList=new MaterialsList();
				matlist.addMaterial(new WireframeMaterial(Math.random()*0xffffff),&quot;all&quot;);
				var cube:RigidBody=physics.createCube(matlist, Main.CUBE_SIZE, Main.CUBE_SIZE, Main.CUBE_SIZE);
				cube.restitution=1.2;
				cube.friction=0.2;
				cube.y = Main.CUBE_SIZE * i+1000;
			}

			//Rendering Start
			startRendering();
		}

		protected override function onRenderTick(e:Event=null) : void
		{
			rootNode.rotationY+=(stage.stageWidth/2-stage.mouseX)/70;
			physics.step();
			super.onRenderTick(e);
		}
	}
}
</pre>
<p>以下ソースです。<br />
PV3Dを使用する場合はPapervision3DPhysicsクラスでまず物理のワールドを作ります。</p>
<pre name="code" class="actionscript">
physics=new Papervision3DPhysics(rootNode,9.8);
</pre>
<p>第1引数はDisplayObjectContainer3Dなのでsceneでもいいんですが、別途事前にDisplayObject3Dを作っておいてそれを割り当てておきます。<br />
第2引数は重力です。
</p>
<p>
続いて地面を作ります。使うクラスはRigidBodyというクラス。<br />
Papervision3DPhysicsにはcreateGround・createCube・createSphereというメソッドが用意されておりそれらを利用し3Dのオブジェクトを作っていきます。（PV3Dでオブジェクトを作っておいてそれを利用することもできるのですが、それはまた今度）</p>
<pre name="code" class="actionscript">
floor=physics.createGround(new WireframeMaterial(0), 2000, 0);
</pre>
<p>第2引数はサイズなんですがそれはあくまで第1引数で指定したマテリアルが表示されるサイズであって地面は延々と続いています、はず。
</p>
<p>
次にオブジェクトを作ってみます。</p>
<pre name="code" class="actionscript">
var cube:RigidBody=physics.createCube(matlist, Main.CUBE_SIZE, Main.CUBE_SIZE, Main.CUBE_SIZE);
</pre>
</p>
<p>
最後にenterFrame内でPapervision3DPhysicsのstepメソッドを実行します。<br />
これ忘れると動かない。</p>
<pre name="code" class="actionscript">
physics.step();
</pre></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.puchiplus.com/2009/07/jiglib-3d-physics-engine.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

