<?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>AtuyL.jp</title>
	<atom:link href="http://atuyl.jp/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://atuyl.jp/blog</link>
	<description></description>
	<lastBuildDate>Mon, 26 Oct 2009 06:31:59 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SpaceNavigatorをFlashで使う（Win編）</title>
		<link>http://atuyl.jp/blog/actionscript/spacenavigator-flash-win/</link>
		<comments>http://atuyl.jp/blog/actionscript/spacenavigator-flash-win/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 06:08:21 +0000</pubDate>
		<dc:creator>AtuyL</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[spacenavigator]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://atuyl.jp/blog/?p=97</guid>
		<description><![CDATA[まさか先に書かれてしまうとは思わなかったｗ
というわけで、teraco27にてSpaceNavigatorライブラリをお披露目してきました。
SpaceNavigatorって？
SpaceNavigatorはXYZの3軸 [...]]]></description>
			<content:encoded><![CDATA[<p>まさか<a href="http://twitter.com/Saqoosha/status/5149396263" target="_blank">先に書かれてしまうとは</a>思わなかったｗ<br />
というわけで、<a href="http://teraco.jp/2009/10/08-154825.php" target="_blank">teraco27</a>にてSpaceNavigatorライブラリをお披露目してきました。</p>
<h3>SpaceNavigatorって？</h3>
<p><a href="http://www.3dconnexion.jp/products/3a1d.php" target="_blank">SpaceNavigator</a>はXYZの3軸に対して移動および回転を行うことが出来るインターフェースデバイスです。<br />
今日PCで使われているインターフェースデバイス、例えばマウスを例に挙げれば、ほとんどのマウスはXYに対する移動にしか対応していません。また、回転にも対応していません。<br />
SpaceNavigatorは「キャップ」と呼ばれる大きなボトルキャップのような部分を前後左右、そして上下に動かして移動を行うことが出来ます。上下に動かすという都合上、本体の台座は重くなっています。<br />
また、キャップを傾けたり捻ったり等回転動作も行うことが出来ます。</p>
<p>と、まぁ文章では伝えにくいものなので、使用イメージなどの詳細については以下のサイトを参照してください。</p>
<p><a href="http://cache.vendaria.com/vpop/VpopV6.html?ct=13&amp;ctname=CT630X556D630X390&amp;fw=630&amp;fh=556&amp;logo=183&amp;fv=10&amp;ap=vnd_3dconnexion_knob_video_japanese&amp;purl=MAIN_3dconnexion_knob_video_japanese&amp;iid=CCEpFVMzIIuqlLIlmKqLFVMwlluqIJ&amp;bg=FFFFFF&amp;nm=BZOpener&amp;curl=&amp;err=0&amp;title=Vendaria%20Media&amp;tp=" target="_blank">SpaceNavigatorの紹介</a></p>
<h3>Flashで使ってみよう</h3>
<p>さて、面白いデバイスだという事はおわかりいただけたと思います。<br />
というわけで、Flashで使うためのライブラリとサーバーを組んでみました。<br />
まだ暫定公開ですが、<a href="http://www.libspark.org/browser/as3/SpaceNavigator/" target="_blank">SparkProjectにコミットしています</a>ので、SpaceNavigatorをお持ちで、Windowsユーザー（理由は後述）の方はsvnでチェックアウトしてみてください。</p>
<p>チェックアウト用URLはこちら。<br />
<span style="font-weight:bold;">http://www.libspark.org/svn/as3/SpaceNavigator/</span></p>
<h3>SpaceNavigatorライブラリ＆Socketサーバー</h3>
<p>仕組みは基本的に<a href="http://gainer.cc/" target="_blank">Gainer</a>と同じです。<br />
外部アプリケーションとしてSocketサーバーを立て、そのソケットサーバーからFlashへ値の受け渡しをしています。<br />
SocketサーバーはPythonで組んでおり、SpaceNavigatorから提供されているDLLを利用して値を取得しています。先ほどチェックアウトをWindowsユーザーに限ったのはこれが原因です…が、<a href="http://twitter.com/saqoosha" target="_blank">どこぞの先生</a>が<a href="http://saqoosha.net/2009/10/26/1781/" target="_blank">1時間足らずでMac用を作って</a>くれました。</p>
<p>僕の作ったWindows版は現在暫定公開ということでUI無しの状態ですが、そのうちつけます。また、ローカルのポートを使用するためセキュリティサンドボックス侵害にもお気をつけください。</p>
<h3>使い方</h3>
<p>肝心の使い方ですが、上記のリポジトリに<a href="http://www.libspark.org/browser/as3/SpaceNavigator/sample" target="_blank">サンプルも添付</a>しています。<br />
ごくごく短いコードですので、見ればすぐにわかると思います。</p>
<h3>商用にあたっての注意</h3>
<p>さて、SpaceNavigatorはGainerと違いエンドユーザー向けにデザインされている製品であるため、商用としてブース等に設置しても見栄えよく使うことが出来ますが、ひとつだけ注意点があります。<br />
もちろん今回公開したSpaceNavigatorライブラリは商用・非商用に関わらず使っていただけます。しかしSpaceNavigatorそのものには商用向け(SpaceNavigator SE)と非商用向け(SpaceNavigator PE)があります。もし商用という形でSpaceNavigatorを使用される場合はその点をご注意ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://atuyl.jp/blog/actionscript/spacenavigator-flash-win/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashでHDR</title>
		<link>http://atuyl.jp/blog/actionscript/flash-de-hdr/</link>
		<comments>http://atuyl.jp/blog/actionscript/flash-de-hdr/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 12:50:48 +0000</pubDate>
		<dc:creator>AtuyL</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[hdr]]></category>

		<guid isPermaLink="false">http://atuyl.jp/blog/?p=32</guid>
		<description><![CDATA[やっとブログを開設したので、記事書きの練習がてらにHDRクラスを紹介。
HDRについて

まずHDRとは、High Dynamic Rangeの略で写真技法の一種です。
写真技法といっても難しい事では無く、携帯電話のカメ [...]]]></description>
			<content:encoded><![CDATA[<p>やっとブログを開設したので、記事書きの練習がてらにHDRクラスを紹介。</p>
<h3 id="87ecfd4a-4387-4672-83d7-3e8a1cf659e0">HDRについて</h3>
<p>
まずHDRとは、High Dynamic Rangeの略で写真技法の一種です。<br />
写真技法といっても難しい事では無く、携帯電話のカメラ等で誰もがごく自然に行っている事の延長なので、安心して読み進めてみてください。
</p>
<p>
携帯電話のカメラなどで「明度調整」という機能があるのはご存知の事だと思います。<br />
暗い部屋で撮影する時に少しでも明るく見えるよう明度を上げたり、屋外で撮影する際に白く飛んでしまわないよう明度を下げたりしますよね？あれです。
</p>
<p>
もうひとつ、ほとんどの携帯電話には「撮影後の明度調整」を行う機能があります。<br />
撮影後の画像に簡単な加工を施す機能のひとつとして提供されているもので、暗く撮れてしまった写真を明るく加工したりしますよね？あれです。
</p>
<p>
さて、このように写真に対しては二つの「明度調整」があるわけですが、前者と後者には決定的な違いがあります。<br />
それは後者があくまで「加工」であるのに対し、前者は「光の取り込み具合を調整している」という点です。この取り込み具合のことを「露出」と言います。
</p>
<p style="text-align:center;">
	<img style="float:none;" src="http://atuyl.jp/blog/wp-content/uploads/2009/10/tmpimg0910210812n120091021144654346.jpg" alt="" />【露出調整と画像加工の違い】
</p>
<p>
例えば撮影された時点で白く飛んでいる写真をいくら加工しても、白飛びに隠されたディティールを取り戻す事は出来ません。<br />
レベル補正で明度を下げていったとしても、白飛びした領域が灰色になっていくだけなのです。<br />
もちろん上の画像のように、黒く暗転した部分からもディティールを見出すことは出来ません。<br />
つまり通常の方法では、白く飛ばないよう露出を調整（※）して撮影するしか白飛びを解消する事はできないのです。<br />
※:カメラで言えば、ISOやシャッタースピードや絞りで調整する部分です。
</p>
<h3 id="b80d906e-f0db-4079-a258-22eb4ea62234">ビットマップの限界</h3>
<p>
画像を加工して白飛びを解消することが出来ない理由は、ビットマップには白以上や黒以下の値が存在しない事にあります。<br />
ここでおさらいです。<br />
ビットマップの1ピクセルは色成分として8ビット3チャンネル(RGB)、合計24ビットの情報を持っています。<br />
そのうち白というのは、24ビットの最大値を意味します。反対に黒は最小値を意味します。
</p>
<p style="text-align:center;">
	<img style="float:none;" src="http://atuyl.jp/blog/wp-content/uploads/2009/10/tmpimg0910210820n120091021144701642.jpg" alt="" />【ビットマップの限界】
</p>
<p>
さて、白が最大値ということは、それ以上の情報は保存できないということです。同じように、最小値である黒も、それ以下の情報を保存できません。<br />
白以上や黒以下といってもピンと来ないかもしれませんが、これを色ではなく明るさとして捉えるとどうでしょう？<br />
カメラで撮影された画像はあくまで露出を調整したものです。<br />
例えば蛍光灯より太陽光の方が明るいのですから、蛍光灯が白く写っている画像を基準に考えると、その画像内での太陽光は最大値を超えているといえます。<br />
つまり、24ビットのビットマップで表現できるのは現実の光量の一部を切り取って表示しているもの、ということになります。<br />
これが1ピクセルあたり24ビットの情報しか無いビットマップの限界です。<br />
そしてこの限界はOSやディスプレイの表示限界から来るもので、容易に突破することはできません。
</p>
<h3 id="9c83e51a-41fb-4d65-bd98-7800cbeb9a8f">HDRフォーマット</h3>
<p>
上記の限界によって、例えば以下のような問題が発生します。
</p>
<ol>
<li>
		極端に明暗の分かれているシーンでは暗い箇所を明瞭にすると明るい箇所が白飛びし、明るい箇所を明瞭にすると暗い箇所が黒く潰れてしまう。
	</li>
<li>
		暗闇に目が慣れていく、トンネルを抜けて眩しさに慣れていく、といった露出の遷移を演出できない。（レベル補正をアニメーションする事で似た演出はできますが、違和感が出てしまいます）
	</li>
</ol>
<p>
ではこれらをクリアするためにはどうすればいいのでしょう？<br />
そこで出てくるのが今回紹介するHDR(拡張子.hdr)です。HDRは1チャンネルあたり32ビットもの情報を保存する事が出来る画像形式です。<br />
もちろん、OSやディスプレイが8ビット/チャンネルにしか対応していない状況で、32ビットをそのまま画面に表示することは出来ません。ですから、カメラの絞りのような形で32ビット中の一部領域を切り取り、8ビット内に収めて出力する必要があります。<br />
結局切り取るんじゃ上記問題は解消できないのでは？と思うかもしれませんが、<br />
この切り取り範囲を画像の一部で変更したり、アニメーションさせたりすることで、上記の問題(1,2)をクリアすることができます。いわば一枚の画像でありながら再撮影が可能なのです。
</p>
<h3 id="1df714b4-d1f5-41e7-a392-6dd26b59a088">生成方法</h3>
<p>
HDR画像の生成方法は主に以下の二つです。
</p>
<ol>
<li>
		同じアングルで露出の違ういくつかの写真を撮影し、それを元にHDR画像作成ツールでHDR画像に変換する。<br />
		<a href="http://www.designwalker.com/2007/01/photoshop-hdr.html" target="_blank">参考ページ</a>：designwalker様
	</li>
<li>
		3DCGツールでレンダリングする際、.hdrの書き出しを行う。
	</li>
</ol>
<p>
もちろん自分で生成するだけでなく、HDR画像は素材配布サイトからも手に入れる事ができます。作りたいイメージにぴったりの画像があれば利用してみるのも良いでしょう。<br />
<a href="http://www.google.co.jp/search?q=HDR+%E7%B4%A0%E6%9D%90" target="_blank">HDR 素材</a>：Google検索
</p>
<h3 id="0196cfad-7675-4e85-9fb5-1387d78a4156">HDRクラス</h3>
<p>
さて、画像形式とはいえ、HDRはFlashではサポートされていません。<br />
しかしHDRクラスを用いる事で、HDR画像(.hdr)を簡単にFlashで使用することができます。
</p>
<p style="text-align:center;">
	<iframe src="http://atuyl.jp/flash/embed.php?id=HDR&#038;label=SAMPLE" width="320" height="320" frameborder="0" scrolling="no"></iframe>
</p>
<p>
サンプル上部のバーを動かすごとに露出が変更されていくのがわかると思います。
</p>
<h3 id="cce7e73d-713c-49fd-9267-d960c0b994b3">ダウンロード</h3>
<p>
ダウンロードは<a href="http://atuyl.jp/flash/projects/HDR/lib.zip">こちら</a>からどうぞ。<br />
1ファイルで完結しているので迷わず使えると思います。<br />
また、テスト用サンプルとして上記Flashで使用したhdrファイル(sample.hdr)を同梱しています。
</p>
<h3 id="5fe5a65f-a637-43cc-8423-6787ab59862d">使い方</h3>
<p>使い方は非常に簡単です。以下のソースをご覧ください。</p>
<p><code>var hdr:HDR = new HDR(<span style="font-style:italic;">bytearray</span>);<br />
hdr.minIllumination = 0x0;<br />
hdr.maxIllumination = 0xFF;<br />
hdr.render();<br />
new Bitmap(hdr);<br />
</code></p>
<p>
基本的にはこの5行だけでHDR画像を表示することが出来ます。<br />
HDRクラスはBitmapDataクラスを継承しているため、別途Bitmapクラス等を使用して描画ツリーに配置する必要があります。<br />
HDRクラスのコンストラクタには埋め込みやURLLoader等で取得したhdrファイルのByteArrayを渡します。(斜体部分)<br />
HDRフォーマットは仕様上<span style="font-weight:bold;">アルファが存在しない</span>ため、HDRクラスでもアルファを適用することはできません。（何か考えときます）
</p>
<p>
HDRクラスのプロパティには以下が用意されています。
</p>
<ul>
<li>
		<span style="font-weight:bold;">minIllumination</span><br />
		絞りの下限を取得･設定します。<br />
		後述のMIN_ILLUMINATION～MAX_ILLUMINATIONの間で設定します。<br />
		さらに後述のminRangeプロパティが変更されると、この値も変更されます。
	</li>
<li>
		<span style="font-weight:bold;">maxIllumination</span><br />
		絞りの上限を取得･設定します。<br />
		後述のMIN_ILLUMINATION～MAX_ILLUMINATIONの間で設定します。<br />
		さらに後述のmaxRangeプロパティが変更されると、この値も変更されます。
	</li>
<li>
		<span style="font-weight:bold;">MIN_ILLUMINATION</span><br />
		HDR画像内で定義されている輝度の下限を表す定数です。<br />
		ほとんどの場合、0が返ります。
	</li>
<li>
		<span style="font-weight:bold;">MAX_ILLUMINATION</span><br />
		HDR画像内で定義されている輝度の上限を表す定数です。<br />
		下限と違い、上限はファイルにより異なる事がほとんどです。
	</li>
<li>
		<span style="font-weight:bold;">minRange</span><br />
		先述のminIlluminationプロパティを0～1の範囲で取得･設定できるプロパティです。<br />
		minIlluminationプロパティが変更されると、この値も変更されます。
	</li>
<li>
		<span style="font-weight:bold;">maxRange</span><br />
		先述のmaxIlluminationプロパティを0～1の範囲で取得･設定できるプロパティです。<br />
		maxIlluminationプロパティが変更されると、この値も変更されます。
	</li>
</ul>
<p>
上記プロパティを使って露出調整を設定した後、<span style="font-weight:bold;">render</span>メソッドを実行することでBitmapDataが更新されます。
</p>
<h3 id="283255be-fde8-4071-b1d6-387fe27cd3a5">ヒント</h3>
<p>
このHDRクラスはrenderメソッドを実行する事で自身を更新します。<br />
ところが更新にはある程度の時間が必要なため、滑らかなアニメーションをさせる用途には向いていません。<br />
回避策としてはHDRクラスから使用する露出の範囲に相当するBitmapDataを何枚かキャッシュし、加法ブレンドで合成し、アルファ濃度で制御する等が考えられます。</p>
]]></content:encoded>
			<wfw:commentRss>http://atuyl.jp/blog/actionscript/flash-de-hdr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ブログはじめました</title>
		<link>http://atuyl.jp/blog/other/%e3%83%96%e3%83%ad%e3%82%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%97%e3%81%9f/</link>
		<comments>http://atuyl.jp/blog/other/%e3%83%96%e3%83%ad%e3%82%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 05:53:05 +0000</pubDate>
		<dc:creator>AtuyL</dc:creator>
				<category><![CDATA[other]]></category>

		<guid isPermaLink="false">http://atuyl.jp/blog/?p=3</guid>
		<description><![CDATA[やっとこさブログ開設。
デザインで悩みに悩んだ末、とりあえずこのような見た目に。
デザイン案だけで30パターン近く作成したのは良い経験になった。
このデザインもまだまだbetaといったところなので、恐らく今後変わっていき [...]]]></description>
			<content:encoded><![CDATA[<p>やっとこさブログ開設。</p>
<p>デザインで悩みに悩んだ末、とりあえずこのような見た目に。<br />
デザイン案だけで30パターン近く作成したのは良い経験になった。<br />
このデザインもまだまだbetaといったところなので、恐らく今後変わっていきます。</p>
<p>コメントを受け付けるか否かで随分悩んだけど、ひとまずコメント欄は無しに。</p>
<p>今後ともよろしくお願いします。</p>
]]></content:encoded>
			<wfw:commentRss>http://atuyl.jp/blog/other/%e3%83%96%e3%83%ad%e3%82%b0%e3%81%af%e3%81%98%e3%82%81%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
