カテゴリー別アーカイブ: Unity

Unity Treeで桜を作れるか

標準

CG Cookieのコースで学んでUnity Treeを使いこなせるかチャレンジ

(紹介動画-Free)

https://cgcookie.com/lesson/introduction-44/

(ここから先は、自分用メモとして)

だいたいのセットは、スタンダードアセットの環境系(Environment)にそろっているので、そのパッケージをインポートしておく。

木全体:Seed(適当に)。Area Spread(枝葉の広がり範囲)。オフセット(地面下に伸ばしたいとき)

LODクオリティ(初期設定0.8程度 あげればクオリティハイ、下げればローポリ)

幹や枝の設定:曲がり具合、直径の減衰具合、太陽に向く具合、根本の広がりなど。

途中で枝が折れた表現も可能(マテリアルもそれ用のをつけることが出来る)。

:どれぐらいの位置にどれぐらいの分量の設定可能。

出来上がったツリーは、自動的に(?)プレファブ設定されているので、テライン上にブラシで配置することが可能。

あるいは、少ない花の絵のみで、こういうのも綺麗→木蓮とかコブシの木に最適かも。

 

風の影響範囲

create→3Dオブジェクト→Wind Zone

木の幹、枝、葉っぱへと風の影響を設定していく。

 

Unity Particle

標準

参考にさせていただいたスライド
http://sssslide.com/speakerdeck.com/unitydojo/21unitydao-chang-pateikurujiang-zuo

1.パーティクルシステムのモジュール

1)基本

Main

初期速度、大きさ、色など。調整時はLoopで行うとよい。
カーブデータはプリセットライブラリとして保存できる。ただし、元のアニメーションカーブとの互換性はない。
移動距離などで消すにはCollisionを使う工夫もあり(Lifetime Lossを1にすると衝突時に消える)

Emission

時間に依存して放出するTimeと距離に依存して放出するDistanceのオプションあり。距離に応じる場合は、Simulation SpaceをWorldにする。

2)移動

Shape

Skinned Mesh Rendererを使うことで、キャラクター全体からパーティクル放出可能。
Start Speedをマイナスにすると、その形状の内向きにパーティクルを出せる。

Velocity Over Lifetime

Limit Velocity over Lifetime

原則させたい場合有効。Dampenは減速率。

Inherit Velocity

MainモジュールがWorldスペースのとき有効。オブジェクト自体の速度をパーティクルに反映させるときに使う。(裾を引く光など?)

Force Over Lifetime

徐々に早くなるミサイルなど。

External Forces

風の範囲設定(Wind Zone)を使ったときに使う

3)色

Color Over Lifetime

時間によって色を変える場合。アルファとカラー別々にMax8つまで補完登録可能。

Color By Speed

4)大きさ

Size Over Lifetime

Size By Speed

5)回転

Rotation Over Lifetime

Rotation By Speed

6)イベント

Noise

Collision

Triggers

Sub Emitters

Birth(誕生時)、Collision(衝突時)、Death(消失時)の3つに、どのタイミングでサブパーティクルを出現させるか設定可能。

7)アニメーション・描画

Texture Sheet Animation

テクスチャのコマ画像などを順番に読み取り、変更させるスプライトアニメーションとして設定したい場合。升目の数は、2のべき乗。

Lights

Trails

Custom Data

Renderer

2.打ち上げ花火考察

(0)舞台

太陽(Directional Light)を回転上向きにして沈める(たとえば、回転X:-15、Y:180など)

(1)打ち上げ

①Particle Systemを新規作成【HANABI】。リセットしたのち回転X:-90に設定。
Mainパネル Start Lifetime 3, Start Speed 20, Gravitiy 0.5
Emissionパネル Rate:0.5
Shapeパネル Angle:5
Rendererパネル MaterialをParticle Firework

これで2秒に1回打ち上げられる(Emission レイトが0.5)

②炎の軌跡作成用に
Sub EmittersのBirth追加【UCHIAGE】
Sub Emitter のマテリアルをParticle Fireworkに変更。
EmissionをRate over Timeを0にし、Rate over Distanveを30に設定

