「 2010年12月 」一覧

vCenter Serverのインストーラ


vCenter Serverのインストールについて問題が発生。
意外と知られていない、やっていないことなのかもしれない。

WindowsXP Pro SP3の環境に vCenter Serverをインストールしようとしたら、
インストールに失敗した。インストーラーの起動で失敗してしまう。

そのときに、OSが対応していない、とメッセージを出してくれれば
ユーザーもわかりやすいのに、別のメッセージを出すから混乱させられてしまった。

そのメッセージは以下の文章です。

このインストールパッケージはこの種類のプロセッサでサポートされていません。
プロダクトベンダに問い合わせてください。

実際には、OSがまずくてServer系のOSにインストールすれば
問題なくインストールできるのです。
これは2008R2にしてみたところ、同じ環境でインストールは続行できました。


WindowsStorageServer2008 その2


iSCSIターゲットのインストール(環境設定)

en_windows_storage_server_2008_iscsi_cd_x64_x86_x15-49563.iso
をマウントして、iSCSI Target用のソフトウェアをインストールします。
x64フォルダ内に、iSCSI Target用インストーラーがあるのでそれを実行します。
なお、x86フォルダ内には、クライアントのソフトウェアしか存在しません。

en_windows_storage_server_2008_iscsi_tools_cd_x64_x86_x15-63368.iso
ではない点に注意。ツールという点で少しだけだまされました。

インストール後、管理ツールから Microsoft iSCSI Software Targetという項目が増えているので、ここからツールを起動します。
右クリックして、iSCSIターゲットの作成を選び、名称およびIQNの値を入力して、ターゲットを作成します。
その後、iSCSIターゲット用の仮想ディスクの作成を行います。

iSCSIターゲットの動作確認&イニシエータの設定

動作確認のために、iSCSIイニシエータがインストールされている環境で作業します。
イニシエータのプロパティで設定する項目は以下の内容です。

  • 構成タブ
    • イニシエータ名。ターゲットで設定したイニシエータを識別するためのiqn名と同じになるように設定します。
  • 探索タブ
    • ポータルの探索ボタンを押して、先ほどまで設定していた環境のIPアドレスを入力します。
  • ターゲットタブ
    • 最新の情報に更新ボタンを押します。
    • 上記の設定ができていれば、ここで検出されたターゲットの中に今まで設定していたiSCSIターゲットがみえるはずです。
    • その検出されたターゲットを選択して、接続を行えばクライアントから使用可能になります。

これらの設定はWindows7のクライアント環境で行いました。
また、動作確認のため、WindowsStorageServer上のファイアウォールは無効化して行いました。

接続状態になると、

  • クライアント(イニシエータ側)は、そのターゲットに対して接続完了ステータスになります。
  • ターゲット側は、ステータス使用中になります。

またこの時点では、単にドライブを接続しただけの状態なので、
クライアントからディスクのフォーマット等を行って通常の使用可能状態となります。
コンピューターの管理→ディスクの管理で、物理ドライブが1つ増えていることが確認できます。

ファイアウォールの設定

先ほど接続状態にしたターゲットを切断しておきます。
ここでStorageServer側のWindowsファイアウォールを有効化します。
そして”セキュリティが強化されたWindowsファイアウォール”という画面で設定を行っておきます。

受信の規則を右クリックして新規の規則を選択

  • ポート
    • TCP
    • 3260ポート

を許可するように設定します。

先ほどと同じように、ターゲットタブ/最新の情報に更新 ボタンをおして、
ターゲットが表示され、さらにそれに対して接続が出来ることを確認します。
接続が出来ないようであれば、ファイアウォールの設定箇所が間違っていると考えられます。
(どのプロファイルに対して設定するとか、そのあたりに引っかかるかもしれません)

まとめ

これでiSCSIの使用準備が整いました。
今回 Target 3.2の設定でしたが、 3.3が既に出ているようです。
これについては、よく分からなかったため当面 3.2 で実験かと思っています。

iSCSIの環境も整ったので、次回は目的の内容について実験して行きたいと思います。


WindowsStorageServer2008 その1


WindowsStorageServerでiSCSIターゲットをやってみようと思い、
色々とインストール作業中です。
認証とか通せないから、猶予期間があるうちにやりたいことをがんばります。

インストール

ディスク自体は英語版しかないので、それをインストールします。
その後、LanguagePackを用いて日本語化します。
このときに、LanguagePackをどう適用させるのかで悩みました。

コントロールパネル/Regional and Language Optiopns/Keyboards and Languages
とたどって、Display language グループ内のInstall/Uninstall languagesボタンを押します。
その後、Language Packディスクのja-jpフォルダを選択させれば、
後はそのままインストールできます。

参考にしたのは、こちら → http://jehupc.exblog.jp/13223828/

