デザインについて、経験してることや考えてること、色々記録しておく目的であるブログです。
最近スクリプトの便利さに気づいて、色々(しょぼい)スクリプトを作っているので、しばらくXSIスクリプト話題はメインになりそう。
2ヶ月程前に面倒くさいプロジェクトにかかわりました。
細かい仕様が多かったため、人為的なミスも多かった。提出する前に皆のチェックしなきゃいけない俺には大変だった。前の会社でチェックスクリプトを作って頂いたことがあって、あれは凄く便利だったな~と思い出したけど、今の会社にプログラマーさんが居ないから誰か作って下さ~い!と静かに思いながら手動でチェックし続けていました。
チェックするファイルがたまったり、頑張ってチェックしたデータに何箇所不具合が残ったままに提出して、クライアントに突っ込まれたりして・・・もうこんな 面倒くさい作業やってられるか!!と思い、XSIのSDKヘルプとスクリプトエディターを開いて色々触ってみました。
Xrayの切り替え ボタンぐらいしか作ったことがなかったけど、なんとかなる!と思いきや、なんとかならなかった。
何日もかけて色々調べながら、試しながら、ヘルプのサンプルをパクりながら、ログに残っているコマンドをコピペーしながらなんとかチェックスクリプトが出来ました。今あのスクリプトを見るとめちゃめちゃ汚いけど、一応ちゃんとチェックが出来ました。
これぐらいが出来たら、制作も楽になるスクリプト作っちゃえばいいんじゃないと思い、あのプロジェクトの納品データ化スクリプトも出来ました。あれからスクリプトをやりまくってます。
こんなに仕事が楽になるなんて感動だ。
最初に作ったスクリプトはこれです。
アクティブビューポートだけにXrayの切り替えボタン:
VBScript
'まずは厳ビューポートを感知するコマンド:
dim vw, mCamera
vw = GetFocusedViewport
set mCamera = GetViewCamera(-1)
if vw = "A" then
set mCamera = GetViewCamera(0)
'GetViewCameraコマンドでは0 = Viewport A
elseif vw = "B" then
set mCamera = GetViewCamera(1)
'GetViewCameraコマンドでは1 = Viewport B
elseif vw = "C" then
set mCamera = GetViewCamera(2)
'もうお分かりでしょうね。
elseif vw = "D" then
set mCamera = GetViewCamera(3)
end if
'そのビューポートに変えたい設定はここ:
'↓アクティブビューポートのカメラのcamdispのなかの「XrayShaded」を切り替えコマンド(ToggleValue)
ToggleValue "xrayshaded", mCamera &".camdisp"
'↓アクティブビューポートのカメラのcamdispの「Xraytype」を1にするコマンド
'0 = Overlay 1 = Screen 2 = Transparency(XSI2011以降)
SetValue mCamera & ".camdisp.xraytype", 1
このたいしたこと無いスクリプトは意外と便利です。
最後のコマンドを変えて、色んな設定が出来ます。
例えば
「ToggleValue "wireontop", mCamera &".camdisp"」にすると、
選択しているオブジェクトのワイヤフレームをON/OFFになります。
その他:
'選択されていないオブジェクトのワイヤフレーム(Wireframe on shaded)
ToggleValue "wireontopunsel", mCamera &".camdisp"
'SceneInfo:
ToggleValue "sceneinfo", mCamera &".camvis"
ToggleValue "selectioninfo", mCamera &".camvis"
'Headlight:
ToggleValue "headlight" , mCamera &".camdisp"
などなど!
カメラの設定をいじって、スクリプトエディターを見ればなんとかこのスクリプトを好きにカスタマイズすることが簡単に出来ます。
これをoyaGさんのGViewButtonプラグインに入れるともっと便利かも。最近のMayaみたいにビューポートに色んなディスプレイ設定を切り替えるボタンが付いていて便利。
全ビューポートをいっぺんに変えたければカメラの代わりに * を仕えば良い。
ていうか、このブログにコードを載せる良い方法がないかな。手動で直すのは面倒。