したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

MMDのモデルデータについて語るスレ

1 名無しさん@お腹いっぱい。 :2008/08/26(火) 17:08:35 ID:rGtPZk460
■MMDのモデルデータであるmiku.xxおよびrin.xxの内部構造等について語るスレです。
モデルデータ改造関係の話題はここで

■関連2ちゃんねるスレ
MikuMikuDance動画制作/鑑賞スレ part 13
http://pc11.2ch.net/test/read.cgi/streaming/1219114396/

■過去ログ
http://www6.atwiki.jp/vpvpwiki/pages/25.html

■このスレでの注意事項(暫定)
・人をdisらない
・批判おkだが代替案を示すなどを推奨
・荒らしはスルー

■次スレは>>950が建てる事
次スレに必要な議論はそれまでに済ませておくべし
>>950が音沙汰無い場合は>>970一任

2 ナクアダ :2008/08/28(木) 20:37:42 ID:jt4feM2M0
rin.xx のデータ (MmdMaterial で見られるもの以外全部) の
ダンプを Excel の表に整形したものをうpしました.
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00212.lzh.html (5.45MB)

3 名無しさん@お腹いっぱい。 :2008/08/30(土) 16:32:36 ID:axmcng.w0
なんだかよくわからんけど凄そう。
乙です

4 名無しさん@お腹いっぱい。 :2008/08/30(土) 17:13:16 ID:T2uKPTfY0
xxファイルからpmdファイルに形式が変わったみたいですね。
うーん、今までのは水の泡なのだろうか。

5 名無しさん@お腹いっぱい。 :2008/08/30(土) 18:09:41 ID:DWEBRPm.0
miku.pmd のマテリアル設定の箇所

0 0x069DED
1 0x069E37
2 0x069E79
3 0x069EBF
4 0x069F05
5 0x069F4B
6 0x069F91
7 0x069FD7
8 0x06A01D
9 0x06A067
10 0x06A0B7
11 0x06A0EF
12 0x06A135
13 0x06A17F
14 0x06A1C1
15 0x06A207
16 0x06A24D

これでたぶんあってるかな?

6 名無しさん@お腹いっぱい。 :2008/08/30(土) 18:24:46 ID:DWEBRPm.0
エッジのアドレスをさわって消せるのは pmd も xx ファイル同様ですし、
今回は別名保存しておけばオリジナルと別なものとして読み込みできるので便利ですね。

データなく00で埋まってたようなところが詰まったような感じに
アドレスが変化したように見受けられるのですけど実際どんな感じなんでしょうね?

--

eye*.bmp を変えて別フォルダにpmdごと保存して、読みわけしても
先に読み込んだモデルのテクスチャで後から読み込んだモデルのテクスチャが表示されるのは仕様だと思うので、

目のテクスチャも変えて表示したい場合は該当アドレスの eye*.bmp を別名に変えておけば同キャラ別瞳が可能になります。
# miku.pmd の場合は 0x069F7D から始まる箇所を eye2.bmp から eye5.bmp等に変えればOK

7 名無しさん@お腹いっぱい。 :2008/08/30(土) 18:50:36 ID:DWEBRPm.0
xx ファイルの頂点データのあとに osm ファイルにかかれていたMeshが入ってるようですね。
たぶん、解析ができるかただと速攻で気が付かれてる話だとは思いますが。

Mesh
Bone No.1,Bone No.2,weight

1番目の頂点だと頂点の座標の後に 03 00 00 00 64 00 って感じでデータが入ってるのですね。

---

いま、見てる人の多そうなタイミングなんで興味をもってもらうために
些細なことでも書いていこうかなぁ……
# ど素人の適当な話が先に上がると
# じっくり解析されている方のモチベーションを下げてしまうかな?

8 名無しさん@お腹いっぱい。 :2008/08/30(土) 20:37:49 ID:DWEBRPm.0
0x00053E67 からがエッジのデータかな?

BF AF 00 00 で エッジ数から開始っぽい

元の xx ファイルのアドレスに頭に製作者情報が119(16進数)加わったのと

メッシュの情報が
Bone No.1で 2、Bone No.2 で 2、 weight で 2 ずつアドレスが増加するから計6個増加
頂点数は変更なしの9036だから 9036 x 6 = 54216(10進数)
これを16進数に直して D3C8(16進数) なので

両方足して D4E1(16進数)

ナクアダさんのご提供くださったデータの実エッジの開始アドレスが 0x00046988
足したら 0x00053E69


ありゃ?微妙にずれてる orz

9 名無しさん@お腹いっぱい。 :2008/08/30(土) 21:02:11 ID:DWEBRPm.0
BF AF までが エッジ数で 次の 00 00 が 材質番号かぁ。

データは頂点番号が順に並んでいるだけで
エクセルで表示くださっていたのは各頂点に対応するように各座標をいれてくださっていたのですね。

0x00055677 からが 素材1かなぁ

データの並びは微妙に異なる気がしますが、
0x00053E67 - 0x00055676 までを00埋めしたら素材0 に当たる部分が消えましたし。

10 ナクアダ :2008/08/31(日) 02:19:27 ID:sk4qJ68s0
MMD 3.0x のモデルファイル (*.pmd) を解析してわかったこと.
まだ少し不明な部分があるけど,とりあえずこれで MMD3 用の
MmdMaterial と MmdErase は作れるので残りは後回し.

*.pmd ファイルは次の内容からなる.
(1) MMD2 の *.xx の内容 (ポリゴン,材質).
(2) MMD2 の *.osm の内容 (ボーン,IK,スキン (表情)).
(3) フレーム登録窓の,モデルに依存する項目 (ツリー構造,表情の種類).

以下,"初音ミク.pmd" を具体例として解析した結果.

11 ナクアダ :2008/08/31(日) 02:20:01 ID:sk4qJ68s0
●"初音ミク.pmd" の内容

