PSF進捗まとめ #1

今月のはじめ(本当はもう少し前)から新しいVRChatワールド「PROJECT: SUMMER FLARE(プロジェクト:サマーフレア)」の制作を開始しました。

企画当初は、制作の様子は基本的に#PROJECT_SFタグ付きのツイートで書いていこうかと思っていたのですが、Twitterだけだと書ききれないこととかもいろいろあるので、ときどきこうやってブログ形式でも制作中の内容を書いてみることにしてみます。ただ、ブログ用に写真を撮ったり文章を起こしたりするのはけっこう大変(その時間があれば作品本体の作業にもっと時間を割ける)なので、自分のツイートを引用してそれを詳しく解説するというどこかで見たようなスタイルで記事を書いていこうと思います。

アスタリスクの足枷

ヨツミです1 2 3

VR謎解きワールド「アスタリスクの花言葉」が完成したあと、私は次に何を作るかをずっと考えていました。というのも、アスタリスクは良くも悪くも全力で”攻めた”作品だったからです。

アスタリスクの感想をSNSから全力でチェリーピックすると次のようになります。

クリアしていない人から見ると「たかが謎解きゲームのはずなのになんでこんなクソデカ感情が???」という感じだと思いますし、作者の立場から言えば「なんであんな作品作っちゃったんでしょう……」という感じなのですが、素人クリエイター4 としてはここまでいろいろと言われてしまうと「各要素のクオリティアップの余地はいくらでもあれど、内容としてはもうこれを超える作品5 は作れないのでは ?もうあとは隠居しかないのでは?」という心持になってしまっていました。

ただ、私にとって趣味の創作活動は一種のストレス発散ですし、まだなにか面白いものを作りたかったので、「アスタリスクの花言葉」とも「1%の仮想」とも違ったネタを考えていました。

そこでルピさんとファスさんから「最高の夏、いっしょに作らない?」と連絡が来たところから「PSF」の話がはじまります。

告知の方針

初っ端から全力投球な感じの制作開始告知です。

VRChat日本人コミュニティは(いまだ正式な統計はありませんが)アクティブユーザが数千〜数万人程度(ざっくり)と囁かれており、前前作の個展「1%の仮想」の初回来場者数が数千人だったり前作「アスタリスクの花言葉」の告知ツイートの閲覧数クリア者数が同じくらいのオーダーだったことを考えると、そのくらいのコミュニティの規模感やリーチ性を考慮した宣伝が必要になってきます6。私が作者であることを考えるとさらに複雑で、個展も「アスタリスク」もVRChat内ではあまり見ないタイプのワールドであり、特に後者は内容を知っているか知っていないかで想定される次回作の内容(=「ヨツミがどこまでやらかしうるか」)がまるっきり変わってくるので、

  • 個展だけ行ったことある人(数千~数万人)
  • アスタリスクにも行ったけどクリアはしていない人(数千人?)
  • アスタリスクもクリアした人 (数千人)
  • アスタリスクのイトまで読んだ人 (数百人)
  • そもそも私のことを知らない人(数千人?)

の全員に対して事前知識なしでいい感じに内容が伝わる告知を行う必要がありました。

……で、上のようにしたのですが、たぶんいい感じによくわからない感じになっていると思います。私の意図を読んだ人ならもう9割がたギャグのような告知ですが、実際にワールドに行ってみるまではだいたいそういう理解で合っています。そうでない人にとっては「へー誰かと組んで夏っぽい(セカイ系っぽい?)worldを作るのか、写ってるミーシェちゃんはヨツミさんのフレンド?」みたいな感じに見えると思いますが、リリースするまではだいたいそういう理解で合っています。

PVを見た限りでは二人の女の子が出てくる感動系のなにかに見えると思いますが、アスタリスクの内容を知っている人にとっては「例のアレ」の進化系にも見えるかもしれませんし、よく見るとホラワの一端のような演出もちらほら見受けられると思います。つまりそういうことです。作者は年単位のアクロバティック伏線回収を平気でやるような人間なので、今回もそういう感じでよろしくお願いします7

キャッチコピーである「あの日の夏に同期する」は作品本体のモチーフ(夏)を尊重しつつVRChatっぽさを出すようにした結果決まったもので、「とりあえずなんかいい感じの夏の体験ということがわかるようにしよう」ということでこういうコピーにしています。ちなみに開発チーム内部で使っている非公式(?)キャッチコピーは「最高の夏」です。 最高の夏、つくりたいですよね。