追跡する炎はStart Life time 1, Start Speed -1, Start Size0.4などに設定。
ShapeはConeにする。
これで、後ろに拡散するイメージが完成。

③Color over Lifetimeを使って、色が白→黄→オレンジと変化で設定

④Size over Lifetimeを使って、なだらかに凸カーブで最後がゼロになる曲線カーブを選択

(2)爆発(拡散する火花と煙)

①最初の【HANABI】パーティクルに、Sub EmissionをDeathのものを2つ追加【HIBANA】【KEMURI】

【HIBANA】Start Lifetimeを2つの定数の間(Random between 2 constants)に設定。0.8と1.0。
Start Speed 40-60。Gravity Modifier 3。
Emissionパネル Bursts追加。Min, Maxとも300に。
Limit Velocity Over Lifetimeを有効にし、Speedカーブを減速するものに変更。Dampen 0.1に。

ひとまず、ここまでで、飛び散る火花イメージ。

【KEMURI】Start Size 40。
3D Start Rotation Z軸 -180 180
Start Color のアルファ値 30
Emission Bursts。Min,Maxとも1に。
フェードインフェードアウト表現のため、Color Over Lifetimeのアルファ値を0→255→0 と変化。
Size over Lifetime 50%スタートで徐々に大きくなるカーブに。
Inherit Particle Color(元のパーティクルの色継承)をオフにし、独自にColor over Lifetimeで色をつける。

【HIBANA】を華やかに。Trailsパネルを有効にする。
Lifetime 0.6-1.0。Die with Particlesをオフに。Width over Trailを0.5。
Color over Trailでアルファ値を100に。

(3)消失(煌き)

①爆発後に起きる煌きを作成。【HIBANA】のSub Emitters→Deathに【KIRAMEKI】追加。
Start Lifetime 0.6-1。
Start Size 1-3。
Emission BurstsをMin,Maxとも1。
Velocity over Lifetimeを (-5,-5,-5),(5,5,5)でランダムに(風にやや流される感じが出る)
Color over Lifetimeでアルファを0,1,0,1,0,1,0とすばやく変化させて、点滅するイメージを出す。

 

Unity上でリアルタイムにダンスをさせたい!MMD変換でもいい。New

標準

2017/5/3 バージョン

こちらsimplestarさんの記事「UnityでMMDのPMXを表情モーフ付きでダンスするFBXとしてアセット利用する話」(2016-11-27)を参考に

1. Stereoarts Homepage さんのページでMMD4Mecanim (Beta) の最新版を入手

 

現在バージョン→2017/04/23 Unity 5.6 / 2017.1 への対応, その他不具合修正

MMD4Mecanim_Beta_20170423.zip

チュートリアル(基本編・応用編)がついているのでそれを参照する

解凍フォルダ中に、 MMD4Mecanim.unitypackage というUnity用パッケージがあるので、それをUnityプロジェクトにインポートする。

利用制限→WebPlayerでの利用不可。

 

2.MMDモデルの準備

 

Tda式アペンドミクさんが好きなので →作者様ブログ http://u16hp.blog134.fc2.com/

→配布場所(読んでね.txtを読むこと) https://bowlroll.net/file/4576

モデルフォルダの中身を、assetsフォルダに置く。(上の、MMD4Mecanimフォルダと同じ場所)

自動的に、(モデル名).MMD4Mecanimファイルが出来上がっている

それをクリックし、規約に同意する。

 

3.モーションを準備

上記MMD4Mecanimフォルダにも歩きVMDは用意されている。