0x00000000 〜 0x0000011A (283 (0x11B) バイト)
・ヘッダ
 // マジック文字列 (ファイル種別識別用).0x00 終端.余白は 0x00 で埋める.
 char magic[5] = "Pmd";
BYTE 0x80, 0x3F; // 不明 (モデルによらず固定値)
 char name[20] = "初音ミク"; // モデル名.0x00 終端,余白は 0xFD で埋める.
 char comment[256]; // コメント (著作権表示など),0x00 終端,余白は 0xFD で埋める.

0x0000011B 〜 0x00053E66 (343372 (0x53D4C) バイト = 4 + 38 * 9036)
・頂点データ
 DWORD nVertices = 0x0000234C = 9036; // 頂点数 (4バイト)
MMD3_Vertex_t vertex[nVertices]; // 頂点データの配列 (38バイト × nVertices 個)

0x00053E67 〜 0x00069DE8 (89986 (0x15F82) バイト = 4 + 2 * 44991)
・ポリゴンデータ (頂点番号の配列)
 DWORD nIndices = 0x0000AFBF = 44991; // 頂点番号数 (4バイト)
 WORD vertexIndex[nIndices]; // 頂点番号の配列 (2バイト × nIndices 個)

 ※MMD2 ではエッジ (頂点番号対) の配列だったが,
  MMD3 では単一の頂点番号の配列となり,データ量が半減している.

0x00069DE9 〜 0x0006A292 (1194 (0x4AA) バイト = 4 + 70 * 17)
・材質データ
 DWORD nMaterials = 0x00000011 = 17; // 材質数 (4バイト)
 MMD3_Material_t material[nMaterials]; // 材質データの配列 (70バイト × nMaterials 個)

0x0006A293 〜 0x0006B52A (4760 (0x1298) バイト = 2 + 39 * 122)
 WORD nBones = 0x007A = 122; // ボーン数
 MMD3_Bone_t bone[nBones]; // ボーンデータの配列 (39バイト × nBones 個)

0x0006B52B 〜 0x0006B59F (117 (0x75) バイト)
・IK
 WORD nIKs = 0x0007 = 7; // IK データ数
MMD3_IK_t ik[nIKs]; // IK データの列 (可変長 × nIKs 個)

0x0006B5A0 〜 0x00070EF1 (22866 (0x5952) バイト)
・スキン
WORD nSkins = 0x0010 = 16; // スキン数
MMD3_Skin_t skin[nSkins]; // スキンデータの列 (可変長 × nSkins 個)

0x00070EF2 〜 0x0007106F (382 (0x17E) バイト)
・フレーム登録窓表示用データ
// expression[i] は「表情」のi番目の子となるスキン番号
// expression[0]=9 ⇒ bone[9]="あ"
// expression[1]=10 ⇒ bone[10]="い"
//   :
// expression[14]=15 ⇒ bone[15]="下"
 BYTE nExpressions = 0x0F = 15; // 表情の個数
WORD expression[nExpressions]; // 表情として使用するスキン番号

 // フレーム登録窓のツリーの中間節点名文字列
 BYTE nStrings = 0x07 = 7; // 文字列数
 char string[nStrings][50]; // 文字列 (50バイト固定長) の配列.0x00 終端,余白は 0xFD.

0x00071070 〜 0x00071166 (247 (0xF7) バイト)
・未調査 (おそらくフレーム登録窓のツリー構造とボーン番号の対応データ)


●頂点データ (MMD3_Veretx_t,38バイト)
typedef struct {
 // 次の部分は MMD2 と同じ.Direct3D の D3DVERTEX 型.
 float x, y, z; // 座標
 float nx, ny, nz; // 単位法線ベクトル
 float u, v; // テクスチャ座標

 // 次の部分は MMD3 で追加された,ジオメトリ・ブレンディング用データ.
 // (MMD2 では *.osm 内にあった.)
 WORD bone[2]; // ボーン番号
 WORD weight; // ブレンドの重み (0 〜 100%)
} MMD3_Vertex_t;

●材質データ (MMD3_Material_t,70バイト)
typedef struct {
 struct { float r, g, b, a; } diffuse;
 float shininess;
 struct { float r, g, b; } specular, ambient;
 WORD 不明; // MMD3 で追加されたデータ
 DWORD nEdges; // この材質に対応するエッジ数
char textureFileName[20]; // テクスチャファイル名 (MMD2 では 256 バイト)
} MMD3_Material_t;

●ボーンデータ (MMD3_Bone_t,39バイト)
typedef struct {
char name[20]; // ボーン名 (0x00 終端,余白は 0xFD)
short parent; // 親ボーン番号 (なければ -1)
WORD to;
BYTE kind;
WORD knum;
struct { float x, y, z; } position;
} MMD3_Bone_t;

12 名無しさん@お腹いっぱい。 :2008/08/31(日) 17:23:41 ID:fvUZ5yWE0
>>11
解析データのご開示ありがとうございます。
判らないことだらけなので一つ一つ調べたりしつつ元データとつき合わせて考え考えみております。

13 名無しさん@お腹いっぱい。 :2008/08/31(日) 17:30:48 ID:fvUZ5yWE0
以下、適当に試したこと

ボーンデータの箇所を参考にダミーボーンをいじって親ボーン番号を入れてみたら無事MMD3でも反映されました。
ボーン02 の親ボーンのアドレス 0x000164-165 の FF FF を
00 00 に書き換えると ボーン02の親ボーンがボーン01 になりました。
01 00 に書き換えるとボーン02自身を親ボーンにしたためか位置が動かなく回転だけができるように
02 00 に書き換えると ボーン02の親ボーンがボーン03 になりました。

