Sims 3メッシュを.packageからBlenderにインポートする方法

Sims 4 Studio公式サイトに、「Sims 3用メッシュを簡単にBlenderに読み込む方法」 (How to easily import a Sims 3 mesh to Blender from .package) なるチュートリアルがあります。 (原文:orangemittens 2015/7/1 1:56投稿) これの抄訳に、独自の補足を加筆したものです。 この手法を使えば、これまでSims 3で蓄積されたCASのカスタムコンテンツをSims 4に転用することができます。

はじめに

Sims 3用の.packageからメッシュをBlenderに直接インポートする方法を説明します。 気をつけてほしいことは、この手引きは、他人のメッシュを作者の同意なくシェアするためのものではない。 礼儀正しくしよう。 他人が苦労して作ったものを許可なく盗んではだめだぞ。

必要なもの:

1.CliptoolをBlenderにインストールする

Blenderを起動し、 File-->User Preferencesを選択。Addonsタブをクリックし、「Install from File...」をクリック。ダウンロードしたzipファイルを選択。zipの中身ではない(zipを解凍してはいけない)。 検索窓にS3と入力して、Import-Export:S3PY Animation Toolsを検索。出てきたらチェックボックスをチェック。 ユーザ設定を閉じる。設定を保存する。

ここから本題。

2.Cliptoolを使ってsims3メッシュをインポートする:

Blender(の真ん中の3D View画面)がObject Modeであることを確認する (もしそうでなかったら、Tabキーを何度か押すと切り替わる)。 File-->Open...をクリックして、先ほどダウンロードしたSims3 Sim rigを開く。 年齢と性別ごとに別のファイルになっている。afRig.blendが大人女性。cuRig.blendが子供だ。

Sceneボタン(画面右下にある【Propertiesウィンドウ】のメニューのうち円柱と球のアイコン)を押す。 「S3PY Rig Tools」の左にある下向き三角を押す。 そこで現れたLoad CASボタンを押し、Sims 3 .packageが保存されている場所までナビゲートする。 Sims 3 .packageを選択してImport Sims3 Propボタンを押す。


取りあえず、元記事の内容はここまで。 ここまでやれば、Blenderにメッシュ、UVマップ、ウェイトが移転できている状態になる。 ファイル名を指定してセーブしよう。

ここからは補足説明です。CASを作った経験のある方にとっては釈迦に説法でしょう。


3.UVマップを書き出しておく

先ほどの操作でメッシュを読み込んだら、後の作業を楽にするためにUVマップを書き出しておこう。 Blenderの左画面はUV/Image Editorになっているだろうか。なっていなければ、メニューバーの一番左の四角をクリックして切り替える。 真ん中の3D ViewのモードをEdit Modeに切り替える(Tabキーを何回か押せば切り替わる)。 ここでAを押す(全選択)と、全ての頂点がオレンジ色に変わる。 この状態で左のUV/Image Editor画面を見てほしい。 これがUVマップ、すなわち、メッシュを展開図にした二次元画像だ。 メニューバーのうち、UVs-->Export UV layoutをクリックし、UVマップを画像としてセーブする。

また、念のためにUVマップを紙に書き写し、それぞれのパーツが服のどこに対応しているのかメモする。 メッシュの頂点を選択したり解除したりすると、UVマップ上でも選択されたり解除されるので、対応が分かる。 ここまでやったら、Blenderはいったん終了してもよい。

4.雛型を作る

S4Studioを起動。 CASスタンドアロンの作成を選択してCASボタンを押す。 これから導入しようとする年齢性別と同じ年齢・性別の水着を開く。 ここでは、フリルやリボンができるだけ少ない、一番つるっとした水着を選ぶのがポイントだ。 新しいプロジェクトの画面が開いたら、「メッシュ」タブを選択して「エクスポート」を押す。 ファイル名を指定してセーブする。 これで、公式配布の水着のメッシュデータを雛型として書き出すことができる。 S4Studioはいったん終了してもよい。

