顔modの作り方orいじり方 作成者:ossantelephone#5973 最初に 素人の独学での方法なのでおかしいまたは間違っているところがあると思いますが、ご了承ください。 また回りくどい文章ですがご了承ください。 準備するもの ・blenderなどのモデリングツール(私はblender2.93beta) ・Sb3UGS 注意 Sb3UGSは最新のものを使いましょう。(https://gitea.com/enimaroah/Sb3UGS/releases) 古いバージョンだと予期せぬ不具合が起きることがあります。 1章 改造の基本 1.顔のmeshとmorph(blender上ではshapekey、morph=shapekey=シェイプキー=シェイプ)をとってくる ①abdata/chara/bo_head_00.unity3dが顔のファイルです。 Sb3UGSにDDしましょう。 Animatorの中のp_cf_head_00をダブルクリック、meshのタブの中のcf_O_canine以下全ファイルが顔に関連するmeshです。 すべて選択してexportを選択、unity.3dファイルと同じ階層にbo_head_00フォルダが生成され関連するテクスチャとmeshes0.fbxがexportされます。 これはボーンが含まれたmeshファイルで、morphは含まれていません。 face.fbx等適当に改名しましょう。 ②次に、meshをすべて選択したままmorphのタブを選択、そのままexport。 これでmorphが含まれたmeshファイルが①と同じ場所に生成されます。ファイル名はcf_O_canine-kuti_yaeba-0.fbxなどになります。 選択したmeshとmorphが含まれているので名前とかかわりなくほかのmeshも入っているはずです。 morph.fbx等自由に改名しておくといいでしょう。 注意:私の場合ウェイトをいじる必要があったのでボーンが含まれたmeshを生成しました。不要だと思ったらmorphだけエクスポートしてもいいかも。 2.ボーンとmorphを統合する ボーンとmorphがばらばらだと困るので統合します。 ①face.fbxをblenderでインポート、続けてmorph.fbxもインポート 注意:インポートする際はメッシュが小さすぎて見えなくなるので1000倍くらいしてインポートしましょう。 逆もまた然りでエクスポートする際には0.001倍します。エクスポートの際はリーフボーン追加のチェックを外しておきます。 これらの設定でプリセットに保存しておくと作業効率が上がります。 ②アドオンのall shapekeys transfer(https://github.com/3str6/all_shapekeys_transferhttps://github.com/3str6/all_shapekeys_transfer)をとってきてblenderにインポート、アドオンを有効化 ③オブジェクトモードでfor Vroidのツールall shapekeys transferからcf_O_xxxを一致するように転送しましょう。 ターゲットはボーンが入っている方、ソースがmorphが入っている方です。 ④③の工程をcf_O_xxxすべてで行いましょう。一部morphが含まれていないものもあるのでそれについては不要です。 ⑤morphと統合できたので不要になったmorph入りのp_cf_head_00を削除しておきましょう。 ⑥好きな名前で保存しておきましょう。便宜上meshedit.fbxとしておきます。 3.Sb3UGSで本編にインポートする方法 インポートの仕方が多分一番わかりにくいので先に説明します。 ①対象となる顔ファイルのunity.3dをSb3UGSにDDしましょう。(デフォルトの顔ならbo_head_00.unity3d) 注意1:abdata/chara/bo_head_00.unity3dにそのまま改造したmesh等をインポートしたとしてもおそらくゲーム上何の変化もありません。 それは[KK]Face Fixes v2.0.zipmodがbo_head_00.unity3dを含んだmodでそちらのbo_head_00.unity3dが優先して読み込まれているからです。 仮にゲームバニラのファイルを置き換える場合に似たようなケースに遭遇することもあると思うので、覚えておくといいです。 注意2:abdataファイル内のunity.3dでないとファイルの保存ができないようです。 仮に作成した場所でもいいのでabdataの階層下で作業をしましょう。 ②meshedit.fbxをsb3utilityにDD、ImportedMeshのタブからcf_O_face_0をobject treeにそのままDD。 オプションはそのままでokするとcf_O_face_0の置き換えができます。 注意:置き換えているのは顔meshのみです。アイラインを置き換えるならcf_O_eyelineを犬歯ならcf_O_canine等適宜に置き換えてください。 ③②の工程によってmeshの置き換えがされましたがこれによって置き換えたmeshに関連するmorphがすべてリセットされてしまいます。 このままゲームを始めるとmorphが欠けているので顔がおかしくなります。 meshedit.fbxのImportedMorphのタブから関連するmorphを選択してp_cf_head_00のmorph欄にDDします。 faceのmeshの場合eye_faceとkuti_faceの二つのmorphをインポートするとよいでしょう。 オプションはそのままでいいはず。 ④bo_head_00のタブに戻ってfileからsave.unity3dをしましょう。 これで変更内容に保存されるはずです。 ※既存のheadmod(頭部を小さくするmod)を利用する場合 headmodはmesh自体に変更を加えるものではなくボーンのスケールをそのまま小さくしているようです。 具体的にはp_cf_head_00/N_tonn_face/N_cf_haed/cf_O_face/cf_O_face/SkinnedMeshRenderer/45bones以下のcf_J_FaceUp_tyのscaleでXのみ0.9124088倍しています。 headmod仕様にしたい場合は同じ数字を同箇所に入れたうえでupdate bones & framesにチェックを入れapply changesをすると、同じ頭の大きさになります。 私も2週間以上これがわからなくて苦労しました。 ※以下は不要かもしれません 4.meshをいじる前に ゲームオリジナルファイルからmeshを取り出した場合、口と耳の周りのmeshはつながっていません。 このままだとmeshをいじるのにも苦労しそうなので、私の場合は重複頂点を統合しました。 これによってなんらかの不都合があるかもしれませんが、顔はどうせ別mod化するので問題ないかもしれません。 ①blenderでオブジェクトのcf_O_face_0.000を選択、編集モードでaを押して全選択してからメッシュの「マージ」 「距離で」を選択。 統合距離は極力小さく、おそらく124個の頂点が統合されたら大丈夫なように思います。 ②おそらく問題ないのでそのまま頂点を統合したmeshとして保存しておきましょう。 以上で準備終了です 後は自分がやりたいことをやっていきましょう。 以下自分がやったことについて感想コメントです。 ・口回りの改造 弄るのは基本cf_O_face_0のmorphが中心で、変化も目に見えてわかりやすいのでいじりやすいです。 歯と場合によってはnoselineの調整が必要なことがあります。 weightの調整も目と違って範囲が限られているので楽な方です。 ・眉の改造 眉は別meshになっているので自由に調整がしやすいので簡単でした。 ・目周りの改造 cf_O_face_0の目に関するmorphをいじったとき、eyelineやhitomiのmeshは追随しないのですべて合わせていじる必要があります。 これに合わせて場合によってはmayuやnamidaの位置調整が必要になります。 それに加えて特に目のmorphを大きく弄るとき、weightの再調整をしないと思ったようにきれいにならないと感じました。 これらの調整を全部しているとかなり時間がかかるので、いきなりやると多分息切れします。 ・weight弄り キャラメイクのスライダーにかかわる変更になります。 一部スライダーの挙動に不満があったのでいじってみました。 沼。 ・meshそのものの変更 釣り目っぽくしたいのでmeshそのものの変更をしようと思っていますが、weightの最終調整で悩んでいてまだできていません。 極端な形の変更をしないならそんなに難しくないように思います。 以下自分がやったことの大まかな手順をまとめておきます。 2章 口回りの改造と眉の改造 概要 1.morphの個別調整 2.noselineの再生成 3.歯と舌の位置調整 4.weight調整 5.おまけで眉の改造 ※morph編集前に ここからはmorph変更後の実際の変化をゲーム内で確認していくことになります。 インゲームでリアルタイムに確認するために準備をしましょう。 私の場合既存のheadmodを改造してhead_mod2.unity3dを編集しているのでそれを前提に。 ①zipmod内でabdata/chara内にhead_mod2.unity3dが梱包されているので実際にabdata/chara/内にhead_mod2.unity3dを置きます。 ②zipmod内のhead_mod2.unity3dは一時的に削除します。これでリストのみ存在するので実際のゲームフォルダ内のhead_mod2.unity3dが読み込まれるようになります。 ③runtime unity editorをf1メニューから探します。ショートカットキーを適当に設定します。 ④head_mod2.unity3dを直接編集して中身を変更した後は、runtime unity editorを呼び出してclear bundle cacheを押します。 すると変更後のアセットを読み込んでくれるので、リアルタイム編集ができるようになります。 1.morphの個別調整 ①cf_O_face_0のなかのkuti_face.f00_xxxが口表情のmorphなのでこれらを個別に調整します。 なんとなくローマ字で読めるので(kuwaeなら咥えとか)あたりを付けて調整しました。 opが口を開いた時の、clが閉じたときの表情です。 対応するclが存在しない場合は別のものを代用しています。(例えばkuti_face.f00_aseri_opはclが存在しない) 注意:どの表情にどのmorphが対応しているか厳密に調べるにはp_cf_head_00のmonobehaviour[face blend shape]をダブルクリック mouthctrl FBSctrl mouth のタブをどんどん開いてcf_O_faceをターゲットにしているものからmorphの何番を使用しているか確認できます。 monobehaviour[face blend shape]を編集したら表情も増やせそうですがまだやったことないです。 ②一応作業メモ X軸ミラーを入れてプロポーショナル編集、接続のみにチェック 自然に見えるように口の上側が開くように 極端な表情は破綻しやすいのでマイルドにした ③あとはゲーム内で読み込んで通常の顔と比べてみて納得がいくまで調整を繰り返しましょう。 2.noselineの再生成 morphをいじっていると鼻の部分を動かすこともあると思います。そうすると鼻の部分にはnoselineのmeshが別に存在するので、そちらのmorphとずれてしまいます。 それではおかしいのでnoselineにも同じ変更を施す必要があります。ただそういうやり方がよくわからなかったので、新しくmeshを作り出すことにしました。 ①cf_O_noseline_0のmeshと重なるようにcf_O_face_0のmeshの一部を選択、shift+dで複製、pから選択を分離で別オブジェクトに移します。 これで顔のシェイプキーと同じnoselineが生成されましたが、このままでは色々おかしいので調整が必要です。 ②そのままでは埋まってしまうので0.001?(正確ではないので注意)くらい前にだしました。 ③UVが元のものと全く違うので合わせる必要があります。転送ツールなどはあまりうまくいかないので人力で合わせました。 元のnoselineと合わせてなるべく重なるようにUV展開してからスナップの動きでくっつけるのが一番早いかも。 (※これ以降つくりなおすときは、meshを複製したものとトポロジーが同じだからかmeshのデータ転送からUV情報の転送で行ける気がします。) ④morphの名前がcf_O_face_0と同じままなのでこのままではインポートできません。 kuti_face.f00をkuti_nose.nl00に、eye_face.f00をeye_nose.nl00にそれぞれ置き換えないといけません。 最初は手動でやってたんですがさすがに作業量がどうにもなりませんでした。 そのためblender pluginのsimple renaming panelをもらってきました。 これでターゲットをshapekeyにして一括で検索して置換をしました。 欠点はすべてのシェイプキーを置換してしまうので、cf_O_face_0のシェイプキーまで置換してしまうことです。 仕方ないのでface用とnoseline用の二つのfbxを生成することで妥協しました。 以上で大体元通りのnoselineが生成されます。 3.歯と舌の位置調整 ①ここまで口の形しか弄っていないので、歯と舌の位置がずれていることがあるので修正します。 これはそれぞれ表情と対応するシェイプで確認するしかないので口のシェイプキーと照らし合わせながら個別調整しましょう。 オブジェクトはcf_O_tooth_0とo_tang_0になると思います。場合によってはcf_O_canine_0で犬歯の調整も必要かも。 4.weightの調整 ここまで作業をしていて気づいてしまったのですが、このゲームは歯に微妙にmouth関連のweightがのっています。 そのため口の上下を極端な数値にしていると歯が一緒に動いてちょっと変な感じになってました。 その他スライダーの挙動に若干不満があったのでいじってみました。 実際のスライダーの挙動を確認しながら自分でウェイトをぬりぬりするしかないので、あまり参考にならないと思います。 以下やったことのメモです ①歯の不要なweightの削除(簡単) ②口回りのweightをちょっとずつぼかす感じでいじる ③鼻も同じ感じでちょっとずつぼかす 注意:鼻のweightを変更してしまうと当然noselineのweightもずれてくるので再度作り直す必要があります。 口回りは多分これでおしまいです。noselineの再生成が絡まない限りそんなに作業量は増えないと思います。 5.眉の改造 眉の改造は口の表情の改造とほとんど変わりません。 cf_O_mayuge_0のmeshの個別のシェイプキーを納得がいくようにいじってみましょう。 顔の表情との関係で陥没しないように気を付けていけば大丈夫だと思います。 ※全く関係ないですが眉と特に涙は頂点数が多すぎるような気がします。 4章 目周りの改造 概要 1.目のmorphの修正 2.eyelineの仮生成 3.noselineの仮生成 4.hitomi白目部分の仮生成 5.weight全体の調整 6.1-5を繰り返して納得がいくまで頑張る 7.最後にeyelineについて個別の調整をして終了 1.目のmorphを弄ります。eye_face.f00_xxxが修正対象になります。口に関してやってきたのと同じことができるはずなのでそれをやっていきましょう。 閉じた目の修正が鬼門になると思います。私もやった感じそんなにきれいになりませんでした。 比較的綺麗だと感じたのはトポロジーに沿って閉じるのをイメージして作った表情でした。 その他の表情についてはスライダーの値によって破綻が少なくなるように極力マイルドになるようにしました。 ※瞳の瞳孔?の部分はシェイプキーがありません。そのためとじ目に対して瞳孔がはみ出てしまうと個別に調整できません。 対策として瞳孔を後ろに下げてしまうと目の印象が変わってしまうのでよくないと思います。そうならないように注意しましょう。 2.口の場合と同じくcf_O_eyelineとcf_O_eyeline_lowは別のmeshになるので、morphが追随しません。 noselineを再生成したのと同じようにeyelineも自分で作り直しましょう。 cf_O_eyelineを作り直してそれをcf_O_eyeline_lowとして複製すればいいので作業量はそこまでじゃないです。 多分UVを同じように展開するのが面倒だと思いますが、人力で頑張りました。 3.noselineも同様に再生成が必要になると思います。こちらについては作業が変わらないので割愛 4.このままだと白目の部分もずれてしまいます。しかし白目の部分はfaceのmeshと対応する形になっていないので似たようなものを作るのは難しかったです。 私の場合どうせバニラのものも白目がはみ出ていたりきれいなつくりになっていなかったので、眼のふちの部分の頂点を選択して複製、そこに面を張ってUVを合わせました。 白目はLとRで作り分けがいるのでその点に注意しましょう。 バニラと頂点数が違うものを作り出すので若干気持ち悪かったですが、はみ出ることも少ないので案外悪くないです。 5.目のmorphを極端に弄ったからか、とじ目の一部が尖ったような感じになりました。仕方ないので合わせてweightすべてを調整することに。 頂点グループのcf_J_Eye0xのweightはキャラメイクに影響が大きいのであまり弄りませんでした。 cf_J_FaceUp_ty、cf_J_FaceUp_tz、cf_J_Eye_rz_LとR、cheek関連、cf_J_NoseBaseを中心にむらがないように適当にぬりました。 これについてはゲーム内で自分で確認しながらやるしかないです。 別のスライダーに影響が出ることもあるので、細かい確認作業が必要です。 6.繰り返す部分は主に1、2、5の部分です。 7.このままでも問題ないならいいんですが、eyelineがバニラのものと全く別の作りになってしまったので、とじ目の印象が全く違う感じになってしまいました。 バニラと同じように目の端は尖った印象にしたいのであえて睫毛の端になる部分の頂点を寄せて立体的に若干飛び出させました。 案外うまくいったのでこれで妥協しました。 cf_O_eyeline_lowについては下睫毛が飛び出てしまうとおかしい印象になることもあるのでそのままにしました。 おまけのアドバイス 私は現在weightの調整に難航しています。 極端なスライダーの値でもなるべく破綻しにくいように調整してはいますが、すべての場合で良くなるように調整するのはおよそ無理でしょう。 ある程度まともになったら妥協したほうがいいです。 5章 meshそのものの形の変更 概要 1.顔のmesh弄り 2.シェイプの調整 3.eyeline等必要な部分の再生成 1.weightを調整してもスライダーの数値次第で表情が破綻するのはどうしようもない。 そのため釣り目がちなスライダーの数値は使いにくい。 そこで顔のmeshそのものを変形させる。 手順としてはfaceに別シェイプとして釣り目の顔を作ってそれをbaseとして合成する。 2.多分釣り目をベースにするとほかのシェイプに影響が大きいので自然に見えるように個別に調整する。 3.weightの調整はあまり要らないと思うので、eyelineの再生成と個別の調整をして終了。 おまけzipmodの簡単な作り方 ①[stinger722 & 32]Headmod+Facefix v4.zipmodを持ってきます。 ②中のhead_mod.unity3dを適当に改名します。 ③HeadMod.csvを開いてhead_mod.unity3dの部分を②で改名したものに合わせましょう。 ④csvのHead Modの部分がゲーム内で表示される名前なので同じく適当な名前を付けましょう。 ⑤csvも改名しておきます。 ⑥manifest.xmlのguidの部分を他とかぶりがないような名前にしましょう。 ⑦zipmodの名前を変えてこれで別のmod化できます。 後はこれをベースにいじっていくと楽なように思います。 最後に 文字だらけでわかりにくいです。再生成のくだりだとかシェイプキーの置換だとかもっと楽な方法があるかもしれません。 実際に改造していて、ツールの使い方等、基本的な部分で分からないことがあったらdisocordのossantelephone#5973に連絡してくれたらアドバイスはします。