To は繋がる先を表し、全てのボーンの根っこを00から開始して根っこが終了したら先側という感じなのでしょうか?
ボーン02 の to にあたるアドレス 0x000166 - 167 の 10 00 を
00 00 にすると自分自身へ?
01 00 にすると自分自身へ?
02 00 にすると ボーン03 の根っこへ
03 00 にすると ボーン04 の根っこへ
0F 00 にすると ボーン01 の先っぽへ
11 00 にすると ボーン03 の先っぽへ

,kind,knum はなんのことかさっぱりわかりませぬ orz

x, y, z position の値を変えるとボーンの根っこの部分(MMDで中黒のついた□の部分)の初期位置が変更されました。

---

多関節ダミーボーンはできそうですし、着ぐるみ系キャラ用のボーンは自作できそうですよね?
# 関節稼動による変形の伴わないロボットは自作可能
# グラディウス等2Dシューティングであったような多関節触手も自作可能

ってな感じですかねぇ。素人が適当にいじってるだけなので同じ素人の人の参考にでもなればw

14 名無しさん@お腹いっぱい。 :2008/08/31(日) 22:00:09 ID:n9ReWOZI0
kindは、V2のmiku.osmのぞいた感じだと、
IKか否か移動できるか回転だけか、だったようなオボロゲな記憶。
knumもmiku.osmに出現してたっけ。

バグ報告スレでダミーボーンの別ボーンへの追従の要望が出てるけど、
>>13の改造で実現できる?

15 名無しさん@お腹いっぱい。 :2008/08/31(日) 22:44:16 ID:Iwt4bXzI0
>>13
面白そうですね。


02〜03を01の子に設定したダミーボーンを作ってみました。
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00229.zip.html
動作の保証はしませんので各自自己責任で。

ってモデラーの名前書き換え忘れた…。

16 名無しさん@お腹いっぱい。 :2008/08/31(日) 22:44:53 ID:Iwt4bXzI0
02〜15の間違いorz

17 名無しさん@お腹いっぱい。 :2008/08/31(日) 22:47:21 ID:fvUZ5yWE0
>>14
どちらも書いてるのは自分ですがw
13の改造方法で実現できました。

まだ、一部しか試してませんが 『センター』『上半身』と名前を付けて
各キャラの同名のボーンと同一になるように親ボーンをつくり、
初音ミクさんならミクさんのセンター、上半身共に選択されたモーションを書き出し
それを上記の設定をしたダミーボーンで読み込めば位置追従可能っぽいです。

ってことで、尻尾ふりふり、羽パタパタなミクさんも作れそうです。

18 名無しさん@お腹いっぱい。 :2008/08/31(日) 23:02:27 ID:fvUZ5yWE0
>>15
うは、さっそくの実行ありがとうございますw

お作りになられた pmd ファイルで
ボーン01 に戦艦を読み込んで、残りに機銃を読み込んだりして遊べそうですね。

追従も出来るの判ったのでアイデア次第でかなり無茶ができそうなのでwktkですw

--

ナクアダさんによる解析も進んでますし、出来ればオリジナルモデルを動かすところまでいければいいんですけどねぇ

簡易な人型素体を動かすことが出来れば、マテリアルフォース(ミクロマン)改造による稼動フィギュアみたい感じで
違和感の少ない状態でものすごく多岐にわたるモデルが動かせるようになりそうですし。

19 15 :2008/08/31(日) 23:05:13 ID:Iwt4bXzI0
樋口さんの名前が入っていて誤解を受けると申し訳ないので、名無しに修正しました。
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00230.zip.html

20 名無しさん@お腹いっぱい。 :2008/09/01(月) 00:24:24 ID:ekzj2Xpo0
>>19
めいこで試してみました。
親子ダミーボーンいいですね。

孫ボーンが欲しいのでちょっとバイナリエディタ
落としてきていじってみます。

21 20 :2008/09/01(月) 01:51:58 ID:ekzj2Xpo0
19をいじって、親・子・孫を設定して、人型用にボーン名に腕とか手とか付けてみました。
http://www11.uploader.jp/dl/MMD_vac/MMD_vac_uljp00106.zip.html

22 名無しさん@お腹いっぱい。 :2008/09/01(月) 09:31:21 ID:tmk0Daq.0
まあこれ言ってるの自分だけなんですけど、
MmdMaterialでモデルのサイズを変更することって出来ないでしょうか。
胸とか各パーツだけじゃなくて全身的に。
スレ違いかも知れませんけど。。。

23 13 :2008/09/01(月) 22:48:12 ID:CHfi3Aew0
>>14
> IKか否か移動できるか回転だけか

00 が回転のみで 01 が移動も回転もできるっていう感じのようですね。

コメントを頂いていたのに流してしまっていて、
オッパイボーン改造を見て改めてこのスレを見直していたらコメントを再発見 orz

お教えくださってありがとうございました。

---

MikuMikuDance動画制作/鑑賞スレ part 14
http://pc11.2ch.net/test/read.cgi/streaming/1220083016/213
> 213 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/09/01(月) 01:26:31 ID:yHfjliKW0
> たぶんみんなやりたかったと思うんだ。

> 【MMD】紳士たちの夢が現実に【弱音ハク】
> http://www.nicovideo.jp/watch/sm4482751

> モデルデータ
> http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00233.zip.html

24 名無しさん@お腹いっぱい。 :2008/09/01(月) 23:07:15 ID:CHfi3Aew0
『 kind 』に関しての追加の情報ですが
『07』はボーンを選択不可能の『先』属性にする値のようです。

pmd ファイルはいま解析をされている最中でダンプデータがあがっていないので
ボーン関係は、MMD Ver2 の osmファイルを見たほうが判りやすいような気がしました。

pmd ファイルのアドレス 0x06A293 (ボーンデータの直前)に入っている 7A は 10進数で 122
miku.osm ファイルの5行目、総bone数 122 と同一のデータです。

そして、osm ファイルのボーンのデータをみていくと
選択可能なボーンのデータ以外に『○○先』という名前でボーンがあります。
これは、pmd ファイルでも同様のようです。