Blenderを起動し、先ほどの雛型の水着を開く。 中央の3D View画面はObject Modeになっているだろうか。 なっていなければTabキーを何度か押すと切り替わる。 ここで、メニューバーからFile-->Appendをクリックし、先ほど保存したsims3メッシュを選択する。 (実際のメッシュデータはファイルのObjectフォルダの中に入っている)。

さて、これで、お目当てのメッシュと、公式配布の水着が両方重なり合った状態になっているはずだ。 お目当てのメッシュを水着にjoinしなければならない。 Blenderの右上にツリー構造の【Outlinerウィンドウ】があるだろう。 この中から、お目当てのメッシュを選択 (cuRigまたはafRigのツリーを開くとその中に入っているはずだ)。 選択したら、shiftキーを押しながら、水着の胴体部分のメッシュも選択。 両方のメッシュが選択されているだろうか。 選択する順番を逆にしてはいないだろうか。 もしOKなら、ctrl+Jを押す。すると、s3メッシュが水着メッシュに合併される。 (どのパーツが水着の胴体なのかは事前に調べないとわからない……ツリー構造の中の目玉アイコンをクリックして表示・非表示を切り替えてみると分かる)

水着メッシュの不要な頂点は除去してよい。 例えば、明らかに服の下に隠れる部分の頂点はいらない。 (こうなることを見越して、joinする前にあらかじめ不要な頂点を削除しておくのが正しいのかもしれない)。 このとき、服から露出する部分、手首から先や、脚や首回りは必要な部分なので消してはいけない。 逆に、Sims3メッシュの側に手首から先や脚が含まれている場合は、水着側と重複していないかチェックしよう。 たぶん重複しているはずだ。この場合はSims3メッシュの側のvertexを削除し、水着の方を残す。

名前を付けてセーブしたらBlenderは閉じてよい。

5.Sims 3のmaskをdiffuseに塗り替えること

Sims 3では、メッシュの表面の色の塗り分けを指定するのにマスクファイルを使っていた。 赤緑青の三色で塗り分け方を指定し、実際に何色に塗るかはCASの中で指定していた。 Sims 4では、実際に表示される色で塗った画像を指定しなければならない。 さらに、Sims 4では、服や帽子や靴の画像を一枚のdiffuse画像で指定しており、 それぞれ割り当て領域が決まっているから、 うっかり割り当て領域をはみ出すと、スカートに靴底の模様が表示されるなんていう失敗も起こる。 UVマップの割り当ては、ここで調べることができる: http://www.sims4studio.com/thread/62/fix-uv-map-template

S3PEを起動して、Sims 3 .packageを開く。 「_img」タグを持つ画像がいくつかあるはずだが、このうち赤緑青で塗り分けられた画像がmaskデータだ。これを選択して右クリックしてExport-->To Fileで保存。 (ちなみに、全体的に灰色っぽい画像があったらそれはおそらくnormal mapだ。これも保存しておくといい。) S3PEは終了していい。

先ほど保存したmaskデータをGimpで開く。 割り当て領域テンプレートを「レイヤーで開く」するといい。 ついでに、一番最初に保存したs3 .packageのUVマップも「レイヤーで開く」しておこう。

s3のマスクデータは赤緑青の3色なので、これを実際に塗りたい色に塗りなおす。 Gimpには「色域を選択」という機能があり、同じ色を一括で選択できる。 これで赤を選択して、欲しい色で塗りつぶす (shiftキーを押しながら塗りつぶすと、選択範囲全てを一発で塗りつぶすことができる)。 緑と青も同様に措置する。

できた画像のレイヤーのサイズを横1024×縦2048に変える。 そして上半身は上半身の領域へ、下半身は下半身の領域へカット&ペーストする。 袖は袖。 それ以外は右下隅の未使用領域へ。 このとき、細かい柄を持たず、一色で塗りつぶされていればよいパーツについては、 その置き場所は精密でなくてよい。 いっそのこと、縮小してしまってもよい。 ここまでできたら、diffuseマップが出来上がり。 そのレイヤーをExportする。画像の形式はpngが望ましい。 そうしたらGimpは終了してよい。

