おもちゃラボ

Unityで遊びを作ってます

【InDesign】表を作る

InDesignを使って次のような表を作る方法を説明します。

f:id:nn_hokuson:20190714121004p:plain:w300

ここでは次のような流れで表を作成します。

表の内容を入力する

まずは本文中に「,」区切りで表の内容を入力してください(区切り文字は以下のダイアログで変更できます)
f:id:nn_hokuson:20190714113346p:plain:w300

作成した表を選択した状態で、メニューバーから「表」→「テキストを表に変換」を選択します。
f:id:nn_hokuson:20190714113511p:plain:w300

テキストを表に変換するダイアログが表示されるので列分解に「,」を指定してください。区切り文字に別の文字を使った場合は適宜変換して下さい。
f:id:nn_hokuson:20190714113643p:plain:w400

ここまでで次のような表が作成できます。表の大きさは縦線をドラッグすることで変更することができます。
f:id:nn_hokuson:20190714113919p:plain:w300

表の見た目を整える

グリッドに沿って表が配置されているため、表の項目のスペースがバラバラになってしまっています。グリッド揃えをやめるため、表を選択した状態で段落パネルから「グリッド揃え」→「なし」を選択してください。
f:id:nn_hokuson:20190714114407j:plain:w600

表のセル高さを指定の高さにしたい場合は、表パネルの「行の高さ」を「指定値を使用」に変更して高さを入力します。また、組方向は「中央揃え」にしておきます。
f:id:nn_hokuson:20190714114747j:plain:w300

ここまでで次のような表になりました。
f:id:nn_hokuson:20190714114929p:plain:w300

ヘッダに色を付ける

まずは色を付けたいヘッダ部分のセルを選択します。
f:id:nn_hokuson:20190714115555p:plain:w300

この状態で、スウォッチから色を選択することで、セルに指定した色をつけることができます。
f:id:nn_hokuson:20190714115652p:plain:w300

最終的には次のような見た目になります。
f:id:nn_hokuson:20190714121004p:plain:w300

【ARKit】ARでAmbient Occlusion(AO)を使う

ARKitやVuforiaなど、ARのアプリケーションでアンビエントオクルージョン(Ambient Occlusion)の効果を使いたくても、ポストエフェクトが使えなかったり、処理負荷が大きくなりすぎる傾向があります。

ここでは、ARKItやVuforiadでも簡単にAOの効果を実現する方法を紹介します。

f:id:nn_hokuson:20190709201717j:plain:w650

モデルにLightmap Staticを設定する

ポストエフェクトを使わずにAOを表現するにはライトマップをベイクするのが一般的です。ライトマップをベイクするには、インスペクタから「Static」に指定します。

ただ、単純に「Static」にチェックしてしまうと、「動かないオブジェクト」とみなされ、ARで表示でされなくなってしまいます。

そこで「Static▼」の「▼」をクリックして「Lightmap Static」を指定します。これでライトマップに対してのみ静的なオブジェクトとみなされます。

f:id:nn_hokuson:20190709200112j:plain:w350

ライトをベイクする

続いてAmbient Occlusionの設定とライトマップのベイクを行います。

まずはヒエラルキーウインドウからDirectional Lightを選択して、インスペクタからModeを「Baked」または「Mixed」に設定します。Bakedはライトは無視してベイクしたテクスチャのみを使用します。一方、Mixedは非Staticオブジェクトに対しては通常通りライティングします。

また、Shadow Typeは「Soft Shadows」になっていることを確認しておきましょう。Shadow Typeが設定されていないと、正しく影の計算が行われません。

f:id:nn_hokuson:20190709200253p:plain:w350

次に「Window」→「Rendering」→「Lighting Settings」を選択して、Lightingのパネルを開きます。「Ambient Occlusion」にチェックを入れて、「Indirect Contribution」と「Direct Contribution」を3程度に設定してみてください。

f:id:nn_hokuson:20190709155623j:plain:w400

Ambient Occlusionの設定項目であるDirectとIndirectについては、次の記事も合わせて参考にしてみてください。

nn-hokuson.hatenablog.com

最後にLightingパネルの一番下にある「Generate Lighting」ボタンをクリックしてベイクを開始します。1分程度でベイクが終了し、AOの効果がかかったモデルが表示されます。

f:id:nn_hokuson:20190709155654j:plain:w400

エラーが出る場合

次のように、「Mesh doesn't have albed UVs」や「Mesh doesn't have UV's suitable for lightmapping」といったエラーが出る場合、モデルに正しくUV座標が設定されていない可能性があります。

f:id:nn_hokuson:20190709201427p:plain

BlenderやMayaなど3DCGソフトを使ってUV展開を行い、正しくUV座標を設定してください。BlenderでUV展開をする方法は次の記事で紹介しています。

nn-hokuson.hatenablog.com

【Unity】広重のような雨のエフェクトを作る

歌川広重の描いたような雨をUnityで降らせる方法を紹介します。地面に雨粒があたったときは、そこから波紋が広がるようにします。完成版は↓こんなかんじです〜

ちなみに歌川広重の超有名な雨の絵はこんな感じ。「名所江戸百景 大はしあたけの夕立」ってやつです。臨場感というか質感がすごいですね。

f:id:nn_hokuson:20190704210353j:plain:w300 
出展:wikipedia

