MRが楽しい

MRやVRについて学習したことを書き残す

HoloLens用のオリジナルモデルを作成する その21(レンダーレイヤーの切り替え)

本日はホロ恋子モデルの作成枠です。
レンダーレイヤーの切り替えについて調査したのでまとめます。
今回は撮影のために事前調査となりましたが、後々ベイク実行の際にもこの技術は必要になります。
f:id:bluebirdofoz:20180602214218p:plain

上記のレンダリング画像は現在のホロ恋子モデルをそのまま撮影したものです。
ここで、HMDを外した状態のレンダリングを実施するため、HMDオブジェクトを非表示に切り替えます。
f:id:bluebirdofoz:20180602214235j:plain

この状態でレンダリングを実行します。
すると、非表示のHMDオブジェクトが表示された状態でレンダリングされてしまいます。
f:id:bluebirdofoz:20180602214245j:plain

レンダリングレンダリングレイヤに存在する全てのオブジェクトをレンダリングしてしまうためです。
「レンダーレイヤー」タブを開きます。
デフォルトでは全てのレイヤーがレンダリングレイヤとして選択されています。
f:id:bluebirdofoz:20180602214256j:plain

試しに、レンダリングを行いたいレイヤーのみを選択し、再びレンダリングを行ってみます。
するとHMDは描画されなくなったものの、HMDの場所に影が落ちてしまいました。
f:id:bluebirdofoz:20180602214305j:plain

ライティングについては「シーンレイヤー」を元に実施されるためです。
「シーンレイヤー」についても同じく、レンダリングを行いたいレイヤーのみを選択してみます。
f:id:bluebirdofoz:20180602214314j:plain
期待通りの結果が得られました。
ライティング、レンダリングを行う際はレイヤーを意識する必要があります。

因みにもう一つある「マスクレイヤー」を有効にすると、そのレイヤーの描画部分がマスクされます。
f:id:bluebirdofoz:20180602214325j:plain

背景の透過と合わせて出力すると、マスク部分を透過できます。
画像を合成したい時などに使えるでしょう。
f:id:bluebirdofoz:20180602214334p:plain

HoloLens用のオリジナルモデルを作成する その20(スムーズ処理と線分離)

本日はホロ恋子モデルの作成枠です。
今回はレンダリングのスムーズ処理について行った調査をまとめます。
f:id:bluebirdofoz:20180601011330j:plain

前回、鋭角を保ちたい辺について、クリース付けを行うことでその形を保つ方法をまとめました。
bluebirdofoz.hatenablog.com

一方で、レンダリングのスムーズ処理についても同じ問題が発生します。
つまりスムーズ処理についても陰影を滑らかにしてほしくない辺と、してほしい辺というものが存在します。
以下はHMDディスプレイオブジェクトにスムーズ処理をかけた状態です。
全ての辺の陰影が滑らかになっていることが分かります。
f:id:bluebirdofoz:20180601011417j:plain

スムーズ処理には「細分割曲面モディファイア」での「クリース」にあたる辺毎の強弱の設定項目がありません。
必ず、隣り合った面の陰影が滑らかになってしまいます。

そこで対応策となるのは面を分離することです。立方体で試してみます。
上は全ての面が結合した立方体をスムーズ処理をかけたケースです。
下は上部の面のみ切り離された立方体をスムーズ処理にかけたケースです。
f:id:bluebirdofoz:20180601011440j:plain
下の例では、上面のみ陰影のスムーズ処理が行われていないことが分かります。
これは面を分離したことで、上面と他の面が隣り合った面ではなくなったためです。

ではスムーズ処理を掛けたくない辺を全て分離するのかという話ですが、これは非現実的です。
実際に面を分離してしまうと、重複頂点の削除など、後々のメッシュ整理が難しくなります。
そこで「辺分離モディファイア」を用います。
f:id:bluebirdofoz:20180601011455j:plain

これは「シャープ」設定が行われた辺について、オブジェクトのモディファイア処理で分離を行う機能です。
例えば以下のように、スムーズ処理を行いたくない辺を選択し、Ctrl+Eキーでシャープを設定します。
f:id:bluebirdofoz:20180601011528j:plain

オブジェクトに「辺分離モディファイア」を追加し、「シャープな辺」にのみチェックを入れます。
f:id:bluebirdofoz:20180601011538j:plain

この状態で、レンダリングのスムーズ処理を有効にすると、シャープに設定した線はスムーズ処理が行われなくなります。
f:id:bluebirdofoz:20180601011551j:plain

