Unityの過去記事を統合して一つの記事にまとめてみました。
Unity SceneをWebGLで公開してみよう
Unity Web Playerは既に廃止されていますので、WebGLを使ってみましょう。これでゲームも作成し公開できますね。また私みたいに技術情報系のアウトプットをBLogに記載できるのでとてもありがたい技術です。今回は簡単な手順をご紹介させていただきます。
手順
Build Settingを開く
Buildボタンを押してビルドする
ビルド後は一つのフォルダにIndex.htmlと関連ファイルが出力されるのでこのフォルダをWebサーバに配置しましょう。
Unity Mesh Collider Convexオプション
UnityのMesh Collider Convexオプションについていまいちわかっていなかったので実際にオンオフポチポチしながら試してみました。
オプションON
ここで注意が必要なのが、ConvexをONにした時にはMesh Colliderの形状が選択したMeshにはならない点。次の写真では真ん中が空洞になったModelの上に蓋の様にColliderがかぶさっています。(緑の線が一本入っています)
オプションOFF
一方、Convex Offの場合はModelの形状に忠実にColliderがはりついているのが分かります。
BlenderモデルがUnityで透明?面が無くなっている場合の対応
左の青い箱は奥側面が透明になって向こう側の方眼が見えています。
一方右側の黄色い箱は突き抜けていません。←Blenderでは黄色になると思って作成しました。
なんで青のパターンになるんだろうとしばらく悩み、何度かモデリングし直したりしたんですが、うまくいったりいかなかったり。でぐぐったらここにたどり着きました。
↓StackOverFlowにも質問がありました
Faceの表裏(法線の方向でわかる)が自分が思っていなかった面に向いている場合、Unityではその面を表示しないらしい。解決方法としてはBlender側で面の表裏を整えてあげるとOK!
方法1Control+N でrecalculate Outsideして法線面をすべて外側を向く様に処理を施す。
方法2透明になった面をEditModeで法線面を表示させて該当の面を探し出して、Mesh menu →Normal→Flip Normalsする。
法線は下の様に、normalの面選択ボタンっぽいアイコンをクリックするとでてきます
法線面の方向を示す青い線を注意深くみるとわかった。
追記
この件しらべていて今更ながら分かったんですが、今使ってるUnity Version4.5はBlender Version2.7のファイルそのままAssetとしてImportできて使える。いままで.fbxでExportして使ってました。
UnityにBlender作成のモデルを出力する。(備忘録的な)
大まかな手順
Blender 側
1、モデリングする
2、中心点を重心(質量ベース)に変更する。
Object → Transform → Origin center of Mass (Volume)
3、Rotation Scale を確定させる。
Ctrl + A で Apply Rotation and Scale
4、FBXでExportする
File → Export → FBX (.fbx)
書き出しオプションは下の感じで!
UnityとBlenderでは空間座標の方向が違う為にこのように
設定します。
Unity側
1、Import New assetsで読み込む
Blender→Unity Object import の向き
↑大きな画像はUnity、小さい画像3つはBlender
BlenderでモデリングしてUnityに持っていく場合、両アプリケーションでは軸が異なっておりそのまま持っていくと、あれ?という感じになってしまう。右手と左手の鏡像関係ににている。
そこで自分の場合は画像の様にそれぞれのアプリケーションで軸を仮に表示させておいて、猿の顔がBlenderで奥向きならUnityでは手前向き!ということにしました。ここで保存してUnityで取り込む。
自分なりの方法
以下の様に方向をそれぞれのアプリケーションでだいたい同じになるよう画面をグリグリ回す
Unity | Blender |
後は、猿の顔の場合、Unityで顔を手前に表示させたいのならBlenderで奥向きにする(z軸方向に顔を向ける)。
↓自分の場合しばらく悩んだ
後、Blender側でのGlobalとLocalでRotationとScaleが一致してない場合がかなり重要で一致させないままUnityに取り込むとScriptからAnimaitonさせた時に思いもよらない方向に動いたりするので必ずUnityに持っていく時はCtrl+A(Blender Object Mode → Object Menue →Apply→Rotation & Scale)をしてGlobalとLocalを一致させておきましょう。
モデルのポリゴンを削減したい
Blender でUnityようにモデルを作成して出力するんですが、結構ポリゴン数が大きくなっていてUnityでの実行を重たくする可能性がある場合が多々あります。
そこで、今回はテキストの数字をMesh化しそこからポリゴンを減らしていきましょう。
1、Textで数字の8を入力し、Exclude 0.2 Bevel 0.04で厚みとベベルをつける。
2、Mesh化する Alt + C で Mesh From Textを選択
3、MeshのFace数が964になっています!!!減らしていきましょう。
4、まずは、平面が無駄に分割されている場合にFaceを減らす為に
Mesh → Clean UP → Limited Dissolve
5、Face数502半分近くに削減するできましたが、さらに減らしていきましょう
6、側面をAlt + Controlを押しながらエッジをクリックしてリング選択してください。
ぐるっと一周選択してみましょう。
7、Select → Checker Deselectで一つおきに非選択し
結果として一文字側面のエッジを均等に半分選択した事になりました。
8、選択したエッジを削除します。xキー → Edge Loop
これで側面のエッジが半分に削減されました!
9、あとは穴の中とその入り口、各5箇所に同じ処理を施すと
Face数231まで削減!あとはお好みもっと減らすなり可能。
Blenderでボーンを入れてアニメーションしてみよう
おそらく、通常は以下の手順
1、人体モデリングする
2、ボーンを入れる
3、Weight調整する
4、アニメーションを入れる
5、レンダリング
今回は、モデルはダウンロードしてきた物を使い、アニメーションもフリーのデータをつかいます。
ボーン周りの勉強にはなるかとおもわれます
モーションデータはこの辺りから使わせていただきます
https://sites.google.com/a/cgspeed.com/cgspeed/motion-capture
モデルデータはCC0辺りで適当な物で
事前にUserPrefarenceからBVH Importerを追加しておきましょう
それでは今回の手順
1、BVHファイルをBlenderにImportする
2、Amateur、Waightの調整
はいこれだけですが、Waight調整がめんどくさいかもです
はじめます
1、BVHファイルをImportする Scaleは0.5くらい、Z Forwardでとりこみます
2、大まかにAmateurの大きさを調整しておく
3、boneをモデルにそって再配置していきます
X-rayにチェックをいれておくとやりやすいです
4、ObjectModeで3でだいたい重なる様にしておいて、
かならずモデルを選択後にShit+ボーンを選択してその後にCTRL+PでParent設定します
まずはArmatureDeformを選択
5、EditModeでさらに細かくBoneをモデルに近づけていきます
6、今度は、Objectモードで再度Ctrl+PでWith Automatic Weightを選択します
すると、自動でWeight設定とBoneに名前をつけてくれます。
7、ここでアニメーションを再生して、8以降でWeight調整します
8、EdtiModeで首のボーンを選択し、そのままObjectModeに移行します。それからいったんモデルを右クリックするとWeightModeに移ることができるので、首のWeightを調整することができます。
9、プロパティーを見れば分かるんですが、VertexGroup からボーンを選択する事もできるので
便利だったらそっちを使って下さい。
10、weightはプラスのときはMixかAdd, 消したい時はSubstructを選択して書き込んで下さい
以上で設定終了です
上記の作ったBlender設定を保存してUnityに取り込めばアニメーションすることができます
コメント