2013年06月05日

Keynoteでボーンを入れたMQOをSMB仕様に変換(追記と修正あり)

skn を自作/改造するのに使う SMB は単なるコンバータでしかないので、メタセコにてボーン変形を
プレビュー出来るわけではない。思ったとおりに出来ているかどうかは、いちいち 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
…我ながら力技やなあw
これをメモ帳にコピペして拡張子が"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】(追記あり)
posted by きゅーり at 20:58 | Comment(0) | TrackBack(0) | programming
この記事へのコメント
コメントを書く
お名前:

メールアドレス: [非公開:管理者のみ閲覧]

ホームページアドレス:

コメント: [必須入力]

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/68897821
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック