« 2007年5月 | トップページ | 2007年9月 »

2007年8月

2007.08.31

Diablo

いろいろありすぎてここ2日ようわけがわからんくらいいろいろ何かしてる。
…けどコンピュータ(XBOX360)の前から離れない。
世の中(外)はいったい晴れなのか、曇りなのか、雨が降ってるのか、明るいのか暗いのかさえわからない…。
コンピュータ(XBOX360)関連でやらなくちゃいけない(やりたい)ことが多すぎるんだよ…。

1.
日本のXNA デベロッパー センター(MSDN)にてXNA GSE HELP の基礎を翻訳
…ということで公開されています。
英語が苦手で内容があやふやだった方は一読しておくべきかと。

2.
2007年9月6日と7日に「Gamefest Japan 2007」 を開催
http://www.microsoft.com/japan/msdn/xna/gamefest2007j.aspx
一般の方も参加可(申し込み手続きは必要)
で、XNA関連についても説明会があります。
私も参加しようとしたのですが、XNAの2.0についての説明会はすでに満員。
けど他にもXNA関連の説明会がありますので参加してみては?
(※良く考えたら普通に講義ある日じゃん…)

続きを読む "Diablo"

| | コメント (0) | トラックバック (0)

2007.08.28

RO2

ラグナロクオンライン2というのをやってみた。

ゲーム内容については…クローズドβだということなので、語りません。
8月30日くらいからオープンβということですので、興味のある方はいかがでしょうか?

Ro2shot_20070828_063020531

続きを読む "RO2"

| | コメント (0) | トラックバック (1)

2007.08.27

[XSI 6 Mod Tool]大切なメニュー

XSI 6 Mod Tool を取り上げて今まで散々解説してきたが、実はXSI 6 Mod Tool はデフォルトのままだと大切なメニューが存在しない。

私がこれに気がついたのはNoesisの時限爆弾製作チュートリアル中だった。
チュートリアルにはあるメニューが私のMod Toolにはない…。
結構あせったというか「やっぱりModではだめなのか!」と奮起したのを覚えている。
あくまで冷静になろう。

さてその大切なメニューを出すにはこうする。

Gw20070827104855

画像中のマウスカーソルの場所・・・つまりメインメニューのなーんにもない場所を右クリックすると選択がでてくる。

一番上のModule Menuを選択するとチェックがついて、その大切なメニューがあらわれる。

これがないと時限爆弾の銅線部分を作ったり、PolygonReductionを実行したり(スクリプトから実行できるが…)ができない。

実はこの件に関して、SOFTIMAGE|XSI道場のLand-Yさんに指摘されるまで忘れていた・・・。

Gw20070827104904

おまけ…

続きを読む "[XSI 6 Mod Tool]大切なメニュー"

| | コメント (0) | トラックバック (0)

[XSI 6 Mod Tool] GEM と PolygonReduction

あぁ、月曜日。
契約先の学校は今夏休み。個人授業主の私はずっと家にいることが多いのだが、普段忙しくてできないことはこの期間中にやってしまわないと。
夏休みも残り少ないが、たまっていたレポートの採点は終わったし、XNAの研究も遅いなりに、XSI 6 Mod Tool という強い見方を手に入れて、面白くなってきた。

あとはテストの採点と夏休み明けからの授業の準備と…車の洗車・部屋の片付けくらいはしないとな。

さて、今日はGEMとPolygonReductionってやつをやってみた。
PolygonReductionはXSIの「ゲームメーカーではこんな風にXSI使われてます」って紹介の中に頻繁に出てくる機能だ。
たしかにゲームメーカーに勤めていた私が思うに、この機能は強力だし、当時あったら、グラフィッカーがよろこんだろうな…と思う。
※グラフィックの素人の私が思うに、今ならMayaよりもXSIだろう?

まだまだこのツールの素人である私がこの機能を簡単に解説するならば『あるポリゴンモデルがあったとしてUVやプロパティで指定した条件をできるだけ崩さないようにポリゴン数を増やしたり減らしたりする』機能であると述べる。

GEMは”GEOGRAPHIC ELEVATION MIXER”というもので、パッと見背景やマップなどの景観を作るのに使用するものらしい。

では、実際に使ってみよう。

続きを読む "[XSI 6 Mod Tool] GEM と PolygonReduction"

| | コメント (0) | トラックバック (0)

2007.08.26

[CARRARA 5 Pro] & [Poser 6]

せっかくの土日なのでちょっとXSI 6 Mod Tool や XNA はお休みして、PoserとCARRARAというソフトで遊んでみた。

過去に1回記事を書いたが、昔仕事(か○い○○の夜2)でシナリオライター&ディレクター担当のみんながシーンの演出を伝える絵コンテのようなものを作成するのに、Poserという(当時4)ソフトを使用していた。