ジャンル名の「VRインスタレーションプロトコル」については、ほかのジャンル名でどうしても形容がつかないので仕方なく命名したものです。実際、「1%の仮想」も「個展」とは称しているけど最後らへんはそれだけでは形容できない演出をしていますし、「アスタリスク」についても「謎解き」とは称しているけど最後らへんはそれだけでは形容できない演出をしているので8、今回はもう諦めて「内容を適切に説明するジャンル名」を新しく命名しました。なので「『VRインスタレーションプロトコル』って宣伝してたけどぜんぜんVRインスタレーションプロトコルじゃないじゃん!」という事態は発生しないと思います。

ルピ×ファス × ヨツミ

今回は3人によるグループ制作という形態をとっています。きっかけはルピさんとファスさんから「こういうシナリオのVR体験を作りたい」という相談を受けたことで、そこからこのプロジェクトが始動した感じです。といってもワールド制作のノウハウを持っているのは私のみなので、シナリオの細かいところは実装可能な範囲で私がアレンジしたりしています。その代わりといってはなんですが、二人には主にTwitterにあげる動画撮影などを手伝ってもらうことにしています。

ちなみに撮影場所はPublic化されていない私の作業用ワールドです(フェア精神)。

告知画像等にも出てもらう関係上、改変は「夏」や「夏休み」のイメージに合うようにしてもらっています。 基本的には服装をデフォルトのものから夏っぽくする(例えばフードをクルーネックっぽくするとか)ことに加えて夏っぽい帽子やその他アクセサリを着けてもらっています。

三人で左手人差し指につけている三種類の指輪は今回のチーム制作での「絆」のようなものをアバターで表現するためのものです。VRChatユーザがつけている指輪って「同じ指輪をつけている相手」を嫌でも意識させてしまうのでいいですよね。

ちなみに今後使用されるのか分からない決めポーズは単純に「指輪を強調するポーズ」として設定しました。

コンセプト「夏」

夏といえば神社です9。PSFはいくつかの区画に分かれた単一のワールドにする予定なのですが、Ennichi Playgroundで作ったモデルを使い回せるのでそのうちひとつは神社にする予定になっています。今はひとまず「夏」をまるまるひとつ作るに足るモデル群を仮組して配置を考えている段階なので単色なのですが、あとあとテクスチャやらなにやらもなんとかする予定です(ざっくり)10

ちなみに右上に写っているのはルピさんです。こういう「画像をよく見るとさりげなく重要な情報が含まれている」のっていいですよね。

夏といえば真夜中の住宅街です(?)。「1%の仮想」も「アスタリスク」も実はPost Processing Stackを有効にしていなかったので、それを活かせる場所として「夜にライトをたくさんピカピカできる場所」として小さな街を作ろうかと思っています。というのは建前で、実際は何年も前に作ろうと思って頓挫した3D TPSゲーム「魔法使いのカーディナル」(前題「セブンデイズ・プラスワン」)の舞台となる街のために作っていた3Dモデル群をリサイクルしたものになります11


こんな感じで、 何か月かごとに記事も書いていく予定です。今回はコンセプト的なトピックが多めですが、次回以降はがっつりワールド制作関係のことを書くと思います12。最新の情報は#PROJECT_SFをご覧ください。


最近作ったアバター (その3)

開発名はコバノ(「コバノランタナ」より)

イワシちゃんは私にはかわいすぎた——

今年の2月頃からずっとイワシちゃんアバターを改変して使っていたのですが、「アスタリスクの花言葉」のワールド制作も終わってひと段落ついたのでふたたび自作アバターに戻りました。今でこそ高クオリティなアバターは巷に溢れてはいますが、やっぱり性癖を100%詰め込んだ自分固有のアバターを使いたいと思ったので気づいたら完成していました。

過去に作ったアバターについては簡単な紹介記事を書いていたのですが(その1その2)、今ではVRChat界隈全体でアバター制作・販売の知見が恐ろしい速度でたまりつつあり、モデリングほぼ初心者の私がわざわざ書くようなノウハウ的なものもないと思うので、ここには日記的なものを書いておきます。

このアバターができるまで

Twitterには何度かポストしていたのですが、実は過去にも節目節目でフルボディトラッキング対応アバターを作ろうとしていました。しかし、だいたいが「作ってみたはいいもののなにかかわいくない」「スキニングの際にどう頑張ってもモデルが崩壊する」ことでモチベーションが下がって没になっていました。

なので、今回は「絶対に見た目のクオリティがある程度保証される」「絶対にスキニング(ウェイト設定)に失敗しない」ことを念頭に作業工程を見直して制作しました。

アバターデザイン

