バニラ味の人体をblenderで作った

Posted on

今日は3Dモデリングをしたよ。

vanilla-flavored-human-body.blend: Vanilla flavored human body (blender model)

バニラ味の人体」をコンセプトに、男でも女でもなく、年齢もなく、服も髪も耳1もない、そんな人体をモデリングしてみました。野望としては、これをベースに複数のキャラクターが作れたらいいなと思ってます。

3Dモデリングめっちゃ大変なのじゃー!!

先日Appleも参加したblender、楽しいですよね(雑な導入)。2.8系になって操作体系がフレンドリーになってからというもの、小物や無機物などをちょくちょくモデリングして楽しんでおりました。

だけど、たまには生物もモデリングしてみたい…でも、出ているキャラクターモデリング本はどれも古く、Blender2.8系以前の本ばかり…そんなときに出合いました:

半年程度前に出た本。もちろん、Blenderは2.8系以降です。しかし…買ってみて驚いた。450ページ!?なんだこの鬼のような手間は!!!!心折れるわ。

「NEW GAME!」という3Dモデラーの仕事を描いた漫画2では一日一体作らせようとするシーンが出てくるのですが、…エーッ、そんなん、無理に決まってんだろ!

これはもう「才能」「努力」「慣れ」といったような言葉でなんとかなる範囲ではなく、キーボードやマウスを操作して作成する際の物理的限界として不可能だと思います。

ここで私は考えました。漫画の中では描かれていないだけで、実はベースとなるような3Dモデルが何体か会社で用意してあって、涼風青葉はそれをカスタマイズして作ったのでは、と…。

そんなわけで、今回はこんなことになったわけです。

本にはなかった苦労ポイント

トポロジーの細かい修正・変更をするときはサブディビジョンサーフェスを解除する

この本では常にサブディビジョン・サーフェスを掛けた上で編集画面上でも反映させる、という手順を踏んでいるのですが、この手順ですと細かい頂点の修正はかなり難しいです。サブディビジョン・サーフェスは頂点や辺の位置まで動かしてしまうので、ループカットの位置も表示上の位置と実際の位置はずれてしまいますし、サブディビジョン・サーフェスがきれいに頂点を並べ変えてしまうので、頂点が実際には変な位置にあったとしても気づきにくく、あとで「こんなはずでは…」が発生します。

そんなわけで、サブスクリプション・サーフェイスを解除した上でスムースシェード・フラットシェード両方で観察して、変なところが無いか洗い出す作業を定期的にするといいと思います。

細かいニュアンスの表現にはスカルプティングも併用する

胸の肋骨のふくらみなど、複数頂点にまたがるけど細かい起伏が存在する場合などは、スカルプティングを利用するのも1つの手です。この時はサブディビジョン・サーフェスを掛けておいたほうが陰影などが確認しやすくていいと思います。ただし、頂点の並び(3D業界用語としての「トポロジー」)はかなり汚くなってしまうので、上に書いたようにいったんサブディビジョン・サーフェスを解除して並び替えるとさらにきれいに仕上がります。

関節まわりは難しい!ウェイトペイントは難しい!

関節を仕込んだあと、その関節が曲がった際にどのようにメッシュを変形させるのかを指定する「ウェイトペイント」という工程が存在します。本だとかなりさらっと流されているのですが、かなり苦労しており、いまだに完全に満足する出来にはなってません。

ウェイトはポーズを付けた状態で編集する

本にはなかったのですが、ウェイトを意図通りに編集するには、実際に曲げた状態でウェイトを塗ると便利です。まげてしまった後も、アーマチュアを選択した状態でポーズモードに入り、Aボタンを押して全ボーンを選択して「ポーズ→トランスフォーム→すべてをクリア」を実行すればポーズは元に戻せるのでご心配なく。

関節の折り曲げ

この辺が詳しいのですが、例えば関節を普通に3つに割ってウェイトペイント50%にすると関節を折り曲げたときに関節が細くなってしまいます。

GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS

これはウェイトペイントが線形補完を使っていることに起因する問題で、うまいことウェイトペイントのパラメータを調整するだけでは原理的に対処できません。本ではこの問題に触れられていなくて、関節周りは単に3つにループカットで割った上で50%でウェイトを仕込んでいるように見えました。

273ページ

この問題の解決には関節の割り方に工夫がいります。1つ目は、補完してきれいに曲げようとするのではなく、めり込ませてやることです。ゲームのCGを観察するとたまに見かけます。

GUILTY GEAR Xrd開発スタッフが送るスキニングのためのモデリング TIPS

