<?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>GEOQUAKE Backstage</title>
	<atom:link href="http://geoquake.jp/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://geoquake.jp/blog</link>
	<description>ゲームとか鋭意制作中のブログ</description>
	<lastBuildDate>Wed, 10 Feb 2010 12:11:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Flashでジョイスティックを使う実験</title>
		<link>http://geoquake.jp/blog/2010/02/10/flashjoystick/</link>
		<comments>http://geoquake.jp/blog/2010/02/10/flashjoystick/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 12:09:39 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Unity]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=1161</guid>
		<description><![CDATA[Flashはブラウザゲームのすぐれたプラットフォームですが、ジョイスティックが使えないのが欠点のひとつです。一方、新興のゲームプラットフォームにUnityがあります。こちらのプラグインはまだほとんど普及していませんが、ジ [...]]]></description>
			<content:encoded><![CDATA[<p>Flashはブラウザゲームのすぐれたプラットフォームですが、ジョイスティックが使えないのが欠点のひとつです。一方、新興のゲームプラットフォームに<a href="http://unity3d.com/">Unity</a>があります。こちらのプラグインはまだほとんど普及していませんが、ジョイスティックに対応しています。</p>
<p>FlashにもUnityにも、それぞれブラウザのJavaScriptとの連携手段が用意されています。それなら、Unityからブラウザを介してFlashにジョイスティックの状態を送れば、Flashでもジョイスティックが使えるんじゃ？　と思いついたので、実際にやってみました。</p>
<p><a href="http://geoquake.jp/experimental/UnityJoystickSensor/"><img src="http://geoquake.jp/blog/wp-content/uploads/2010/02/UnityJoystickSensorClip.png" alt="" title="UnityJoystickSensorClip" width="500" height="400" border="2" class="alignnone size-full wp-image-1163" /></a></p>
<ul>
<li><a href="http://geoquake.jp/experimental/UnityJoystickSensor/">Unity Joystick Sensor</a>（ソース一式あり）</li>
</ul>
<p>ジョイスティックの状態を送る一連のプロセスについて。まずUnity側からです。Unityでは、物理デバイスの入力を整理・抽象化して、それぞれ名前をつけて扱うようになっています。メニューの Edit > Project Settings > Input にその設定があります。今回はひとまず生データを送りたいので、レバーの軸とボタンを一通り登録します。レバーのデッドゾーン（Dead）もゼロにしておきます。</p>
<p><img src="http://geoquake.jp/blog/wp-content/uploads/2010/02/InputManagerClip.png" alt="" title="InputManagerClip" width="500" height="452" class="alignnone size-full wp-image-1190" /></p>
<p>気分の問題ですが、遅延を少なくするために、Unityの最大フレームレートを上げておきます。</p>
<pre class="brush: jscript;">
function Awake()
{
	Application.targetFrameRate = 300;
}
</pre>
<p>次に、ジョイスティックの状態の変化をブラウザに毎フレーム送信します。ブラウザとの通信については<a href="http://unity3d.com/support/documentation/Manual/Unity%20Web%20Player%20and%20browser%20communication.html">Unity Web Player and browser communication</a>に説明があります。Application.ExternalCall()でHTML内のJavaScriptを呼び出すことができます。実際のスクリプトとしては以下のようになります。</p>
<pre class="brush: jscript;">
var axes = new float[9];

function Update()
{
	for (var i = 1; i &lt;9; i++) {
		var position = Input.GetAxis(&quot;Axis&quot; + i);
		if (axes[i] != position) {
			axes[i] = position;
			turnOnLed();
			Application.ExternalCall(&quot;axisHandler&quot;, i, position);
		}
	}

	for (i = 0; i &lt; 16; i++) {
		var buttonName = &quot;Button&quot; + i;
		if (Input.GetButtonDown(buttonName)) {
			turnOnLed();
			Application.ExternalCall(&quot;buttonHandler&quot;, i, 1);
		}
		if (Input.GetButtonUp(buttonName)) {
			turnOnLed();
			Application.ExternalCall(&quot;buttonHandler&quot;, i, 0);
		}
	}
}
</pre>
<p>ちょっとしたテスト兼演出として、関数を呼び出したときにLEDが点灯するようにしました。</p>
<pre class="brush: jscript;">
function turnOnLed()
{
	GameObject.Find(&quot;Led&quot;).SendMessage(&quot;TurnOn&quot;);
}
</pre>
<p>次にHTMLです。Flashの埋め込みには<a href="http://code.google.com/p/swfobject/">SWFObject</a> 2.2を使用しています。Unityから呼び出されたJavaScriptの関数axisHandlerとbuttonHandlerが、ExternalInterfaceで登録したActionScriptの関数を呼び出します。</p>
<pre class="brush: jscript;">
var attributes = {
	id:&quot;Flash&quot;
};
swfobject.embedSWF(&quot;Game.swf&quot;, ...);
...
&lt;script type=&quot;text/javascript&quot;&gt;
	function axisHandler(no, position) {
		document.getElementById(&quot;Flash&quot;).axisHandler(no, position);
	}

	function buttonHandler(no, state) {
		document.getElementById(&quot;Flash&quot;).buttonHandler(no, state);
	}
&lt;/script&gt;
</pre>
<p>ExternalInterfaceは、ローカルファイルシステムではセキュリティのため動作しません。ローカルにApacheを立ててそこでテストするのが簡単です。また、ExternalInterfaceはいろいろ罠があって、ちょっとしたことで動かなくなることが多いようです。今回もそれでなぜかIEでだけ動かず、しばらくはまったんですが、教訓としては、SWFObjectのtest suiteから始めるのがいいと思います。</p>
<ul>
<li><a href="http://code.google.com/p/swfobject/wiki/test_suite">SWFObject 2.2 test suite</a></li>
</ul>
<p>ここの&#8221;Browser communication test page&#8221;がブラウザとの通信のサンプルです。test suiteというだけあって動くことが保証されていますので、このサンプルがサーバ上できちんと動くことを確かめてから少しずつ書き換えていくのがいいんじゃないでしょうか。</p>
<p>Flash側では、以下のようなクラスを作ってコールバック関数を登録し、メッセージを受け付けます。</p>
<pre class="brush: jscript;">
package
{
	import flash.external.ExternalInterface;

	public class Joystick
	{
		public static const AXIS_MAX:int = 9;
		public static const BUTTON_MAX:int = 16;

		private var axes:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(AXIS_MAX);
		private var buttons:Vector.&lt;int&gt; = new Vector.&lt;int&gt;(BUTTON_MAX);

		function Joystick()
		{
			if (ExternalInterface.available) {
				ExternalInterface.addCallback(&quot;axisHandler&quot;, axisHandler);
				ExternalInterface.addCallback(&quot;buttonHandler&quot;, buttonHandler);
			}
		}

		public function axisHandler(no:int, position:Number):void
		{
			axes[no] = position;
		}

		public function buttonHandler(no:int, state:int):void
		{
			buttons[no] = state;
		}

		public function getAxis(no:int):Number
		{
			return axes[no];
		}

		public function isButtonPressed(no:int):Boolean
		{
			return (buttons[no] == 1);
		}
	}
}
</pre>
<p>これでUnityからFlashまでジョイスティックの状態が伝わるようになりました。</p>
<p>ちなみに、いったんここまで作った後で、逆の方法に思い当たりました。つまり、UnityからFlashにジョイスティックの状態を流し込むのではなく、FlashからUnityにジョイスティックの状態を問い合わせるやり方です。もしこちらができれば、通信量も間違いも少なく好ましいでしょう。が、ブラウザからUnityの関数をSendMessageで呼び出したときに、戻り値が取得できないので断念しました。</p>
<p>さて、これで、「Unityのプラグインがインストールされていればジョイスティックでも操作できるFlash」ができました。アクロバティックなやり方ですが、信じがたいことにIE8、Firefox 3.6、Google Chrome 4それぞれで<a href="http://www.amazon.co.jp/gp/product/B000CFX42E/">Xbox360コントローラ</a>などを使って普通に操作できるようです。特にアナログレバーを動かすとかなり頻繁にメッセージが送られるのでもつだろうかと心配だったんですが、レスポンスは悪くないし、CPU使用率もたいして上がりません。作る前はデータの間引きなども考えていたんですが、必要なさそうなのでやっていません。</p>
<p>で、実用性はどうかというと、微妙かなと思ってます。まず、ブラウザゲームでジョイスティックを使う文化がないですよね。それに、ジョイスティックを使いたい人はすでに<a href="http://www.vector.co.jp/soft/win95/util/se101657.html">JoyToKey</a>などを使っているはずです。アナログレバーが使えるという違いはありますが、Flashゲームはまずマウスとキーボードで遊べるように作りますから、ゲームにアナログレバーの必要な操作を持ち込むわけにはいかないでしょう。そもそも、ジョイスティックを使うゲームなら最初からFlashではなくUnityで作れよという気もします。</p>
<p>あと、１つのウェブページに２つの標準でない技術を使うことになるので、それなりにリスクがありそうです。Unityの出力するHTMLファイルも結構複雑ですし（ちなみにコメントで説明が書かれているので読んでおくのがおすすめです）、環境によっては不具合が発生するかもしれません。導入には結構ためらうものがあります。</p>
<p>もしUnityのプラグインがある程度普及すれば（20％くらい？）メリットのほうが大きくなるかもしれません。また、いずれにせよFlashでジョイスティックを使う方法ができたということで、ウェブではなく、どこかへの展示用のFlashなどでしたら役に立つかもしれません。</p>
<p>……ということで、どうもひたすら微妙な感じ。こんな<strong>変態的</strong>なことをさせる前に、そもそもAdobeがFlashでジョイスティックをサポートしてくれたらいいんですけどね……。<a href="http://jessewarden.com/2009/06/flash-player-11-gaming-platform.html">ゲーム志向にするとか考えてる</a>ならその辺検討してほしいなあ。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2010/02/10/flashjoystick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unityでパーティクルの実験</title>
		<link>http://geoquake.jp/blog/2010/01/05/unityparticletest/</link>
		<comments>http://geoquake.jp/blog/2010/01/05/unityparticletest/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:23:11 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[ゲーム制作]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=1083</guid>
		<description><![CDATA[最近Unityをいじくったりしてます。
Unityの簡単な説明をすると、米Unity Technologies社製のゲームエンジンで、PCやブラウザ、iPhone等で動く3Dアプリケーションを作ることができます。GUI環 [...]]]></description>
			<content:encoded><![CDATA[<p>最近<a href="http://unity3d.com/">Unity</a>をいじくったりしてます。</p>
<p>Unityの簡単な説明をすると、米Unity Technologies社製の<a href="http://ja.wikipedia.org/wiki/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3">ゲームエンジン</a>で、PCやブラウザ、iPhone等で動く3Dアプリケーションを作ることができます。GUI環境に3Dモデル等の素材を放り込んで、JavaScriptやC#でスクリプトを書くだけで（割と）簡単に動かせます。Flashを触っている方は、Flash IDEの3D版だと考えればだいたい感覚的にあってるかも。ブラウザ上でGPUアクセラレーションつきの本格的な3Dが動くこと、iPhoneの3Dゲームが比較的手軽に作れること、開発環境の制限バージョンが無料になったことなどで人気が出ているようです（残念ながらまだ日本語化されていないのですが）。ブラウザのプラグインをインストールして<a href="http://unity3d.com/gallery/live-demos/index.html#tropical-paradise">公式のデモ</a>を見ると、かなりのものが動くのが分かると思います。</p>
<p>というところで、唐突ですが、<a href="http://d.hatena.ne.jp/ABA/20091220#p1">ABAさんのパーティクルテスト</a>につられて、似たような、オブジェクトをたくさん出す実験をしてみました。</p>
<p><a href="http://geoquake.jp/experimental/UnityParticleTest/"><img src="http://geoquake.jp/blog/wp-content/uploads/2010/01/UnityParticle500.png" alt="UnityParticle500" title="UnityParticle500" width="500" height="375" class="alignnone size-full wp-image-1084" /></a></p>
<ul>
<li><a href="http://geoquake.jp/experimental/UnityParticleTest/">Particle Test</a></li>
</ul>
<p>プロジェクトファイルは<a href="http://geoquake.jp/experimental/UnityParticleTest/ParticleTest.zip">こちら</a>。</p>
</p>
<p>おそらく個々のGameObjectがパーティクルを描画するのはGPU的に嫌だろうということで、GameObjectは座標を保持するだけにして、下のようなスクリプトでビルボード群のメッシュを毎フレーム作成してまとめて描画してみました。とりあえずCore 2 Duo/3.16GHz、RADEON 4550で10000個は出ているようです（上限を上げればもっと出るかもしれません）。UnityのJavaScriptは<a href="http://forum.unity3d.com/viewtopic.php?t=1140">.NET（Mono）ベースで、C++の半分の速度は出るよ</a>とのことなんですが、確かに結構な速さはあるようです。</p>
<pre class="brush: jscript;">
function LateUpdate()
{
	var particles = GameObject.FindGameObjectsWithTag(&quot;Particle&quot;);
	...

	var i = 0;
	var size = 0.5;
	for (var particle in particles) {
		var position = particle.transform.position;
		vertices[i++] = Vector3(position.x - size, position.y - size, position.z);
		vertices[i++] = Vector3(position.x - size, position.y + size, position.z);
		vertices[i++] = Vector3(position.x + size, position.y + size, position.z);
		vertices[i++] = Vector3(position.x + size, position.y - size, position.z);
	}
	...

	var mesh = GetComponent(MeshFilter).mesh;
	mesh.Clear();
	mesh.vertices = vertices;
	mesh.colors = colors;
	mesh.uv = uv;
	mesh.triangles = triangles;
}
</pre>
<p>まあ、パーティクルを多数出すだけならUnity組み込みのパーティクルシステムを使えばいいんですが、シューティングの敵弾などで自前でやる必要が出てくることもあるかなと。</p>
<p>ちなみにUnityのいいところは、開発環境がそのまま実行・デバッグ環境になることですね。下の画面のように、実行中に視点を動かして、描画が正しく行われているか確認したりというのが、何の苦労もなくできます。</p>
<p><a href="http://geoquake.jp/experimental/UnityParticleTest/UnityIDE.png"><img src="http://geoquake.jp/blog/wp-content/uploads/2010/01/UnityIDE500.png" alt="UnityIDE500" title="UnityIDE500" width="500" height="304" class="alignnone size-full wp-image-1085" /></a></p>
<p>Unityというプラットフォームがどんな感じかについてはまた後ほど（たぶん）。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2010/01/05/unityparticletest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>あけおめ</title>
		<link>http://geoquake.jp/blog/2010/01/05/happynewyear/</link>
		<comments>http://geoquake.jp/blog/2010/01/05/happynewyear/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 12:22:32 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=1147</guid>
		<description><![CDATA[なんだか最近はTwitterにばかり書き込んでいて、久しぶりのブログ更新です。サイト自体を作り直そうかと考えていることもあって、更新しづらくなってた感じ。いずれ移転したりするかもしれませんが、とりあえず書きながら考えよう [...]]]></description>
			<content:encoded><![CDATA[<p>なんだか最近は<a href="http://twitter.com/k0rin">Twitter</a>にばかり書き込んでいて、久しぶりのブログ更新です。サイト自体を作り直そうかと考えていることもあって、更新しづらくなってた感じ。いずれ移転したりするかもしれませんが、とりあえず書きながら考えようと思います。</p>
<p>今年はいろいろリリースしたいなと思っています（確定的なことは言えないのですが……）。どうぞよろしくお願いします。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2010/01/05/happynewyear/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>N700系男子</title>
		<link>http://geoquake.jp/blog/2009/09/24/n700%e7%b3%bb%e7%94%b7%e5%ad%90/</link>
		<comments>http://geoquake.jp/blog/2009/09/24/n700%e7%b3%bb%e7%94%b7%e5%ad%90/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 20:38:28 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=1067</guid>
		<description><![CDATA[Super Express &#8211; wonderfl build flash online
タイトルに意味はありません（笑）。このところXNAやiPhone周辺をずっと調べてたんですが、だいぶ落ちついてきたので、 [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:center;width:465px;margin-bottom:16px;"><iframe title="Super Express - wonderfl build flash online" scrolling="no" src="http://wonderfl.net/blogparts/0ff37c7bc76fc3ef5b5da93ae81235975ca153b0" width="465" height="490" style="border:1px black solid;"></iframe><a href="http://wonderfl.net/code/0ff37c7bc76fc3ef5b5da93ae81235975ca153b0" title="Super Express - wonderfl build flash online">Super Express &#8211; wonderfl build flash online</a></div>
<p>タイトルに意味はありません（笑）。このところXNAやiPhone周辺をずっと調べてたんですが、だいぶ落ちついてきたので、久しぶりのwonderfl新作です。ぼーっと眺めるのにいいんじゃないでしょうか。</p>
<p>架線柱のティアリングがちょっとひどいです。入れたとたんに一気に作る気をなくしかけたくらい。たぶんワーストケースに近いんじゃないかと……。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/09/24/n700%e7%b3%bb%e7%94%b7%e5%ad%90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>天満橋の巨大アヒル</title>
		<link>http://geoquake.jp/blog/2009/09/14/duck/</link>
		<comments>http://geoquake.jp/blog/2009/09/14/duck/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 20:15:57 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=1033</guid>
		<description><![CDATA[見に行ってきました。大阪天満橋で、今月27日までの展示だそうです。詳細は下の公式サイトにて。

Rubber Duck Project 2009

先のエントリのようなことをリアルでやっちゃってる感じですねー。せっかくな [...]]]></description>
			<content:encoded><![CDATA[<p>見に行ってきました。大阪天満橋で、今月27日までの展示だそうです。詳細は下の公式サイトにて。</p>
<ul>
<li><a href="http://www.namura.cc/ahiru/">Rubber Duck Project 2009</a></li>
</ul>
<p><a href="http://geoquake.jp/blog/2009/07/31/pv3dovergooglemaps/">先のエントリ</a>のようなことをリアルでやっちゃってる感じですねー。せっかくなので頑張って変な絵を撮ろうとしてみたんですが、これが精一杯。</p>
<p>いろんな国を回ってきてるみたいなんですけど、このアヒルの造形ってわりと普遍的なのかな？</p>
<p><a href="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck1.jpg"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck1-300x225.jpg" alt="duck1" title="duck1" width="300" height="225" class="alignnone size-medium wp-image-1034" /></a><br />
<a href="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck2.jpg"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck2-300x225.jpg" alt="duck2" title="duck2" width="300" height="225" class="alignnone size-medium wp-image-1037" /></a><br />
<a href="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck3.jpg"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck3-300x225.jpg" alt="duck3" title="duck3" width="300" height="225" class="alignnone size-medium wp-image-1041" /></a><br />
<a href="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck4.jpg"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck4-300x225.jpg" alt="duck4" title="duck4" width="300" height="225" class="alignnone size-medium wp-image-1043" /></a><br />
<a href="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck5.jpg"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/09/duck5-300x225.jpg" alt="duck5" title="duck5" width="300" height="225" class="alignnone size-medium wp-image-1044" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/09/14/duck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google MapsにPapervision3Dでオーバーレイ表示</title>
		<link>http://geoquake.jp/blog/2009/07/31/pv3dovergooglemaps/</link>
		<comments>http://geoquake.jp/blog/2009/07/31/pv3dovergooglemaps/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 11:33:40 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=908</guid>
		<description><![CDATA[Google Maps API for FlashにMap3Dクラスが新設されて、マップを傾斜・回転できるようになりましたが、Papervision3Dを使用すると簡単に3Dオブジェクトをオーバーレイ表示することができま [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/intl/en/apis/maps/documentation/flash/3d-maps.html">Google Maps API for FlashにMap3Dクラスが新設</a>されて、マップを傾斜・回転できるようになりましたが、Papervision3Dを使用すると簡単に3Dオブジェクトをオーバーレイ表示することができます。サンプルを作ってみました（ソースコードつき）。</p>
<p><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/pv3doverlay1.jpg" alt="pv3doverlay1" title="pv3doverlay1" width="300" height="300" class="alignnone size-full wp-image-949" /></a></p>
<ul>
<li><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld/">Hello Perspective World</a></li>
</ul>
<p>通常のマウスドラッグだけでなく、Shift＋ドラッグやCtrl＋ドラッグで回転操作ができるので試してみてください。Google Earthとだいたい同じ操作になっているようです。</p>
<p>短いコードですが、コアになるのはGoogleMapsCamera3Dクラスで、PV3DのCamera3Dクラスを拡張して、マップに同期する投影行列を与えています。Googleマップのワールド座標系は、東方向がX軸プラスで0?256、南方向がY軸プラスで0?256、上方向がZ軸プラスの左手座標系になっていますが、この座標系上に直接PV3Dのオブジェクトを描画することができます。</p>
<p>せっかくなので、もっと面白いものを表示してみましょう。</p>
<p><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld2/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/pv3doverlay2.jpg" alt="pv3doverlay2" title="pv3doverlay2" width="300" height="300" class="alignnone size-full wp-image-951" /></a></p>
<ul>
<li><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld2/">Hello Perspective World 2</a></li>
</ul>
<p>東京駅前にワイバーン。3Dモデルは<a href="http://www.geocities.jp/oirahakobito2/">26℃さん</a>制作のをお借りしました。かっこいいですねー。</p>
<p>なにかいる</p>
<p><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld2/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/pv3doverlay3.jpg" alt="pv3doverlay3" title="pv3doverlay3" width="300" height="300" class="alignnone size-full wp-image-953" /></a></p>
<p><a href="http://geoquake.jp/experimental/HelloPerspectiveWorld2/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/pv3doverlay4.jpg" alt="pv3doverlay4" title="pv3doverlay4" width="300" height="300" class="alignnone size-full wp-image-954" /></a></p>
<p><a href="http://www.phinox.net/">ズサさん</a>のねぎミクモデルを<a href="http://blog.r3c7.net/?p=121">rectさんのところ</a>からお借りしました。ありがとうございます。こんな感じで、小さなものから大きなものまで大丈夫です。ちなみに<a href="http://geoquake.jp/blog/2009/07/31/drivingsimulator3d/">拙作</a>でも同じ方法で車体を描画しています。</p>
<p>あとは平面投影シャドウあたりが欲しいですね。PV3Dでどうするのがいいのか調査中。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/07/31/pv3dovergooglemaps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2D自動車シミュレーター on Google Mapsを3D化</title>
		<link>http://geoquake.jp/blog/2009/07/31/drivingsimulator3d/</link>
		<comments>http://geoquake.jp/blog/2009/07/31/drivingsimulator3d/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 11:31:47 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[2D自動車シミュレーター]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=881</guid>
		<description><![CDATA[Google Maps API for Flashが3D表示、というかマップを傾斜表示できるようになっています。

3D Perspective in the Maps API for Flash!
Google Map [...]]]></description>
			<content:encoded><![CDATA[<p>Google Maps API for Flashが3D表示、というかマップを傾斜表示できるようになっています。</p>
<ul>
<li><a href="http://googlegeodevelopers.blogspot.com/2009/07/3d-perspective-in-maps-api-for-flash.html">3D Perspective in the Maps API for Flash!</a></li>
<li><a href="http://code.google.com/intl/en/apis/maps/documentation/flash/3d-maps.html">Google Maps API for Flash &#8211; 3D Maps &#8211; Google Maps API for Flash</a></li>
</ul>
<p>Google Maps APIの担当者さまのご好意でAPIを公開前に触らせていただきましたので、2D自動車シミュレーターを3D化してみました。まだ2車種しかないし、モデリングも適当だし、ホイールも回らないし、ブレーキランプや方向指示器も点灯しないしでやることが山積みなんですが、とりあえず仮公開。</p>
<p><a href="http://geoquake.jp/en/webgame/DrivingSimulatorPerspective/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/2ddrivingsimulator1.jpg" alt="2ddrivingsimulator1" title="2ddrivingsimulator1" width="500" height="441" class="alignnone size-full wp-image-992" /></a></p>
<ul>
<li><a href="http://geoquake.jp/en/webgame/DrivingSimulatorPerspective/">2D Driving Simulator on Google Maps (Perspective)</a></li>
</ul>
<p>右のCamera Controlで視点を操作できます。ドロップダウンメニューで、車体前方を上にするか、北を上にするかを切り替えることができます。</p>
<p>Googleマップ版でも画面が回転するようにしてほしいという要望は結構いただいてたんですが、これまでAPIの制約でできませんでした。今回のアップデートで、回転できるようになっただけでなく、傾斜で遠方まで見えるようになったので、だいぶ走りやすくなったんじゃないかと思います。</p>
<p><a href="http://geoquake.jp/en/webgame/DrivingSimulatorPerspective/"><img src="http://geoquake.jp/blog/wp-content/uploads/2009/07/2ddrivingsimulator2.jpg" alt="2ddrivingsimulator2" title="2ddrivingsimulator2" width="500" height="441" class="alignnone size-full wp-image-993" /></a></p>
<p>実のところ、もっと視点を下げて3Dレースゲーのようにしたいんですが、手前のタイルが欠けたり、遠方のタイルの読み込みと描画でパフォーマンスが極端に悪くなってしまうので難しいようです。まあ、そこまで極端な視点を使いたいのはこのアプリくらいでしょうからね（笑）。</p>
<p>あと、困ったことがひとつあって、「2D自動車シミュレーター」なのにうっかり3D表示になってしまったという……。2Dを取っても3Dに変えてもつまらない名前になってしまうし、内部的には2D処理のままだし、そのままでいいかみたいな（……いいのか？）。</p>
<p>2D自動車シミュレーター自体根本的にどうにかしないとと思ってるんですが、他にやることがいろいろあって進展がないです。<small>iPhone版とかどうでしょうね？</small></p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/07/31/drivingsimulator3d/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>「翼を持った少年」を打ち込んでみた</title>
		<link>http://geoquake.jp/blog/2009/06/25/ys3/</link>
		<comments>http://geoquake.jp/blog/2009/06/25/ys3/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 12:36:03 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[ゲーム]]></category>
		<category><![CDATA[音楽制作]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=848</guid>
		<description><![CDATA[Cubaseに慣れるために何か一曲打ち込んでみようと思っていたら、タイムリーにもファルコムが課題曲（笑）を提供してくれました。

ファルコム音楽フリー宣言

というわけで、イースIIIより「翼を持った少年」です。68版を [...]]]></description>
			<content:encoded><![CDATA[<p>Cubaseに慣れるために何か一曲打ち込んでみようと思っていたら、タイムリーにもファルコムが課題曲（笑）を提供してくれました。</p>
<ul>
<li><a href="http://www.falcom.co.jp/music_use/index.html">ファルコム音楽フリー宣言</a></li>
</ul>
<p>というわけで、イースIIIより「翼を持った少年」です。68版をベースに、多少好きなようにアレンジしてみました。宝箱を開けたときに似たメロディーが混じってることに気づいたので、まんまにしてしまったりとか（けど、これはやめろと言われそうだ……）。</p>
<div id="mp3_tsubasa"></div>
<p><script type="text/javascript">
var flashvars = { file : '/assets/mp3/tsubasa.mp3' };
var params = { allowfullscreen : 'true' };
swfobject.embedSWF("/assets/flash/player.swf", "mp3_tsubasa", "500", "20", "9.0.0", "", flashvars, params);
</script></p>
<p><small>翼を持った少年/YsIII J.D.K.Special/Copyright(C) Nihon Falcom Corporation</small></p>
<p>音源やエフェクトはCubase 5付属のものだけです。HALion Oneの音色はわりと好みなんですが、使える音色と使えない音色の差が激しいなあと。あと、ピッチベンドレンジが変更できないのがきつい。ギターのアームダウンとかできないし。</p>
<p>あとファルコムの音楽ですが、規約と利用例を見ると、打ち込んだ楽曲をMP3でダウンロードできるようにしていいのかどうかよく分からない……。一応アンケートにも書いてみたんですが、どんなもんでしょうね。こういう線引きって難しいなと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/06/25/ys3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ついったー</title>
		<link>http://geoquake.jp/blog/2009/06/25/twitter/</link>
		<comments>http://geoquake.jp/blog/2009/06/25/twitter/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 12:35:47 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=851</guid>
		<description><![CDATA[こっそりTwitterを始めてます。流行らしいので。お気軽にfollow/removeどうぞー。
]]></description>
			<content:encoded><![CDATA[<p>こっそり<a href="http://twitter.com/k0rin">Twitterを始めてます</a>。流行らしいので。お気軽にfollow/removeどうぞー。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/06/25/twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>実践その1</title>
		<link>http://geoquake.jp/blog/2009/06/06/cubase5/</link>
		<comments>http://geoquake.jp/blog/2009/06/06/cubase5/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 21:14:29 +0000</pubDate>
		<dc:creator>k0rin</dc:creator>
				<category><![CDATA[雑記]]></category>
		<category><![CDATA[音楽制作]]></category>

		<guid isPermaLink="false">http://geoquake.jp/blog/?p=755</guid>
		<description><![CDATA[Cubaseユーザーになりました。

先週まではSONAR 8 PRODUCER一本で考えてたはずなんだけど、おかしいなあ。ああいうイベントって実際効果あるんだと思った（笑）。
最近はSONARのほうが勢いがある感じなの [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://japan.steinberg.net/jp/products/music_production/cubase5.html">Cubase</a>ユーザーになりました。</p>
<p><img src="http://geoquake.jp/blog/wp-content/uploads/2009/06/cubase5-2.jpg" alt="cubase5-2" title="cubase5-2" width="320" height="240" class="aligncenter size-full wp-image-789" /></p>
<p>先週までは<a href="http://www.cakewalk.jp/Products/SONAR8/">SONAR 8 PRODUCER</a>一本で考えてたはずなんだけど、おかしいなあ。<a href="http://geoquake.jp/blog/2009/05/31/steinbergday2009/">ああいうイベント</a>って実際効果あるんだと思った（笑）。</p>
<p>最近はSONARのほうが勢いがある感じなので、Cubase 5のほうを見てなくて、リバーブ強化、SONAR同様Auto-Tune的なもの標準装備、安価にオーケストラ音源（<a href="http://japan.steinberg.net/jp/products/vst_instruments/halion_symphonic_orchestra.html">HALion Symphonic Orchestra</a>）を追加購入できるなどなど、ほぼ同等になってたのを知りませんでした。だったらスタンダードなほうかなと。</p>
<p>ハードウェア音源とはもう決別したほうがいいよね、ということで、ずっと繋がってた<a href="http://www.roland.co.jp/products/jp/SD-80/">SD-80</a>を片付け。惜しい音色も結構入ってるんだけど、毎回電源を入れて、専用エディタ立ち上げて、曲ごとに設定を呼び出して、録音してってもうやってられないです。</p>
<p><img src="http://geoquake.jp/blog/wp-content/uploads/2009/06/sd-80.jpg" alt="sd-80" title="sd-80" width="320" height="240" class="aligncenter size-full wp-image-757" /></p>
<p>そんなわけで、プリセットの波形を見てまわってるところ。軽く使い込んでから何かアップするかもしれません。というか、付属音源のHALion Oneに、ヤマハのステージピアノ<a href="http://www.yamaha.co.jp/product/syndtm/p/synth/s90es/">S90ES</a>のピアノ音色もついてくるということで期待してたんですが、微妙な気がする……。これ本物もこんな音なんだろうか。</p>
]]></content:encoded>
			<wfw:commentRss>http://geoquake.jp/blog/2009/06/06/cubase5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
