「 XSI ModTool 」一覧

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もテクスチャを張ったところで終わってますし、何かネタを探してみようかな。


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とマイナーバージョンアップとなっていますが、
仕様としてはまぁまぁの規模で変更があるので、
そのあたり対応する過程で、うまく動くようになってるのかなと考えています。


XSI ModToolからスキニングメッシュ出力

スキニングメッシュとして、円柱にボーンを仕込んだものを作ってみました。

適当に曲げてみて、それを独自形式変換して表示できるかやってみたのですが、失敗してしまい、 tiny.xからの作った場合には正常に表示できているのですが。

うまく出す方法判明

いくつか試してようやく解法がわかりました。
DirectXのエクスポーターの設定で CompressMeshにチェックが入っているとダメのようです。

また、Trianglateにチェックを入れても豪快に崩れました。
このことから、素直に .xを作り、やるならその後最適化をするという流れをとった方が良さそうです。