もう1つは、折り曲がる部分が凹むのは頂点があるからだ!ということで、降り曲がる部分には頂点を置かないという方法です。

どちらの方法も一長一短なので、好みで決めればいいと思います。ただし、どちらの方法も、サブディビジョン・サーフェスが絡むとうまくいかないことがあります。後述。

手首のねじれ問題

今ためしに手首をねじってみてほしいのですが、手首だけがねじれるわけではなくて、腕全体がねじれているのがお分かりでしょうか。解剖学の細かいところはよくわかりませんが、実際そうなってます。

もちろんしかし、Blenderはそんなところは勝手に空気を読んでくれたりはしないので、そのままだとこうなります。

ギャー!!

この辺も3Dモデリング界隈ではよく知られた問題で、手首のねじれに連動して動くような補助ボーンを設定すればうまくいきます。

しかし、この補助ボーンを動かすための設定はUnityなんかに持ってった時に消滅するっぽく、どうしようかな…と悩んでいるのが現状です。UnityのHumanoidはこの辺よしなに設定してくれるんだろうか?

いまのところ、前腕と上腕にだけ、手首に連動して回転するような設定(ボーン・コンストレイント)を仕込んでいます。

アーマチュア変形を掛けてからサブディビジョン・サーフェスを掛ける

Blenderのモディファイヤは上から順番に適用されるようで、普通に作っているとサブディビジョン・サーフェスを掛けてからアーマチュア変形が掛かります。

が、これを使うと上で述べた関節の割り方の工夫がうまくいきません。

実際の例で見てみましょう。

サブディビジョン・サーフェス→アーマチュア変形

おなかが割れてます。

アーマチュア変形→サブディビジョン・サーフェス

おなかが割れることなくお辞儀ができています。

腕の関節なども、サブディビジョン・サーフェスを掛けてからアーマチュア変形を掛けてしまうと、せっかく関節が細くならないように割ったのもむなしく、サブディビジョン・サーフェスで割られた中点のところが細くなってしまいます。おそらく「50%の罠」がサブディビジョン・サーフェスで発生してしまうせいだと思います。

が、これUnityやUnreal Engineに持ち込んだ時にはどうなってしまうのでしょう???いまのところまだめんどくさくてやってないのですが、今から頭痛が痛い問題です。

膝や肘が細くなってしまう

肘やひざの部分が細くなってしまうのもお悩みポイントです。これも、ウェイトペイントによるメッシュ変形が線形補完でしかないことに起因する問題です。

関節のボーンとポリゴンフローに関するTIPS

Blender内ではPreserve Volumeを使えばいいんですが、他のゲーム・エンジンでもこの変形機能が存在するかというと…?

メッシュは適宜修正しよう

本でもたまに書かれていることではあったのですが、ボーンの配置、ウェイトペイントなどの後工程になってからでもメッシュは適宜修正したほうがいいです。逆に言うと、どうせ修正するので100%完璧を目指してから後工程に進む意味はあんまりありません

大きなゲーム会社では分業化が進んでいて、モデリングをする人とウェイトを調整する人は別らしいのですが、どうやって分業してるんでしょう??謎だ。

Bluetoothキーボードがあると便利

わたしは腱鞘炎対策としてKINESISというだいぶ変わったキーボードを使っているのですが、こういうキーボードは文章を打つにはいいんですが、ショートカットキーを打つのにはあんまり向いてません(例えばY軸にそって移動するGYというショートカットを打とうとすると、左側と右側に分かれているのですんごい打ちづらい)。

楽天でUS配列版のLogitech K380を買って導入してみたところ、かなり快適に作業できるようになりました。道具大事。

今後の見通し

もちろんですが、まだ3Dモデルとして必要な作業はまだまだ残っています。

  • テクスチャ
  • 表情や口パク(シェープ・キー)

この辺は個別のキャラクターの個性が出るところかなと思いますので、今回のリポジトリからForkしてから作りこむ事になるのかなと思います。

「バニラ味の人体」を作るまでに200コミット近くの手間がかかっており、まだまだこれからかと思うと気が遠くなりそうですが、がんばるぞい!

あと最終的に何につかうかも実はあんま考えてなかったりします。Blenderでレンダリングして遊ぶのも楽しそうですが、モーションキャプチャしてVTuberになったりVRChatしたりしてもいいですし、UnityやUnreal Engineのゲームで活用するのも面白そうです。live2dも実は検討してたのですが、マジでVTuberにしかなれなさそうなのでやめました。

Gitでblenderのモデルファイルは管理できる!