これはデジタルマネキン人形を自由にポーズつけて画像として出力できるというもの。
モーション(アニメーション)の機能もあって、ちょっとあるかせたり、変な踊りをさせたりくらいはできるしろものだった(と思う)。

昔からBVHというモーションデータ(元は医療用だったらしいモーションキャプチャが出力する標準フォーマット・・・だと私は認識している)の入力も対応していて、1瞬芸っぽいちょっとカッコイイアニメーションもがんばれば作れたと記憶している。

それからプロジェクトが終了になって、私はディレクターたちに必要がなくなったPoserがぽいっと放置されたいたのを見かけた。

具体的にはどんなソフトかもしらないのに、ちょっとした興味で、元の使用者であったディレクターに許可をとり、会社の自分のマシンに入れて、フリーな時間に使ってみたのがそもそものきっかけだった…。

ただ、このソフトは外国産であるためか、標準で用意されているフィギュアはお世辞にもカッコイイ、もしくは美人・かわいい…という言葉とは無縁のいかめっついものだった。

当時から外国でも日本でも、有償・無償の双方からもっとましなPorser用のフィギュアや髪・服・靴等の付属品を作る動きはあって、ちょっと面白そうな感じになっていたころで、グラフィックとは無縁の私でもそれなりの作品が作れる手ごたえがあった。
かるーくはまった私は、Poserのバージョンが5になり、日本語版が販売になったときに個人用で購入したのだった…。

前置きはさておき、このPoserってやつは、私(と私のコンピュータ)にとって、それはそれはとても動作が重いソフトだった。
なので年数回しか起動しない…ソフトだったのだが、つい最近、XSI 6 Mod Tool で気を良くした私はまた使い始めている。

時が流れただけあって、世の中はPoser 7もえたんだと騒いでいるようだ。
※Poser7の機能を削ぎ落としたiPoser 7とやらも発売された。
私のPoserはバージョン6。
7にバージョンアップする必要を感じないまま今日に至る。
久々に使ってみてもやっぱり動作は重い。
機能がすくなすぎて、やりたいことができない。
Pythonスクリプトに対応しているので、足りない機能をこれで補うが、これの動作も遅い。
極めつけはレンダリング。
本レンダではない、プレビューのための一番軽い設定のレンダリングでも1、2分かかる。
これを反復でやっていると時間はどんどん過ぎて行く。
そして本レンダでも、メモリが足りないとぬかしてレンダリングできない…というならともかく、設定したテクスチャやその他なんらかの設定を破壊したりする。

それでもがまんして、数枚の画像を出力しおわった後、ひょんなことからCarrara 5というソフトの存在を知る。
どうもPoserとの連携がなかなか良くとれるのだが、まだ使用している人が少なくて、情報がほとんどないソフトらしぃ。
Poserと他のソフトで連携といえば、私は今までShadeを使っていたが、数回に及ぶトライの末「私にはあわん」と結論を出した。Ver7で更新は止まっている。※最近はポリゴンモデラーとしての機能が結構進化したらしぃ

DAZというPoserのデータを販売したり、数種類の3D関連ソフトウェアを取り扱っているサイトがあるのだが、そこでCARRARA 5.1 Pro の体験版を発見したのでインストールして使ってみた。
※30日間無償使用可。レンダリング出力最大640x480まで。

ちなみに日本語版も販売しているが、もし気に入った場合、私はたとえ英語版であってもDAZで購入するつもりだ。
なぜなら私はDAZのプレミアム会員であるので、ソフトもデータもDAZで購入するとかなり安く(半額くらい)手に入る。

これから先は18歳以下厳禁とさせていただく。
※テストデータをめんどくさがって真っ裸の女の子にしてしまった…。

続きを読む "[CARRARA 5 Pro] & [Poser 6]"

| | コメント (0) | トラックバック (0)

2007.08.24

RenderMapの不具合について(返答)

XSI 6 Mod Tool の RenderMapの不具合(出力されたテクスチャに斜線が出る)ことについて日本のXSIを取り扱っているホームページの問い合わせを見て、メールを送ってみました。

本日、その返信が帰ってきたので、軽くご報告いたします。

内容としては「仕様ではなく、ソフトの不具合。いつ直るか現状わからない」とのこと。

UDEV00239795 - Artifacts when rendering out map images with rendermap

という問題点として登録されているそうです。

以上

| | コメント (0) | トラックバック (0)

SOFTIMAGE_XNAViewer

さて XSI 6 Mod Tool がもんのすげー使える(使えそうだな)とわかってきた気がする。
期待するのは当然 XNA との連携なのだが、XSIのラーニングを請け負っているNoesisのXNAとの連携チュートリアルは(おそらく)まだ公開されていない。

