« 2006年01月 | メイン | 2006年03月 »
RenderMonkey(1) モデルデータとシェーダプログラム
RenderMonkey 付属のモデルデータは 3ds Max の .3ds ファイルが多くあります。どういった形状なのかを確認するためには Max などのモデラソフトが必要ですが、ここでは簡単に Metasequoia を利用してみます。Metasequoia にはシェアウェア版と無償版がありますが、無償版では .3ds ファイルは開けないようなのでシェアウェア版を使います。Metasequoia を使う理由は形状と大きさを見るためです。

fig.1 RenderMonkey1.6 と Metasequoia2.3.4
このキャプチャ画像では Metasequoia は [表示] → [グリッドの設定] でメッシュの大きさを 100 にしています。ここで確認できるように RenderMonkey 付属のデータは float で 100.0 前後のデータであることがわかります。
先を急ぐ前に Metasequoia での .3ds ファイルのロードに関して。標準で .3ds をオープンしようとすると Metasequoia は Max の座標軸で開こうとします[fig.2(a)]。これを OpenGL の座標にあわせるために 3D Atelier を選択します[fig.2(b)(c)]。[fig.1] は 3D Atelier の座標軸で開いた状態です。ここでの RenderMonkey は Anisotropic.rfx を開いており、そのときの視点に関する情報は Camera ダイアログに表示されています。どちらとも OpenGL の座標系で統一されていることが確認できます。
![]() | ![]() | ![]() |
fig.2(a) 3dsMax 座標軸 | fig.2(b) 座標軸選択 | fig.2(c) 3D Atelier 座標軸 |
.3ds ファイルが確認できるようになったところで RenderMonkey 付属のデータの確認をしてみます[fig.3]。大体 100.0 程度のモデルであることがわかります。この大きさは shader を記述する際に必要な数値となります。

fig.3 主なモデルデータ
注意点として、ここで示した 100.0 前後のモデル以外に 1.0 前後のモデルもあります。cube で言えば Cube.3ds は 2.0 で TexturedCube.3ds は 100.0 前後の大きさです。
さて、モデルの大きさと shader に関してだけ記述しておきます。cube を例にとり、まずモデルを読み込みます。大きさの違いを見るために Cube.3ds と TexturedCube.3ds を使います[fig.4]。

fig.4 モデルの追加
ここで shader との関連を見るために、Vertex Program と Fragment Program を次のように修正します。変数などはそのままにしておきます。
uniform float noiseRate; uniform mat4 view_proj_matrix; attribute vec3 rm_Binormal; attribute vec3 rm_Tangent; varying vec3 vNormal; varying vec3 vTangent; varying vec3 vBinormal; varying vec3 vViewVec; varying vec3 vPos; void main(void) { gl_Position = ftransform(); vPos = gl_Vertex.xyz * noiseRate; /* vTangent = gl_NormalMatrix * rm_Tangent; vNormal = gl_NormalMatrix * gl_Normal; vBinormal = gl_NormalMatrix * rm_Binormal; vViewVec.xyz = vec3( gl_ModelViewMatrix * gl_Vertex ); // OpenGL has a different handedness, so we need to flip the z. vViewVec.z = -vViewVec.z; vPos = gl_Vertex.xyz * noiseRate; */ }
uniform sampler3D Noise; uniform vec4 lightDir; uniform vec4 gloss; uniform vec4 color; uniform float noiseScale; varying vec3 vNormal; varying vec3 vTangent; varying vec3 vBinormal; varying vec3 vViewVec; varying vec3 vPos; varying vec3 pos;void main(void) { gl_FragColor = texture3D(Noise, vPos); /* vec3 viewVec = normalize(vViewVec); vec3 oglLightDir = vec3(lightDir.x, lightDir.y, -lightDir.z); // Grab an angle to rotate the tangent around the normal // This is done to create a slightly bumpy feeling float angle = noiseScale * (texture3D(Noise, vPos) - 0.5).x; // Our angle is within the [-PI, PI] range and we need both // the sine and cosine. Perfect for the sincos function, // which will save us some hardware instructions over separate // sin and cos calls. float cosA, sinA; sinA = sin(angle); cosA = cos(angle); // Rotate tangent around the normal vec3 tang = sinA * vTangent + cosA * vBinormal; // Do the anisotropic lighting float diffuse = clamp( dot( oglLightDir.xyz, vNormal ), 0.0, 1.0 ); float cs = -dot(viewVec, tang); float sn = sqrt(1.0 - cs * cs); float cl = dot(oglLightDir.xyz, tang); float sl = sqrt(1.0 - cl * cl); float specular = pow( clamp( (cs * cl + sn * sl), 0.0, 1.0 ), 32.0); // Output the results gl_FragColor = diffuse * color + gloss * specular; */ }
あとはリファレンスノードを Cube もしくは TexturedCube に変更します。ここでは Cube にしてみます[fig.7]。

