プレビュー出来るわけではない。思ったとおりに出来ているかどうかは、いちいち mqo で出力し SMB
に読み込ませて確認しなければならんので、お世辞にも効率が良いとは言えないだろう。ましてや
keynote を使った事があるのならなおさらだ。
SMB が keynote の仕様に対応してくれれば話が早いのだが、今さらなあ…。などと考えながら作りか
けの指関節有りなアンカーキット mqo とシムルカ mqo をメモ帳でぼんやり見比べていたのだが、ふと
アンカーオブジェクトの名前を置換するスクリプトを作れば済むんじゃね?
と思いつく。
とりあえずココを参考に、SMB では余計な"bdef:"と"sdef:"を除去する VBS を作って実験したら、
どうやら簡単に作れそうな気がしてきた。どうせならってんでドラッグ&ドロップで変換できるように
して、変換後のファイル名は頭に"xskin-"と付けるようにして…って、VBS なんて触るの初めてなもん
だからあっちゃこっちゃ参考(パクリとも言う)にしまくって出来たのが、下記のスクリプト。
※引数無しで実行するとエラーになるので、簡易的に引数とファイルの存在チェックを追加。
暫定的に、マルチボーンヘッドに対応。
Option Explicit
const title = "Keynote仕様のMQO を SMB仕様に変換"
const usage = "Usage: k2smb [MQO file name]"
Dim args
Set args = WScript.Arguments
Dim FS
Dim chk
Dim SrcFile
Dim DesFile
Dim StrDat
Dim pos
Dim ArrayStrings
ArrayStrings = Array("", "xskin-", "")
Dim DesFilename
If WScript.Arguments.Count <> 1 Then
MsgBox title & vbCrLf & usage
WScript.Quit
Else
Set FS = CreateObject("Scripting.FileSystemObject")
chk = FS.FileExists(args(0))
If chk = False Then
MsgBox "File not found"
WScript.Quit
End if
End If
Set SrcFile = FS.OpenTextFile(args(0))
StrDat = SrcFile.ReadAll
StrDat = replace(StrDat,"bdef:","")
StrDat = replace(StrDat,"sdef:","")
StrDat = replace(StrDat,"$name-head","null-head")
StrDat = replace(StrDat,"$name-body","null-body")
StrDat = replace(StrDat,"anchor_head|body","$boneHEAD")
StrDat = replace(StrDat,"anchor_head|頭","$boneHEAD")
StrDat = replace(StrDat,"anchor_neck|頭","$boneNECK")
StrDat = replace(StrDat,"anchor_spine2|頭","$boneSPINE2")
StrDat = replace(StrDat,"anchor_spine1|頭","$boneSPINE1")
StrDat = replace(StrDat,"anchor_spine|頭","$boneSPINE")
StrDat = replace(StrDat,"anchor_pelvis|頭","$bonePELVIS")
StrDat = replace(StrDat,"anchor_pelvis|body","$bonePELVIS")
StrDat = replace(StrDat,"anchor_leg_L|body","$boneL_LEG")
StrDat = replace(StrDat,"anchor_leg_R|body","$boneR_LEG")
StrDat = replace(StrDat,"anchor_leg1_L|body","$boneL_LEG1")
StrDat = replace(StrDat,"anchor_leg1_R|body","$boneR_LEG1")
StrDat = replace(StrDat,"anchor_foot_L|body","$boneL_FOOT")
StrDat = replace(StrDat,"anchor_foot_R|body","$boneR_FOOT")
StrDat = replace(StrDat,"anchor_toe_L|body","$boneL_TOE0")
StrDat = replace(StrDat,"anchor_toe_R|body","$boneR_TOE0")
StrDat = replace(StrDat,"anchor_spine|body","$boneSPINE")
StrDat = replace(StrDat,"anchor_spine1|body","$boneSPINE1")
StrDat = replace(StrDat,"anchor_spine2|body","$boneSPINE2")
StrDat = replace(StrDat,"anchor_neck|body","$boneNECK")
StrDat = replace(StrDat,"anchor_arm_L|body","$boneL_ARM")
StrDat = replace(StrDat,"anchor_arm_R|body","$boneR_ARM")
StrDat = replace(StrDat,"anchor_arm1_L|body","$boneL_ARM1")
StrDat = replace(StrDat,"anchor_arm1_R|body","$boneR_ARM1")
StrDat = replace(StrDat,"anchor_arm2_L|body","$boneL_ARM2")
StrDat = replace(StrDat,"anchor_arm2_R|body","$boneR_ARM2")
SrcFile.Close
pos = InStrRev(args(0), "\")
ArrayStrings(0) = Left(args(0), pos)
ArrayStrings(2) = Mid(args(0), pos+1)
DesFilename = Join(ArrayStrings, "")
Set DesFile = FS.CreateTextFile(DesFilename)
DesFile.WriteLine (StrDat)
DesFile.Close
…我ながら力技やなあwconst title = "Keynote仕様のMQO を SMB仕様に変換"
const usage = "Usage: k2smb [MQO file name]"
Dim args
Set args = WScript.Arguments
Dim FS
Dim chk
Dim SrcFile
Dim DesFile
Dim StrDat
Dim pos
Dim ArrayStrings
ArrayStrings = Array("", "xskin-", "")
Dim DesFilename
If WScript.Arguments.Count <> 1 Then
MsgBox title & vbCrLf & usage
WScript.Quit
Else
Set FS = CreateObject("Scripting.FileSystemObject")
chk = FS.FileExists(args(0))
If chk = False Then
MsgBox "File not found"
WScript.Quit
End if
End If
Set SrcFile = FS.OpenTextFile(args(0))
StrDat = SrcFile.ReadAll
StrDat = replace(StrDat,"bdef:","")
StrDat = replace(StrDat,"sdef:","")
StrDat = replace(StrDat,"$name-head","null-head")
StrDat = replace(StrDat,"$name-body","null-body")
StrDat = replace(StrDat,"anchor_head|body","$boneHEAD")
StrDat = replace(StrDat,"anchor_head|頭","$boneHEAD")
StrDat = replace(StrDat,"anchor_neck|頭","$boneNECK")
StrDat = replace(StrDat,"anchor_spine2|頭","$boneSPINE2")
StrDat = replace(StrDat,"anchor_spine1|頭","$boneSPINE1")
StrDat = replace(StrDat,"anchor_spine|頭","$boneSPINE")
StrDat = replace(StrDat,"anchor_pelvis|頭","$bonePELVIS")
StrDat = replace(StrDat,"anchor_pelvis|body","$bonePELVIS")
StrDat = replace(StrDat,"anchor_leg_L|body","$boneL_LEG")
StrDat = replace(StrDat,"anchor_leg_R|body","$boneR_LEG")
StrDat = replace(StrDat,"anchor_leg1_L|body","$boneL_LEG1")
StrDat = replace(StrDat,"anchor_leg1_R|body","$boneR_LEG1")
StrDat = replace(StrDat,"anchor_foot_L|body","$boneL_FOOT")
StrDat = replace(StrDat,"anchor_foot_R|body","$boneR_FOOT")
StrDat = replace(StrDat,"anchor_toe_L|body","$boneL_TOE0")
StrDat = replace(StrDat,"anchor_toe_R|body","$boneR_TOE0")
StrDat = replace(StrDat,"anchor_spine|body","$boneSPINE")
StrDat = replace(StrDat,"anchor_spine1|body","$boneSPINE1")
StrDat = replace(StrDat,"anchor_spine2|body","$boneSPINE2")
StrDat = replace(StrDat,"anchor_neck|body","$boneNECK")
StrDat = replace(StrDat,"anchor_arm_L|body","$boneL_ARM")
StrDat = replace(StrDat,"anchor_arm_R|body","$boneR_ARM")
StrDat = replace(StrDat,"anchor_arm1_L|body","$boneL_ARM1")
StrDat = replace(StrDat,"anchor_arm1_R|body","$boneR_ARM1")
StrDat = replace(StrDat,"anchor_arm2_L|body","$boneL_ARM2")
StrDat = replace(StrDat,"anchor_arm2_R|body","$boneR_ARM2")
SrcFile.Close
pos = InStrRev(args(0), "\")
ArrayStrings(0) = Left(args(0), pos)
ArrayStrings(2) = Mid(args(0), pos+1)
DesFilename = Join(ArrayStrings, "")
Set DesFile = FS.CreateTextFile(DesFilename)
DesFile.WriteLine (StrDat)
DesFile.Close
これをメモ帳にコピペして拡張子が"vbs"なファイル名で保存する。例えば"k2smb.vbs"みたいに。
出来た vbs アイコンに mqo をドロップすると、ファイル名の頭に"xskin-"と付いたファイルが生成
される。例えば"test.mqo"なら"xskin-test.mqo"となる。
残念ながら世に存在する、keynote でボーンを入れた mqo の全てを扱えるわけでは無い。と言うよ
り、ぶっちゃけ自サイトで公開しているボーン/アンカーキット専用だからね。
変換する前の下準備として、マテリアルに "$name" を追加し、SMB が適切に扱う為の情報を追加し
ておく。例えばボブのボディーだと、
模様:xskin-b002mafat_01-PELVIS-BODY
透明:x
凸凹:ADULT
といった具合。SMB 用のと同じね。アンカーキットには入れてなかったんで忘れずに。更に、余計な
メッシュは表示オフにしておく。bone とかね。ボディーとして出力するなら、頭部や手首もオフに
する。SMB は表示オフのオブジェクトは無視するので、削除する必要は無い。
これでスキニングのプレビューをメタセコで出来るようになったわけだが、シムピでは恐らく bdef2
(二つのボーンの影響を受ける)で変形していると思われるので、keynote 用MQOではメッシュオブジェ
クトの名前の頭に "bdef:" と入れておくと、ゲームでのボーン変形に近いプレビューが出来るはず。
たぶん。
>> keynoteでポーンを入れたMQOをskn化する具体的な手順
>> 【シムピープルスキン用 keynote 対応ボーン/アンカーキット V1.03】(追記あり)