前回の記事でXSIのチュートリアルで作った時限爆弾をポリゴン数を手動(といっても普通行なうであろう作業なんかよりよっぽど楽なのだが…)で少なくする作業をほどこした後、FBXで出力してXNAのBasicEffectにて表示することは難なくできた。

しかし、本来の目玉はXSI 6 Mod Tool上でマテリアルごとにシェーダーを設定して、それをそのまま表示することが(データにどのシェーダーが使われているか?等の情報を入れることが)可能なはずなのだ。

今回はCrossworkのその仲間たちとそのXNAで使用するサンプルであるSOFTIMAGE_XNAViewerを使ってマテリアルにシェーダーを設定したモデルを表示しようと思う。

続きを読む "SOFTIMAGE_XNAViewer"

| | コメント (0) | トラックバック (0)

2007.08.22

XSI 6 Mod Tool について(おまけ)

XSI 6 Mod Tool でFile->Preferences...を選択してダイアログを表示。
Generalを選択すると右側にLanguageの文字が!!!
Gw20070822200502

両方ともJapaneseにしてXSI 6 Mod Toolを再起動したんですが・・・Helpだけしか日本語になりませんでした。

けど日本語Helpがあったのは知っていたのですが、ツールから呼べるようになってよかったよかった。

※XSI関連のホームページには大抵これについての解説あります。

| | コメント (0) | トラックバック (0)

RenderMapの不具合

時限爆弾チュートリアルで、RenderMapという便利な機能の使い方を覚えたんですが、XSI 6  Mod Tool の不具合なのか、出力されるテクスチャに斜線が出てしまいます。

Rendermap

どんな解像度でもフォーマットでも出る部分や本数はちがうのですが出てきます。

私は初心者なのでSOFTIMAGE|XSI道場のLand-Yさんに相談しましたが、やはりバグではないかと考えています。

どこに問い合わせをすればいいのかわからないんですが、この件についてなにがご存知の方いらっしゃいましたら、コメントをお願いいたします。

| | コメント (0) | トラックバック (0)

TimeBomb(ゲームデータ化?)

Gw20070822183823

Noesisの時限爆弾作成チュートリアルを最後まで完了いたしました。

ただ、チュートリアルそのままだと、あまりにもしょぼーんなデータができあがってしまったので、少し工夫してみました。

続きを読む "TimeBomb(ゲームデータ化?)"

| | コメント (0) | トラックバック (0)

2007.08.20

TimeBomb(完成)

Noesis の XSI 6 Mod Tool の時限爆弾モデル作成チュートリアル。
がんばった結果ついに完成です。

Gw20070820213103

配線の色とか形とか場所とかはチュートリアルと違うけど、自分のこだわりで最後まで作り上げました。
それと、バッテリーパックの形状がチュートリアルとちがって、自分流に作り直しています。
(棒形状が3本から4本になってる)

Gw20070820213334

ポリゴン数は三角形で10790ポリゴン。
ゲームで使うならば、ポリゴン数を半分以下に抑えなければいけないでしょうね。

ということで、チュートリアルのつづきも見ながら、ゲーム用データ製作を想定した作業をしてみようと思います。

| | コメント (0) | トラックバック (0)

2007.08.19

TimeBomb(途中)

Noesis クイックスタート: Mod Tool 概要

…のチュートリアルビデオはすべて完了。
ちなみにSOFTIMAGE_XNAViewerにランプモデルとアニメーションを出力してみたけど、ポリゴンが両面ない部分があるのは仕方がないのはいいとして、アニメーションを再生するとバラバラになってアニメーションが再生されてしまう。…要調査…かチュートリアルが出るまで保留かしら。

Noesis クイックスタート: ダイナマイトのモデリング

…のチュートリアルビデオもほとんど最終段階。
というのもムービーではダイナマイトのモデリングの最後の仕上げ部がはしょられている。
※XSI 6 Mod Tool インストールフォルダ内 Addons\ModTool\Noesis_QS_Database\Scenesフォルダに TimeBomb_Final.exp というファイルはある。

まぁ、初めてモデリングってやつ?をチュートリアルを見ながらにしろ、テクスチャーが用意されていたにしろ、自力でここまでやってきたので、最後の仕上げもやろうと思う。

とりあえずここまで作ったよ。
Gw20070819214209

ムービーは最後まで見たが、このあとゲーム用のデータにする(テクスチャを使っている部分だけ1枚のシートへまとめて出力したり、ポリゴン数を調節したり)という、ありがたい解説があった。

某ゲーム会社で働いていたとき、3Dグラフィック担当のみんながこんな(これ以上の)ことを毎日やっていたと思うと、尊敬とそれとちょっとうらやましかったりする。

| | コメント (0) | トラックバック (0)

2007.08.18