blenderのモデルファイルは圧縮が掛かってないようで、git gcすると想像以上に圧縮が効き、リポジトリサイズを現実的なサイズのままに維持できます。200回近くコミットして、body.blendファイルは現在1.4MBくらいありますが、それでもリポジトリのサイズは20MB以下に収まっています。バイナリ・ファイルなのでマージなどはできませんが、それでもこまめにコピーを取っておく代わりにGitで管理するというのは十分に現実的なソリューションだと思います。

実際に何度か git reset –hardのお世話になりましたし、git checkout (適当なコミットID)して昔のファイルを開いて編集前はどうなってたか確認したこともあり、gitの恩恵は十分に得られていると思っています。

gitで管理できるものはgitで管理しましょう。コミットメッセージとtagがつけられるだけでもめちゃくちゃ便利ですよ。

…本当はpsdや.clipもgitで管理したい。

お絵かきおじさんとしての感想

いつも絵を描くときは、いったん頭の中で3Dで思い浮かべてから傾けて描いているので、後工程を勝手にBlenderがやってくれるのは楽だったかも。ただ、結局モデリングも2Dで行うので、頂点・辺・面の選択にはすごい苦労しました。オブジェクトが複雑になってくると、手の頂点を選択したいのにその奥に透けて見える足の頂点を選択してしまったり。そのためには画面をいったん傾けて、奥側に意図しない頂点がまったくない状態に持っていくか、透けない設定にしてぐるぐる回転して選択したりしないといけません。これが結構大変。

あとは液晶を上から見下ろしたり下から見上げたり横から覗こうとしたりしてる自分に気づきました(笑)。水族館の水槽じゃあないんだから!ゲームしてる最中に体うごく人ってこういう感覚なのかな~とちょっと理解…。

きららおじさんとしての感想

NEW GAME!は3Dモデリングのことを何も描いていない。ということがよーーーーくわかった。

…気になって読み返してみたのですが、3Dモデリングソフトウェアの描写はかなりあっさりしてて、「あっ!Mayaだ!」みたいなシーンは殆どなかったです34。そもそも画面が真っ白だったり他のキャラの頭で隠されてたり…。

3Dモデリングの話ではなく、もっと抽象的な「仕事」の物語を作ったからこそ、多くの人に共感され、「がんばるぞい!」で終わることなく、8年間も連載して、アニメも2本も制作するぐらいの人気が出たんだろうなとは思います。

…思いますが、こうしてモデリングした後だと、少し物足りないです。現役時代、得能正太郎がどんなことで悩んでいたのか、あるいは「仕事として3Dモデリングする」とはどういう事なのか、読んでみたかった感じはあります。

その他

VTuberはーーー大変なのじゃーーーー
  1. 言うまでもない事でしょうが、耳はケモミミ、エルフ耳、人間の耳などなど個性の強い一要素です []
  2. だったはずなんだけどなぁ []
  3. アニメではあります []
  4. 一方、お絵かきソフトは明らかにCLIP STUDIO PAINTなのが丸わかりだったりする []

架空のアーケード・シューティングゲーム「ムーンショット」と、そのワンポイント攻略

Posted on

ドリームキャスト互換アーケード基盤「NAOMI」で2021年10月にリリースされない横スクロール型シューティングゲーム「ムーンショット」。今回はこのマイナーなゲームのストーリーを紹介し、そのワンポイント攻略についても行っていきます。

ストーリー

安心安全帝国」 ― 生きる苦しみと不安、虚無を根絶し、安心と安全だけが満ち、全員が活躍できる社会を約束するカルト国家。もともとは極東の小国だったが、自我をもつ国家制御AIムーンショット」が2050年に完成するとすぐに、各地へ宣戦布告。あっという間に制圧し、世界中へ勢力を伸ばした。

内部では時間の止まった理想の社会≪ユートピア≫が実現されていると喧伝されているが、実態は不明。
かろうじて残る国境線付近では今でも大小さまざまな「テロリスト集団」との戦闘が続いている。

そのうちの1つに、「一切皆苦」があった。AIの力を”活用”しても活躍できないとされ「お祈り」された人間、ネガティブであるとされた思考の持ち主、不安や虚無の存在を肯定しようとする元哲学者・思想家などが集まった混沌とした集団だ。

人工知能に対抗しうる最終兵器「天然無能」を開発することに成功した「一切皆苦」は、崩壊しつつある集団の最後の力を振り絞り、「安心安全帝国」への、最後の国家解体作戦を開始する。

一切快苦」の保有する最後の戦闘機、「無明」に、帰還のための燃料の代わりに「天然無能」を積みこむ。最後の挨拶を済ませたパイロットは、明るいLEDライトのきらめく「安心安全帝国」へ退路を捨て飛び立っていく。

 