『 to 』 でつながる先で指定できるのが Bone No という感じのようです(?)


っということで『 kind 』は
『00』回転のみ 『01』回転及び移動 『07』選択不可能
って感じの属性設定が可能というのが今わかってるようなところですね。

弱音ハクのオッパイボーン改造はオッパイだけに用いることが出来るものではなく
他の回転しか出来ないボーン全てに用いることが可能なので
腕を伸ばしたり、スカートを伸ばしたり……

まぁ、判りやすくいうとダルシム化が可能になるって感じですねw

--

オッパイボーン改造及び配布者ののろみっこさん、『>>14』さん、情報ご提供ありがとうございました。

25 名無しさん@お腹いっぱい。 :2008/09/01(月) 23:56:37 ID:CHfi3Aew0
■簡単な人型ダミーボーンの作り方

1.初音ミク.pmd 等の複製したいボーン部分のアドレスを選択し、コピー
                 ↓
2.ダミーボーン.pmd の変更したいボーン(ボーン01等)が入ってるアドレスに上書きペースト


センター、上半身、腕、足等のボーンをコピーすれば大まかな人型ダミーボーンはできます。
ただし、 『 to 』に入っているボーンナンバーが元の初音ミク.pmd 等に依存するものなので
適切になるようにお書換えくださいませ。
# 先述のレスにあげた『○○先』のボーンもコピーして『 to 』が先がないボーンには
# 『 to 』先として設定した方が見た目の安定は取れるのかもしれません。

上記で、基本のボーン配置が完成するのでボーンの親子関係をボーンの順番等から判断して
お書換えくださいませ。

■任意の位置にボーンを配置したい場合は、
>>11 にある『struct { float x, y, z; } position;』の通り
float 16進数で位置がはいっていますので下記のような頁でもご参照して16進数で値を入れてくださいませ。

浮動小数点(float)型の16進数->10進数の変換 -OKWave
http://okwave.jp/qa3117576.html

入っている値はセンターボーンの場合、Y軸に 8.0 が入っていますが
これは丁度座標軸の 1.3個分ぐらいなので、マス1つが 5 なのだと思います。
初音ミクの身長は 158cm で 4マス程度なので 1マス 40cm ぐらいと思うのが適当かもしれません。
よって座標に入れる値 1 あたり 8cm と思えば大まかなコントロールは出来るかと思います。


<<どなたか入力する10進数の数値を Float 16進数 として簡単に入力する方法をお教えください>>

26 名無しさん@お腹いっぱい。 :2008/09/02(火) 00:04:02 ID:uTu6yejY0
>>25
簡単なプログラムを作るのが一番はやそうですけど

27 名無しさん@お腹いっぱい。 :2008/09/02(火) 00:29:24 ID:OKhispL.0
>>25
><<どなたか入力する10進数の数値を Float 16進数 として簡単に入力する方法をお教えください>>

えっと、10進数を変換する方法、って意味ですか?
それとも、文字通り、pmdファイルを簡単に書き換える方法って意味でしょうか。

前者なら、vectorから「FloatBin」って電卓を落としてくればできますが、
後者ならプログラムを組むのが簡単ではないでしょうか、私には出来ませんが。

28 名無しさん@お腹いっぱい。 :2008/09/02(火) 00:37:48 ID:e9pj402g0
windows標準の電卓は関数電卓に切り替えできたと思うけど
10進で数値入力したあと16進のラジオボタンで変換される

29 ナクアダ :2008/09/02(火) 01:05:05 ID:UI8Icamk0
【MMD 2.02/3.0x,RRD 0.2】モデルデータダンプツール
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00235.lzh.html

30 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:14:48 ID:uTu6yejY0
>>28
小数点以下は変換できない

31 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:18:21 ID:bbxVOang0
>>27、28
ありがとうございます。
両方向での変換ができましたので、これで任意の位置にボーンが置けそうです。


>>28
Float は浮動小数点で処理内部で使われるようなデータ形式らしいので
単純な 10進数 ⇔ 16進数 ではないので計算がかなり面倒なのでした orz

-----

IEEE 754という形式らしく
一旦2バイトに直して、符合部、仮数部、基数、指数部とかにわけてと、面倒で投げかかってました。

-----

ダミーボーンを改造しながら思ったのですが、
pmdファイルの仕様がわかり、ボーンが追加できるようになれば
他の方が要望でもいっておられましたことなのですが
逆に初音ミク.pmd側にボーンを足すほうがいろいろ簡単にできそうだなぁっとw


実際、MMD Ver2 の時点では rin.osm を miku.osm に変更して MMD のDataフォルダにいれると
MMDのボーンがRINのものになりましたし、仕様がわかればボーン構造に関してはかなりいじれそうなんですよね。

MMD Ver2 において osm ファイル内のIKの箇所を書き換えることにより
IK(インバースキネマティクス)として既存のボーンを変更することが出来たので
IK自体も追加等含め好きにコントロールできそうでしたし。

32 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:25:34 ID:bbxVOang0
>>29
おつかれさまです。

弱音ハクのデータもこれで眺めることができるように!
わからないなりに楽しまさせていただきますね。

33 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:29:24 ID:OkxHQoW20
>>25

うさみみハリケーンに進数変換機能あるよ。

ところで現状ではモデルデータに暗号掛けてあるのかな?

34 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:35:41 ID:DXCQzaI.0
暗号化はしないと作者が言ってたはず

35 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:46:37 ID:OkxHQoW20
そうなんだ。
でも、モデル差し替えられるようになって、版権のうるさそうな
キャラでエロいの作って流す者出て来た場合もそうも言って
られるのかな。

