・パナソニック、「Let’snote」全モデルでSanta Rosa搭載~Turbo Memory搭載「R7 プレミアムエディション」も
最初はそろっていた番号が徐々にずれ始め、
ばらばらにカウントされていた番号が
7 でまた一斉に揃う。
これを見てすぐ歴代 DirectX API の番号を思い浮かべた人は
たぶん ほとんどいないと思います。
・パナソニック、「Let’snote」全モデルでSanta Rosa搭載~Turbo Memory搭載「R7 プレミアムエディション」も
最初はそろっていた番号が徐々にずれ始め、
ばらばらにカウントされていた番号が
7 でまた一斉に揃う。
これを見てすぐ歴代 DirectX API の番号を思い浮かべた人は
たぶん ほとんどいないと思います。
同じ周波数帯を使う Bluetooth と 2.4GHz の無線LAN (11b/g) では
干渉があることは良く知られています。マウスなど他にも同じ周波数
を使う機器もあるし、同じプロトコル同士でも距離とチャンネルに
よっては、同じように干渉することもあるようです。
人間の音声も視聴可能な周波数と発声可能な周波数は限られているため、
狭い場所に同時に多人数が押し込められた状態では、それぞれの
個々が個別にコミュニケーションをとると同様に干渉が発生します。
お互いに周りのノイズに打ち勝つためには信号レベルを上げる必要があり、
徐々に大声になってさらに周囲のノイズが増大する悪循環に陥るようです。
ひとつの区切りの中に大勢の人がいる状態では、
会議のようにどこかで同期をとる、一定の距離をあける、
発言人数を制限する、等の対策が必要となるようです。
音声以外の他のコミュニケーション手段も併用する、等の工夫も
何かできないものかと昨日の夜のイベントでふと思いました。
もう十分きれいになったから、これ以上いったいハードに何が
必要なんだ、とゲーム開発の現場でもよく聞く話です。
進化する必要が本当にあるのかと。
画面の見た目の変化はある一定以上まではわかりやすいですが、
それを超えると素人目にはあんまり区別がつかないかもしれません。
従来そのままのデータや作り方を続けている限り、ハード機能や
世代が変わっても映像的にはさほど変化が無いというのが1つ。
もう1つは、前処理で作っておくフェイク手法がかなり発達しており、
作業工程も確立していること。プリレンダリングしたり前処理で焼き付けたり、
ムービーを併用していたり。変化しない限り、動かない限りは
遜色ないクオリティを出すことができます。
本来のインタラクティブ性を完全に再現するにはシミュレーションが
必要ですが、これはまだまだパワーが足りません。
物理エンジンにしろアニメーションにしろ、今ようやく本格的な
活用が始まったばかりです。
shader が登場し、ソフトウエア技術者の工夫と努力が可能になって、
GPU のパワーが上がった今行われているのは、フェイクを徐々に
本来のものに置き換える動きだとといえるかもしれません。
見た目ではほとんど変わらなくても、ライティングがリアルタイムに
なって影も動的生成になって、やっと自由に動かせるようになって
きました。
でもまだまだパワーが足りず十分ではありません。
もっともっと欲しいのです。メモリもパワーも。
●流体力学による煙、炎、水
というわけで・・このセッションでは、煙等の流体を GPU 上で
シミュレートする手法について丁寧かつ実践的に詳しく解説が
行われました。シミュレートだけでなく動的なインタラクションと
レンダリングも含まれており、説得力のある煙となっています。
表現上、そしてパフォーマンス的に問題となる点にもきちんと
踏み込んでおり、良く考えられたわかりやすいものでした。
ただしシミュレートはまだ空間上非常に限定された領域に限られ
ています。
注目したのは、ボリュームテクスチャへのレンダリングが実用的に
なる(なっている)という点。これはかなり応用できそうですね。
ボリュームの多用はメモリ容量が心配ですが、毎年発売される
GPU のスペックを見る限り、間違いなく時間が解決するでしょう。
●いつまでもプレイできる (今日と明日のためのゲームアート)
スペックの予測を立てるためのデータとその理由が流暢に
語られます。流暢過ぎるために若干流れの趣旨がつかみづらい
ことと、少々冗長に感じてしまう部分があります。
というのも、対象が純粋な技術者ではなく、アーティストや
プロデューサーを含めた幅広いものだったからのようです。
昔作られたゲームのグラフィックスを、時代に合わせて改善する
手間のかからない いくつかのテクニックが紹介されます。
とはいっても具体的な手法そのものにフォーカスした内容では
なく、最新 GPU によってパワーがあまってもこんな感じで
さまざまな「工夫が可能なのだ」ということ。
あきらめるな、ということです。
●高度なスキンレンダリング
GeForce8800 のデモのひとつ、リアルな皮膚表現の解説でした。
GPU Gems3 の表紙でもおなじみのあれです。
プログラマはもちろん、むしろCGデザイナー(アーティスト)の方
が見ても大変参考になる内容だったと思います。
効果の比較もわかりやすく、なぜそのような処理が必要なのか、
なぜこのような構造になっているのか、さまざまな工夫とともに
詳しく説明されました。
テクスチャスペースにおけるライティングやエフェクトは非常に
魅力的なものです。メモリさえあれば。
メモリ容量の増加によって、できることや可能性が増えている
ことが良くわかります。
●みんなのためのシェーダつくり (一般向けのシェーダ)
FX Composer2 の紹介です。
さまざまなフィードバックにより、さまざまな用途、さまざまな
目的に利用できる完成度の高いツールに進化しています。
基本的には拡張性とカスタマイズ性を持った、開発に必要な
機能を統合するための入れ物的なポジションです。
豊富なシェーダーライブラリから、目玉のシェーダーデバッガまで
ありとあらゆる。実演も行われました。
これまでこの手のツールに消極的だったのは、機能や使い勝手
以前のところに理由がありました。例えば NVIDIA 以外の GPU で
の動作確認。使えない機能があるのではないかという危惧です。
本格的にコンテンツパイプラインに組み込むならば検証して
おきたいところです。
D3D10 以降では基本的に機能差が無い前提なので、もしかしたら
特に問題ないのかもしれません。
RBK-2000BT2 の日本語キーボード化カスタマイズ例です。
・リュウド RBK-2000BTII
RBK-2000BT2 は英語キーボードですが WindowsMobile ではデフォルトで
日本語キーボードとして認識されます。そのためもともとキー刻印を
無視して日本語配列で使いたい方にとってはうってつけなのですが、
キーの数が少ないので入力できない文字が存在します。
em1key でこれらのキー割り当てをカスタマイズしてみました。
キー刻印を完全に無視していますので、キーを見ないで打つ方
向けです。
(1) 入力できない [\|] キーを右下の [del] キーに割り当てる
(2) (1) の設定で Delete キーがなくなってしまうので Ctrl+[bs]
に [Delete] を割り当てる
(3) 入力できない文字 [_] を Ctrl+[:*] に割り当てる。(暫定仕様)
(4) Ctrl と Capslock を入れ替え
(em1key デフォルト設定が元から持っている機能、お好みで)
(5) Esc キーが小さくて押しづらいので、Esc と [全/半] を入れ替え
(em1key デフォルト設定が元から持っている機能、お好みで)
(6) (5) の設定で[全/半] が遠くなってしまうので、スペースキー横の
[alt] でも IME の On/Off 可能にする。
この設定でもまだ入力できない文字 Ctrl+[_] があります。
[_] キーの割り当てに関しては再考の余地ありです。
em1key デフォルトの設定ファイルの一番最後に後述の設定を
追加しています。また、func TABLE_FUNC 0 の中の
SETSYSFLAG SYSFLAG_CTRLSWAP SETSYSFLAG SYSFLAG_ESCSWAP
の2行を有効にしています。(この2行はお好みで)
追加する設定
# [半] ([全/半]キー処理用) func TABLE_ALLMODE VK_DBE_SBCSCHAR TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 TESTSYSFLAG SYSFLAG_ESCSWAP IF_TRUE 30 LABEL 20 # ESC swap しない EXIT FALSE LABEL 30 # # ESC キーとして実行 IF_UP 10 # down RAWDOWN VK_ESCAPE EXIT TRUE LABEL 10 # up RAWUP VK_ESCAPE EXIT TRUE endfunc # [全] ([全/半]キー処理用) func TABLE_ALLMODE VK_DBE_DBCSCHAR TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 TESTSYSFLAG SYSFLAG_ESCSWAP IF_TRUE 30 LABEL 20 # ESC swap しない EXIT FALSE LABEL 30 # # ESC キーとして実行 IF_UP 10 # down RAWDOWN VK_ESCAPE EXIT TRUE LABEL 10 # up RAWUP VK_ESCAPE EXIT TRUE endfunc # [DEL] ([\|]キーに変更) func TABLE_ALLMODE VK_DELETE TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 # [\|] IF_UP 40 RAWDOWN VK_BACKSLASH EXIT TRUE LABEL 40 RAWUP VK_BACKSLASH EXIT TRUE LABEL 20 EXIT FALSE endfunc # [BS] (Ctrl+BS で Delete) func TABLE_ALLMODE VK_BACK TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [DELETE] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWDOWN VK_DELETE EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_DELETE EXIT TRUE endfunc # [:*] (Ctrl+[:*]で _) func TABLE_ALLMODE VK_APOSTROPHE TESTSYSFLAG SYSFLAG_SCANVALID IF_TRUE 20 IF_CTRL 10 LABEL 20 EXIT FALSE # [_] LABEL 10 IF_UP 40 RAWUP VK_CONTROL RAWDOWN VK_SHIFT RAWDOWN VK_OEM_102 EXIT TRUE LABEL 40 RAWUP VK_CONTROL RAWUP VK_OEM_102 RAWUP VK_SHIFT EXIT TRUE endfunc # [ALT] (IME On/Off) func TABLE_ALLMODE VK_MENU IF_UP 40 RAWUP VK_LMENU WINCMD WINCMD_IMESW # IME の On/Off EXIT TRUE LABEL 40 EXIT TRUE endfunc