『MikuMikuDance Ver.7.23 では物理演算の同一結果出力不能に?』→大丈夫っぽい!
で id:penciler(ダサツマP)さんから
MMD7.24&MME0.22で確認しましたが出力結果は一致しましたが…。
http://d.hatena.ne.jp/kadotanimitsuru/20101220/mmd#c1292846745
MMEは入っているだけでfxはなし。モデル一体を読み込んで適当に動かした場合です。fpsは30。
ご指摘いただきましたので、とり急ぎ MMD7.08 & MME0.11 30fps の環境で再度検証してみましたら……OK でした!
ううっ。良かった。良かったよ。
しかしこうなると、
こういう風にズレた画像が出たことの方が分からない……。うちの環境だと AVI 出力は 1度目しか成功しない(2度目からは最初の画で静止したままの AVI が出力されてしまう)ので、常に MMD を立ち上げ直して AVI 出力しているのですが……他の要因でもズレるのだろうか?(心当たりとしては、ずっと電源入れっぱなしだったのを今回再確認するため再起動したことくらいだけれども)
いずれにしても。これで(最悪でも MME7.08 で) VMDView での物理演算Fix に頼らずに作業続けられそう。ダサツマPさんありがとうございました。
以下余談
これ前にも書いた
って物理演算Fixしないと鞭だのツインテールだのは無理だっけか。VMDView を試してみて……あああああっ! (;_;)
むっちむちなアリスで Nostalogic 立体視テスト。 - つちのこ、のこのこ。(はてな番外地)
けれども、VMDView(今使っているのは PMDEdirot_0099 同梱のもの)での物理演算Fix が難物で、アリスの鞭が鞭というよりも蛇みたいにうねったり天を指して立ち上がったままになったりと散々なことに。キーが30万超えて読み込めない、みたいな事態になっている物理演算部分を手付け仕直すなんて不可能だし、諦めてこのままリリースしようかと観念していました。
そもそもその巨大 VMD 読み込むだけでも、うちのしょんぼりな環境だと無茶苦茶時間がかかるし、手作業で分割なんて現実的でないので
# -*- coding: utf-8 -*- def main(START, STOP, SOURCE, DEST): f = open(SOURCE, 'rb') L = f.readlines() f.close() header = L[0:2] motions = int(L[2].strip()) print 'motions:%d' % motions motion = [] for i in L[3 : 3 + motions]: frame = int(i.split(',')[1]) if START <= frame <= STOP: motion.append(i) print len(motion) hyoujyous = int(L[3 + motions].strip()) print 'hyoujyous:%d' % hyoujyous hyoujyou = [] for i in L[4 + motions : 4 + motions + hyoujyous]: frame = int(i.split(',')[1]) if START <= frame <= STOP: hyoujyou.append(i) print len(hyoujyou) cameras = int(L[4 + motions + hyoujyous].strip()) print 'cameras:%d' % cameras camera = [] for i in L[5 + motions + hyoujyous : 5 + motions + hyoujyous + cameras]: frame = int(i.split(',')[1]) if START <= frame <= STOP: camera.append(i) print len(camera) lights = int(L[5 + motions + hyoujyous + cameras].strip()) print 'lights:%d' % lights light = [] for i in L[6 + motions + hyoujyous + cameras: 6 + motions + hyoujyous + cameras + lights]: frame = int(i.split(',')[1]) if START <= frame <= STOP: light.append(i) print len(light) data = header data.append('%d\r\n' % len(motion)) data += motion data.append('%d\r\n' % len(hyoujyou)) data += hyoujyou data.append('%d\r\n' % len(camera)) data += camera data.append('%d\r\n' % len(light)) data += light f = open(DEST, 'wb') f.write(''.join(data)) f.close() SOURCE = 'alice_fix.csv' START = 0 STOP = 4100 DEST = 'alice_cut1.csv' main(START, STOP, SOURCE, DEST) START = 4000 STOP = 8000 DEST = 'alice_cut2.csv' main(START, STOP, SOURCE, DEST) SOURCE = 'lilyrain_fix.csv' START = 0 STOP = 4100 DEST = 'lilyrain_cut1.csv' main(START, STOP, SOURCE, DEST) START = 4000 STOP = 8000 DEST = 'lilyrain_cut2.csv' main(START, STOP, SOURCE, DEST)
(VMDConverter で出力した CSV をフォーマット保ったままフレーム数で切り出す Python スクリプトです)
こんなやっつけ Python スクリプト作って分割する羽目になるわで、これだけで 1日分くらい潰れてました。*1