36 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:48:16 ID:OKhispL.0
pmdファイルを書き換えて、ダミーボーンを任意の位置に動かすことはできるのですが、
そのままだと△の先端は元の位置を指しちゃいますよね?
toでどれかのボーンを指すことはできるのですが、そうではなくてただ真上を指させる
とかはできるのでしょうか。
元のダミーボーンは真上を指しているし、ミクの頭とか袖みたいに他のボーンに
つながっていないボーンはどうなっているのでしょう。

37 名無しさん@お腹いっぱい。 :2008/09/02(火) 01:53:36 ID:OKhispL.0
>>35
Toy Studioみたいに最初から他のモデルを動かせるソフトは問題にしないで、
MMDのモデルを勝手に差し替えた場合を心配する理由は何でしょう。

38 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:10:02 ID:OkxHQoW20
>>37

ごめん。それ知らない。

そう心配でもないけどあえて言うなら、MMD作者さんがnewバージョンの
発表見合わせたり公開辞めたりしなきゃいいけど。って事かな。

39 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:13:32 ID:bbxVOang0
>>36
長々と上でかいちゃってますが、
ボーンの設定時点で kind の値を 07 にすると選択できない先用(?)になるので
それを使って△の先端を置きたい位置に別ボーンを設定することになると思います。

40 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:17:43 ID:bbxVOang0
>>33
ありがとうございます。
メモリダンプができるソフトだとついてるものなんですねぇ。

41 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:32:45 ID:OKhispL.0
>>39
あれ? と思ってダミーボーンのpmdファイルを見てみたら、ボーン01先とかありました。
先端の座標をここで設定しているみたいですね。
はちゅね用ダミーボーンでやりたいことはだいたい目処が立ちました。

42 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:33:19 ID:OkxHQoW20
>>40

フォーマット解析の別なアプローチとしてオン・メモリで直接
データ書き換えて見るって方法もあったりして覚えて損は
無いと思う。

43 名無しさん@お腹いっぱい。 :2008/09/02(火) 02:43:46 ID:bbxVOang0
>>41
着ぐるみ用ボーン構造が上手くいけば汎用に使いまわせそうですよね。
ボーン名称を統一しておけば、違う人のデフォルメキャラのモーションも使えたりとか。


>>42
その手のアプローチ方法があるとはおもってませんでした。
一応、使ったこと自体はあるので時間があれば試してみますね。

とはいっても、
一気にやれることが広がりすぎて一体何から手をつけるべきだろう?状態ですがw

44 名無しさん@お腹いっぱい。 :2008/09/02(火) 03:27:19 ID:HXJ.owvY0
>>41 >>43
ボーン名称は基本モデルと同一にしておいた方が楽だろうね。
色んなモーションデータを使いまわせるからね。

45 名無しさん@お腹いっぱい。 :2008/09/02(火) 17:38:26 ID:DXCQzaI.0
本スレより一応転載

MikuMikuDance動画制作/鑑賞スレ part 14
http://pc11.2ch.net/test/read.cgi/streaming/1220083016/338

338 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2008/09/02(火) 15:55:35 ID:PccdtwR/0
ttp://www.emucamp.com/boukichi/b2mmd10.zip

blender用xxファイルexporter/importerを作ってみました。

お暇でしたらどぞー。



これ使ってみたけど、頑張ったら旧verでモデル入れ替え可能な感じ・・・

46 名無しさん@お腹いっぱい。 :2008/09/03(水) 03:13:31 ID:PwGU3EX20
すまん。リンのモデルの上半身に子ボーン(ダミーIK)
を追加したモデルを作りたいのだが、
色々いじってみたがようわからん・・・・
エロイ人作ってくれまいか?

47 名無しさん@お腹いっぱい。 :2008/09/03(水) 11:29:35 ID:qxZLzBpI0
>>46
IKなしの移動可能ボーン追加なら、自分でも
何に使うかわからずに作ってるけどw

48 名無しさん@お腹いっぱい。 :2008/09/03(水) 11:44:50 ID:qxZLzBpI0
>>11
>0x00071070 〜 0x00071166 (247 (0xF7) バイト)
>・未調査 (おそらくフレーム登録窓のツリー構造とボーン番号の対応データ)

先頭1バイトがフレーム登録窓のツリーに載せる数(16進)。
以後3バイト単位の配列「ボーン番号(2バイト)、何番目の括りか」。

先頭1バイトで指定した数よりボーン配列が少ないとモデルデータを
読んだ時点で強制終了される。各配列はボーン番号順になっていないと
強制終了することがある。

多分あってると思うけど、どなたか確認調査よろしゅう。

49 名無しさん@お腹いっぱい。 :2008/09/03(水) 22:54:39 ID:aSmnfhbU0
先頭1バイト→先頭4バイト(DWORD)かと。あとはそれでいいような気がしますがどうでしょう。

50 sage :2008/09/03(水) 22:56:12 ID:aSmnfhbU0
sageわすれた・・・orz

51 名無しさん@お腹いっぱい。 :2008/09/03(水) 22:57:43 ID:aSmnfhbU0
・・・orz

52 名無しさん@お腹いっぱい。 :2008/09/03(水) 23:22:39 ID:CpH5yi4Q0
>>51
大丈夫w
MMD専用の外部板ですし、上げても下げてもとくに誰にも迷惑かからないはず。

53 名無しさん@お腹いっぱい。 :2008/09/04(木) 00:24:43 ID:9nvHUqlM0
>>49
あ、センターは別格で00固定なのか。

54 名無しさん@お腹いっぱい。 :2008/09/04(木) 00:45:09 ID:9nvHUqlM0
>>49
ボーン数は1バイトではありませんでした。他で使っている
ところと変数の型を変えているとは考えにくいので
2バイト+区切りなのかもしれませんね。

0x071070: 51 00 00 00 を 51 00 00 01 にしたら
モデルデータを読み込んだ際にCPU稼働率100%になって
戻ってこなくなりました。

