モデリング

Blenderで脚を作ります

どうも。チョコです。

気づいたら12月になって、Advent Calenderに調子乗って2日投稿にしたのに何も書くネタが思い付かなくて焦っている(1日現在)。

これだと総代表様から怒られが発生するので、僕が一番素早く記事にできるものは何だろうと自分に問い詰めた結果、”Blenderでの KCSちゃん 幼女 名取 脚 の作り方”にたどり着きました。ちゃんと真面目で健全な内容なのでご安心ください。それでも総代表様から怒られが発生しうるが。

(Advent Calender2日目にこのようなしょうもない記事を出して誠に申し訳ございません。)

(私はプロモデラーではないので、これが脚のモデルのやり方だ!というのはあまり大きな声で言えないが、まあ参考までに。)

(タイトルを「Blenderでの脚の作り方」にしたかったんですけど、ちょっと調子に乗ってそうなので変えました。)


さて、脚はモデルの半分なので、綺麗に作るに越したことはありません。SDキャラだったら脚はcylinder作って若干下の部分を縮めば出来上がりですが、愛着が湧かないのでここではフルサイズキャラについて語ります。

Screenshot (461)
図1:SDのKCSちゃん

*愛着が湧かないというのは脚へのことであって、別にKCSちゃんへ愛着が湧かないなわけではありません。KCSちゃんには常に日頃愛着が湧いています。

ただし、綺麗な脚を作ろうと思うと、ボーンを物凄く入れて筋肉表現を表すことももちろんできますが、やりません。変態(褒め言葉)じゃないので。あくまでゲームで使うモデルで最小限のボーン数で再現できる範囲で作ります。そのほうが参考になるかと。多分。

Siri

脚が始まるところです。アニメーションをつけるキャラクタには、動かすことを意識して作らなければなりません。特に、脚が曲がったときにSiriの部分に体積が足りないとこうなります。

Screenshot (465) Screenshot (466)

図3:Siriが消える

したがって、この状態でも大丈夫よう、Siriの下部分に頂点が近づけますね。これが横から見ると特徴的な形状になりますね。ウェイトをつけるときは上のほうの頂点に影響少なめにすると、いい感じに曲がります。

Screenshot (462) Screenshot (463) Screenshot (464)

図3:頂点を足した

ただし、脚は裏には曲がりませんので、頂点が変になっても気にする必要がありません。脚が後ろに曲げたいときは腰のボーンを曲げましょう。

太もも

一番大事なところですね(個人的な意見)。太ももを前から見たときに、内側は3次曲線で外側は2次曲線、という認識を持っていますね。形状をもっと強調したいときは内側の下部分にU型のトポロジーを入れます。

a

図4:太もも

また、気づくかもしれませんが、内側の膨らみは筋肉なので、内側の方が食い込みます。つまり、ニーハイやベルトを装着するとこうなります。

asdfffdsa

図5:ニーハイの履き方

(ニーハイに食い込みは作らないですって?物理法則違反です。作りましょう。)

膝もまた変形するところですね。察すると思いますが、内側より外側の方に頂点を多く入れますね。膝の形も強調したいので、前から見るとU形になっている感じで作ります。そうすると小牛も自然に後ろに生えます。

膝の裏は、曲がるときに食い込みが発生する問題を解決するために、曲がるところに変形する頂点を置きません。また、靱帯は上から下に生えて逆Vを作っていますので、ボーンのウェイト平衡点を上部分にずらします。すると比較的に綺麗な曲がり方ができますね。あと、足も同じく前に曲がることはないので、膝のウェイトは太ももボーンが支配的ですね。

Screenshot (467) Screenshot (468) wfer

図6:膝

(うん?何か飛ばした?幻覚です。)

足は下から見ると特徴的な形状を持ちますね。正直いうと大体靴か靴下を履かせていますので生足経験が少ない(パワーワード)が、基本的にはこの不均一感を出すのは大事ですね。特に、内側が上に上がる部分はちゃんとあげましょう。

また、足首から足指にかけては、”へ”の形がしていて、決して平らや球状ではありません。足小指に行くと位置は後ろにずれますので、上から見ると斜めの配置になっていますね。

そして、足の裏は一本の太い靱帯と両側の凸の間は若干食い込みます。これを意識して作ると特に制服の靴を履くと若干隙間ができていいです()。

egrs
図7:足

(こうして記事にまとめると,足へのこだわりが足りないことに気づきますね.足だけに.反省.)