これは「辺分離モディファイア」で辺分離が行わた後に、レンダリングのスムーズ処理が行われるためです。
一方、実際の頂点編集では、辺が分離されていないため、重複頂点の削除などが問題なく行えます。
あくまでベイクを実施するための手段なので、この辺分離モディファイアは反映しないように気を付けます。
f:id:bluebirdofoz:20180601011611j:plain

最後に、この「辺分離モディファイア」と「細分割曲面モディファイア」を併用する際に注意すべき点があります。
事象を分かりやすくするために、ポリゴン数を削ったUV球を用意します。
これを上下のスムーズ処理を分けるため、中央のラインにシャープを設定し、辺分離モディファイアで分離することにします。
f:id:bluebirdofoz:20180601011624j:plain

この状態でオブジェクトに対し、「辺分離モディファイア」と「細分割曲面モディファイア」を設定します。
すると、「辺分離モディファイア」を先に設定した状態と、「細分割曲面モディファイア」を先に設定した状態では微妙に形状が異なってしまいます。
f:id:bluebirdofoz:20180601011634j:plain

これはモディファイアは上から順に適用される仕様によるものです。
つまり、「辺分離モディファイア」を先にすると、上下で別れたオブジェクトに対して「細分割曲面モディファイア」がかかるようになります。
意図する作業によって使い分ける必要があります。
今回の辺分離はレンダリング向けの調整なので、必ず細分割曲面の後に設定しておくようにします。

HoloLens用のオリジナルモデルを作成する その19(細分割曲面の縮みとクリース付け)

本日はホロ恋子モデルの作成枠です。
今回はローポリゴンモデルへの「細分割曲面モディファイア」の反映について調査を行いました。
f:id:bluebirdofoz:20180531080958j:plain

今回作成したモデルは非常にローポリゴンのため、そのままだとカクツキが目立ちます。
やはり、キャラクターモデルは有機的な滑らかな見た目にしたいところです。
f:id:bluebirdofoz:20180531081015j:plain

見た目を滑らかにする方法としては、書籍課題で実施したように、テクスチャを利用する手段があります。
モデルに「細分割曲面モディファイア」を反映してベイクを行い、滑らかな見た目のテクスチャを取得して利用する解決方法です。
bluebirdofoz.hatenablog.com

しかし今回、試しに細分割曲面モディファイアをモデルに反映したところ、オブジェクトが大きく歪む事象が発生しました。
f:id:bluebirdofoz:20180531081058j:plain

これは細分割曲面モディファイア利用時に必ず発生する「縮み」という現象です。
細分割曲面モディファイアは頂点を増やして、曲面を滑らかにするので、ローポリゴンのような角ばったのオブジェクトほど縮みが大きくなります。
事象を分かりやすくするため、それぞれ立方体とICO球に、細分割曲面モディファイアを当ててみました。
角ばった形状の立方体が大きく縮むのが分かります。
f:id:bluebirdofoz:20180531081141j:plain

解決方法の一つとして、レンダリングの「スムーズ」のみを用いて滑らかなテクスチャ取得を行う方法があります。
レンダリングの「スムーズ」ではオブジェクトの形状は変更せず、レンダリングの陰影にのみスムーズ処理をかけるため、縮みは発生しません。
f:id:bluebirdofoz:20180531081215j:plain
しかし、この手法はその特性上、メッシュの辺や頂点位置が陰影として強調されるため、ポリゴンが荒い部分の陰影が極端に目立ってしまいます。

よって、今回は細分割曲面モディファイアに加えて「クリース付け」の機能を利用します。
これは辺に 0.0 ~ 0.1 のクリース値を設定しておけば、そこに掛かる細分割曲面モディファイアの強度を調整できるというものです。
値が 1.0 に近くなるほど、鋭角な形を保ちます。
f:id:bluebirdofoz:20180531081317j:plain

鋭角にしたいラインと滑らかにしたいラインが混在している前髪オブジェクトで試してみました。
上側がクリース設定を行わないまま、細分割曲面モディファイアを反映した例。
下側が適切なクリース設定を行った上で、細分割曲面モディファイアを反映した例です。
f:id:bluebirdofoz:20180531081333j:plain
下側の例では、必要な輪郭は維持しつつ、表面部分は滑らかな局面になっていることが分かります。

ここに更にレンダリングの「スムーズ」機能を重ね合わせると、ようやく期待通りの滑らかな陰影が得られます。
f:id:bluebirdofoz:20180531081348j:plain
クリース付けの手間は大変ですが、ローポリゴンで滑らかな質感を得るためにはやむなしです。