diffuseの画像を編集してしまったので、メッシュデータのUVマップも並行移動させないといけない。 Blenderで先ほどのメッシュを開き、 3D ViewをEdit Modeに切り替え、Aを押して全選択。 左のUV/Image EditorにUVマップが表示されるだろう。 UV/Image Editorの下のメニューバーのOpenボタンを押し、先ほど編集したdiffuseマップを読み込む。 メニューバーのうち、窓枠みたいなアイコンを押すと、UVマップのグループ全体を選択するモードになる。 この状態で、UVマップを選択して、適切な場所に移動させる。 G(並行移動)、SY(縦に拡縮)、SX(横に拡縮)、R(回転)を使う。

先ほども言ったが、 細かい柄を持たない、一色で塗りつぶされていればよいパーツについては、 その置き場所は精密でなくてよい。 いっそのこと、縮小してしまってもよい。 できあがったら、セーブ。


6.できあがり! ……そしてウェイトの再調整

ここまでで、手続き的にはゲームに導入できる形になっている。 S4Studioを起動し、先ほどの水着のプロジェクトを開く。 diffuseをインポート。 メッシュもインポートして、保存。 これでCASパーツは出来上がり。

だが、この状態でゲームにインストールすると…… 腕がビヨビヨになっている! これはなぜかというと、Sims3メッシュには、Sims4では廃止されたboneが指定されているためだ。

Sim3メッシュをSims4に導入するとき、weight調整する前の例 ウェイト調整せずにインストールするとこんな感じになります。 モデルはみすりるさん作Sims3用黒谷ヤマメ。 これから直していきます。

s4の仕様に無いboneの指定を解除すべし。 Blenderで当該のメッシュを開く。 Propertiesウィンドウのうち逆三角のアイコンをクリック。 Vertex Groupsの下にboneの一覧がある。 この中から、仕様にない名前を探し出して、選択。 3D View画面をEdit Modeに切り替え、Aを押してメッシュを全選択した状態で、 boneの名前を選択し 一覧の下の「Remove」ボタンを押すと、 全てのvertexからそのboneが指定解除されてweightがゼロになるはず。 それでも取れなければ、3D Viewで頂点を1つずつ選択して、weightを確認・数値指定する。

最後に、それぞれの頂点に指定されたweightの合計がきっかり1になるように調整する。 このためには、中央の3D View画面をWeight Paintモードに切り替える。 左方のToolウィンドウのToolsタブを選択 (もしToolsウィンドウが非表示になっていたら、Tキーを押すと表示・非表示を切り替えることができます)。 Weight Toolsを展開する。 Normalize Allボタンを押し、下のほうに「Normalize All Vertex Groups」と表示されたら、 Lock Activeのチェックを外す。 これで、すべての頂点についてweightの合計がきっかり1になる。 ここでいったんセーブしよう。

まったく同じ座標に複数の頂点が存在することがある (布地の折り返しや、前身ごろと後ろ見ごろの継ぎ目など)。 こういう重複verticesをmergeするのも効果がある。 なぜこれで問題が改善するのかは分からない。

Sims 4で廃止されたboneがどれなのかは、s4s公式ページのリストで確認すべし。 実務的には以下のboneがあったら怪しい:

R_Breastは、CAS_R_Breastという名前に変更されているはず。 したがって、vertexごとに指定を書き換えないといけない。 vertex一個ごとに設定していては日が暮れる。まずEdit Modeに切り替えて全選択。 右下のPropertiesウィンドウのbone一覧でR_Breastを選択し、その状態でR_Breastの文字をダブルクリック。 そうするとboneの名前を変更することができるので、b__CAS_R_Breast__と入力すればよい。

7.ゲームにインストールしてテストする

一発で完成するわけではなく、実際にゲームにインストールして使ってみて、 おかしい箇所を見つけたらスクリーンショットを撮影して、画像を見ながら原因を分析する。 椅子に座る、腕立て伏せをするなど、座標は変わらないが胴体が大きく動く動作をしてみて、 メッシュの動きが正しいか確認しよう。

慣れれば2〜5の作業で1日、6の作業で2日くらいでしょうか。 ノーマルマップやLODをいじったらさらに1日くらい?


改稿:October 9, 2017

初稿:September 20, 2017

表紙に戻る