ここでは次の流れで雨のエフェクト作っていきます。まずは雨粒が落下するパーティクルを作成し、次に波紋のパーティクルを作ります。最後に地面に雨粒があたったときに波紋が広がるようにします。

雨粒を作る

Unityで雨を作るにはParticle Systemを使います。生成するパーティクルには次のテクスチャを使用します。

f:id:nn_hokuson:20190704211549p:plain:w150

まずはパーティクルに使うマテリアルを作ります。プロジェクトウィンドウで右クリックして、「Create」→「Material」を選択してください。名前はrainにしておきます。

f:id:nn_hokuson:20190704203640p:plain:w200

次に作成したマテリアルを選択して、Shaderを「Particles/Standard Unlit」に設定、Rendering Modeは「Fade」、Albedoにはrainのテクスチャをセットします。

f:id:nn_hokuson:20190704203854p:plain:w400

ヒエラルキーウインドウで「Create」→「Effect」→「Particle System」を選択してパーティクルを作成します。雨のテクスチャが表示されるように[Render]のMaterialにrainマテリアルをセットしてください。また、雨が垂直に表示されるようにRender Modeは「Vertical Billboard」を選択します。

f:id:nn_hokuson:20190704204016p:plain:w400

雨が振り続けるように[Emission]のRate over Timeを「300」に設定します。また、雨を広範囲に降らせるため、[Shape]ののShapeを「Circle」、Radiusを「14」に設定します。

f:id:nn_hokuson:20190704204216p:plain:w300 f:id:nn_hokuson:20190704204420p:plain:w300

まだ雨粒が外側に広がって全然雨っぽくないですね・・・

f:id:nn_hokuson:20190704204257j:plain:w500

雨を下方向に降らせるための設定をしていきます。DurationとStart Lifetimeは「2」に設定します。雨粒がに円の外周に向かって広がらないようにStart Speedを「0」にします。雨粒を縦方向に伸ばすために3D Start Sizeを(1,3,1)にします。最後に雨粒が下方向に落下するようにGravity Modifireを「1」に設定します。

f:id:nn_hokuson:20190704204601p:plain:w400

ぐっと雨っぽくなりました。

f:id:nn_hokuson:20190704204641j:plain:w500

次は地面を設置して地面にあたったときは雨粒が消えるようにしましょう。ヒエラルキーウインドウでPlaneを生成して、いい感じに配置してください。

f:id:nn_hokuson:20190704204954j:plain:w500

パーティクルが地面にあたったら消えるようにします。[Collision]のTypeを「World」に設定し、Lifetime Lossを「1」にします。

f:id:nn_hokuson:20190704204846p:plain:w400

これで地面に当たると雨のパーティクルが消えるようになりました。

 f:id:nn_hokuson:20190704205007j:plain:w300

波紋を作る

雨粒が地面にあたったときに広がる波紋のパーティクルを作ります。波紋のパーティクルは1つだけ作っておいて、雨粒が地面にあたったときに生成されるように、雨粒のパーティクルのSub Emitterに設定します。

波紋には次の円のテクスチャを使用しました。

f:id:nn_hokuson:20190704211721p:plain:w150

まずは波紋に使うテクスチャをインポートして、雨粒と同じように波紋のマテリアルを作成してください。

f:id:nn_hokuson:20190704205111p:plain:w200

波紋用のパーティクルを新しく作成し、そこに波紋のマテリアルを設定します。波紋は地面と平行に広げたいのでRender Modeは「Horizontal Billboard」に設定します。

f:id:nn_hokuson:20190704205153p:plain:w400

地面から波紋のパーティクルが湧き出てきます・・・

f:id:nn_hokuson:20190704205213p:plain:w400

波紋はすぐ消えるようにDurationとStart Lifetimeを「0.8」に設定します。また波紋が上方向に広がらないようにStart Speedを「0」にします。

f:id:nn_hokuson:20190704205348p:plain:w400

波紋の生成個数が1個になるように[Emission]のRate over Timeを「0」、BurstsのCountを「1」に設定します。また、常に中心にパーティクルが生成されるように[Shape]のRadiusは「0.01」に設定してください。

f:id:nn_hokuson:20190704205455p:plain:w300 f:id:nn_hokuson:20190704205523p:plain:w300

波紋が徐々に広がって消えるようにします。波紋を広げるには[Size over Lifetime]を線形に増加するグラフに設定して、sizeを「3」に設定しました。

f:id:nn_hokuson:20190704205606p:plain:w400

また、波紋が徐々に消えるようにするため、[Color over Lifetime]で右端の透明度を「0」に設定します。

f:id:nn_hokuson:20190704205551p:plain:w400

これで徐々に透明になりながら広がる波紋ができました。

f:id:nn_hokuson:20190704205628g:plain:w400

波紋のパーティクルをSub Emitterに指定

最後に雨粒が地面にあたったときに波紋が生成されるように、波紋のパーティクルを雨のパーティクルのSub Emitterに設定します。

雨のパーティクルの[Sub Emitter]のドロップダウンリストを「Collision」に変更して、右の欄に波紋のパーティクルを設定します。

f:id:nn_hokuson:20190704205754p:plain:w400

波紋のパーティクルが雨粒パーティクルの子要素になっていればOKです。

f:id:nn_hokuson:20190704205902p:plain:w250

これで雨粒が地面にあたったら波紋が表示されるようになりました。実行して確かめてみてください。

f:id:nn_hokuson:20190704210017j:plain:w600