fig.7 リファレンスノード変更
Cube はサイズが 2.0 なので視点位置を変更します。また、これにあわせて noiseRate の値を変更してみます[fig.8]。Vertex Program で設定した vPos により頂点座標がそのままテクスチャ座標になっているので、ここではテクスチャ座標が [-1, 1] になり 2 回リピートしているのがわかります。

fig.8 noiseRate 変更
再度リファレンスノードを変更し、今度は TexturedCube にしてみると、モデルの大きさと shader パラメータの関連がわかると思います[fig.9]。

fig.9 リファレンスノードを TexturedCube に変更
意外と簡単ですが、やはりモデルデータの大きさを RenderMonkey だけでわかれば楽だったろうに、と思いますね。
2006年02月11日
日亜化学、404 特許を放棄
LED特許権を放棄へ 日亜化学、中村氏が開発
http://headlines.yahoo.co.jp/hl?a=20060211-00000010-kyodo-soci
日亜化学、青色LEDの中核特許を放棄へ
http://www.nikkei.co.jp/news/sangyo/20060211AT1D1004U10022006.html
青色LED特許、日亜化学が放棄へ 中村氏発明
http://www.asahi.com/business/update/0211/010.html
放棄される特許は窒化ガリウム系結晶の製造方法に関する 404 特許と呼ばれるもので、現在は LED 製造の技術革新が進み 404 特許に基づく製造方法はほとんど使われていない、からだそうです。正直、まだ蒸し返すか、って感じです。
青色 LED に関しては以下などをどうぞ。
エンジニアはジャパニーズドリームを見よ
http://next.rikunabi.com/tech/docs/ct_s03500.jsp?p=lwk021&f=cnet&vos=nteccnta003101050223&__m=1
2006年02月10日
ForceWare 81.98
2.7 付けで GeForce 系の新しいドライバがリリースされました。
http://www.nvidia.com/object/winxp_2k_81.98.html
ForceWare 81.98 Release Date: February 7, 2006
リリースノートはこちら
2005.12.21 に同じバージョン番号でドライバがリリースされていたので紛らわしいですね・・・。
2006年02月07日
2006.02.07
Opera 9でもBitTorrent統合へ
http://www.itmedia.co.jp/news/articles/0602/07/news009.html
以前 ITmedia の記事になっていた BitTorrent です。そのときの記事はこちら。
開発者が語る“ポストWinny” (2006.01.30)
http://www.itmedia.co.jp/news/articles/0601/30/news047.html
ここで紹介されていたのを思い出しました。BitTorrent に関しては簡潔に説明された Wiki があります。
BitTorrent
http://ja.wikipedia.org/wiki/BitTorrent
また、Opera と FireFox の BitTorrent サポートに関する記事は、昨年の夏には出ていたようです。
OperaとFirefox、それぞれBitTorrentをサポートへ (2005.07.08)
http://japan.cnet.com/news/media/story/0,2000047715,20085161,00.htm
FireFox の対応に関しては、スラドでもエントリになっていました。
Firefoxサイドバーで使えるBitTorrent (2005.12.29)
http://www.slashdot.jp/article.pl?sid=05/12/29/0040225&from=rss
あまりコメントがついていないところを見ると、まだそれ程日本では認知度はないのかな、と思います。
2006年02月05日
RD-XS38(2)
というわけで購入してしまいました。今現役で稼動しているのは RD-XS40 で、これは 2003.01 に購入したと思うのでそれでももう 3 年間稼動していることになります。意外と長いなぁ、というのが実感です。
この RD-XS38 は東芝機ということもあり W 録が可能です。また ether net 接続が可能で、「ネット de ダビング」や「メール録画予約」などを行うことができます。今まで(今でも)使っている RD-XS40 もメール予約が可能なのですが、大抵はドラマで録画が埋まっているので今まで使ったことはありませんでした。しかしこの RD-XS38 は W 録が可能ということもあり、これで安心してネット経由での録画を行うことができます。3 年目にしてやっとこの機能を使うことになります。
RD-XS38 には更にいろいろな機能があるようで、「おまかせ自動録画キーワード」や「おすすめ番組表機能」などがあるようです。「全国 RD ユーザ予約ランキング」などは面白そうですね。早く操作に慣れなくては。リモコンが XS40 と XS38 ではだいぶ変わっていて、これにはかなり戸惑っています。
サーチ・テンプレート
Movable Type の検索を使ったときに表示されるページのテンプレートが見つけられなくてずっと気になっていたのですが、やっとわかりました。最初は「Movable Type 検索 テンプレート」で検索してここを見つけたのですがパッとはわからず、続いて「Movable Type サーチ・テンプレート」で検索してみたところ、こちらのサイトを発見しました。
SABlog #043 MT3.1 検索/サーチのテンプレート
http://www.sabii.com/blog/archives/2004/11/043_mt31.php
どうやら修正すべきファイルは search_templates/default.tmpl で、これを直接編集すればいいとのこと。10 ヶ月間ほったらかしだった検索結果ページに、やっとタイトルと背景画像を表示することができました。やる気にならないと真剣になって探さないものですね。
2006年02月04日
坂の上の雲(1)
意外に、というのも失礼な話なのですが、「竜馬がゆく」や「翔ぶが如く」のように私が知っている有名人が出ているという先入観が無かった分期待もしていなかったのですがとても興味深く読むことができました。本編を読む前の基礎知識は裏表紙にある以下の紹介だけでした。
明治維新をとげ、近代国家の仲間入りをした日本は、息せき切って先進国に追いつこうとしていた。この時期を生きた四国松山出身の三人の男達──日露戦争においてコサック騎兵を破った秋山好古、日本海海戦の参謀秋山真之兄弟と文学の世界に巨大な足跡を遺した正岡子規を中心に、昂揚の時代・明治の群像を描く長篇小説全八巻
この中で唯一聴いたことのある人物は正岡子規で、しかし思い出すのは国文学の人、程度のものです。あとは国語の教科書に載っていた写真が髪は無くて横顔だったよなぁ、くらいのものです。
1 巻で興味深い文章に以下があります。
真之は、くびをかしげた。ものごとの追求力は、子規は常人よりすぐれている。
「しかし、考えを結晶させる力が乏しいようだな」
と、真之はいった。真之にいわせると、「考え」というものは液体か気体で、要するにとりとめがない。その液体か気体に論理という強力な触媒をあたえて固体にし、しかも結晶化する力が、思想家、哲学者といわれる者の力である。その力がなければ、その方面にはすすめない。(p187)これはうまい例えだな、と感心しました。多分、これは日常生活における全てにつうじることだと思います。その道を突き詰めていき、仕事にしている人も多いでしょう。勿論、この結晶化の過程が重要であり、一度結晶化してしまったものはそこで停滞をおこします。その停滞もまた問題であり、そのことに関してはここで触れています。
また、いつもの司馬節も健在です。
極端な言い方をすれば、メッケルが日露戦争までの日本陸軍の骨格をつくりあげたといえるかもしれない。メッケル自身、後年それをひそかに自負していたようであり、日露戦争の開戦をきくや、ベルリンから日本の参謀総長あて、
「万歳──。日本人メッケルより」
と、打電した。ちなみに明治時代がおわり、日露戦争の担当者がつぎつぎに死んだあと、日本陸軍がそれまであれほど感謝していたメッケルの名を口にしなくなったのは戦勝の果実を継いだ──たとえば一代成金の息子のような──者がたれでももつ驕慢と狭量と、身のほどを知らぬ無智というものであったろう。(p229-230)これは第二次世界大戦を生きた司馬さんの感想であると思われますが、高度経済成長とその後のバブル崩壊後の日本、金融問題・年金問題、フリーター・ニートに代表される若年世代の労働問題など、現在の日本においても遠からぬ警鐘に聞こえます。
とまぁこういった箇所に注目すると暗めになってしまいますが、本編は緩やかに物語が流れていっています。秋山兄弟はともに尉官にあり、兄好古はフランスにて騎兵の研究、弟真之はイギリスで建造された軍艦吉野を日本に回航する任にあたっています。正岡子規はというと、この時期は健康体ではなく度々喀血を起こし、東京から松山に帰国することになります。しかし描写がおもしろいのか正岡子規という人物が実際にそうだったのか、まったく病人ぶるそぶりが見えません。医師に「安静に」といわれると体を動かさずにはいられないような感じです。
物語はこういったなか、2 巻へ続いていきます。