そういえば、WSS2008は、パスワードが設定されているんでした。
chm内部にかかれているので、見ておくのも忘れないようにしないと。

WSS2008_OEMGUIDE.CHM ヘルプファイルの “Preinstallation Preview” を押下すると掲載されてるようです。

ここで日本語化は完了です。

今日は力尽きたので、iSCSIターゲット用の設定らは次回に。


PythonスクリプトをSoftimage(ModTool)で


Autodesk Softimage ModTool 7.5でPythonスクリプトを動かしてみた。標準インストール状態だと、Script EditorでPythonを選べません。
それでPython使えないんだと諦めてしまうのは、もったいないです。
きちんと設定すれば普通に使えます。

以下に、そのやり方を説明します。

通常状態

ScriptEditorを開き、Scriptingグループの”スクリプト言語”を
確認してみると、Pythonの項目がありません。

デフォルトでは以下の項目になっています。

  • VB Script Language
  • JScript Compact Profile
  • JScript Language

手元の環境では、JScript Compact Profileを選んだときに、
エラーログが出てくるという状況でもありました。

Python関連のセットアップ

Pythonの2.6系と、それにあったPyWin32をインストールします。

以下のファイルをそれぞれの公式サイトからダウンロードしてきます。

  • python-2.6.6.msi
  • pywin32-214.win32-py2.6.exe

楽をするために、インストーラー付きを選択しました。

  1. Python本体インストール
  2. PyWin32をインストール

デフォルトでは、C:Python26 にインストールされます。
ここではそれに従っているとします。
PyWin32をインストールするときに場所を聞かれますが、
上記の設定場所が適用されていることを確認しておいてください。
(レジストリを読み出しているみたいなので、おそらく正しいと思いますが念のため)

Softimage側の設定

Softimageを起動し、Script Editorを開きます。
開いたウインドウで、ファイル/設定 とメニューをたどって開き、
スクリプト言語で、Pythonを選びます。

Python関連のインストールが正しく行われていると、
このスクリプト言語の項目に、Python ActiveX Scripting Engineが現れますので、
これを選択します。

動作確認

スクリプトエディタの下段の部分で、適当に命令を打ち込み実行させてみます。

LogMessage( u”テストメッセージ” )

これを実行(F5 or メニューから編集/実行)すると、
上段の部分でメッセージが表示されます。

まとめ

これによりPythonによるスクリプトの実行もMod Toolで出来ることが分かりました。
いろいろと出来ることの範囲が広がりそうですね。

最近DirectXのコードも書いていないし、そろそろ何か再開しないと。
DX10もテクスチャを張ったところで終わってますし、何かネタを探してみようかな。


今更twitter


今更だけど、twitterのアカウントを取ってみました。

slash_twi です。

たまに何かボヤいてるかもしれません。


SoftImageとリアルタイムシェーダー


はじめに

Autodesk SoftImage ModTool 7.5とリアルタイムシェーダーについて、
正常動作にはいろいろと条件がありそうなため、調べてみました。

DirectX 2006Dec以降がインストールされていることが必要です。
そのため、以下の環境は DirectX SDK 2009Augustを用いてチェックしています。
このバージョンを選択している理由は以下の環境すべてで正しく動作すると
考えられている最低バージョンのためです。

検証結果

以下の表に、DirectXランタイムとOSごとの組み合わせで、
動作状況はどうであったかをまとめてみました。

環境 ビデオボード ドライバ DX9ランタイム 動作可否
XP SP3 (x86) Geforce9800GT 260.99 Retail 正常動作
Vista Ultimate SP2 (x86) Geforce9800GT 260.99 Retail 正常動作
Vista Ultimate SP2 (x64) Geforce9800GT 258.96 Retail 正常動作
Windows7 Ultimate (x86) Geforce9800GT 260.99 Retail 正常動作
Windows7 Ultimate (x64) Geforce9800GT 260.99 Retail 正常動作
XP SP3 (x86) Geforce9800GT 260.99 Debug 動作しない
Vista Ultimate SP2 (x86) Geforce9800GT 260.99 Debug 動作しない.
Vista Ultimate SP2 (x64) Geforce9800GT 258.96 Debug 動作しない.
Windows7 Ultimate (x86) Geforce9800GT 260.99 Debug 正常動作
Windows7 Ultimate (x64) Geforce9800GT 260.99 Debug 正常動作
環境 ビデオボード ドライバ DX9ランタイム 動作可否
XP SP3 (x86) RADEON HD5450 10.11 Retail 正常動作
Vista Ultimate SP2 (x86) RADEON HD5450 10.11 Retail 正常動作
Vista Ultimate SP2 (x64) RADEON HD5450 10.11 Retail 正常動作
Windows7 Ultimate (x86) RADEON HD5450 10.11 Retail 正常動作
Windows7 Ultimate (x64) RADEON HD5450 10.11 Retail 正常動作
XP SP3 (x86) RADEON HD5450 10.11 Debug 動作しない.
Vista Ultimate SP2 (x86) RADEON HD5450 10.11 Debug 動作しない.
Vista Ultimate SP2 (x64) RADEON HD5450 10.11 Debug 動作しない.
Windows7 Ultimate (x86) RADEON HD5450 10.11 Debug 正常動作.
Windows7 Ultimate (x64) RADEON HD5450 10.11 Debug 正常動作