結論

以上のポイントを全部合わせると、綺麗な脚を作ることができるんでしょうね。まあ、場合によって強調する量を調整したり、違ったトポロジーで作ったりしますので、決して鉄則ではありませんね。3Dモデリングですから。

このしょうもない記事をここまで読んでいただいてありがとうございます。最後に、参考までに僕が2年前に作ったえりりを見てください。脚にはそれなりに力を入れました。

*これはAdventCalender 2日目の記事です*

←1日目 3日目→

BlenderでXray目の再現

どうも、チョコです。多く知られているMultipassのやり方を(今更)理解したので共有したいと思います。

BlenderではMultipassのことをRenderLayerといい、Compositorで組み合わせができる。

ラムのモデルでデモしよう。

Screenshot (1226)

 

髪の毛の前に目を出したいので、まず目と髪の毛を別のオブジェクトにして、髪の毛をレイヤ2にする。

RenderLayerを2個作り、それぞれのマスクを設定する(Hairはレイヤ2しかレンダしない)。

Screenshot (1221)

これをレンダすると、髪の毛が消えた。さて、Compositorで合成しよう。InputNodeを2個使えば両方のRenderLayer画像が入手できる。

 

レイヤ1から目の部分を切り取りたいので、ObjectIDマスクで分離する(目のObjectID1にした)。

Screenshot (1224)

最後に、二つのレイヤをCombineZで合成し、さらに上から切り取った目をAlphaOverする。

Screenshot (1225)

完成。では。

 

Unityを拡張しよう!#2: 表面分割アルゴリズムの実装(Part 1)

どうも、チョコです。あけましておめでとうございます。

さて、今年初の記事です。わーい。
(もともと去年に完成させたいものですが、バグが出てきてそのまま年越えましたorz)

さて、今回は”Catmull-Clark 表面分割をUnityで使いたい!”と思ったので作ってみました。はいストップ。Catmull-Clarkは何ぞや。説明します。
Catmull-Clark Subdivision Surfaceとは、とあるメッシュを分割し、比較的に滑らかな四角ポリゴンからできたメッシュにするアルゴリズムです。

ニホンゴデハナシテ。

見ていただいた方が早いので、↓の通りピラミッド、キューブとn角はてなメッシュを表面分割させました。

screenshot-426

あらきれい。滑らかになってますね。
ちなみにBlenderではこのようにModifierを追加することで表面分割させられます。

screenshot-428

Catmull-Clark出てきましたね。

では、これをUnityに入れたいと思います。ちょっとまて。なんで入れるのかな。Blenderではもうこの機能ついてるのに??

答え:>>>アニメーションのためです!ボーンを付けてアニメーションさせたところ、Modifierは全部消されてしまいますボーンModifierの前に適用されます。じゃあそもそもボーンの後に表面分割する必要ある?って思ったあなたへ、下の図をご覧ください。

screenshot-434

足ですね。曲がるところに頂点がないことを確認してください。
でもちょっと頂点数少ないので、表面分割しましょう。

screenshot-422

円滑になりました。でも左の方はなんか不自然ですね。これは分割してからボーンを付けたせいですね。曲がるところに頂点が入ってしまいますので、これを2本のボーンだけでは数学的には右のような形にはできません。説明略。
右のほうを見ると頂点は全く同じで、ただボーンと分割の順番を逆にしただけできれいになります!!

疲れた。まだ本文に入っていない。まだちょっとありますので我慢してください。

では、このアルゴリズムをUnityに入れ(たいと思い)ます。Catmull-ClarkのWikipediaページをご覧いただくと、頂点の関係式は中学レベル以下ですね。記事書く必要ある??って思うかもしれません。こんなの3秒で書いてやる!とか、思いましたか?私か思いました。orz

さて問題:よく読むと、このアルゴリズムはN角形に対応しています。そこでUnityは、なんと、三角形(時には四角形)しかできないのです!!!

それだけではありません。メッシュを分割させるために、ボーンに変形された頂点位置が欲しいが、これも、なんと、シェーダー側でしか手に入れられないのです!!!(実はBakeMesh()関数もありますが、indexなどがめちゃくちゃかつ遅いのでやめました。)

ち。面倒なことになってきましたね。そもそも面のデータが取れないのに、どうやって実装するんだ。