>>11
>0x0006A293 〜 0x0006B52A (4760 (0x1298) バイト = 2 + 39 * 122)
> WORD nBones = 0x007A = 122; // ボーン数

55 名無しさん@お腹いっぱい。 :2008/09/04(木) 07:05:24 ID:nkYD.gBU0
>>46
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00250.zip.html

手抜きverです。とりあえず、両手とセンターを親にしたもの×2個。
ボーン先を設定してないので、アクセサリ設定しないと、方向が分かりません。

慣れればいくらでも増やせそうだけど、まあメンドい作業だ。

56 名無しさん@お腹いっぱい。 :2008/09/04(木) 07:06:20 ID:nkYD.gBU0
と、無保証なので、自己責任で。

57 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:16:28 ID:nkYD.gBU0
と、ミス(?)が見つかったのでいったん削除します。

58 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:25:55 ID:C5bs4Rp60
>>55
UPありがとうございます。
片手位置に2つずつボーン確認いたしました。
# 依頼主ではありませんがw


自分でも作ろうと思っているのですが需要がありそうなのは、

・頭ボーンを親にした獣耳ボーン
・上半身ボーンを親にした翼ボーン
・下半身ボーンを親にした尻尾ボーン

って感じでしょうか?
# ひじボーンを親にしたセイバーボーンとかもマニアックだけど需要があったり?

どこまで使用者がでるか不明ですが
上記のようなボーンを作る場合、どんな共通ボーン名がいいんでしょうねぇ。

59 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:32:38 ID:nkYD.gBU0
上げなおしました。
アドレスは一緒です。

削除前のを落とした方で、どこがミス(というか放置してたもの)が分かったら、適当に伸ばして遊んでくださいw

60 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:38:47 ID:ekE3Z1xw0
>>58
うw やはりそのリクエストは出るか。

>>55の人には申し訳ないが、せっかくだしあげておこうかw
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00251.zip.html

61 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:48:28 ID:nkYD.gBU0
>>60
おお、全ボーンについてる。凄い。
何かツール使ったのですか?

62 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:55:15 ID:ekE3Z1xw0
手作業ですorz

当初、センターの親ボーンもつけてましたが、単に親に設定しても
使えない代物だとわかったので名残だけあります(バイナリでみると
わかるかも)。
あと付けるとしたらボインミサイルなど用の両胸と両ひざ、
バレーボールなどスポーツ用プロテクタに使える両ひざ、
スカーフを巻く首、指先全部ってとこかなぁ。
めんどくさいのでおまかせしますがw

63 名無しさん@お腹いっぱい。 :2008/09/04(木) 08:58:16 ID:ekE3Z1xw0
上のを書いた後に閃いた。センターの親じゃなくて、
センターと両足IKとつま先IKの親にすればいいんだ。
ジャイアントスイングとかに使えそうだなと。

64 名無しさん@お腹いっぱい。 :2008/09/04(木) 09:05:29 ID:nkYD.gBU0
>>63
なるほど。
モデルをダミーボーンを中心とした円運動させるときに有効ですね。

65 名無しさん@お腹いっぱい。 :2008/09/04(木) 09:09:57 ID:C5bs4Rp60
唐突ですが
knum は自分に影響を与える IKボーンナンバーみたいですね。

i K number で knum なのでしょうかねぇ

----

MMD Ver2 osm ファイルを書き換えてボーンファイルを IKボーンにできたので
MMD Ver3 でもIKボーンとして設定できるのでしょうねぇ

右手首をIKボーンにしてみたMMD Ver2
ttp://v-nyappon.net/img/jpg/w_h/img_cache_d_218793_2_1220292583_jpg.jpg

66 名無しさん@お腹いっぱい。 :2008/09/04(木) 09:12:04 ID:C5bs4Rp60
あと自分のようなズブズブの素人のために
↓のようなものもつくりかけていたりw

http://v-nyappon.net/img/jpg/w_h/img_cache_d_221338_1_1220486260_jpg.jpg

67 名無しさん@お腹いっぱい。 :2008/09/04(木) 21:35:23 ID:ekE3Z1xw0
ダミーボーン付リン改訂版です。
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00254.zip.html

「全ての親」ボーンを追加しました(内部的にはセンターと各両足IKの親)。
・その場歩きのモーションを流用して位置移動したり
・Z軸上で歩いているのをX軸上に歩いているように見せたり
・「全ての親」ボーンを基点にして他キャラと絡ませたり
応用範囲は結構広いと思います。

例によって動作保証しません。

68 名無しさん@お腹いっぱい。 :2008/09/04(木) 22:43:31 ID:WSzaWBic0
>>67
なるほど、これは便利ですね

69 名無しさん@お腹いっぱい。 :2008/09/05(金) 00:15:39 ID:45zPUoZU0
モデルデータではなく VMD 等他のMMD関連ファイルの話もここでOKでしょうか?
#

ダミーボーン絡みで VMD 内のボーン名をリネームして他のモーションを割り当てとかも
確実にためしてる人が増えてると思うのですが、改造スレ立てるほどでも無さそうなんですけど。

70 名無しさん@お腹いっぱい。 :2008/09/05(金) 01:15:42 ID:BibOytnE0
>>67
ちょっと妙な所があるような?

http://www1.axfc.net/uploader/File/so/10639.png
http://www1.axfc.net/uploader/File/so/10640.png

ヒザから何か出てる感じで、それが残ってる?

まあ、特に支障は無いですが、一応。

>>69
いいんじゃないでしょか。
MMD全般の解析スレってことで。

71 名無しさん@お腹いっぱい。 :2008/09/05(金) 01:54:03 ID:xTuxMInY0
>>70
隠しボーンとして選択不可(07)でダミーボーンと接続先ボーンを
残しているためだと思われます。気付かなかった、ありがとう。