HoloLens用のオリジナルモデルを作成する その18(HMDデバイスのモデリング)

本日はホロ恋子モデルの作成枠です。
体のモデリングは一旦完了したので、HMDモデリングを行いました。
f:id:bluebirdofoz:20180530034728j:plain

HMDバイスについては以下の三面図作成で、上、横、前の図を作成していたのでモデリングは容易でした。
bluebirdofoz.hatenablog.com

三方向視点で三面図を下絵として読み込み、頂点を打ち込む形でモデリングしています。
また、立体化すると思った以上に正面がノッペリしていたので少々デザインを変更しています。
f:id:bluebirdofoz:20180530034749j:plain

ディスプレイ部分のマテリアルには透過設定を行っています。
f:id:bluebirdofoz:20180530034805j:plain
……が、以前調査した通り、最終的には利用するデータ形式によって最適化が必要と思われます。
bluebirdofoz.hatenablog.com

水着素体の状態でありますが、全体の三角面数は 4,818 に収まりました。
この時点では目標値の三角面数1万を大きく下回わっています。
f:id:bluebirdofoz:20180530034842j:plain
今後、複雑な衣装や髪型の追加を考えると、三角面数が少ないに越したことはないですが。
必要以上に削減してしまったかもしれません。ポリゴン数の感覚を早く身に着けたいところです。

ワイヤーフレームで見ると、以下のようになります。
f:id:bluebirdofoz:20180530034936j:plain
細かい表情表現を行う顔部分や、指や膝、肘といった可動部分には、アニメーションが破綻しないよう多めに頂点を設定しています。
これらの可動部が多い、顔、手の部分にポリゴンが集中していることがよく分かります。

HoloLens用のオリジナルモデルを作成する その17(手のモデリング)

本日はホロ恋子モデルの作成枠です。
腕と手のモデリングを行いました。今回は手の構造についてです
f:id:bluebirdofoz:20180529002939j:plain

まずは手の甲のモデリングです。
手の甲は上から見た場合と、指先から見た場合、両方の視点で指の付け根が扇状のシルエットが現れます。
・上から見た場合
f:id:bluebirdofoz:20180529003330j:plain

・指先から見た場合
f:id:bluebirdofoz:20180529003340j:plain
このシルエットは手に立体感を与える分かりやすいポイントなので、この扇型を意識してメッシュを作成します。

次に手のひらの隆起を作成します。
手のひら側には指を動かすための様々な筋肉があるため、よく見ると複雑な起伏になっています。
特に、母指球、掌底、小指球の厚みを意識してメッシュの形を調整します。
f:id:bluebirdofoz:20180529003354j:plain

今回はローポリゴンモデルということで最終的にかなりラインを削っています。
記事を書きつつも何度も調整することになりました。
f:id:bluebirdofoz:20180529003501j:plain

パーツとしては、手のひらの起伏も複雑ですが、可動部も多いため、指の部分でもポリゴン数が増大していきます。
作り込むと、顔と同じくらいのポリゴンの塊が、右手左手の二倍の量で生成されることになります。
ポリゴン数には常に気を配ってモデリングを行いましょう。


以下、通知です。
開発者としてのコミュニティを広げるためにTwitterを始めました。
twitter.com
特にHoloLensについて興味があるという方は、よろしければフォローお願いします。
本ブログの記事を更新した際にツイートしていきます。(最近はモデリングの記事ばかりですが……)

早速この後、本ブログの「ツイートとの外部連携」を有効にして、この記事をTwitterにツイートしてみます。
上手くいっていれば記事がTwitterカード形式でツイートされているはずです。
ブログの記事は後から読み返しやすいよう主観的な感想等は控えめにしているので、Twitterの方では主観的な感想を呟いたりで使い分けていきます。

ホロモンTwitter始めました

本日は技術調査枠です。
Twitterのアカウントを作成してみました。
twitter.com

私はこれまでSNSのアカウントを持っていなかったのですが、ないと開発者同士のコミュニティで不便です。
今回、思い切ってアカウントを作ってみました。
f:id:bluebirdofoz:20180528012150j:plain
しかし、今までSNSに全く触れていなかったのでそもそもTwitterがどういった文化なのかも知りません。