あれあれ、この前も記事書きましたよ?この記事#2ですから、#1はどういう内容かな。
それはなんと、Unityにimportされないデータを読み取れるエディタースクリプトでした!!!!!パチパチパチ。
リンク張っておきます。

(ここからが実装の本文になりますが、正直いちいち説明するのがめんどいので手順だけ紹介します。詳しく知りたい人はGithubページへ)

まず、1で作ったスクリプトをEditorで呼ぶことにしました。.netでBlenderのexeを見つけて、それにアセットを入れて、同じフォルダーにデータを出力させました。こんな感じです。(.blend)の隣のn++ファイルが出力ファイル。

screenshot-429

これで面のデータが取れますので、これを表面分割アルゴリズムに突っ込みます。中学レベルの数学なので省略。
*ここでは、頂点を生成するアルゴリズムを実行しました。この関数はStart時点に一回だけ実行したいので、頂点関係をあらかじめバッファーに入れました。データ構造以下のようです。

screenshot-430

次に、変形された頂点の位置を読み込み、関係式に突っ込みたい。あれ、データが入手できない。ち。

シェーダーを使うしかないですね。では、どうやってシェーダーから頂点データを出力すればいいんだ?

やり方は2通りあります。テクスチャに書き込むか、ComputeBufferを使います。

テクスチャ使ったら、まあそれは簡単になりますし、一般のパソコンでも動くでしょうけど、分割したいメッシュ1体につき、カメラが一個増えます!!
仕方ない。ComputeBufferを使います。

待てよ、ComputeBufferつうのは、シェーダー語のRWStructuredBufferなので、行列のindexはどうするんだ??
indexは頂点のindexと同じなので、シェーダーが今レンダ―している頂点のindexを分かればよいのです!。。。どう渡すんだ?

答え:>>>UVマップを使います!!そもそも最終的にオリジナルメッシュは見えないので、UVを使っても問題ない!!

というわけでシェーダーはこんな風になります。

screenshot-431

さすがに長すぎますので、Part 2に続きます!戻ってくるぜ。

Blender Cycles “Lamborghini Gallardo LP570-4″作成 Part2:Material

こんにちは、画像の使いすぎでメディアを占領してしまい申し訳なくなってるmoumouです。
前回のモデリング編に続いて、Part2:マテリアル編を書いていきたいと思います。

応用が効きそうなことだけ書いているので、だんだんランボルギーニ関係なくなってます(笑)

 

このような流れで書いています。

  1. 全体の設計&モデリング編(+ドローン動画)
  2. マテリアル設定 (←今ここ)
  3. ライティング& 環境設定
  4. コンポジットによる実写合成

今回の目次

  1. フレネル効果
  2. バンプマップを利用したノード構成
  3. 綺麗な床のマテリアル

cyclesを扱ううえで知っておくと良いことを書いていきます。

続きを読む

Blender Cycles “Lamborghini Gallardo LP570-4″作成 Part1:Modeling (+ ドローン動画)

こんにちは、moumouです。

今更ですがBlender Cycles講習会、楽しんでもらえたみたいでよかったです。

今回は、みなさんご存じ超高級車”ランボルギーニ“をBlender Cyclesにて作成しました。

 

春休みには作り終えてたモデルなのですが、記事書くのがめんどかった,いや, ある程度長くなる記事だったので,  今更ですが連載記事として投稿したいと思います。

連載記事ということで、以下のような流れに分けて書いていきます。

  1. 全体の設計&モデリング編(←今ここ)
  2. マテリアル設定
  3. ライティング& 環境設定
  4. コンポジットによる実写合成

Blender経験者なら分かるように書いていくので、説明記事みたいになるかもしれません。

基本的に役に立ったことをメインで書いています。

今回の目次

今回のモデリング編は3ページの構成です。最後はオマケです。

このページ:  3Dモデル,モデリングの流れ
2ページ目: 小ネタ, モデリングの際に役立ったこと
3ページ目: ドローンお土産動画

 では早速、Part1.モデリング編を書いていきたいと思います。が、ぱっと見てさっと記事閉じる人向けに(笑)、まずはじめに今回作成した画像と3Dモデルをひとつ載せておきますね。

3Dモデル

↓が3Dモデルです。▶を押して約15秒後3Dモデルを見ることができます。マウス操作で360°回転,拡大できます。また、右下の設定ボタンでワイヤフレームを見たりMatCapで見たりできます。

Lamborghini gallardo lp570-4
by moumou
on Sketchfab

………………………….

続きを読む