0x069BA9と0x069C1Eの接続先ボーン設定を切る(0000にする)か、
接続先の座標を同じにすれば消えると思いますが、実用上特に
問題ないようなのと面倒なのでとりあえずそのままにしておきます。

72 名無しさん@お腹いっぱい。 :2008/09/05(金) 02:20:23 ID:o1AqLb5k0
モデルの色は表しか変わらないの?

73 名無しさん@お腹いっぱい。 :2008/09/05(金) 03:00:43 ID:45zPUoZU0
>>70
ありがとうございます。


ではお言葉に甘えて

VMD(Vocaloid Motion Data)のデータ構造
http://v-nyappon.net/img/jpg/w_h/img_cache_dc_1273397_1_1220551200_jpg.jpg

0x00000000 〜 0x0000001D ファイルの頭30バイトは固定
0x0000001E 〜 0x00000031 モデル名20バイト固定 (0x00 終端,余白は 0xFD)

0x000032 総キーフレーム数

---

・各フレームのモーション部

頭15バイトがボーン名
次の3バイト+区切り1バイト?がフレームナンバー

X,Y,Z 回転Quatanion X,Y,Z,W の計7つがFloatで


16や6Bがいっぱい並んでいる所は、X,Y,Z,回転の補間のハンドルの位置が1バイトずつ
ただ、これに関してはまだ不明な点が多いのでお判りの方補足お願いいたします。

74 名無しさん@お腹いっぱい。 :2008/09/05(金) 19:45:02 ID:SDkYDxm20
v2版mmd用の腕IK設定ファイル(実験用)を作ってみました。
動作保証は出来ないけど、気が向いたら試してみてね。

http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00262.lzh.html

パスワード:miku

75 名無しさん@お腹いっぱい。 :2008/09/05(金) 22:17:39 ID:45zPUoZU0
>>74
腕IKいい感じですねぇ、改造お疲れ様でした。
MMD Ver3 のボーン追加とあわせると間違いなく便利になるでしょうね。


お作りになられた腕 IK ではできませんが
右腕 IK の位置をモーション書き出しして、VMD を改造して左腕 IK のモーションとして読み込めば
手をつないで歩く時の手の位置合わせが劇的に楽になると想像しているのですけどねぇ。

---以下妄想---------------
たぶん、親設定等を変えてセンターや両足IKのように絶対座標での位置が記録されるボーンにすれば
上記のことができるようにはなると思うのですけど、
体を回しても腕先がついてこなくなるっていう弊害もありそうなので
一概にどっちがいいといえないのが微妙ですね。
--------------------------

76 名無しさん@お腹いっぱい。 :2008/09/05(金) 22:59:03 ID:BibOytnE0
>>65
みれば、IK追加もすぐ出来そうだけどね。

77 名無しさん@お腹いっぱい。 :2008/09/05(金) 23:44:05 ID:KvbEthS20
>>74
おお、これはすごい!
実はV3の腕IK追加の改造をやっていて、どうしても指先がうまくいきませんでした。
UPしていただいたものを参考に精度を変えてみたらぐっとよくなったので
アップしてみます。
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00264.zip.html
pass:miku
完成度は74さんのに比べると低いですが、ご意見などあればお願いします。

78 77 :2008/09/06(土) 00:26:15 ID:F308kDNQ0
すみません、アップしたものは左手の指IKの精度設定が直っていません。
直したらアップしなおします。

79 名無しさん@お腹いっぱい。 :2008/09/06(土) 01:55:27 ID:H/RBJWuo0
>>74氏の腕IKすごい!

これにダミーボーン組み込んでV3用にしたら、恐しいことになりそうだw
このスレ、樋口Mがニヤニヤしながら見てるんじゃないかって気がしてきたよ。
みんなで驚かしてやろうぜwww

80 名無しさん@お腹いっぱい。 :2008/09/06(土) 05:15:46 ID:F308kDNQ0
MMD V3用の腕IKつきモデル、>>74さんの仕組みを全面的に取り入れて
再アップしました。

http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00264.zip.html

すばらしいサンプルをありがとうございました!

81 80 :2008/09/06(土) 05:16:50 ID:F308kDNQ0
すみません、passはmikuです。

82 名無しさん@お腹いっぱい。 :2008/09/06(土) 06:09:05 ID:H/RBJWuo0
ダミーボーン追加モデル、リン一部追加&ミクです。
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00265.zip.html

一部ボーン名を変更しています。

83 名無しさん@お腹いっぱい。 :2008/09/06(土) 06:12:01 ID:H/RBJWuo0
>>80
腕IK化が落ち着いたらダミーボーン組み込んでみるよw

84 名無しさん@お腹いっぱい。 :2008/09/06(土) 09:14:11 ID:WefYULFA0
>>74>>80
ポーズ変更がIKだけで出来る!
これは手抜きに超便利。標準付属モデルにしたいぐらいだw
V3からIKのON・OFFが自由になったから良いですね。

一つアイデアとしては、眼球にIKを付けたら、
そのIKを空間の任意の位置に固定して
踊りながらも遠く一点を見つめる視線固定(追随?)なんかもできそうですね。

85 名無しさん@お腹いっぱい。 :2008/09/06(土) 09:33:36 ID:sRWAON9I0
腕IKモデルすごいです。
今作ってるモーションで、これがあると格段に制作が楽になります。
なかったら多分発狂ものの作業…。
本当にありがとうございます。

86 名無しさん@お腹いっぱい。 :2008/09/06(土) 09:44:46 ID:X7BIjqtM0
また一つ、ボーンの kind が判明しました。
『05』で knum に指定されているボーンに対して回転のみ追従します。

この kind が使われているところで判りやすいのが、左右の目と両目ボーンです。

判りやすいように osm ファイルから引用します
------------------------------

