XSI 6.x 7.x HND Exporter

XSIEasyInstall.exeを起動し、XSIのアイコンをドロップしてインストールを行ってください。
XSIのプラグインフォルダにXSI60ExportHND.dllがコピーされます。

または手動でインストールする場合、

XSIがインストールされているフォルダ以下のPluginsフォルダに
XSI50ExportHND.dllをコピーしてください
デフォルトでは以下のフォルダとなります。
C:\Softimage\XSI_6.0\Application\Plugins


出力はScriptEditorよりコマンド「ExportHND」または
メニューのファイル->書き出し->Export HND
を選択してください


※現行版エクスポータの注意事項

・マテリアルのディフューズ、アンビエントなどにテクスチャを接続すると
  SDKからカラーの値が取得できないので各色に1.0fを設定しています。
  これらにカラーを指定したい場合は、Mix2Colorなどを接続してからテクスチャを接続し、
  片方にカラー値を設定するようにしてください。

・テクスチャのオフセットアニメーションを行う場合、
  Texture_Projection_Defの移動U,Vをアニメーションさせてください。


※ScriptEditorからの起動について
  XSIのScriptEditorから実行する場合は下記のように指定します。
	exporthnd "読み込ませるNNRのパス","出力先のパス"

	記述例

	exporthnd
	'メニューからの起動と同じ様に起動します。

	exporthnd “Default”
	'ダイアログを表示せずに出力のみを行います。
	この場合、NNRをシーンから読み出すモードになっている時はシーンのNNRが利用され、
	ユーザーセレクトモードになっている場合は前回エクスポートで使用したNNRが使用されます。

	exporthnd “c:\test.nnr”
	'ダイアログを表示せずに指定したNNRを使用し出力を行います。
	指定したNNRが存在しない場合は新たに作成されデフォルトオプションで出力されます。

	exporthnd ,”c:\output”
	'ダイアログを表示せずに指定したフォルダに出力します。
	出力先以外のオプションについてはシーンに保存されているNNRが使用されます。

	exporthnd “c:\test.nnr”,”c:\output”
	'ダイアログを表示せずに指定したNNRを使用し出力を行います。出力先をNNRと違う場所を指定します。

	exporthnd “c:\test.nnr”,”c:\output”,”test”
	'ダイアログを表示せずに指定したNNRを使用し出力を行います。出力先をNNRと違う場所を指定します。
	 ファイル名をtestにして出力します。
	 ※addSceneNameオプションがONである場合は、プレフィックスにシーン名が付きます。

XSIを起動せずにスクリプトを実行する場合はXSIの引数に-scriptオプションを付けることで
任意のスクリプトを実行することが出来ます。

xsi.exe -script test.vbs

VBScript サンプル関数（そのままでは使用出来ません。あくまで参考です）
任意のフォルダ以下のシーンすべてを出力します。
select_objectという名前のレイヤーがあった場合、登録されているオブジェクトを選択して出力します。

Function ExportForFolder(FolderName, Arg1, Arg2, Arg3)
	If FolderName = "" Then Exit Function

	If Arg1 = "" Then Arg1 = "default"
	If Arg2 = "" Then Arg2 = "default"
	If Arg3 = "" Then Arg3 = "default"
	Dim i

	Set fso = CreateObject("Scripting.FileSystemObject")
	Set CurFolder = fso.GetFolder( FolderName )
	If Right(FolderName, 1) <> "\" Then FolderName = FolderName & "\"

	For Each file In CurFolder.Files
		i = instrrev(file.Name, ".")
		If i > 0 Then ext = Right(file.Name, len(file.Name) - i)
		If ext = "scn" Then
			OpenScene FolderName + file.Name, false
			Arg3 = Left(file.Name, i - 1)
			For Each Layer in ActiveProject.ActiveScene.Layers

				LayerName = lcase(trim(Layer.Name))
				If LayerName = "select_object" Then
					Objects = ""
					For each oMember in Layer.Members
					   Objects = Objects & oMember.FullName & ","
					Next
					SelectObj Objects
					exporthnd Arg1, Arg2, Arg3
				End If
			Next

		End If
	Next
End Function