これだけでどう作れと

お絵描き担当のヨツミさんに依頼して描いてもらったのが上のものになります。私は絵がド下手なので、全身絵はおろか顔自体さえ手描きで描くのは困難なのですが、ジト目への愛だけはあったのでなんとかここまで頑張りました。下半分は耳のモチーフを狐1からうさぎに変更しようとして描いたものですが、最終的にはいつものピンとした耳に統一したため没になりました。

おなか冷えそう

これをデジタル絵担当のヨツミさんに直して下絵にしたものがこちらです。この絵自体はイワシちゃんの素体2の輪郭に頭と服装を書き足したものになります。当初は黒でビシッと決めようとしていたのですがビシッと決まらなかったので白にしました。スカートが透けているのは趣味です3

話が若干前後しますが、このアバターは私が過去に作ったゲーム・作品・アバターの意匠をできるだけ詰め込んだような形になっています。

アバターで自分語りしていくスタイル

実際、私が中学生の時に作ったゲーム4とかを元ネタとして出されてもなんだという感はありますが、自由に作って使い捨てられるアバターだからこそ「人に歴史あり」を表現したいと思ったので。

作業工程の工夫

アバターを制作したことのある人は全員例外なく理解していると思いますが、アバター制作は修羅の道で、モデルが破綻することにビクビクしながら数々の工程をこなしていく必要があります。私の場合は特にアバターの販売等をしようというわけではなく、「私らしいアバターをそれなりの工数で作る」ということに重点を置いていたので、以下のような手を使ってなんとか各工程を安定してこなすことを目標にしました。

なお、下記の手法はTwitterで流れてくるモデリングお得情報を流し読みしつつ自分なりにやってみたものなので、なんらかのオリジナリティを主張するものではありません。

素体を使う

胴体の制作については見た目における重要度に対して工数が多すぎるので、素直に改変OKなライセンスのアバターであるニアナちゃんを使用しました。改変を前提とした素体アバターの販売例はいくつかあるのですが、私の場合は事前にVRChatでの動作を確かめてから使用する素体を決めたかったため、Publicアバターとしても採用されているニアナちゃんにしました。

プロポーション調整前(左)と調整後(右)

無調整のアバターは体になじまない(ボーンの長さやVRデバイスのトラッキング方法の差異によって身体の各位置が実際の身体とうまく一致しない)ことが多く、ニアナちゃんも例外ではなかったため、トラッキング適性と己の趣味に従ってプロポーションの調整を行いました。 過去にイワシちゃんで同じようなことをした際のツイートは以下のような感じです。

下絵を使いまわす

頭部は以下の手順で作成しました。

  1. Blenderの下絵機能で下絵を表示する
  2. UV球を気合でこねくりまわして正面から平行投影した時の輪郭を一致させる
  3. 側面の輪郭をいい感じにする
  4. 下絵をテクスチャとして貼りつけて調子を見る
  5. テクスチャ作業

2. についてはベースがUV球なので特に目の周囲がいろいろとヤバいことになっているのですが、輪郭だけを合わせて目と口を切り開いていくほうが(私の場合は)安定して作れるのでこの方式にしました。私の好みとしては顔にリアルタイムの影を落とすのが好きではないので、変なアウトラインが出ないように適切にマスクをかけることに注意すれば見かけ上の問題はたぶん発生しないと思います。

「最終的にそれっぽく見えればそれでいい」の構え

ちなみに、口まわりの構造が口を開くことを全く想定していない感じになっているのですが、これは制作当初「どうせあんまりしゃべらないしDead Space5のオーディオログよろしく顔の横に波形でもシュッと出すシェイプキーを作っておけばいいや」と判断していたためで、「歯を見せるピース」のために後から泣く泣く切り開きました。

4. については、2.と3.が完璧にできていればその時点でほしいメッシュは得られているのでわざわざ行う必要性は実際ないのですが、煩雑なテクスチャ作成をする手間をかけずにそれっぽい見かけまで持っていけてモチベーションが稼げるのでおすすめです。

下絵をテクスチャとしてメッシュに貼りつけたもの(左)と悲惨なことになっているUV(右)

UV展開はしない

UV展開は面倒なのでしません。

といってもしないと完成しないので、「UV展開」→「UV付テクスチャを書き出し」→「テクスチャを加筆」という普通の手順ではなく、「テクスチャを描く」→「テクスチャを書き出す」→「UVをテクスチャに合わせる」という逆の手順をとりました。具体的には、以下のような「なんかいい感じに面付けされている1枚のテクスチャ」を描いて、それに合わせる形でUVを揃えます。これによって、UVを職人芸よろしく1枚に綺麗に収めたりメッシュの編集のたびにUV座標を心配したりする必要もなく、機械的にテクスチャを描いて機械的にUVを合わせていけばいい感じに見えるようになります。