かっこいいダンスないかなーと、男性舞踊 花鳥風月http://sdrv.ms/14OJMjb
(o2さん作 動画http://www.nicovideo.jp/watch/sm8397088)

こちらをダウンロード。

VMDファイルをMMD4Mevanimパネルの指定場所にドラッグ

 

4.変換作業

MMD4Mecanim設定パネルのprocessボタンをクリックし、しばらく待つと、プレファブ形式のミクさんが出来ている。

シーンにドラッグして、設定を初期化する。

rigは、generateのままでないとVMDの再現性が低い。(humanoidリグだと不足設定などが出てくる)

5.Animator Controllerの作成

新規Animator Controllerを作成し、それをミクさんにアタッチして開く。

Animatorウィンドウが開くので、先ほど変換したMikuさんモデル内のモーションデータ(.vmd)をドラッグ。

このコントローラをインスペクタ上で指定する

 

6.オーディオソースの貼り付け

 

オーディオクリップは、wav形式が無難AVIUtlなどのソフトで変換可能。

(音声あり。注意。NHKクリエイティブライブラリーより 初音ミクの音楽 (C)DropBox「流星DANCE」)
そのほかは、Youtubeの解説に書いてあります。

 

7.オリジナルアニメ→ビデオトレス

 

やってみると難しいトレス。いろいろ調べた結果。。。。

(1)Torsoは回転させず、位置あわせに使う。

(2)300フレーム程度(2x8カウントぐらい)をひとまとまりとして作っていく。

(3)根性。。。

がコツのようです。。。

「http://www.nicovideo.jp/watch/sm17450893 モーショントレスのコツ(百舌谷 さん)

■トレースの工程
1. 動画の準備#0:41
2. カメラと初期ポーズを動画に合わせる#1:13
3. センター仮打ち#1:50
4. 足IK#2:30 (①完全に設置②かかとが離れる③一番高い場所④つま先設置⑤かかと設置)
5. 上半身、下半身、頭、首、センター#4:22
6. 足、足首#7:05
7. 肩、腕、ひじ、手首、指#7:57
8. 3~7を繰り返す
9. 目や表情をつけて完成

※追記:仮センターは頭の先端のみを見て判断し打ちます。」

Blenderの場合は、ビデオシーケンスエディターに音楽を置いて作業できるので便利(読み込みは、.wav形式のみかも。AVIUtlで変換可能)

8.お借りしたものたちでリアルタイムモーション(たーのしー♪)

モデルは tda式アペンドミクさん
スクリプトは、StereoartsさんのMMD4Mecanim
モーションは、百舌谷さんの 4つをBlenderのアニメーションコントローラで接続
音楽は、NHKクリエイティブライブラリ 初音ミクの音楽 (C)DropBox「流星DANCE」

作業画面イメージ

画面キャプチャ(Fraps)によるリアルタイムプレイ画面

Game Asset組み立てモジュール02

標準

Unityで組み立てる

1.設計方針をたてる

・16 by 9の長方形画面

2.組み立て

(1)パーツを個々にプレファブ化

①一体化したプレハブとして入っているパーツをひとつづつのプレハブに変える。

②パーツは、自動的に100のスケールで入っているが、大きすぎるので、25のスケールサイズがよい。

→ただ、そうした場合、CTRLでのスナップが大きすぎるので、スナップ設定を移動0.5にする必要がある。

(2)カメラ設定

①パースではなく、平行投影のほうにする

②サイズを大きくする 10程度?

③X軸に45°傾ける。(やや下を見るアングル)

(3)床をタイルで埋める

①おびただしい数の床のコピーが出来てくるとで、エンプティを利用して、フォルダにまとめる。

②建物を適当に配置する。

(4)照明の設置

3.ゲーム用武器の配置

(1)回転砲塔(Cannon Turret)

・Blenderからfbxでインポートしたオブジェクトは、100:100:100になっている(Blenderの1.0がUnityの100)。

・また、Blenderではy軸が前でZ軸が上だが、Unityではy軸が上、z軸が前。

①エンプティオブジェクトをインポートしたオブジェクト、turret_B_Baseのチャイルドとして作成。Cannonと名前をつけ、上に出す。

②Cannonの回転初期値が-90,0,0になっているので、これを0,0,0に直す。

②その下にある、turret_B_pivotを一つ上の階層にあげる(Connonのチャイルドの位置)。プレハブ構成を壊すけれどいいかという警告が出るので、OK(Continue)を押す。これで、Unityの座標軸方向で砲台が回るようになる。

 

Game Asset組み立てモジュール01

標準

有料(一部無料)コースのCGCookieからなので、自分用メモとして。

https://cgcookie.com/flow/creating-a-tower-defense-game/

1.ベースモジュール(Blender)

(1)壁などのベースモジュールを作成する。1つめモジュール作成。

①G-Z-1でCubeを座標平面に持ち上げる。

②編集モードで、X軸に沿って、中央をループカットし、バックサイドを削除。穴の空いたバックサイドにもう一度面を貼る。

③これで、X-2,Y-1,Z-2のサイズの壁のモジュールが一つできた。吸着(U字磁石のようなアイコン。ウィンドウ右下)を有効にし、グリッドに吸着(Increment)を指定する。(吸着オフでも、CTRLキーを押して移動すると、同じようにグリッド吸着が出来る)

④X軸上左端のコーナーにオブジェクトの中心を持っていく。エディットモードで、コーナーを選んで、Shift-S。Cursor to Selection。オブジェクトモードに戻し、Set Originメニューか、Ctrl-Shift-Alt-Cで、オリジンをカーソル位置にあわせる。

⑤マテリアルを設定し、パープルにしておく(単なるモジュール区別のため)。

(2)ふたつめのモジュール作成

①1つめのモジュールを複製し、グリッドに沿って並べる。(Shift-D と移動)

②大きさを4にする(X方向に2倍)。

③先ほどのマテリアルのFの隣の+アイコンを押し、色を赤に変える。

④CTRL-Aで、スケールをアプライする。

(3)3つめ。コーナーモジュール作成

①大きさ1のモジュールを作成し、CTRL-Aでスケールをアプライ。

②マテリアルは、オレンジ色。

③角の辺を選択し、Ctrl-B(ベベル)。

(4)4つめ。2x2でインテリアモジュール作成

①大きさ2x2にする。スケールをアプライ。

②エディットモードで、上からみて、田の字にループカット。ひとつを削除。

③削除した穴にもう一度面をはって、内側に丸くなるよう、ベベルをかける。

④マテリアルを青にする。

 

2.モデュールの形状変更(Blender)

(1)1つめ。天板と壁部分のみ残し、それを変形

①テンキーのスラッシュで、1つめのオブジェクトのみにフォーカス

②天板と壁だけ残し、側面、底面、背面削除。加工していく。

③左側にのみ、境界パネルをつける。このとき、オブジェクトの中央(メディアン)吸着にしておく(下図)

 

(2)2つめ。

(3)3つめ。コーナー

①ラインだけ残し、EでX方向に延長。

②オブジェクトモードで平面を追加。上から見て、モジュールを45°にカットする方向に移動。

③面→モジュールの順にshiftで選択し、モジュールの編集モードにして、ナイフプロジェクトツール、オプションのCut Throughをチェック。

④45°にカットされた面を90°方向に曲げる。S-X-0などで揃える。頂点吸着で、きっちりブロックにする。

⑤ベベルをかける。このとき、ベベルのオプションを、オフセットではなく、アマウント(量)にし、75(%)の数字をいれると放射状にベベルがかかる。

 

(4)インテリアコーナー

基本的に(3)のコーナーと同じ作り方

(5)床面をモジュールスナップできるよう変更する方法

床面にする平面を出したとき、今のままのモジュールでは、内側の床の高さが、グリッドとずれているため、不便である。

①同じモジュールのものをShiftで選び、CTRL-Lでリンク→オブジェクトデータ を選ぶ。これにより、一つを修正しただけで、別のオブジェクトも修正できる。

②エディットモードにし、内側通路を含んだ、上層面を選び、内側通路のどれか一点を最後に選びなおして、グローバルユニットの高さ2になるように修正する。

③アクティブエレメントをピボットポイントにし、吸着を絶対グリッドにする。これで選択した部分を上下に移動すると、ちょうどグローバルユニットの高さ2に床面が揃う。

④ほかのモジュールもそれぞれ修正する。

床3枚、通路床3枚を出して、それぞれマテリアルの色を変えておく。

(6)4ユニットワイド、6ユニット長さの坂を作る

①インテリア部品(青色)を使う。

②Y軸対称なので、中心にエンプティオブジェクトをはさみ、ミラーモディファイアで作成する。(クリッピングオン)

③ペーブメント部分をまず、6ユニット引き出し、斜め45°にカットし、オフセットに変えたベベルで丸める。

④坂の面をおろしてくる。手すりに表情をつけるなど。

⑤坂の下りる口が急に角度がつきすぎるので、一本ループカットをいれ、ベベル2ぐらいを入れる。

⑥ミラーモディファイアを適用し、境界パネルの重複したものを削除。オブジェクトの中心を変更する。

(7)ブリッジ作成

ワイド4のオブジェクトを使う。リンクしたままの場合は、スペースキー→Make Single User で戻す。

①ミラーモディファイアx方向とy方向で作成する。ミラー中心には、エンプティオブジェクトを置くとよい。マテリアルを変える。

②壁の部分の引き出しと、ブリッジ通路になる部分を引き出す。

③上部にあたる部分を45°カットし(この場合、カットしたくない部品はHで隠す)、90°曲げる。

④ブリッジの真ん中をシフトアップする。

⑤ブリッジの下に梁などをいれて表情をつける。

⑥モディファイアをアプライして、重なっている部材などを削除する。

(8)ブリッジ接続材

①ブリッジの中央部分を切り出して、接続用の部品にする。

②オブジェクト中心を他の部材と同じように、地面の隅につけなおす。

(9)バルコニー

①4ユニット幅の部材を使って、バルコニーをつくる。

 

 

3.Unityにもっていく準備

(1)回転の修正

Alt-Rで回転の初期化、Alt-Gで位置の初期化が出来る。

①坂道は、奥から手前に降りる向きにしてから、回転をアプライする。

②床パネル(6枚)は、すべて、Alt-Gで位置を初期化し、オブジェクト中心をコーナーにする。

(2)名前のつけかえ

structural_ramp, structural_corner-int, structural_corner-ext, structural_wall-A, structural_wall-B, structural_wall-C,
structural_bridge, structural_bridge-extension, structural_platform-A, structural_platform-B, structural_platform-C,
structural_ground-A, structural_ground-B, structural_ground-C

(3)マテリアルを一つにする

①すべてのモデュールをAで選択し、マテリアルを確認する。

②今、ついている仮のマテリアルを削除し、新しくマテリアルを追加し、何の設定もしないで、structural_mtlという名前にする。

③Ctrl-Lを選び、マテリアルを他のオブジェクトにも適用する。

④structural_master.blendで保存する。

⑤選択したオブジェクトのエクスポートを行う。meshのみでいい。フォルダexportをつくり、その中にエクスポートする。

structural_master.fbx

4.Unity新規プロジェクト

(1)modelsフォルダとtexturesフォルダを作成。

(2)modelsフォルダに、structural_master.fbxをドラッグ。

5.UV展開

(1)個別展開

①90°に曲がるところは切り離すようにする。

②開いたUVテクスチャは、プロパティパネルで、ストレッチ(伸びている)部分のエリア表示をオンにすると、色がついて表示される。

青は、伸びていないが、緑は修正が必要。

③ツールシェルフのオプションタブのところに、Live Unwrapボタンがあるので、オンにしておくと便利。

④左右対象の形は、点スナップモードで重ねてしまう。Yを押すと、面も離れるので、重ねやすい。

⑤すべてのモジュールをUV展開する。

(2)全モジュール一体化

①Ctrl-Jで全モジュールを一つのオブジェクトにする。

②エディットモードで選ぶと、UVが重なっている。UVsメニューから、Average Islands Scale を選ぶ。もう一度、Aで全選択し、再び、UVsメニューから、Average Islands Scaleを選ぶ。

③UVsメニューから、Pack Islandsを選ぶ。

④一度すべてのUVテクスチャを外に移動しておき、大きなパーツからひとつづつレイアウトしなおしていく。

⑤すべてのUV展開が終了したら、またオブジェクトをひとつづつ選んで、Pでそれぞれを別オブジェクトにする。

⑥オブジェクト名も、中心点も失われてしまったので、UV作成前のオブジェクトをアペンドし、オリジナルを先に、UV展開して情報を失ったほうを後に選択し、CTRL-Lで、UVマップを転写する。

6.ペイント

(1)ベースカラー

①Blender Renderに変え、テクスチャペイントモードにする。(オブジェクトは真っ白になる)

②T(ツールボックス)の一番上Toolタブにエラーが出る。これはまだテクスチャデータが適用されていないか、ペイントスロットがない状態。Add Paint Slotをクリックし、Diffuse Colorを選択。名前は、例えば structural_COLORにし、2048×2048サイズにする。

③OKすると、オブジェクトは真っ黒になる(上で色を黒にして指定したため)。

④Toolsタブの下に、Slotタブが出来ている。こちらで、さらにバンプマップやスペキュラーマップ、AOマップなどを追加できる。

⑤ツールボックスのさらに下にオプションズタブがあり、その中に、プロジェクトペイントのBleed設定ボックスがある。これは、UVの境界線をどれぐらいオーバーラップして塗るかを変える。2pxの初期設定だと小さいので、10pxにする。また、色を塗る場合は、そのすぐ上にある、Normal設定チェックをオフにしておく。

⑥最初にブラシ強さを1.0にして、Fillブラシで塗りつぶす。歩道からグレーで塗りつぶしていく。テクスチャ表示モードにしないとカラーピッカーがうまく使えない。

⑦テクスチャをイメージ保存するのを忘れないように。これは、直接、UnityプロジェクトのAssetの下に作った、Texturesフォルダに保存するのがよい。

⑧Blenderでイメージ保存する場所が、UnityアセットTexturesフォルダになっているので、塗り替えると、すぐにUnity上に反映する。

⑨なんとなくこんな感じ。

 

(2)バンプマップ

①テクスチャペイントモードにし、スロットを一つ追加。ノーマルを選ぶ。

②structural_BUMP という名称にしておき、黒ではなく、RGB 0.5のグレーでスタートする。

③オブジェクトには、smoothシェーダーを適用するが、このままだと、全部にのっぺりとスムーズがかかってしまうので、データオプションのセクションパネルから、ノーマル設定にある、Auto Smoothの角度を調整する。ここでは、20°ぐらいがちょうどいい。

④ブラシのストローク方法をラインにし、ベースグレーより少し明るいグレーで、歩道部分のベースアップから始める。コーナーカーブでは、ラインタイプから、ベジェカーブタイプに変更して線を描く。カーブは、CTRLを使ってドラッグなど→エンターで決定。

⑤囲ったところを塗りつぶし、一段あがっているような効果を出す。

⑥もとの色(0.5のグレー)で、シャープな線形状を選び、いくつかの効果線を引く。

⑦Unityにもっていった場合、バンプマップテクスチャをクリックし、「グレースケールから作る」をチェック。アプライする。

⑧バンプのかかり具合は、数値で調整する。

 

(3)カラーマップ調整

①バンプマップを描き終わったら、ペイントソフトの上で、カラー画像の上からバンプマップをオーバーレイモードで掛ける。

(4)Metalnessマップまたは、スペキュラーマップ

①テクスチャペイントを選び、スロットを一つ追加。Diffuse Colorでよい。2048サイズで0.5のグレーからスタートする。

②太陽があたる部分は、明るく反射する。

③シェードレスを時々チェックして確認しながら、ハイライトを白で塗っていく。

④暗いほうは、テクスチャブラシを雲模様で設定する。白で、ブレンドモードをMultiplyにし、汚れが落ちるくぼみを中心に塗っていく。

⑤Unityにもっていった後、Metalイメージに追加。画像は、グレーから作成をチェックして、アルファイメージを保つ。

(5)AOマップ

①UV展開で重なっている部分は、1枚にする。

②白の新テクスチャスロットを追加し、一度保存する。

(6)エミッションマップ

①発光しない部分は黒にする。