動作しない = ビューポートに何も表示されない状況を示します。

切り替え方法

DirectX SDKインストールすると出来るスタートメニューグループで、
“DirectX Utilities”→”DirectX Control Panel” を選択します。
そして、以下の項目のどちらかにラジオボタンで選択して、OKを押します。

  • “Use Debug Version of Direct3D9”
  • “Use Retail Version of Direct3D9”

これでDirectXランタイムが切り替わります。

なお、通常であればアプリケーションの再起動が必要なのですが、
SoftImage ModToolの場合、ビューポートの設定を切り替えるだけで、
このランタイム切り替えの効果を得ることが出来ました。

”ワイヤーフレーム” ←→ “リアルタイム/DirectX9”

の切り替えで反映させることが出来ました。

補足

64bit環境の場合には、ほんのちょっとだけ注意が必要です。
SoftImage ModToolは32bitアプリケーションなので、
使用するDirectX Control Panelも32bit版である必要があります。

まとめ

以上の結果から、まとめてみたいと思います。
RetailのDirectXランタイムを使っている状況では、
SoftImage ModTool 7.5のリアルタイムシェーダーを使うことに問題はありません。
ただし、DirectXのデバッグランタイムを使っている場合には、
環境に大きく依存するということが言えそうです。
Windows7であれば、どちらのランタイムでも動くようですが、
それ以前の環境ではDebugランタイムでの使用は壊滅的だといえます。

アーティストさんの使用する環境ではDirectX SDKがインストールされていることは稀である、と考えられているのかもしれません。
確かにプログラマ以外DirectX SDKは不要だとも思いますけど。
アーティストさんとやりとりするプログラマの人々は、
こういった挙動に対して、いろいろと知っておかなくてはならないだろうし、
大変だなぁと思いました。

余談

Vista以降でディスプレイドライバモデルが変更されました。
そのため、VistaであればDebug/Retailも関係なく動くのでは?と思っていたのですが予想を裏切られました。
Vista->Windows7は、WDDM1.1とマイナーバージョンアップとなっていますが、
仕様としてはまぁまぁの規模で変更があるので、
そのあたり対応する過程で、うまく動くようになってるのかなと考えています。


XP再インストールでBSoD


WindowsXPの再インストールで、ブルースクリーンがでてびっくりした。青い画面のWindows Setupで、ハードウェアの探索中で
いきなりブルースクリーン(BSoD)が出てしまい、原因を探っていました。
そもそも今まで動かしていたOSはWindows7 Ultimate(x64)だったので、
ハードウェア故障は無いはず、サポートされていないデバイスも付けていないと考えてました。

そのブルースクリーンでのコードは、”0x0000007B”でした。
いろいろとこれで調べてみると、WindowsXPを新規インストールの場合には、
出ることがあるそうです。ディスクの接続モードが原因となっている模様です。

確かに、今までの環境から接続モードをAHCIにしていました。
これをIDEモードに変更することにより、このエラーから復帰できました。

そういえば、XPではインストール時にAHCI対応できてなかったなぁと思い出しました。
しばらくやらないと忘れていますね…。

Windows7/Vistaマシンがインストールされている環境で、
WindowsXPをインストールしたい、という場合には結構この問題に出遭いそうです。

再インストール時にエラー0x0000007Bが表示される

参考: http://iltt.nobody.jp/page/information/contents/20101127.htm

WindowsVistaやWindows7がプレインストールされているマシンに、WindowsXPをインストールしようとすると、インストール画面の最初の方で、ブルースクリーンになり、エラー「0x0000007B」と表示されることがあります。

この問題は、ウイルスやらハードウェアの故障やらと、いくつかの問題解決の方法がMicrosoftから提示されています。

しかし、この場合は、BIOSの設定を変更するか、ドライバをインストールすることで解決します。

Windowsが起動する前に、BIOSの設定画面に入ります。
BIOSの設定画面に入るには、機種によって違いますが、大抵はF1~F12のどれかのキーを押します。

HDDの設定メニューより、値が[AHCI]となっているのを[IDE]にします。

BIOSの設定変更を保存して再起動します。


書籍発見!


本屋で何かおもしろそうな本がないかなと思って
何気なく見ていたら、すごく良さそうな本がありました。「OpenGL 4.0 グラフィックスシステム」→ amazonではこれ

