はじめに
BlenderでMMDモデルを趣味で制作しています。
MMDで動画を撮ろうとすると、舞台のギミック等を自力で作る必要があるかもしれない、と、ふと思いました。
今回は簡単に歯車を作ってみました。
制作の過程で気付いたこと、失敗したことをメモ代わりに残しておく、ただの日記です。
大きく分けて3つの発見がありました。
- UVマップの切替(Active UV Loop Layer, Active Render)
こちらは前回の投稿で扱いました。
今回のテーマは残りの2点です。
- 面の向きを揃える
- エクスポート時(.pmx変換時)に適用されるUVマップ
尚、記事の内容については正確性を保証致しません。
「解説」ではなく、個人のメモ、備忘録のような情報としてお読みください。
以下の環境でモデルの作成を行っています。
ソフト、アドオン | 版 |
---|---|
Blender | 2.83LTS |
MMD Tools | 2.4.0 |
PmxEditor | 0.2.5.7 |
記事では、各機能や設定についてハイライトで色を分けています。
- Blenderの機能・設定
- MMD Toolsの機能・設定
- MMD Toolsの機能で作成されたもの
今回の成果
歯車が回転する様子を再現してみました。
歯車の形状に細部までこだわると、かなり厳密な角度・長さの計算が必要になるようですね。
今回は大雑把に「歯車っぽく」見えればいいかな、くらいの気持ちで作りました。
中心の赤い歯車を付与親として、黄、青の歯車に値「-1」の回転付与を設定してあります。
今回は歯車を作りましたが、例えば車輪、プロペラ等も回転付与を利用すれば効率よく動きを再現できそうです。値の正負を調整する必要はありそうですが。
回転付与を設定しなくても、MMDでそれぞれの歯車に対してキーを打っていく方法でも同じモーションは作れると思います。
しかし、やはりそれは手間がかかるので、オブジェクトが何らかの法則に従って動くのであれば、活かせる仕組みは使った方が良さそうです。
今回はたった3つの歯車ですが、それでもひとつひとつの歯車に対してキーを打つのは大変だと思います。
そう考えると、回転付与やIK等は、大切な仕組みだと気が付きました。
IKで言えば、予め角度制限等を設定しておけば、IKを操作した時に自然なボーンの繋がりで動いてくれる訳ですから、ひとつひとつボーンを操作するよりも、IKで大まかに形を決めてDボーンで微調整する方が、作業効率と作品のクオリティを高めるのではないか、と思います。
制作メモ
制作の過程で気付いたこと、失敗したことを記します。
面の向きを揃える
面の向きに関する失敗例です。
画像をご覧ください。
四角形の面で色が透明に(白く)欠けてしまっているのが確認できます。
(分かりやすいようにテクスチャ画像を変更しています。)
PmxEditorの材質タブからエッジを有効化すると、よりハッキリします。
輪郭の色には黒を指定していますが、輪郭だけでなくほとんどの部分が黒く染まってしまっています。
原因は面の向きが揃っていないことにありました。
Blenderで面の向きを確認すると、黒く染まっていた部分は面が内側を向いてしまっていることが分かります。
面の向きを外側に統一し、問題を解決しました。
どこで面の向きが変わってしまったのか?については、不明です。
グリッドフィルで面を埋めた辺りが怪しい気がするのですが、確証はなく、推測に過ぎません。
参考書や動画に沿ってモデルを作成すれば、面の向きについては必ず注意を促されると思います。
それ故に、実際に面の向きが引き起こす問題に当たることは今までなかったので、体験ができて良かったと感じます。
- テクスチャ画像の表示が崩れる時は面の向きを確認する
エクスポートされるUVマップ
.pmxに変換時、適用されるUVマップについて気付いたことです。
発生する問題
画像の状態で.pmxに変換しエクスポートしました。
UV Map | Active Render | Material | Image |
---|---|---|---|
UVMap.001 | UVMap.001 | Material.001 | tex_gear01.png |
- メッシュにUVマップ『UVMap.001』が適用されている(Active Render)
- 『UVMap.001』を元にテクスチャ画像『tex_gear01.png』を作成
- マテリアル『Material.001』は『tex_gear01.png』を含む
- メッシュに『Material.001』が適用されている
上記の条件を満たしているので、3Dビューポートで表示されている歯車がエクスポートされているはずです。
PmxEditorでファイルを開き、材質タブで『tex_gear01.png』を適用します。
テクスチャ画像がUVマップと合っていません。
問題の原因を探る
Blenderで画像の状態を再現してみます。
UV Map | Render Layer | Material | Image |
---|---|---|---|
UVMap.001 | UVMap | Material.001 | tex_gear01.png |
メッシュに適用するUVマップが『UVMap』である状態と同じようです。
テクスチャ画像『tex_gear01.png』を背景に『UVMap』を重ねると分かりやすいですね。
このことから推測できるのは
- 『UVMap.001』でなく『UVMap』が適用されエクスポートされた?
ということです。そして、ひとつの疑いが浮かんできました。
- リストの先頭に位置するUVマップがメッシュに適用されるのでは?
エクスポート時は、BlenderのActive Renderの設定に関わらず、リストの先頭に位置するUVマップがメッシュに適用される、のかもしれません。
尚、この記事では、オブジェクトデータプロパティ「UVマップ」に表示されるUVマップ一覧を、リスト、と呼称しています。
実験
疑問の答えを探します。
実験Ⅰ
実験の条件です。
- .pmxで適用したいUVマップをリストの先頭に配置する
下の画像の状態で再びエクスポートしてみました。
UV Map | Render Layer | Material | Image |
---|---|---|---|
UVMap.001 | UVMap.001 | Material.001 | tex_gear01.png |
初めにエクスポートした時と同じ条件です。
唯一異なっているのは、『UVMap.001』がリストの先頭に位置している、その点のみです。
(『UVMap』のコピー『UVMap.copy』を作成後、『UVMap』は削除)
このファイルをPmxEditorで開きます。
期待した通りの状態でエクスポートできたようです。
実験Ⅱ
実験の条件です。
- .pmxで適用したいUVマップをリストの先頭に配置する
- Active UV Loop LayerとActive Renderには異なるUVマップを適用
下の画像の状態で再びエクスポートしてみました。
UV Map | Render Layer | Material | Image |
---|---|---|---|
UVMap.copy | UVMap.copy | Material.001 | tex_gear01.png |
『UVMap.001』がリストの先頭に位置している点は先程の実験と同じです。
この実験では、あえて間違ったUVマップである『UVMap.copy』を選択、メッシュに適用した状態でエクスポートしています。
(『UVMap.copy』は『UVMap』を複製したものです。)
このファイルをPmxEditorで開きます。
実験Ⅰと同じ結果が出たようです。
結論
結論です。
- リスト先頭のUVマップがメッシュに適用され、エクスポートされる
モデルを.pmxに変換する際、Active UV Loop LayerとActive Renderで選択されているUVマップに関わらず、UVマップのリストの先頭に位置するUVマップが適用されてエクスポートされる、ようです。
従って、UVマップが複数作成してある場合、エクスポートしたいUVマップをリストの先頭に配置させる必要があるようです。
尚、ここで言う「先頭」とはフィルタリングオプションを使用していない状態でのリストの先頭であることを意味しています。
言い換えれば、UVマップの中で最初に作成された、最初から存在しているUVマップ、ということになります。
- いちばん古いUVマップがメッシュに適用され、エクスポートされる
詳細は後述します。
尚、開発環境が異なれば、仕様の違いでこの問題は発生しない可能性もあると思います。下記の開発環境で発生しました。
ソフト、アドオン | 版 |
---|---|
Blnender | 2.83LTS |
MMD Tools | 2.4.0 |
PmxEditor | 0.2.5.7 |
あるいは、単純な見落としで、MMD Toolsの何処かにUMマップに関する設定項目があるのかもしれません。
余談
UVマップの複製方法
簡単な動画を作成しました。
UVマップの複製方法です。
- 複製するUVマップを選択する(ハイライト表示させる)
- プロパティ「UVマップ」で「+」ボタンをクリック
- 複製されたUVマップが新規UVマップとして作成される
(新規UVマップはリストの最後尾に配置される)
UVマップの削除方法です。
- 複製するUVマップを選択する(ハイライト表示させる)
- プロパティ「UVマップ」で「-」ボタンをクリック
- 選択していたUVマップが削除される
複製元のUVマップを削除すれば、既存のUVマップの順位がその分繰り上がります。
UVマップがいくつか存在しても、この手順を繰り返せば、希望のUVマップをリストの先頭に配置できると思います。
フィルタリングオプション
フィルタリングオプションで表示されるUVマップを調整した場合、エクスポートに反映されるか試してみました。
- ソート順序の反転
- UVマップの名称を『ABC』に変更し、名前順でソート
- 『Material.001』を入力し、名前でフィルタ
これによって何を確かめたいのか?
- ソートの結果を利用して、適用したいUVマップを先頭にする
- 名前順でソートし、適用したいUVマップを先頭にする
- 一字一句間違えず入力、検索し、適用したいUVマップのみ表示させる
何が何でも、適用したいUVマップを先頭に表示させようとしています。
しかし、全ての結果、デフォルトの状態で先頭に位置するUVマップが適用された状態でエクスポートされていました。
デフォルトでは、UVマップは作成された順序でリストに並んでいます。
この順序で先頭に位置する、つまりいちばん古いUVマップがエクスポート時に適用される仕様のようです。
終わりに
立派でなくても、何か作ろうとすれば新しい発見はある、と感じました。
今回は以上です。読んでくださった方、ありがとうございました。
サイト名 | ページタイトル | URL | 参考にした日付 |
---|---|---|---|
Blender | https://www.blender.org/ | 2022/12/11 | |
UuuNyaa/blender_mmd_tools | https://github.com/UuuNyaa/blender_mmd_tools | 2022/12/11 | |
とある工房 | https://kkhk22.seesaa.net/ | 2022/12/11 | |
Vocaloid Promotion Video Project | https://sites.google.com/view/vpvp/%E3%83%9B%E3%83%BC%E3%83%A0 | 2022/12/11 |