Noesisのビデオチュートリアル

 XSI 6 Mod Tool を真面目に学ぼうと、紹介ページそのまんまにNoesisのビデオチュートリアルを見ながら、おなじことしてみている…。

 …のだけど途中、ランプのモデルが出てくるんだけど、そんなもん、どこにもない気がする…。
 解説の人はNoesis_DatabaseというPathをえらんで~とか言ってるけど、そんなのない。

 ランプのモデルはいったいどこに???

追記
--------
8/18 13:07
あった、ありました(涙)
XSI 6 Mod Tool インストールフォルダの \Addons\ModTool\Noesis_QS_Database\Models の中にあったよ~。

8/18 17:28
ランプにボーンを仕込むチュートリアル中、Animateというメニューを選択しているが、ボクのツールには存在していなかった。
チュートリアルと同じように表示するにはメニューがない場所(Helpの隣とか)を右クリックしてModule Menusにチェックを入れればOK。

| | コメント (0) | トラックバック (0)

しらなかった…

 最近、また記事を書くようにしたけど、トラックバックとかそういうブログの機能をすっかり忘れてた。
 ちょっと思い出して、参考にしたブログの記事にトラックバックしようとしたけど…やり方がわかんない。
いろいろ調べたけっか…niftyのココログでトラックバックするにはブログの編集画面でこの編集画面の表示設定を変更するってところから設定して編集機能を増やさなくてはいけない。(もしくは自分で必要ないと思って昔チェックをとっちゃったのかも…)

 しかも他人の記事でよくある『本分の続き…』とか『more...』とか押して長文の記事を折りたたむ機能。
 そんな機能があるのもすっかり忘れてたけど、今回の件で思い出した&やり方がわかった。

続きを読む "しらなかった…"

| | コメント (0) | トラックバック (0)

[XNA]:XSI 6 Mod Tool

 そろそろXNAで3Dグラフィックあたりを触ろうかな…と思ってサンプルモデルどーしよ?と思っていた矢先…XNA Creators Club Onlineのトップページにこんなニュースがありました。
 SOFTIMAGE|XSI Mod Tool Now Plugs In To XNA Game Studio Express …お、XSI Mod Tool用のXNAプラグインでもできたかな…?そりゃーうれしい…と内容も読まずにそのプラグインとやらを探すこと数分間…。ない。そんなものない。

 …しかし、XSI の(英語の方ね)XSI Mod Tool のページが以前より華やかになっている気がする…。  それとNoesis(メーカーか何かの名前なのかな?)のチュートリアルでXSI Mod Tool の使い方を覚えよう…といった内容がちらほら。

 …うーん、XSI Mod Tool ごとまたダウンロードしなきゃいけないのかなぁ…以前すでにダウンロードしてインストールしてあったので気が重い。

 まぁそれでもとダウンロードしようとダウンロードページまでたどり着いてアンケートみたいなのに答えていくと、その中に「ちみは どのゲーム環境で Mod Tool を使う予定だい?」という答えの選択肢の中に

 XNA -> PC
 XNA -> XBox

という欄が…。(以前からあったっけ?)

 ちょっとだけ期待してダウンロード後、インストール。
 ツールが立ち上がった後(しまった、内容覚えてないや)、ダイアログが出てくるので、OKを押す…。(多分これであってる。)

 何かをダウンロードかインストールしている内容のプログレスバーが出たあと、無事終了っぽい。

 ディスクトップに作られたショートカットアイコンを見てみると XSI 6 Mod Tool と…あ、バージョンアップ?UIフェースも昔のものと比べて全然違うし、メニューバーに XNA Game Studio の欄が。

 後で調べてわかったことだけど、FBXとかシェーダーとかそういったものをサポートするようになったっぽい。
 吐き出せるのは64000ポリゴン(三角形)までで、商用利用不可。
 あとレンダリングについての制約がちょこっと。
 法線マップとかの解像度が512x512まで(UVしっかり吐いてるんだろうから、XNAで使うときに高解像度のやつに差し替えればいいんじゃ…?)。

----------
 8/18 12:19 追記 - 日本のXSIサイトできちんと英語だった XSI 6 Mod Tool の紹介ページが日本語訳されて掲載されてた。
 そこにはこうある。
 Ultimapper を使って作成するマップの最大解像度は512x512です。
 ハードウェアレンダラを使った画像出力の最大解像度は512x512に制限されています。