全テクスチャ:胴体(右半分)はUVそのままに適当にAOで

上のテクスチャでは左下の紫色の髪の部分が特に顕著で、下から順に「前面のぱっつん髪」「房1」「房2」「上面部」になります。髪の房は微妙に色相の違うバージョンを2種類用意することでテクスチャの繰り返しを見えにくくしています。とても濃い紺色なので明るさによってはほとんど見えなかったりしますが……

後頭部のテクスチャの様子:2種類のテクスチャ+左右反転でランダムっぽく

また、顔のテクスチャ(左上)は下絵の肌色の部分を影色の矩形の上にのせてぼかすことで髪や目の周りの影を表現しています。モデリングが終わった時点で正面から見た顔の形状は下絵と完全に一致しているため、これを平行にUVに投影するとテクスチャの影の位置に一致します。

上記の下絵とテクスチャはなぜかAnimate CC(アニメーションが使えるIllustratorみたいなやつ)で作っていて解像度を無限に上げることができるため、下絵をコピーして適当に拡大すればそれがだいたいテクスチャになります。

スキニングはしない

スキニングに関しては自動ウェイトやMixamoを使ってモデルがぐっちゃぐっちゃになった過去のトラウマから敬遠していました。しかし、今回に関してはセットアップ済みの素体を使うことで大幅に簡略化できました。頭はHeadボーンに従わせておけば最低限の動作はできますし、服に関しては素体の一部を複製して法線方向に移動させれば最初から適切なウェイトがついたメッシュを得ることができます。ボーンに対して平行方向に動かしすぎると破綻するので細かい調整が必要なのは確かですが、1からウェイトをつけるよりかはよっぽど作業工数が安定します。

後述するDynamic Bone用のボーンは普通の素体には入っていないため6髪やスカートのボーンは自分で入れる必要がありますが、髪の房一本一本やスカート全体は「片方の端点がHeadかHips 100%」かつ「それ以外の既存のボーンはまったく関与しない」という分かりやすい条件があるので、自動ウェイトを適用したのちにこれを満たすように手でチェックすればなんとかなります。

動かせるものは全部動かす

モデルの完成度をこれ以上上げられないという状態になったとしても、以下の要素を有効にすることで見た目の完成度をさらに上げられます。

  • Dynamic Bone:もはや界隈では知らない人がいないアレです。これを有効にすることで体を動かしたときの見た目が圧倒的に柔らかくなります。アバターがかわいくなるなら20ドル(執筆時)なんて安いもんです。
  • 両目ボーン7目のボーンとシェイプキーを適切にセットアップすると目が顔の向き等でそれっぽくアニメーションしたりまばたきするようになります。これは厳密にHMD内の目の挙動を再現しているわけではありませんが、アバターの「生きている感」がでるので有効にしたほうがいいです8
  • フルボディトラッキング:金額的にも物理的にも導入は容易ではないのですが、HMDとコントローラのみの3点トラッキングではどうしても胴体の動きが簡略化されてしまう(常に地面に対して垂直になる)ので、より表現力の高い動きをみせたい場合は導入するといいかもしれません。私の場合は両手ピースをするのが癖になっているのですが、VRChatのどこかしらの仕様で非フルトラでは腋が余計に開くので人前に出るときはほぼ常にトラッカーをつけています。

上記3つを無効・有効にしてピースしてみた動画が以下になります。

Gitをつかう

コンピュータを用いて任意のデジタルデータを作成する際は絶対にバージョン管理を行いましょう。特にモデリングでは破壊的な変更が必要になることが多い9ので、適切にバージョン管理を行うと圧倒的に生産性と安定性が上がります。例えば、「モデル編集時に胴体と頭を別々に編集して書き出し時に統合する」場合にはブランチなりタグなりを切るだけで好きなだけ前の段階に戻ることができます。また、上で書いた製作途中の画像もモデルを一度完成させてから時間を巻き戻して作成したものです。

まとめ

総作業期間は1か月ちょっとくらい、コミット数は120くらいでした(切りすぎ?)。個人的にはいい感じにはできたと思ってるのですが、まだ細かいギミック(顔アクセサリが動いたりとか光学迷彩とか) は載せていないので、ちまちま改良しつつ当面の間はイワシちゃんと平行して運用する感じになると思います。