<?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>note.x</title>
	<atom:link href="http://blog.r3c7.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.r3c7.net</link>
	<description>やってみたコト、行ったトコ、使ってみたモノなどを淡々と記録しています。</description>
	<lastBuildDate>Tue, 07 May 2013 12:37:53 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Stage3D Physics library &#8220;Pellet&#8221;</title>
		<link>http://blog.r3c7.net/as3-stage3d/647/</link>
		<comments>http://blog.r3c7.net/as3-stage3d/647/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 14:53:55 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Stage3D]]></category>
		<category><![CDATA[stage3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=647</guid>
		<description><![CDATA[Adobe製Stage3D用フレームワーク Proscenium に付属してくる物理演算ライブラリ「Pellet」を単独で使ってみた。 btConvexHullShape Test（要：FlashPlayer11） Pe [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe製Stage3D用フレームワーク Proscenium に付属してくる物理演算ライブラリ「Pellet」を単独で使ってみた。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/01/"><img src="/wp-content/uploads/stage3d/111208/p01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/01/" class="ext-link">btConvexHullShape Test</a>（要：FlashPlayer11）</p>
<p>Pellet は、C++で書かれたオープンソースの<a href="http://bulletphysics.org/wordpress/" target="_blank">物理演算ライブラリ「Bullet」</a>のAS3移植版。<br />
BulletはBlenderのゲームエンジンで使われてたりする。（MMDが採用してるっていうほうが通りがいいのかな）そのAS3ポートといえば、</p>
<p><a href="http://memo.devjam.net/clip/742" target="_blank" class="ext-link">Away3D 4.0 jiglib vs Bullet « DevJamMemo</a><br />
<a href="http://flabaka.com/blog/?p=3501" target="_blank" class="ext-link">AwayPhysicsを使って衝突判定をしてみる</a><br />
<a href="http://clockmaker.jp/blog/2011/12/away_physics/" target="_blank" class="ext-link">Flash Player 11 対応の 3D 物理演算ライブラリ「AwayPhysics」 | ClockMaker Blog</a></p>
<p>等のエントリーですでに紹介されているAway3D4.0用のAwayPhysicsがあるけど、PelletはAlchemyでネイティブのBullet呼び出す形式ではなくて、ピュアAS3で書いてるっぽい？ そういう理由からか、現状はBulletの一部の機能が実装されている状況。Petit Bullet 略して Pellet ってことなんだろうか。</p>
<p>機能・パフォーマンス的にAwayPhysicsに及ばないけど、描画と完全に切り離して扱うことができるので自前ライブラリと組み合わせて動かすことができた。Box2DとかJigLibとか触ったことがあれば概ね扱いは同じ。</p>
<ol>
<li>dynamicsWorldにもろもろのパラメータ渡して初期化</li>
<li>dynamicsWorld内で扱うbtRigidBodyを登録</li>
<li>EnterFrame毎に stepSimulation() で演算</li>
<li>btRigidBodyの行列を、表示用のオブジェクトにコピー</li>
</ol>
<p>みたいな流れ。</p>
<p>とはいうものの、JigLibと比較すると設定しなくちゃならない必須パラメータが随分多い上に、リファレンスの類が何も用意されてないので、最低限動かすのに必要な情報は <a href="http://labs.adobe.com/downloads/proscenium.html" target="_blank">Proscenium のサンプルコード</a></p>
<ul>
<li>TestPhysicsAPI.as</li>
<li>TestPhysicsFractalTerrain.as</li>
<li>TestPhysicsStaticMesh.as</li>
<li>Tutorial06_SimplePhysics.as</li>
</ul>
<p>から拾った。特にTestPhysicsAPI.as が有用。</p>
<p>あと、Pellet.swc内の catalog.xml からクラス一覧を取り出して、<a href="http://bulletphysics.com/Bullet/BulletFull/">本家Bulletのリファレンス</a>や、<a href="http://bulletjpn.web.fc2.com/">Bullet 2.76 Physics Japanese Manual </a>と突き合わせながら用意されてそうなメソッドを探した。無駄に労力使って泥臭く。開発環境大事 orz 「bt〜」というクラス名を本家Bulletと揃えてくれてあるので、アタリを付けるうえでとても助かる。</p>
<p>エントリー冒頭のデモは、凸構造形状を扱うクラスbtConvexHullShapeを使って、球などで近似しない場合にどの程度動くのかを試したもの。一つのコリジョンデータあたり20頂点くらいなんだけど10個くらい動くとキツい。勘所が分かってないのでオレの実装がしょーもないことやってる可能性のほうが高いけど、大量のオブジェクトをガンガン出してヒャッハーしたいとなるとやっぱ球か。</p>
<p style="margin-top:16px">　</p>
<p>ということで btSphereShape（球体）100個。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/02/"><img src="/wp-content/uploads/stage3d/111208/p02.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/02/" class="ext-link">btSphereShape Test</a>（要：FlashPlayer11）</p>
<p>自分の環境だと40〜45fps。マジメに最適化やって改善できるんだろうか。。</p>
<p style="margin-top:16px">　</p>
<p>地形との衝突判定用途の検証に、凹面三角形メッシュを扱うbtBvhTriangleMeshShapeを使ったウォークスルーも作ってみた。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/03/"><img src="/wp-content/uploads/stage3d/111208/p03.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111208/03/" class="ext-link">btBvhTriangleMeshShape Test</a>（要：FlashPlayer11）</p>
<p>初期化に結構な負荷と時間がかかりますが、気長にお待ちください。<br />
カーソルキーで移動、Z,Xキーでカメラのピッチング操作。<br />
※モデルデータは、<a href="http://funsethp.web.fc2.com/" target="_blank">BTAさん制作の「ケロリン町1.05」</a>をお借りしました。<br />
※主な道路に沿う形でコリジョンメッシュ作ったので、通れそうで通れない路地があったり、ぶつかるはずのオブジェを貫通したりします。</p>
<p>コリジョンメッシュは△1000程度。これは思っていたより現実的な速度で動いた。コリジョンのポリゴン削ればさらに負荷を下げられるかもしれない。</p>
<p style="margin-top:16px">　</p>
<p>今のところ btPoint2PointConstraint、btHingeConstraint といった、複数の剛体を繋いで複雑な物理モデルを構成するためのクラスの大部分が移植されてないようなので、連動して btRaycastVehicle、btKinematicCharacterController という有用なアクションインターフェースが使えない。この辺でもAwayPhysicsに大きく差をつけられてる感じ。</p>
<p>もうひとつ気になるのは、Proscenium を含めて今後もAdobeが開発を続ける気があるのかどうか。Pixel Bender 3Dもツールキットさえ提供されないまま消えてしまいそうだし、同じようにフェードアウトしそうな悪寒。Stage3D API 直叩き派としては描画ライブラリを規定しないPelletのほうが扱いやすいし、名前もカワイイので今後も開発が続行されることに期待したい。<br />
あとリファレンス欲しい。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-stage3d/647/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3D engine studies 111111</title>
		<link>http://blog.r3c7.net/as3-stage3d/632/</link>
		<comments>http://blog.r3c7.net/as3-stage3d/632/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 14:30:49 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Stage3D]]></category>
		<category><![CDATA[3dengine]]></category>
		<category><![CDATA[stage3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=632</guid>
		<description><![CDATA[もろもろ機能追加。日付だけが重要なエントリー。 ランバートのみじゃあんまりなのでフォン実装。なんかいろいろおかしい気もするけど、ひとまず良しとした。.blendのパース時に手を抜いてたフェイス定義を修正。共有すべき頂点は [...]]]></description>
			<content:encoded><![CDATA[<p>もろもろ機能追加。日付だけが重要なエントリー。</p>
<p>ランバートのみじゃあんまりなのでフォン実装。なんかいろいろおかしい気もするけど、ひとまず良しとした。.blendのパース時に手を抜いてたフェイス定義を修正。共有すべき頂点は共有するように。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/01/"><img src="/wp-content/uploads/stage3d/111111/p01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/01/" class="ext-link">Phong Shading Test</a>（要：FlashPlayer11）</p>
<div style="margin-top:30px;"></div>
<p>ビルボード実装。</p>
<p class="photo"><a href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/02/" target="_blank"><img src="/wp-content/uploads/stage3d/111111/p02.jpg" border="0" /></a></p>
<p><a href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/02/" class="ext-link" target="_blank">Billboard Test</a>（要：FlashPlayer11）</p>
<p>keim_at_siさんのエントリー「<a href="http://d.hatena.ne.jp/keim_at_Si/20111102/p1" target="_blank">ActionScriptでPoint Sprite</a>」と同じように4頂点を座標変換した後、上下左右に各頂点を移動させる方法で常にカメラの方向を向くようにしてる。</p>
<div style="margin-top:30px;"></div>
<p>ポリライン実装。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/03/"><img src="/wp-content/uploads/stage3d/111111/p03.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111111/03/" class="ext-link">Poly-line Test</a>（要：FlashPlayer11）</p>
<p>Stage3DにはGL_LINE相当の描画モードが無いので線を描くことができない。以前Twitter経由で、<a href="http://9ballsyndrome.blog.fc2.com/" target="_blank">9ballsyndrome</a>さんに教えて頂いた <a href="http://forums.adobe.com/thread/886188?tstart=0" target="_blank">http://forums.adobe.com/thread/886188?tstart=0</a> の方法で、<a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/02/index.html">見かけ上ワイヤーフレーム表示</a>することもできるけど、これはサーフェスのエッジ部分だけ描画する方法なので、ポリゴンを真横とか真上から見たりすると線が表示されなくなる。うまい方法無いもんかと悶々とし続けた結果、これも2枚の三角ポリゴン使って描くしかなさげだという結論に達したのでそうした。</p>
<p>頂点を座標変換するところまではビルボードと同じ。各頂点を移動する処理の部分で、ラインの始点・終点の接線ベクトルと視線ベクトルの外積を取って、その方向に線の太さ分移動させてる。欠点として、ラインの接続部分が綺麗じゃなかったり、カメラに真っ直ぐ向かってくるラインの表示が破綻したりするので改善の余地あり。</p>
<p>Game Programming Gems 3 に載ってる Billboard Beams でごまかせそうだという情報を得たので、本屋で立ち読みして何となく把握した。静岡市立図書館にGame Programming Gems置いてくれ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-stage3d/632/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stage3D Software Rendering</title>
		<link>http://blog.r3c7.net/as3-stage3d/608/</link>
		<comments>http://blog.r3c7.net/as3-stage3d/608/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 18:06:01 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Stage3D]]></category>
		<category><![CDATA[stage3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=608</guid>
		<description><![CDATA[FlashPlayer11はハードウェアアクセラレーションに対応してない環境でStage3Dを使った.swfを再生すると、SwiftShaderによるソフトウェアレンダリングにフォールバックする。シェーダー含めコードの書 [...]]]></description>
			<content:encoded><![CDATA[<p>FlashPlayer11はハードウェアアクセラレーションに対応してない環境でStage3Dを使った.swfを再生すると、<a href="http://transgaming.com/business/swiftshader/technology/" target="_blank">SwiftShader</a>によるソフトウェアレンダリングにフォールバックする。シェーダー含めコードの書き換えが必要ないのでステキな配慮だとは思うんだけど、ぶっちゃけどの程度動くもんなのか見てみたい。とりとめない感じであれこれ迷走してみた。</p>
<p>下記は、描画サイズ640&#215;480でテクスチャ貼った板ポリをランダム配置して回しただけの簡単なデモ。強制Softwareモードで動かしてる。</p>
<p class="photo"><a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/00/"><img src="/wp-content/uploads/stage3d/111101/p01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/00/" class="ext-link">Stage3D Hardware Acceleration Test</a>（要：FlashPlayer11）</p>
<p>これを自分の環境で試してみると、</p>
<pre class="code">WindowsXP SP3 Intel PentiumM 1Ghz：△12000で12〜24fps（CPU使用率：85%〜95％）
OSX10.6.8 Intel Core i5 2.53 GHz：△20000で60fps（CPU使用率：120〜150%）</pre>
<p>格差すごい。Core i5のほうはまだ行けそうな感じだけど、PentiumM 1Ghzのほうは△12000でいっぱいいっぱいな感じ。どんな環境でもそれなりに動くものを作るとなると、この差異を吸収できるだけの柔軟さが求められるのか。。<br />
GPUでの描画性能との対比で考えると「Softwareモード遅ぇー！」ってのが率直な印象だし、ブラウザの表示領域目一杯使って、10万オーダーのポリゴン描画とかちょっと現実味がない。</p>
<p>とはいえ悪あがきをしてみよう。<br />
描画面積が小さくなればフィルレートが上がるはずなので解像度を下げてみる。<br />
<a rel="shadowbox;width=600;height=450" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/01/" class="ext-link"><strong>描画サイズ320&#215;240版</strong></a></p>
<pre class="code">WindowsXP SP3 Intel PentiumM 1Ghz：△12000で28fps〜60fps（CPU使用率：42％〜80%）
OSX10.6.8 Intel Core i5 2.53 GHz：△20000で60fps（CPU使用率：40〜50%）</pre>
<p>これならPentiumM 1Ghzでも△12000描画で概ね30fps以上をキープできた。安直だけど効果はデカイ。</p>
<p>テクスチャ以外に<br />
<a rel="shadowbox;width=600;height=450" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/02/" class="ext-link"><strong>単色カラー塗り</strong></a><br />
<a rel="shadowbox;width=600;height=450" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/03/" class="ext-link"><strong>頂点カラー塗り</strong></a><br />
<a rel="shadowbox;width=600;height=450" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/04/" class="ext-link"><strong>テクスチャ（ミップマップあり）</strong></a><br />
<a rel="shadowbox;width=600;height=450" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/05/" class="ext-link"><strong>加算ブレンド</strong></a><br />
とかで違いが出るか試してみたけど、それぞれ単独で使っても極端にパフォーマンスが変化することは無かった。</p>
<p>これをどう捉えるか？<br />
320&#215;240で△12000描画して30fpsって、初代プレステ並の描画性能なわけで、FlashPlayer上でのソフトウェアレンダリングにしては結構ヤルんじゃないのかコイツは…と、超前向きな解釈もできる。確かに、自前ラスタライザの場合640&#215;480で△4000〜△4500をPentiumM 1Ghzで描画した場合15fpsにも届かなかったので、これはこれでスゴい。</p>
<p>シーン全体のポリゴン数が△10000程度でポストエフェクトも使わないようなコンテンツなら、描画サイズを調整するだけでも、ある程度古い環境までカバーできそう。逆に、描画サイズを大きく取りたかったり、数十万ポリゴン描画するのが前提な場合、勝手にフォールバックされるのはむしろ危険だと思うので、警告出して再生そのものができないようにする配慮が必要かと。</p>
<p>描画サイズ小さくすることでパフォーマンスは向上したものの、いまどき320&#215;240はいくらなんでも小さい。低解像度でいいから表示面積を大きく拡大したいなーと思ったら、これがどうもステージサイズに連動して拡大されたりしないっぽい。<br />
Betaリリースの段階だとStageScaleMode.NO_SCALE指定してなかったりすると、Stageサイズに合わせて拡大表示されてた記憶があったんだけども…、現状はconfigureBackBufferで定義されたサイズで固定になってしまう。フルスクリーン表示も試してみたけど小さな描画領域が表示されるのだった。</p>
<p>ダメモトで、Context3D.setRenderToTexture()使ってテクスチャレンダリングして、それを貼った板ポリ描画。<br />
<a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/06/" class="ext-link"><strong>描画サイズ640&#215;480、256&#215;256のテクスチャに描画</strong></a></p>
<pre class="code">WindowsXP SP3 Intel PentiumM 1Ghz：△3000で17fps（CPU使用率：87％〜96%）</pre>
<p>普通に描画バッファに描くより猛烈に遅い。。結局、バッファ自体は640&#215;480で確保してることに変わりないから、テクスチャレンダリングしてる分余計に負荷がかかるだけってことだろうか？Softwareでマルチパスは諦めたほうがよさそう。</p>
<p>ならば、Context3D.drawToBitmapData() 使ったらどうか。<br />
<a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/wp-content/uploads/stage3d/111101/07/" class="ext-link"><strong>バックバッファ320&#215;240、同サイズのBitmapDataに描画、640&#215;480に引き延ばして表示</strong></a><br />
若干パフォーマンスは落ちるけど、描画バッファに描くだけの場合と同じような速度出た。このサイズなら使える手段かもしれない…けど、負荷無く拡大表示できる方法ないもんかなぁ。</p>
<p>と、あれこれ試してみて、オレ的にはこれが活きる環境って限られるんじゃないの？という印象。強制的にSoftwareになっちゃうLinux環境とか、Win/Macで、そこそこのCPU積んでるけどGPUモードには対応してないマシンとか? 数年経ってSandy Bridgeがあたりまえ、みたいな状況になれば大概GPUで動くようになりそうだし、今後のアップデートで対応範囲が広がるかもしれない。個人的な方針として、当面はSoftwareモードへのフォールバックはあんまり気にしすぎないようにして、GPUでの動作に重点を置くことにする。</p>
<p>作るものの方向性次第で、PV3D, Away3D3.6とかのベクターベースなライブリを採用した方が良いケースもまだまだありそうだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-stage3d/608/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where is the Stage3D system requirements</title>
		<link>http://blog.r3c7.net/as3-stage3d/593/</link>
		<comments>http://blog.r3c7.net/as3-stage3d/593/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 12:39:45 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Stage3D]]></category>
		<category><![CDATA[stage3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=593</guid>
		<description><![CDATA[FlashPlayer11の動作に必要なシステム構成は、http://www.adobe.com/jp/products/flashplayer/tech-specs.html で公開されてるんだけど、Stage3DのG [...]]]></description>
			<content:encoded><![CDATA[<p>FlashPlayer11の動作に必要なシステム構成は、<a href="http://www.adobe.com/jp/products/flashplayer/tech-specs.html" target="_blank">http://www.adobe.com/jp/products/flashplayer/tech-specs.html</a> で公開されてるんだけど、Stage3DのGPUアクセラレーションに対応した環境についての明確な情報が見つからない。</p>
<p>Stage3Dが開発コードネーム“Molehill”としてお目見えした際には「DirectX9, OpenGL1.3, OpenGL ES2.0（モバイル） に対応したグラフィックカードを搭載してること」みたいな案内があったんだけど、<a href="http://kb2.adobe.com/jp/releasenotes/919/cpsid_91932.html" target="_blank">正式公開時のリリースノート</a>にそういった記述は無い。Known Issuesとして多少の情報が載ってる程度。</p>
<p>リリースノートやらWeb上の情報で見かけたものから把握できたのは</p>
<ul>
<li><strong>Mac OS X では、Intel GMA、ATI Radeon x1600、ATI Radeon 2400 が非対応。</strong></li>
<li><strong>VIA チップセットはサポート外。</strong></li>
<li><strong>Linux ではGPUアクセラレーションに非対応。</strong></li>
<li><strong>2009年以前にリリースされたカードはサポート外？ドライバの更新日の話？</strong><br />（via: <a href="http://cuaoar.jp/2011/09/starling-actionscript-3-1.html" target="_blank">http://cuaoar.jp/2011/09/starling-actionscript-3-1.html</a>）</li>
</ul>
<p>といった具合。</p>
<p>MacやLinuxに関しては動かない環境が（特にLinuxは残念な方向に）明確だけど、Window環境についてはかなりアバウトな感じ（オレが見つけられなかっただけかもしれないけど）。<a href="http://www.techpowerup.com/gpudb/" target="_blank">http://www.techpowerup.com/gpudb/</a> で、2009年以降のGPU拾っていけばそれなりに絞り込みができそうな気もするけど、主にWinの場合なんかだとサポート外であっても（ドライバがアップデートされたりして）動作するケースもありそうな気がするし、実際のとこどうなのかが知りたい。</p>
<p>Adobeが「動作確認済GPUリスト」みたいなものを公開してくれることを期待しつつ、個人的にログを取ってみることにした。</p>
<p class="photo"><a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/stage3davailablegpu/regist/"><img src="/wp-content/uploads/stage3d/111017/p01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=640;height=530" href="http://blog.r3c7.net/stage3davailablegpu/regist/" class="ext-link">Stage3D Hardware Acceleration Test</a>（要：FlashPlayer11）</p>
<p>上記のデモをGoogle Chromeでブラウズすると、WebGL対応の環境なら自動的にGPU名を取得して情報を登録します。WebGL非対応の環境や、GL_RENDERERの戻り値でGPU名が受け取れない場合、もしくはChrome以外のブラウザで閲覧した場合は、手入力でGPU名を登録できるようになっております。登録されたGPUは <a href="http://blog.r3c7.net/stage3davailablegpu/" target="_blank">http://blog.r3c7.net/stage3davailablegpu/</a> で確認できます。</p>
<p>FP11Betaの時のように Context3D.driverInfo でGPU名が取得できればこんな回りくどいことをしなくて済んだんだけど、他に良い方法が思いつかずWebGLのgetParameterでレンダラを取得してる。なのでWebGL非対応環境と、レンダラ名が「mozilla」とか「ANGLE」、「WebKit WebGL」になってしまうケースでは手入力してもらうしかないという状況。<br />
もっといい方法があればどなたかご教示いただけるとありがたいです。</p>
<p><strong>2011.10.20追記</strong><br />
やっぱり探せてなかった。Adobeの中の人 Andy Hall さんにTwitter経由でStage3Dのハードウェアアクセラレーションをサポートしない環境についての記事を教えて頂きました。<br />
<a href="http://kb2.adobe.com/cps/921/cpsid_92103.html" target="_blank">http://kb2.adobe.com/cps/921/cpsid_92103.html</a><br />
現状は、これらの環境でGPU使えないことを承知した上でコンテンツを作る必要があると。</p>
<p><a href="http://blog.r3c7.net/stage3davailablegpu/" target="_blank">Stage3D hardware accelaration available GPU list</a>の方は動作実績リストとして一応の意味があると思うので、引き続き情報提供いただけるとうれしいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-stage3d/593/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>3D engine studies 111009</title>
		<link>http://blog.r3c7.net/as3-stage3d/581/</link>
		<comments>http://blog.r3c7.net/as3-stage3d/581/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 12:22:07 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Stage3D]]></category>
		<category><![CDATA[3dengine]]></category>
		<category><![CDATA[stage3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=581</guid>
		<description><![CDATA[実に1年ぶりのエントリー。自分でもびっくりした。 FlashPlayer11がリリースされてStage3Dが解禁になったのを機に、以前作ってた自作ライブラリをStage3Dベースに置き換える作業をグダグダと進めてるので、 [...]]]></description>
			<content:encoded><![CDATA[<p>実に1年ぶりのエントリー。自分でもびっくりした。</p>
<p>FlashPlayer11がリリースされてStage3Dが解禁になったのを機に、<a href="http://blog.r3c7.net/?p=513">以前作ってた自作ライブラリ</a>をStage3Dベースに置き換える作業をグダグダと進めてるので、作りながら気づいたことなんかを書き残していけたらいいなと。そんな感じでnote.x再始動であります。</p>
<p>ライブラリの現状は以下のような感じ。</p>
<div style="margin-top:6px;border:2px solid #c00;color:#c00; padding:2px 6px 2px 6px">※いずれのデモも要FlashPlayer11、さらに再生環境がStage3DのサポートするGPUを搭載している必要があります。GPU非対応の環境では、ソフトウェアレンダリングで再生されますが、その場合何も表示されなかったりブラウザがクラッシュしたりする可能性があります。</div>
<p>シーングラフ、カメラ実装済。シェーディングについては、現状フラットシェーディングのみ。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/01/index.html"><img src="/wp-content/uploads/stage3d/111009/p01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/01/index.html"  class="ext-link">Stage3D Test01</a></p>
<p>ポリゴンのエッジだけを描画する方法で、なんちゃってワイヤーフレーム表示。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/02/index.html"><img src="/wp-content/uploads/stage3d/111009/p02.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/02/index.html"  class="ext-link">Stage3D Test02</a></p>
<p>旧ライブラリから引き続き.blendローダー搭載。<br />
これだけが他の有名ライブラリに無いトピック。</p>
<p class="photo"><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/03/index.html"><img src="/wp-content/uploads/stage3d/111009/p03.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=800;height=600" href="/wp-content/uploads/stage3d/111009/03/index.html"  class="ext-link">Stage3D Test03</a></p>
<p>頂点カラー焼き付けで、なんとなくAO風味。</p>
<p class="photo"><a href="/wp-content/uploads/stage3d/111009/04/index.html" target="_blank"><img src="/wp-content/uploads/stage3d/111009/p04.jpg" border="0" /></a></p>
<p><a href="/wp-content/uploads/stage3d/111009/04/index.html"  class="ext-link" target="_blank">Stage3D Test04</a></p>
<p>旧ライブラリはZバッファ持たせたいが為に自前でソフトウェアラスタライズやってた。FlashPlayer10の時点ではそこそこ高速化できてたと思うけど、それでも描画周りがかなり足を引っ張っていて、正直行き詰まり感が強かった。<br />
Stage3Dのおかげでポリゴン描画や座標変換やらをGPUに丸投げできちゃうので、山ほどポリゴン描ける。PV3Dで△1000あたりが限界とかやってたあの頃がウソのよう。ポリゴン描画のためにやらなきゃならない事が相当減ったし、オレ程度のレベルでも何やらスゴげな事が出来そうな気にさせてくれるのはスゲーありがたい。（簡単になったわけではないんだけども）</p>
<p>まぁなんつーか、Stage3D周りはこれまでのAPIから完全に逸脱してるし、機能的にも「劣化OpenGL」みたいな中途半端さがあるけど、なんだかんだいってAS3でこういうのが書けるってのは気楽でいい。これくらいがオレみたいな道楽でリアルタイムレンダリングやってる人間には案配がいい感じがするんですわ。ShockWave3Dよりも遙かに間口が広いと思うし。<br />
地方のWeb屋にとって、仕事にすぐさま活かせるものでは無いからこそ目一杯遊んでおきたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-stage3d/581/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Away3D 3.6</title>
		<link>http://blog.r3c7.net/as3-software-rendering/566/</link>
		<comments>http://blog.r3c7.net/as3-software-rendering/566/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 16:46:05 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Software Rendering]]></category>
		<category><![CDATA[away3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=566</guid>
		<description><![CDATA[Away3D 3.6リリース。 Away3D 3.6.0: Flash 10 upgrades and the Influxis Battlecell API 実質、3.5.3リリース時の仕様をそのまま引き継ぐ形でメジャ [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><img src="/wp-content/uploads/battlecell.jpg" border="0" /></p>
<p>Away3D 3.6リリース。</p>
<p><a href="http://away3d.com/away3d-3-6-0-flash-10-upgrades-and-the-influxis-battlecell-api" target="_blank" class="ext-link">Away3D 3.6.0: Flash 10 upgrades and the Influxis Battlecell API</a></p>
<p>実質、3.5.3リリース時の仕様をそのまま引き継ぐ形でメジャーアップグレード。予告通りNumber3D廃止、めでたくネイティブ 3D APIに完全移行。FlashPlayer9向けの2.x系は、メンテナンスアップデートのみ行われていくことになる模様。個人的には面白味が減ってしまった。</p>
<p>今回のデモは、FMSのホスティングやってるInfluxisと組んでRTMFP使ったマルチプレイヤーのFPS。4人まで同時接続できるらしいんだけど、海外サーバーな所為か2人でもうゲームにならなかった。趣旨と関係ないけど、マウスドラッグでエイミングはやりにくいな。</p>
<p>放置しっぱなしの過去エントリをどーするかねーと思いつつ、とりあえず<a href="http://blog.r3c7.net/?p=182">View3Dに関するエントリ</a>を修正。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-software-rendering/566/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Away3D 3.5.3 for FP10</title>
		<link>http://blog.r3c7.net/as3-software-rendering/524/</link>
		<comments>http://blog.r3c7.net/as3-software-rendering/524/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 16:20:20 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Software Rendering]]></category>
		<category><![CDATA[away3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=524</guid>
		<description><![CDATA[Away3DのFlashPlayer10版が大きく仕様変更して、MatrixAway3Dクラスが廃止。ビルトインクラスのMatrix3Dに置き換わった。なので、Object3Dのtransformプロパティの各要素を直接 [...]]]></description>
			<content:encoded><![CDATA[<p>Away3DのFlashPlayer10版が大きく仕様変更して、MatrixAway3Dクラスが廃止。ビルトインクラスのMatrix3Dに置き換わった。なので、Object3Dのtransformプロパティの各要素を直接書き換えたりするような実装してる場合はMatrixAway3Dに関わる部分を変更しないとビルドできない。MatrixAway3DとMatrix3Dの各要素は下記の対応づけ。</p>
<h3>MatrixAway3D</h3>
<table id="sp">
<tr>
<td>MatrixAway3D.sxx</td>
<td>MatrixAway3D.sxy</td>
<td>MatrixAway3D.sxz</td>
<td>MatrixAway3D.tx</td>
</tr>
<tr>
<td>MatrixAway3D.syx</td>
<td>MatrixAway3D.syy</td>
<td>MatrixAway3D.syz</td>
<td>MatrixAway3D.ty</td>
</tr>
<tr>
<td>MatrixAway3D.szx</td>
<td>MatrixAway3D.szy</td>
<td>MatrixAway3D.szz</td>
<td>MatrixAway3D.tz</td>
</tr>
<tr>
<td>MatrixAway3D.swx</td>
<td>MatrixAway3D.swy</td>
<td>MatrixAway3D.swz</td>
<td>MatrixAway3D.tw</td>
</tr>
</table>
<h3>ビルトインMatrix3D</h3>
<table id="sp">
<tr>
<td>Matrix3D.rawData[0]</td>
<td>Matrix3D.rawData[4]</td>
<td>Matrix3D.rawData[8]</td>
<td>Matrix3D.rawData[12]</td>
</tr>
<tr>
<td>Matrix3D.rawData[1]</td>
<td>Matrix3D.rawData[5]</td>
<td>Matrix3D.rawData[9]</td>
<td>Matrix3D.rawData[13]</td>
</tr>
<tr>
<td>Matrix3D.rawData[2]</td>
<td>Matrix3D.rawData[6]</td>
<td>Matrix3D.rawData[10]</td>
<td>Matrix3D.rawData[14]</td>
</tr>
<tr>
<td>Matrix3D.rawData[3]</td>
<td>Matrix3D.rawData[7]</td>
<td>Matrix3D.rawData[11]</td>
<td>Matrix3D.rawData[15]</td>
</tr>
</table>
<p>値を読み取るだけなら、</p>
<pre class="code">var tx:Number = Object3D.transform.tx;</pre>
<p>という記述を、</p>
<pre class="code">var tx:Number = Object3D.transform.rawData[12];</pre>
<p>に置き換えることで対処できる。</p>
<p>要素の値を変更する場合、MatrixAway3Dの要領で</p>
<pre class="code">Object3D.transform.rawData[12] = 100;</pre>
<p>なんて感じで直接代入しても変更が反映されないので、</p>
<pre class="code">
var vec: Vector.&lt;Number&gt; = Object3D.transform.rawData;
vec[12] = 100;
Object3D.transform.rawData = vec;
</pre>
<p>と、Matrix3Dの仕様に準ずる。</p>
<p>また、MatrixAway3Dで実装されていたメソッドの</p>
<ul>
<li>quaternion2matrix</li>
<li>compare</li>
</ul>
<p>と、ゲッター／セッターとして定義されていた</p>
<ul>
<li>forward</li>
<li>up</li>
<li>right</li>
</ul>
<p>は、Matrix3DUtilsという新クラスが引き継いでる。<br />
forward, up, rightについては読み取り専用でそれぞれ</p>
<ul>
<li>getForward</li>
<li>getUp</li>
<li>getRight</li>
</ul>
<p>というメソッドに変更になった。</p>
<p>あと、ベクトルについても主要な部分はNumber3DからVector3Dへ移行してる。<br />
まだ一部でNumber3Dが使われている部分があるけど、最終的にはなくなるみたいなのでNumber3Dは忘れてよさげ。Number3Dに実装されてたgetAngleメソッドは、新クラスVector3DUtilsが引き継いでる。</p>
<p>今回の仕様変更がどの程度影響してるのか分からんけど、じわじわと高速化してきてうれしげ。新機能いらないから洗練してほしい。</p>
<p><strong>2010/09/16追記</strong><br />
とか言ってるうちに、FP10版3.5.4にアップデート。<br />
ArrayをVectorに置き換えたりという地味な最適化を目的としたものみたいだ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-software-rendering/524/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3D engine studies 100726</title>
		<link>http://blog.r3c7.net/as3-software-rendering/513/</link>
		<comments>http://blog.r3c7.net/as3-software-rendering/513/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 05:39:23 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Software Rendering]]></category>
		<category><![CDATA[3dengine]]></category>
		<category><![CDATA[blender]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=513</guid>
		<description><![CDATA[自前エンジンにラスタライザ組み込んだ。やっと一息つけるとこまでできたー。 Rasterizer Test01（要：FlashPlayer10.1） 解像度640×480、△9800のトーラスにフラットシェーディングした状 [...]]]></description>
			<content:encoded><![CDATA[<p>自前エンジンにラスタライザ組み込んだ。やっと一息つけるとこまでできたー。</p>
<p class="photo"><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/01.html"><img src="/wp-content/uploads/rasterizer100726/01.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/01.html"  class="ext-link">Rasterizer Test01</a>（要：FlashPlayer10.1）</p>
<p>解像度640×480、△9800のトーラスにフラットシェーディングした状態で、自分の環境の場合30fpsくらい。背面カリングしてるので、実質△4000〜△4500くらい描画してる。ポリゴンあたりの描画面積のほうが影響ありそうなので、何枚描画できるかなんて性能評価の基準にならないかもしれないけど、まあ目安として。初代プレステが（たぶんローレゾで）30フレーム動作だと12000微少ポリゴン描画できるってことだから、なんとか近づけたい。目指せ初代プレステ。</p>
<p>Zバッファ持たせたので交差ポリゴンも問題なし。</p>
<p class="photo"><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/02.html"><img src="/wp-content/uploads/rasterizer100726/02.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/02.html" target="_blank" class="ext-link">Rasterizer Test02（要：FlashPlayer10.1）</a></p>
<p>テクスチャにもとりあえず対応。アルファブレンドはまだ。</p>
<p class="photo"><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/03.html"><img src="/wp-content/uploads/rasterizer100726/03.jpg" border="0" /></a></p>
<p><a rel="shadowbox;width=640;height=480" href="http://blog.r3c7.net/wp-content/uploads/rasterizer100726/03.html" class="ext-link">Rasterizer Test03（要：FlashPlayer10.1）</a></p>
<p>ようやくBlenderローダーが前に進められそうな状況が整ってきたので、とりあえずハデな部分はこのへんで止めて地味な処理を詰める。勝手な解釈で曖昧にしてた部分が全部ひっくり返されて、かなり整理された。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-software-rendering/513/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PV3D FrustumClipping and QuadrantRenderEngine issue</title>
		<link>http://blog.r3c7.net/as3-software-rendering/503/</link>
		<comments>http://blog.r3c7.net/as3-software-rendering/503/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:58:01 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Software Rendering]]></category>
		<category><![CDATA[papervision3d2.0]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=503</guid>
		<description><![CDATA[FrustumClipping と QuadrantRenderEngine が混在できないバグが未だにほったらかしっぽいので（Rev.942）、去年MLで流れてた対処法を紹介。とりあえず何とかしたい人向けTips。 F [...]]]></description>
			<content:encoded><![CDATA[<p>FrustumClipping と QuadrantRenderEngine が混在できないバグが未だにほったらかしっぽいので（Rev.942）、<a href="http://papervision3d.758870.n4.nabble.com/Making-FrustumClipping-and-QuadrantRenderEngine-work-together-td782634.html#a782634" target="_blank">去年MLで流れてた対処法</a>を紹介。とりあえず何とかしたい人向けTips。</p>
<p><a href="http://blog.r3c7.net/wp-content/uploads/FrustumandQuadrant/" target="_blank" class="ext-link">FrustumClipping and QuadrantRenderEngine work together Demo</a>（要：FlashPlayer9）</p>
<p>/core/dyn/DynamicTriangles.as の64行目以下</p>
<pre class="code">
triangle.instance = object;
triangle.vertices = [v0, v1, v2];
triangle.uv = [uv0, uv1, uv2];
…
</pre>
<p>の部分を、以下のような感じに。</p>
<pre class="code">
triangle.renderCommand.instance = object; //←この一行を追加
triangle.instance = object;
triangle.vertices = [v0, v1, v2];
triangle.uv = [uv0, uv1, uv2];
…
</pre>
<p>バカ正直に使うと当然負荷が大きくなるわけで、床面が真っ平らで良いならビットマップを透視投影した方が経済的だと思う。<br />
QuadrantRenderEngine使用時は、通常のクリッピングの流れからバイパスして、視錘台の各平面と他のポリゴンとの交差をいっぺんに判定して分割、不可視部分を刈り取るようにすれば結構最適化できそうだけど、そこまでやるなら根本的なデータ構造含めて作り直したいっていう開発サイドの判断で放置されてるのかなぁ。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-software-rendering/503/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Away3D] BSP-dev Branch</title>
		<link>http://blog.r3c7.net/as3-software-rendering/491/</link>
		<comments>http://blog.r3c7.net/as3-software-rendering/491/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 06:41:58 +0000</pubDate>
		<dc:creator>rect</dc:creator>
				<category><![CDATA[AS3 Software Rendering]]></category>
		<category><![CDATA[away3d]]></category>

		<guid isPermaLink="false">http://blog.r3c7.net/?p=491</guid>
		<description><![CDATA[Away3Dに BSP/PVS を実装しようとしてるブランチを見つけてニヤリ。 コミッターはFP10版Away3DにPixelbenderによるシェーディング実装した David Lenaerts。 今どきのリアルタイム [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><img src="/wp-content/uploads/away3d/bsptest/e_bsppvs.jpg" border="0" /></p>
<p>Away3Dに BSP/PVS を実装しようとしてるブランチを見つけてニヤリ。<br />
コミッターはFP10版Away3DにPixelbenderによるシェーディング実装した <a href="http://www.derschmale.com/">David Lenaerts</a>。<br />
今どきのリアルタイムレンダリングシーンじゃ特に意識しないだろうし、Flash用エンジンに絞っても Alternativa3D とか infinity3d にはとっくに実装されてるし、これといったアドバンテージがあるわけじゃないけど、ライセンス的に緩めなAway3Dに組み込まれるのは本当にありがたい。</p>
<p>今のところObjectContainer3Dを継承したクラスとしてBSPTreeが実装されてて、空間分割されたコンテナをSceneに追加する形で使う。この辺はハナっからScene3DにBSPが組み込まれてる（と思われる）Alternativa3Dのほうがスマートだと頭の悪いオレでも思うので、今後の仕様変更でScene3Dに内包されるかも。そうなれば Zソート・クリッピング・カリング・ポリゴン交差時の分割処理に至るまでパイプラインの至る所で恩恵にあずかれるはず。あと、内部で持ってる物理演算や衝突判定の最適化にも取り入れようとしているみたいなので、ちょっぴり期待しておく。</p>
<p>まだまだガンガン仕様変更があると思うけど、どんな感じになるのか試したくて、以前作った迷路を使ってポータルシステムがどの程度カリングを最適化してくれるのかを見てみた。比較用にBSP/PVSを使わない場合も改めて作成。</p>
<p>BSPTreeとポータルの生成にはかなり時間がかかる。DoomやQuakeなんかだとレベルエディタを使って事前に作ったものを外部ファイルとして保存しておいて、実行時は読み込みだけで済むようにしてあるように、事前処理のがよさそう。Away3Dもこの辺は考えてあるようで、エクスポータークラスが用意されてる（PreFabにレベルエディタ的な機能が追加されたりして？）。今回は使い方がよくわかんねーのと、必要なデータ全部エクスポートするのこれ？って感じだったので諦めた。</p>
<p><a href="/wp-content/uploads/away3d/bsptest/maze.html" target="_blank" class="ext-link">Maze normal</a><br />
<a href="/wp-content/uploads/away3d/bsptest/maze_bsp.html" target="_blank" class="ext-link">Maze using BSP/PVS (BSP/PVS使用)</a></p>
<p><strong>■操作方法</strong><br />
カーソルキー [CursorKey] … 移動 (move)<br />
[Z], [X] Key … ティルト (Tilt)</p>
<p>※要：FlashPlayer10</p>
<p>BSP/PVS版は、スタンドアロンプレーヤーならかなりヌルヌル動く感じ。マシンパワーのある環境だと2つの違いが分かりにくいかもしれないけど、オレの環境（MacBookPro 2.33GHz Core2Duo）だと全然違う。クリッピングモードをRectangle Clippingにすると視覚的にも違いが見て取れる。Project stats の T-ELEMENTS と R-ELEMENTS を見ると処理対象のFaceが大幅に減ってるのが分かる。ワクワクしてまいりました。</p>
<p>ハードウェアの進化に伴って失われつつある先人達の技術を追体験しつつ手軽に勉強できるのが、ActionScriptで3Dをやる唯一のメリットだと思うので、こういうトピックは超アガる。ちゃんと自分のものにするには相当ハードル高いけど、とりあえず周辺をウロウロする。</p>
<p><strong>参考：</strong><br />
<a href="http://pauillac.inria.fr/~levy//bsp/" target="_blank" class="ext-link">BSP Trees</a>（視覚的でわかりやすい）<br />
<a href="http://ja.wikipedia.org/wiki/BSP" target="_blank" class="ext-link">バイナリ空間分割（Binary space partitioning）- Wikipedia</a><br />
<a href="http://web.cs.wpi.edu/~matt/courses/cs563/talks/bsp/bsp.html" target="_blank" class="ext-link">BSP trees in 3D worlds</a><br />
<a href="http://www.amazon.co.jp/gp/product/493900791X?ie=UTF8&#038;tag=irresponsi037-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=493900791X" target="_blank" class="ext-link">ゲームプログラミングのためのリアルタイム衝突判定</a>（Amazon）<img src="http://www.assoc-amazon.jp/e/ir?t=irresponsi037-22&#038;l=as2&#038;o=9&#038;a=493900791X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.r3c7.net/as3-software-rendering/491/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