----------

 それとXSIファイル自体をXNAのコンポーネントとして登録して描画できるらしい。

 …ちょっとすごくねーか?やるなーXSI。M○○aの使えん試用版とは大違いじゃ(勉強する分にはいいんですが)。

 さて、いろいろ"XSI Mod Tool XNA"で検索して調べているとLAGさんのブログSOFTIMAGE_XNAViewerというものについて知った。
 これついて記載しておく。

 これは私の感じたところXNAでXSIファイルのインポートと描画のサンプルプロジェクトっぽい。
 試すにあたってちょこっと改変した。

 まず、原本をいじるのはいやなので、フォルダごとコピーします。
 フォルダは XSI 6 Mod Tool をインストールしたフォルダ以下のAddons\XNAGSE\Dataの中にあるXNA_SAMPLESってやつです。

 どっか適当な場所にコピーしたら(私は念のため日本語を使わない場所にいつもしています)フォルダの中にあるソリューションファイル(SOFTIMAGE_XNAViewer.sln)をダブルクリックしてXNA環境を立ち上げましょう。

 すでにコンテントの中にはサンプルのXSIモデルが入っているのですが、このままビルドすると参照しているシェーダーファイルが無いよんとコンテント・パイプラインのエラーで止まります。
 どうもファイルの中の外部ファイルへの参照パスがT:\\Storm\\src\\XNA\\SOFTIMAGE_XNAViewer\\Content......とかになっているのが原因のようです。

 なので xsi_logo.xsi ファイルを開いて"T:\\Storm\\src\\XNA\\SOFTIMAGE_XNAViewer\\Content"という文字列を".."で全置換してしまいましょう。

 次にソリューションプラットフォームがMixed Platformsになっているので、お好きな環境にセットします。

 Gw20070818044816

 そしたらいつもどおり、ビルドして実行しましょう。
 XSIのロゴ(?)の丸い球体が出たら成功です。(たぶん)

 ただ私の環境だとアスペクト比が変です。
 なのでこの部分

// - Game1.cs 471行目あたり -
// float aspectRatio = 1.3333333f; // graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;
float aspectRatio = (float)graphics.GraphicsDevice.Viewport.Width / graphics.GraphicsDevice.Viewport.Height;

と変更します。(コメントアウト部分をそのまま使うのではなく、floatでキャストするのをお忘れなく)

 それともっと高解像度にしたければ

// - Game1.cs 44行目あたり -
// use this for 720P
graphics.PreferredBackBufferWidth = 1280;
graphics.PreferredBackBufferHeight = 720;

// for NTSC, use a 4:3 ratio
//graphics.PreferredBackBufferWidth = 720;
//graphics.PreferredBackBufferHeight = 480;

なんて変えればOKです。
※どっちもコメントアウトで用意されてた…

Gw20070818062746

 あと操作方法ですが、UpdateGamePad() メソッドを見ればわかると思いますが

 START + BACK … 終了
 START … アニメーション再生・停止
 BACK … アニメーションのリセット
 左スティック押し込み … カメラのリセット
 十字キー右 … アニメーションの切り替え
 Lトリガー … ズームアップ
 Rトリガー … ズームダウン
 Lボタン … カメラの移動(前)
 Rボタン … カメラの移動(後)
 左スティック … 視点を中心に回転移動(始点を向いたまま)
 【↑これちょっと自信ない】
 右スティック … カメラの移動(上下左右)

です。
 ぱっと見、フォンシェーディングと法線マップによるバンプマップが確認できます。
 それとソースコード見てみると…アニメーションのブレンドしてるかも。

 自分のモデルとか表示できるように、XSI 6 Mod Tool 勉強しますかね。
 今のところ、XNAのプラグインで発見した内容に、モデルの診断機能があるらしく

 1つのモデルの最大ボーン数 … 58
 1つの頂点に対して影響するボーンの最大数 … 4

と設定されていました。
 1つのモデルの最大ボーン数の58っていうのは、なんとなく見に覚えがあって、たしかシェーダーのレジストリにのっけられる変換マトリクスの配列数の最大がそれくらいだった気がする。

 以前大蛇のような蛇のモデルとかスカートふりふりの女の子のモデルを(両方ともアニメーション付き)XNAで表示しようとしたら、その制約にひっかかって表示できなかったんだよね…。

 その制約はずすためには、どうしたらいいんだろう?
 CPU側でマトリクスの変換してからシェーダーにデータ渡せばいいのかな?
 …あぁ、頭がまわらん…歳のせいかしら???

| | コメント (0) | トラックバック (0)

2007.08.16