実を言うと、一ヶ月前に会社の先輩に進められ、FaceBookのアカウントを作ったのですが、一ヶ月経った今も友達欄にはその会社の先輩のみです。
「知り合いかも」という表示は出てくるんですが、それをどうすれば良いのか分からない。
恐らく「友達になる」を押すかどうかなのでしょうが、これまでSNSの文化に触れていなかったため、どれくらいの軽さでそれを行っていいのか分からないのです。
SNSは新規参入者にハードルが高すぎます。私がSNSのシステムを開発することがあれば「友達にしといた」機能を実装します。
これぞコミュ障に優しいSNS……コンセプトが流行らない。


話が逸れました。
ともあれ、FaceBookデビューの失敗を繰り返さぬため、Twitterについて目についた用語を幾つか調べておきました。

ツイート

 Twitterでの発言の一単位を指します。
 最大140文字までなので、あまり長い記事のようなものは書けません。
 まさに呟きを書く感じです。色々語りたい場合は連続してツイートすれば長文も書けるみたいですが、やり過ぎるとマナー違反?

フォロー

 Twitter上の別ユーザをフォローに追加することができます。
 フォローで登録しておくと、フォロー相手のツイートが自動的に表示されるようになります。
 相手の承認は不要だそうです。この気楽な感じは良いですね。
 ただ、Twitterを覗くとフォロー数が1000以上のアカウントとかザラにいるのですが、ちゃんとツイート追えるんでしょうか。。

フォロワー

 フォローの逆で、フォローしてくれている人のことを指します。
 これが多い人は注目されている人という事ですね。
 Twitterにおける戦闘力のようなもので、これが高い人に歯向うとアカウント削除に追い込まれると聞いたことがあります。
 少し気になるのはやっぱりフォロワーされたらフォローし返すのがマナーなんでしょうか。

いいね

 気に入ったツイートを「いいね」すると「お気に入り」に登録されます。
 後々読み返したいツイートとかに「いいね」する感じでしょうか。
 発言者からは誰が「いいね」してくれたかが分かるみたい。いいね。

リツイート

 他人のツイートを自分のツイートに引用します。
 フォロワーに誰かの発言をお知らせしたいときに使うようです。
 「いいね」でもフォロワーに表示されるという事なので「お気に入り」に登録するか否かの違い?

リプライ

 特定のアカウントに対してツイートします。
 ツイートに対して発言する訳ではないため、返信とは違うみたい。
 自分と返信先の両方のアカウントにフォローしているフォロワーだけには発言が見えるとか。ややこしい。

返信

 相手のツイートに対してツイートします。
 特定のツイートに返事をしたい場合はこっちを使うらしい。

ダイレクトメッセージ

 特定のアカウントにのみ見えるメッセージを送ります。
 これまでのツイートやリプライは基本的に第三者が見る方法があるので、一対一のやりとりではこれを使う。


覚えること多過ぎい。
現代社会においてSNSを扱えないのは、割と無視できないディスアドバンテージなので、この機会に改善したいところです。
何にせよ、これで私もTwitterデビューです。一日一回くらい呟けばいいかな。

HoloLens用のオリジナルモデルを作成する その16(脚のモデリング)

本日はホロ恋子モデルの作成枠です。
脚のモデリングを完了しました。今回は脚のモデリングについてです。
f:id:bluebirdofoz:20180527202007j:plain

脚は体を支えるため、筋力が重要な器官なので、外の見た目以上にかなり複雑な筋肉構造をしています。
(その場で足を真っ直ぐ延ばして大腿の部分を見てみると、単純な円柱とは程遠い形だと分かると思います)
この大腿の部分だけでも正面からその輪郭が捉えられる筋肉が6つあります。
・大腿直筋
・縫工筋
・外側広筋
・恥骨筋
・長内転筋
・内側広筋
f:id:bluebirdofoz:20180527202021j:plain
しかし、これらの筋肉の輪郭全てを再現しようとすると、かなりの頂点が必要となります。

今回作成しているのはローポリゴンモデルです。
脚はポリゴン数の削減が比較的容易な箇所なので、筋肉の大まかな輪郭を意識しつつ、ラインを作り込むに留めました。
特に内腿のラインは筋肉を意識していると、単純に真っ直ぐ線を引くよりもそれっぽくなるはずです。
f:id:bluebirdofoz:20180527202031j:plain

次に下腿ですが、今回はこちらも簡略化しました。
主に腓腹筋という筋肉が輪郭を形作ります。正面から見ると内側は真っ直ぐ、外側は上の方が膨らんだ形となります。
f:id:bluebirdofoz:20180527202041j:plain

最後に足先は、凝ると指があるためポリゴン数が増えてしまうので、ざっくり作成です。
f:id:bluebirdofoz:20180527202152j:plain
指先はテクスチャで描くことにします。