Bone 4{左目
3; // Parent No.
89,5,71; // To,kind,knum

Bone 5{右目
3; // Parent No.
90,5,71;

---

Bone 71{両目
3; // Parent No.
111,0,0; // To,kind,knum

------------------------------
以上必要部分のみ抜粋

上記どおりの設定で両目ボーン(71)の回転に左右の目が追従します。
同様の設定をダミーボーンに施した所、想定した通りの動作が確認できました。

この機能を使うことにより車両ボーン等を作ったときにタイヤを一つの回転にあわせて回転させることが出来ます。
他にも組み合わせて動く歯車等にも使えると思います。

87 名無しさん@お腹いっぱい。 :2008/09/06(土) 09:51:10 ID:Wb7uobY60
IKの精度ってのがいまいちわからん。
osm見ると
40,0.5
って感じで、パラメータが2つある。
角度っぽいけど、どうなんだろ。

88 名無しさん@お腹いっぱい。 :2008/09/06(土) 10:01:11 ID:X7BIjqtM0
ボーンの kind ですが、


IKボーン全般に設定されている『02』

足全体や小指に設定されている『04』
ネクタイ4、左右つま先等に設定されている『06』

以上がありました。
# 00:回転のみ 01:移動&回転 02:IKボーン(?) 05:knum の回転軸に回転が追従


kind に『00』『01』『02』が入っているとき以外は knum が設定されているようなので
『05』の回転追従と同様になんらなかの影響を knum に設定されたボーンから
受けている可能性があるものと思われます。


抜けや詳細が判明いたしましたら、お手数ですが補足よろしくお願いいたします。

89 名無しさん@お腹いっぱい。 :2008/09/06(土) 10:09:42 ID:Wb7uobY60
>>88
kindの4は、オリジナルは小指じゃなくて髪に設定されてる。
4はknumのIKボーンの影響を受けるボーンの種類かなと。

90 名無しさん@お腹いっぱい。 :2008/09/06(土) 10:10:55 ID:Wb7uobY60
あと、6は選択できないけど見えてるボーンという感じがする。

91 80 :2008/09/06(土) 11:20:55 ID:F308kDNQ0
>>83
実は手元にダミーボーンモデルに腕IKを組み込んだものがあります。
ところが1つ問題があって公開をしていません。それは
「ダミーボーンはIKに追従しない」
という問題です。
IKの影響を受けるのはIKチェーン内にあるボーン(黄色いヤツ)とIKの直系の子孫だけみたいです。
黄色いボーンの子、というだけではIKには追従しないのです。
動かすには腕のダミーボーンをIKチェーン内に組み込むかIKの子にしないといけないみたいです。
それをどうするかが難しい・・・orz

とりあえず現状でダミーボーン付モデルに腕IKをつけたものをアップします。

http://www1.axfc.net/uploader/He/so/135440.zip

92 名無しさん@お腹いっぱい。 :2008/09/06(土) 11:23:37 ID:F308kDNQ0
またpass忘れた・・・orz mikuです。

93 名無しさん@お腹いっぱい。 :2008/09/06(土) 11:40:00 ID:H/RBJWuo0
>>91
ダミー付リンモデルに隠しボーンがあるのは
それが原因だったりしますw

94 ナクアダ :2008/09/06(土) 23:37:45 ID:SQNG.7xM0
パーツ分割ツール (MmdSplit) + MmdDump (修正版)
http://www10.uploader.jp/dl/mikumikudance/mikumikudance_uljp00270.lzh.html

MmdSplit:モデルファイルの材質を複数のパーツに分割するツールです.
(*.xx ファイルでは動作未確認.)
分割位置の探し方も説明書に記載しました.

MmdDump:頂点インデックス表/エッジ表のオフセット値のバグを修正.

95 名無しさん@お腹いっぱい。 :2008/09/07(日) 02:29:28 ID:Zemk0TEU0
>>94
分割できたら、袖だけ消すこともできますか?
まぁ、やってみろって感じですね。

96 名無しさん@お腹いっぱい。 :2008/09/07(日) 03:12:22 ID:PBf3Hphk0
何とかクレア風に出来たけど、色変えるの難しいね。
狙った色になかなか出来ないorz
http://www1.axfc.net/uploader/File/so/10728

あれ、裏側が
http://www1.axfc.net/uploader/File/so/10729

裏側は色変えられない?
モデルスレは、ボーンで手一杯みたいだし
誰か分かりますか?

97 名無しさん@お腹いっぱい。 :2008/09/07(日) 03:17:21 ID:PBf3Hphk0
誤爆したorz
こっち忙しそうだからMMdスレにレスしようと思ったのに。

98 名無しさん@お腹いっぱい。 :2008/09/07(日) 03:43:36 ID:eZP8Snjc0
>>94
おつかれさまです。
まだ、俺を嫁しか読めてませんが試して結果も書かせていただきますね。


>>96
それ、裏側の色じゃなくてエッジの黒のはずなのです。
なので変えられないはずです。

99 名無しさん@お腹いっぱい。 :2008/09/07(日) 05:05:00 ID:PBf3Hphk0
うあ、レスどうも。
向こうにレスし直そうか悩んでたです。
色じゃなかったんですね、ありがとう。

100 名無しさん@お腹いっぱい。 :2008/09/07(日) 06:00:06 ID:eZP8Snjc0
>>99
透過している状態でエッジなしでもよいのでしたら
MMD Ver3 より V キーを押したときの透過表示のままで出力できるのでそれを使うのも手かもしれません。

地面影も消えるのですけどねぇ。

http://v-nyappon.net/img/jpg/w_h/img_cache_dc_1285120_1_1220734787_jpg.jpg




■ したらば のおすすめアイテム ■

乙嫁語り 1巻 (BEAM COMIX) - 森 薫

アミルさん20歳で既に行き遅れ扱いされてるけど俺ときたら…

この欄のアイテムは掲示板管理メニューから自由に変更可能です。


掲示板管理者へ連絡 無料レンタル掲示板