[XNA]:文字列描画 その4

 まず、設定ファイルであるXMLだけど、正直XMLから作ることがボクにはできない。

 XMLがまったくわからない…というわけではないが、苦手。

 なのでシリアライズして出力してしまおう。

 幸いにもひにけにさんのサンプルにもシリアライズ用のメソッドが用意してある。
 ※TextMessageDescriptionクラスのTestWriteメソッド

 では先にTextMessageDescriptionクラスを改変してしまおう。

 今回、.spritefontファイルは廃棄して、設定用のXMLファイルに統合する。
 なので.spritefontに記載されていた内容と同等のデータの受け口を用意しなくてはいけない。

 それと、私はどうもサンプルのXMLで一番好きになれないのは【ExternalReference】がごちゃごちゃ感をかもしだしている部分だと思った。
 そこで、ExternalReferenceという記述をXMLから廃棄したいのだが、ひにけにXNAさんにも書かれているようにファイルの依存関係がらみで必要なようなのだ。
 …ようなのだ…というのは…実はいろいろ調べたがExternalReferenceというやつがイマイチ理解できなかった。

 そこでTextMessageProcessor内でファイル名を素直に受け取って、ExternalReferenceのインスタンスを生成して、受け取ったContentProcessorContextクラスオブジェクトのBuildAndLoadAssetメソッドを呼ぶ流れに持っていこう。

 TextMessageDescriptionクラスが思惑どおりに改変(当然TestWriteメソッドも含む)できたら、TestWriteメソッドを使って、サンプルXMLを出力しよう。

 私の場合、めんどくさかったので(1)SampleWinプロジェクトの参照設定にPipelineプロジェクトを入れる。(2)いちばーん始めに実行されるであろうProgram.cs内のMainメソッド内に

TextMessageDescription.TestWrite("test.xml");
とファイルの先頭あたりに
using Sample.Pipeline;
と記述する。

 おそらく、プログラムを実行するとエラーになるだろうが、この部分がとにかく実行されれば【\Sample\bin\x86\Debug(\Release)】あたりにXMLファイルが出力されているはずだ。
 出力されたXMLを元に実験用の設定を書いてコンテントとして登録しておく。
 ※Content Importer は XML Content Content Processorはテキストメッセージプロセッサ
 ※XNA Framework ContentをTrueにしないと上記の設定は出来ないので注意しよう。

 あとはTextMessageDescriptionクラスにあわせてTextMessageProcessorの内容を書き換えればいい。

 ちなみに私はC#なんかぜーんぜん書いたことがないのでフィーリングで改変している。あしからず。

 やはり、XMLの内容は断然すっきりした。勝因はやはりExternalReferenceをXMLに書かないことにある。
 XMLファイルに記載しないで、今回のようにソースコード(プロセッサ内)に書くことによってどんな弊害がでるのか?(それとも弊害がないのか?)は、今のところさっぱりわからない。
 改変が完了した状態で実験したが、ファイルの依存関係はばっちりで、登録されたテキストファイル・ソースコード・設定ファイルのXMLのいずれかが改変さた状態でビルドすると、きちんとXNBファイルを作り直してくれる。

 今回の実験のおかげでコンテント・パイプラインの流れが、もう少し詳細にイメージできるようになったかな…と思う。

 そろそろ、フォントまわり(コンテント・パイプライン)あたりから離れて、楽しそうな3D表示あたりをいじってみようかな。

今回のサンプルはこちらから↓
「TextMessageSampleNext.zip」をダウンロード

※今回のサンプルは「ひにけにXNA」さんのサンプルを改変したものです。

| | コメント (0) | トラックバック (0)

[XNA]:文字列描画 その3

■ファイルの外部参照を極力やめたい。
■XMLがごちゃごちゃしていて生理的にイヤ。
■複数のファイルを読み込みたいときは?

 残りのこれらをやっつけていくにはもう少し考察が必要だと思うので書いてみた。
 お付き合い願いたい。

 経験からいって、設定ファイルだの、データファイルだのというのは、極力まとめられるものはまとめた方がいい。
 外部参照するにしろ、それは必要があってのことだし、ソースコードではない…つまり切り分けた外部ファイルっていうのはプログラマ以外の役職の人が触ることが多い。
 たとえ一人でゲームを作っているにしろ、ファイルを作る手間は少ない方がいいし、管理のしやすさとか、シンプルさはある程度必要だろう。

 切り分けるか、分けないか、悩んだときはコストの安い方を選ぶ。

 そんなとき、XNAでは「すでにXMLインポーターがあって、これくらいのデータ読むならXMLの方がいい」っていうのは判断材料の1つ。

 正直、多くの人はおそらく『XMLはきらい』ではないか?

 理由はたくさんあるけど、ごちゃごちゃカッコだのスラッシュだのと少しくらいならいいが、あんなに多く書きたくはない(よね?)。

 たとえばこんな内容の設定ファイルはどうだろう?

[Font]
FontName = "MS Gothic";
Size = 26;
Spacing = 4;
Style = Regular;

[Files]
MessageText.txt : shift-jis;
test1.txt : utf-8;
SampleGame.cs : shift-jis;

