Blender2.55に対応。

Blender pluginを独立させました。

履歴

バージョン
1.05テクスチャのbugを修正(textureSlotに作ったImageTextureが結びついていなかった)
1.04blender2.55向け修正。pmd_importを修正
1.03blender2.55向け修正。パッケージ方法変更
1.02blender2.53でCモジュールを読ませるのにいろいろ問題があるので、pythonのみで代替モジュール作って追加した。
pmdの剛体を未実装。
リポジトリにビルド用に不足しているファイルなどを追加した。
1.00blender2.53に対応した。
0.15mqo_exportでapply modifierオプションを追加(2.5のみ)
pmd_exportで面法線じゃなくて頂点法線をエクスポート。uvのバグ修正。など
0.14bone groupでボーンの表示枠を保持するようにした。toontextureを保持するようにした。
sphereマップの互換性を高めた。pmd_exportのモーフィングバグを退治した。など
0.13pmd_importのsphereマップに対応。pmd_exportでテクスチャに対応
0.12中身リファクタリング。pmd_importとmqo_importのmaterial調整、透明テクスチャ。pmd_exportでのmaterial順を修正
0.11pmd_importのconstraintの名前の保存方法を変更。pmd_exportもそれにあわせて変更。
pmd_import, mqo_importのsmoothing周りを修正。mqo_importのsmoothingの角度判定はまだ。
pmd_importの面の表裏を修正。
0.10mqoエクスポートの表面反転を修正。mqoインポート・エクスポートのscaleが動作するように修正。pkg作成を修正
0.920種類ほど読み込んで微調整した。また、pkgの作成ミス。ほんとすまん
0.8ボーンエクスポート修正。剛体バグ修正。pmdの更新に追随できていないのでvmd_importを一時はずし
0.7不足ファイルの追加。剛体実装
0.6前後のバージョンで必要なファイル(bl24.pyとbl25.py)が抜けてました。すまん

Blender2.55プラグインの使い方

Blenderプラグインを独立させてzipアーカイブで配布することにしました。 meshio-blender25-1.03.zip です。

zipアーカイブを展開して、addonsというディレクトリの中身を blenderの2.55/scripts/addonsにコピーしてください。

更に、 C:\Python31\lib\site-packages\meshioディレクトリを 2.53\python\libにコピーしてください。 (C:\Python3\lib\site-packageとかを見に行ってくれないっぽい)
meshio(Cモジュール)は無くても動くようになりました。 前バージョンでコピーされている場合は削除してしまってください。

ファイルのコピーが終わったらBlenderを起動して、Fileメニューからpreferenceウィンドウを開いてaddonsタブを選択。 pmd, mqoのインポータ・エクスポータの右側のチェックボックスをオンにして、defaults。 ファイルメニューのImportまたはExportにオンにしたAddOnが表示されるようになります。 plugins.png

ファイル配置

1.02でのファイル配置はこうです。

C:\blender-2.53-beta-windows32
  +blender.exe
  +2.53
    +scripts
      +addons
        +bl25.py
        +io_import_scene_mqo.py
        +io_export_scene_mqo.py
        +io_import_scene_pmd.py
        +io_export_scene_pmd.py
        +pymeshio
          +__init__.py
          +enlishmap.py
          +mmd.py
          +mqo.py
          

日本語パスの扱いについて

Blenderのファイルセレクタで日本語を含むパスを選択すると

 UnicodeDecodeError: 'utf8' codec can't decode byte 0x83 in position 32: unexpected code byte
となります。 内部的にsjisを含む日本語パスをpython3に渡すときのエラーです。 日本語を含まないディレクトリにpmdとテクスチャをコピーして、pmdファイル名も日本語を含まないようにしてください。

表示設定

3D View で「N」キーでトグルする右側のメニューのディスプレイパネルの中
Shadingで「GLSL」を選択する。
3D Viewを「Textured」にする。
シーンにLampを置いてタイプを「Sun」にする。

この状態で見やすいように調整しています。

2.55ベータ用

Blender2.55ベータで動作確認しました。 本体はBlenderの公式サイトでダウンロードできる2.55ベータを使ってください(2010/12/28)。

Blender2.4プラグインの使い方

python2向けバインディングをインストールするとC:\Python26\blender24にインポータ、エクスポータがコピーされます。 これらのファイルを.blender/scriptsにコピーしてください。

日本語パスの扱いについて

文字化けしてファイルセレクタから選ぶことが困難ですが選択できればうごくはず。

表示設定

GAME - Blender GLSL Material
にして
GAME - GLSL Material Settings - Enable Lighting
を切る。
そいで、3D Viewを Textured にした状態で見やすいように調整しとります。

機能

plugin頂点・面マテリアルUVボーンとボーンウェイトモーフ剛体情報
mqo import(24)
mqo import(25)
mqo export(24)
mqo export(25)
pmd import(24)実装予定無し
pmd import(25)
pmd export(24)実装予定無し
pmd export(25)

mqo

頂点・面

ほぼ1対1に対応。 Blender側に1メッシュにつき16マテリアルの制限があるので16以降のマテリアルインデックスが捨ててる(その面のマテリアルが無くなる)。

マテリアル

shader=1(Constant)

FRESNEL

それ以外

LAMBERT

pmd

頂点・面

ほぼ1対1に対応。 Blender側に1メッシュにつき16マテリアルの制限があるのでメッシュを分割するときがある。 このためはじめにモーフィングのある頂点を含むマテリアルだけを集めて1つめのメッシュとして、 残りを16マテリアル毎にメッシュを作るようにした。 頂点・面共に順番が維持されない。

ToDo

エクスポート時の法線

マテリアル

FRESNELシェーダーを使用。

pmdblender
rgbadiffuse
specularTOON, specular
ambientmirror
flagsubsurface_scattering

sph
mapping Normal
projection Sphere

spa
mapping Normal
projection Sphere
blend Add

UV

ToDo

インポート時の一部UV回転(blenderの0インデックス問題っぽい)

ボーンとボーンウェイト

名前は、pmdのボーン名を標準モデルの英語名に基づいて作ったマッピングで英語に変換している。 変換表に無かったらそのまま。 ボーンウェイトは、頂点グループに保存している。 Blenderの頂点ウェイトは影響ボーン数の制限が無いので、エクスポート時は上位2つまでを選択するようにしている。 先端ボーンをボーンレイヤー2に送り込んで非表示にしている。 IKはtailのチェックをはずしている。
表示枠をボーングループで代用。

モーフ

シェイプキー。 名前は、pmdの表情名を標準モデルの英語名に基づいて作ったマッピングで英語に変換している。 変換表に無かったらそのまま。 確認作業用にpinを有効にしている。

トゥーンテクスチャ

ToonTexturesというオブジェクトに10個のトゥーンテクスチャを保持

剛体

名前は日本語のまま。Blender2.5を改造して日本語フォントを選択すればちゃんと表示されるのだが・・・ どうするか保留中。 オブジェクトのトランスフォームが剛体のサイズ、位置、オイラー角を保持している。 そのほかのパラメタータはカスタムプロパティに保存。

制約(constraint)

オブジェクトのトランスフォームに位置を保存している。 そのほかのパラメータ(名前も)はカスタムプロパティに保存。