従来からのしがらみを捨てて、今のGLを知るには良さそうですし、
新機能へのアクセスも書いてあったりと悪くないですね。
ただし、価格がちょっと高めの設定だけが×。せめて5000円行かない程度にしてほしかったです。

そのほかに音のプログラミングではこんなものも発見です。
アセンブラWAVプログラミング―SIMDによる高速化と音響処理
SIMD演算と音声処理と2度おいしい感じです。


ゲームエンジンアーキテクチャ感想 その2


ざっと一通り読めた。
軽めにながした部分は、物理&コリジョンの部分。個人的に参考になったのは以下の点です。

  • アニメーションの合成
    • 加算アニメーション
    • ブレンディングの注意点
  • ゲームループ
    • マルチスレッド時のループ組み方の例
    • ゲームクロックの概念
  • デバッグのための機能
    • 実行時間プロファイリング
    • コリジョン可視化

特に、アニメーションの部分はかなりのページを割いてあることと、
従来の書籍などでは語られてない部分で、
かなり勉強になるなと思いました。

エンジンのアーキテクチャを語る書籍という点から、
ゲームエンジンでのレンダリングシステムについては
あまり語られていなかったのは残念です。
一般的なレンダリングパスをどのように処理するかという点も気になっていたのですが。


パラメトリック曲線 -解決編-


ここまでのまとめ

カーブのエディタを作ろうと、C#で着手。
目標としているのは XSI ModToolにあるようなカーブエディタです。
しかしながら、エルミートスプライン、ベジェ曲線等試すも、カーブの形状すら違っていた。

上記のベジェ曲線を3次のものに変更したところ、思うような曲線が書けるようになった。
確かに作図する上で3次のベジェ曲線を使えばやりたいことは出来るような感じである。

必要条件

カーブの制御点の情報は、位置(t,v)、そして接線情報である。
「ゲームプログラマになる前に覚えておきたい技術」の3次補間のケースでは、
制御点での接線情報に若干不足がある。
制御点での傾き情報は与えられるが、その影響持続時間に関する情報を設定できない。
そのため、接線情報を設定できるパラメトリック曲線の方法を選ぶ必要がある。

今回候補とする曲線種類

  • エルミート曲線
  • ベジェ曲線

任意の時刻における値を調べる

これら曲線を使えばやりたいことが出来そうではある。
しかし、これら曲線では区間内の平面上の任意の点を媒介変数を使用して表現する。
つまり、横軸がいくついくつのときの、縦軸の値は?という問題に答えることができない。

今回の目標がカーブエディタであるということは、
横軸の値に対して、縦軸の値は1つだけを持つべきである。
横軸変数 x とし、縦軸変数 y とするならば、y は x の一価関数でなければならない。
つまり y = f(x), あるxにおけるyの値は一意に定まらなくてはならない。
XY平面上で曲線がループを描いてしまってはいけない。

一般的に解説されている曲線の書き方では媒介変数の値を与えることで、
2点間で補間された点を求めて点を打つ。
このとき、XとYそれぞれで曲線の補間式が計算される。
今横軸Xを時刻として扱うことを考えているので、このXが求まっている状態から、
Yを求めることが必要である。
このXとYを関連づけているのは媒介変数であるので、
求まっているXから媒介変数の値を求め、それから Y を求めることが出来る。

  1. 曲線の関数 f()とする.
  2. 媒介変数 s = f'(X);
  3. 目的の値を求める. Y = f( s );

回り道をしているようだけど、これで任意の横軸値から縦軸の値を算出できる。

計算方法について

実は曲線の式は、3次方程式である。
よって、この3次方程式の解を導き出せばいいという問題に変わる。

具体的には
曲線は f(x) = A * x^3 + B * x^2 + C * x + D なので、
t0 = A * x^3 + B * x^2 + C * x + D
式変形して
A * x^3 + B * x^2 + C * x + D – t0 = 0
を満たす x を求めることなる。

結果

今回はエルミート補間を試してみた。
自分で実装したのは、任意のX座標を引数としてそのときのYを得るという、
今までに説明した方法である。
一方、比較のためにD3DXで用意されているD3DXVec3Hermite関数で計算した
曲線も表示させてみた。

左側の曲線が自前で処理しているものである。

  • 曲線1:黄色
  • 曲線2:緑

右側の曲線はD3DXを用いて媒介変数を0から1へと変化させ、
そのとき得られたXY座標値でグラフ化したものである。

若干ズレも見えるが、そこまで大きく両者にズレはないし
今回の目的は達成したと言える。

追記

同じようなことをしている人を発見しました。
”Zで行こう!”の9月の日記にてベジェ版でやっているようです。

アドレス:http://blog.livedoor.jp/take_z_ultima/archives/2010-09.html?p=4
同じような結論へとたどったようなので、この方法も間違ってはいないのかなとおもいました。