[Data]
DiscardMessage = No;

 もっといい書き方もあるだろうが、普通これくらいでいいじゃないか。

 では、何が悲しくてXMLなのか?それはやはりプログラムを組むコストの問題である。

 プレーンのテキストにオリジナルのルール(フォーマット)にのっとって設定を書いた場合、そのフォーマットを読み取るプログラムを組まなくてはいけない。
 それは文字列の解析から始まって分割、そしてフォーマットからデータに落とす(詰める)という機構すべてを書かなくてはいけなくなるだろう。
 その上、設定ファイルが必要になるたびに新しいフォーマットを考えたり、またそのために解析部分を書いたりと、たとえ流用部分があったとしても、結構コストがかかる作業になるのではないか?

 その点、XMLはもう全世界共通のフォーマットである上に、XNA(C#?)にはすでに解析(パース)する機構が存在しているのだから、利用しない手はない…というわけだ。

 その仕組みはこうだ。

 SampleMessage.xmlの内容はTextMessageDescriptionクラスの内容をシリアライズしたものだ。

 なので、予想ばっかりで申し訳けないのだが、XMLインポーターとはXMLの内容を設定されたクラス型のオブジェクトへデシリアライズするものなのだと思う。

 プロジェクトに登録されたContent内のSampleMessage.xmlのプロパティを見てみればわかるが、このファイルをXMLインポーターでインポートした後、そのデシリアライズされたオブジェクトはTextMessageProcessorへ送られる。

 TextMessageProcessorは受け取った(TextMessageDescriptionクラス型の)オブジェクトのデータを元に、TextMessageContentクラス型のオブジェクトへ一生懸命データを詰める作業をする…といった流れだ。

 ちなみに、データの詰め終わったTextMessageContentクラス型のオブジェクトはオーバーライドされたWriteメソッドが呼ばれ、ContentWriterクラス型オブジェクトのメソッド(WriteObject)を使ってファイルに出力する。

 それが今回のXNBファイルというわけだ。(…なんじゃないかと…思う。しっかり調べないで憶測ばかりでごめん)

 これらの考察から今回の実験では読み込む設定ファイルはXMLとし、「.spritefont」ファイルの内容と、どのファイルの内容をフォント化するか?のファイルリスト(つまり複数ファイルに対応)とDiscardMessageのフラグにもきちんとそのまま対応できるように作ろうと思う。

 あと、できれば、もう少しXMLファイルをシンプルにしょう。

《その4につづく…》

| | コメント (0) | トラックバック (0)

[XNA]:文字列描画 その2

 ひにけにさんの【Content Pipeline その3 そのカスタマイズ】はフォントの取り扱いについてもコンテント・パイプラインってなんぞや?といった点についても、とてもすばらしい記事・サンプルだった。

 しかし、実際実用的に使うことを想定すると疑問やこだわりも出てくる。

  1. ファイルの外部参照を極力やめたい。
  2. XMLがごちゃごちゃしていて生理的にイヤ。
  3. ソースコードを実際に読み込んでデバック文字として使えるのか?
  4. 複数のファイルを読み込みたいときは?

 とりあえず、上記についてひにけにさんのサンプルコードをちょこちょこといじってみよう。

■ソースコードを読み込んでデバック文字として使えるのか?

 ためしにやってみりゃいい…とサンプルの中にあるSampleMessage.xmlを編集する。

<ExternalReference ID="#External2" TargetType="string[]">MessageText.txt</ExternalReference>

 この部分がMessageText.txtを指定している部分だと容易に想像できる。
 MessageText.txtはContentフォルダに入っているので、おそらくContentフォルダからの相対パスで問題ないはずだと予想してこうしてみる。

<ExternalReference ID="#External2" TargetType="string[]">../SampleGame.cs</ExternalReference>

 それとTextMessageProcessorでは外部参照しているファイルをどのインポーターにかませるかを判断するのに拡張子とインポート後の型から判断している(と思う)。
 TextMessageProcessor内で強制的にTextImporterを使う設定にすることもおそらく可能だが、はやく確認しちゃいたいのでTextImporter.csの拡張子を設定している部分を変更。

// - TextImporter.cs 15行目くらい -
// [ContentImporter(".txt", DisplayName="UTF-8 テキストファイルインポーター")]
[ContentImporter(".cs", DisplayName="ソースコードインポーター")]

実行結果
実行結果

 ありぃ?日本語がでにゃい…???
 もしやと思い、ソースコードの文字コードを確認してみる。
 shift-jis…Unicodeじゃないの?このサンプルコードだけ?…ってわけでもなさそう。
 そうかぁ、ソースコードはshift-jisで編集・保存されてるんだに…。

 じゃー shift-jis から Unicode にどっかで変換してあげなくちゃいけない…
 変換とくれば当然インポーターだろうか。
 サンプルのパイプラインの流れはインポーターで変換対象であるファイルの文章を文字列型の配列に変換してそれを空白行単位の文字列型配列に変換するのと、FontDescriptionProcessorにくわせるためにFontDescriptionの中の文字リストへ文字コードをつめる作業の2つに分かれる。
 どちらもUnicodeで取り扱うべきものなので、ファイルを読み込み時すぐにUnicodeに変換しちゃうのが効率いい。

// - TextImporter.cs 31行目くらい -
// using (StreamReader sr = File.OpenText(filename))
using (StreamReader sr = new StreamReader(filename, System.Text.Encoding.GetEncoding("shift_jis")))

実行結果その2
実行結果その2

 もし実際にこのままデバック用文字フォントを生成するなら、サンプルそのままのTextImporter.cs とは別に、上記のようなソースコード用の…たとえば SourceCodeImporter.cs とでもしたインポーターを作るだけで、拡張子からそれがソースコードかテキストか自動で判定して上手い具合に通るだろう。

 ちなみにその際、TextMessageProcessorにくわせるxmlファイルには

<DiscardMessage>true</DiscardMessage>

とDiscardMessageフラグを立ててあげれば、文字列データに含まれることなくフォントデータを生成することができる。

 これで無事ソースコードをくわせてデバック用文字フォントを生成することができた。

《その3につづく…》

| | コメント (0) | トラックバック (0)

2007.08.14

マウス

夏休みです。
職業柄、夏休みは自宅で仕事…なのですが、出張したり研究したり授業の準備したりとのんびりだけど充実した毎日を送っています。ビールも美味い!

さて、そんなある日のこと。
プログラム用のサンプルデータも自分で用意しないといけないので(普段は他の講師先生がデータ作ってくれたり、会社で作ったやつを実験だけなら…って感じでくれたりする)久しぶりに今グラフィックソフトはどんな感じなのかとネットの海に潜っていました。

グラフィックソフトって高価なものが多いから、キチンと使えるか?(技術的にもハード的にも)値段に見合っているか?といった問題が多いのか、結構「試用版(体験版)」が存在する。

いろいろ使えそうなソフトの体験版をインストールして使っていたのですが、ひょんなことから長年使っていたお気に入りのマウスのローラーが重くなったり、動かなくなったり…。
分解して1回は直したんだけど、どっか調子悪い。
それとも不注意でXbox360のコントローラーをぶつけたのがいけなかったのか…?

なので久しぶりに一人で秋葉原行ってマウス買ってきました。
秋葉原はとっても暑い、暑かったです。
なのに「じゃんがら」までラーメンも食べに行きました。
(期間限定のつけめん「つけちゃん」にしちゃったけど…世の中暑かったのに人ならんでましたよ…。)

それでマウスをいっぱい見て触って、悩んだあげく…これにしました。

070814_11170001

Logicoolの世界最先端を行くマウス MX Revolution です。
ヨドバシカメラ \12800- (クレバリーはもう少し安かったけどポイントついてトントンか?)
今までのはコードじゃまだったんで、コードレスマウスにしようと探索開始。
大きさが手に合わないマウスは苦手なので展示品を全部触って確認してまわる。
ローラーも重いの嫌いなので回しやすいやつ…って絞っていったらこれになっちゃった。

大きくて重い…充電式コードレスだからかな?けどなぜかしっくりくる。
これだけしっくりくるなら、持ち上げることも少なかろうと。
似たようなVXってやつもあったんだけど、大きさやローラーの位置・親指あたりのボタンが気になって断念。

で実際に自宅に帰って使用してみる。
気になっていた大きさだけど、しっくりくるわけだ、握る部分の大きさ一緒じゃん。

070814_11180001

それにこのホイール面白い。
ドライバ・ソフトをインストールしてから、ローラーの負荷が勝手に点いたり点かなかったりする。

当然設定でそうなっているんだけど、デフォルトでは

  1. スクロール量が多いと予想される(Webブラウザとか)ウィンドウ上では負荷無し(しかもベアリングのようにとっても良く回る)。
  2. 負荷がある状態が基本だが、ユーザーが勢い良くベアリングを回しはじめると感知して負荷がなくなり、回すのをやめると負荷が戻る。

といった感じ。
それと親指にあるローラー型(だけど回らない)のギミックはVistaの3Dフリップを意識してウィンドウの切り替え(ドキュメントクイックフリップだそうな)が割り当てられている。
あとは検索ボタンと先へボタン・戻るボタンがあるくらい。
感度も悪くない(と思う)。重さも使ってたら気にならなくなった。

070814_11170002

前のマウスは手にフィットしてクリックが楽な感じ気に入ってたけど、今度のはさらにローラーが回しやすくて大満足です。

Logicool MX レボリューション MX-R

Logicool MX レボリューション MX-R
ロジクール  2006-09-15
売り上げランキング : 303

おすすめ平均  star
starMX1000からの移行ですが・・・
star下位モデルのMX-620に新機能は全て搭載
star朗報です

Amazonで詳しく見る
by G-Tools

| | コメント (0) | トラックバック (0)

« 2007年5月 | トップページ | 2007年9月 »