敵は≪幸福≫。

生きとし生けるものに生きる苦しみを取り戻すための「正義」の戦いが、いま始まる。

ワンポイント攻略

8方向レバー、3ボタン。全5面+真の最終ステージ1面。一周エンド。

パターン要素の強いステージと、ランダム要素の強いステージが極端に分かれています。パターン要素の強いステージで自分なりの攻略パターンを早めに構築し、ランダム要素のために気力を温存しておくのが、基本的な攻略戦略となるでしょう。

真エンド条件は「5面終了時点までノーミス」と、かなり厳しめの設定です。真エンドを見たい場合、敵をなるべくすべて撃破して、いわゆる「スペシャルアタック」のゲージをこまめに貯め、少しでも厳しいと感じたら、すぐにスペシャルアタックを発動し、付随する無敵の効果で切り抜けましょう。

 

次からは、各ステージの簡単な紹介と攻略になります。

Stage 01 「テンシ」

これが、テンシ?人喰いの、間違いじゃないのか。

回収されたフライトレコーダーから

最初のステージ、「テンシ」。このステージでは「安心安全帝国」の国民である「テンシ」が無数に襲い掛かってくる。最初のステージであることや、全員とも優しそうな笑顔を浮かべていることに油断していると、すぐに「テンシ」たちの放つ高密度弾幕に制圧されてしまう。主人公の言葉どおり、「全員を殺す」という強い気概で挑んでいこう。

Stage 02 「ナカマ」

こちら無明、…
敵も無明だ…。

回収されたフライトレコーダーから

次のステージは「ナカマ」。前回プレイしたプレイヤーが鹵獲され、「テンシ」として”生まれ変わった”という設定で襲い掛かってくる。「ナカマ」であった「テンシ」の攻撃パターンは前回のプレイヤーの動きから学習・模倣されたものになるため、ゲームセンターで待っている間も前のプレイヤーのプレイは肩越しによく観察しておこう。

Stage 03 「コウノトリ」

誰でも作れるということは、
誰にも作れなかったということなのだな。

回収されたフライトレコーダーから

第三ステージ、「コウノトリ」。国家制御AI「ムーンショット」が、「望めば誰でも安心して子供を産み育てられる社会」という人間の願いにこたえるために作った、「テンシ」の製造工場だ。「テンシ」は完成するとすぐに高速弾を放ってくるので、完成する前にテンポよく破壊していこう。登場する順番は死んで覚えるしかない。

Stage 04 「デンシン」

一人と戦っているのか、
全員と戦っているのか、

わからない。

回収されたフライトレコーダーから

第四ステージ、「デンシン」。ここの「テンシ」は全員テレパシーを使って以心伝心している。一度倒した方法は次の「テンシ」には効かない。全ての「テンシ」を破壊できるよう、倒し方のバリエーションを事前に準備しておこう。

Stage 05 「ムーンショット」

頼む、持ちこたえてくれ。

回収されたフライトレコーダーから

最終ステージ、「ムーンショット」。名前通り、「安心安全帝国」の中枢にある国家制御用AI「ムーンショット」を破壊するのがミッションだ。気象をもコントロールする人工知能が、津波、地震、土砂崩れ、台風、ハリケーンなど自然災害すら用いてステージの地形を変形させていく。弾避けに使っているオブジェクトはすぐに破壊されてしまうから注意しよう。

Stage -1 「シアワセ」

脳が痛い。胸が痛い。視界もはっきりしない。意識が朦朧とする。
俺は、一体今まで何と戦ってきたのだ。

だが、まだ生きているというのだけは分かる。
まだ戦わねばならない事もはっきりしている。

回収されたフライトレコーダーから

そして条件を満たしたときにあらわれる真・最終ステージ、「シアワセ」。

人工知能」である「ムーンショット」に対抗する「天然無能」。その名は「生老病死」であった。 この「生老病死」 を起動し、ブートが完了するまで、守り抜くのがミッションだ。残機がいくらあったとしても、死んだ瞬間に守りがほころび、ほぼ間違いなくゲームオーバーになってしまう。このステージではコンティニューもできないので、「人生は一度しかない」と念じながら最後までやりきろう。

参考資料

アナザーエンド

ラストステージは、頭のアンパンから餡が飛び散りきるまでに「安心安全帝国」の管理AI「ムーンショット」を破壊するミッションとなっている。ここだけはコンティニューできず、残基も自動的に0になるので、気合を入れて攻略しよう。たとえ、胸の傷が痛んでも。

https://sabbat.hexe.net/notice/ABuOy9yYFwEfd7EkrI