タグ

ブックマーク / tsubakit1.hateblo.jp (17)

  • ScriptableObjectについて - テラシュールブログ

    ScriptableObjectとは何かと色々と悩んできましたが、答えは簡単でした。データを格納するオブジェクトです。もう少し言えば、Unityがデータをシリアライズ・デシリアライズしパラメータを格納するための仕組みです。色々な事が出来る割に用途が分かりにくいのでけっこう悩んでしまいました。 ScriptableObjectの使い方 ScriptableObjectの用途 基的にはScriptableObjectはパラメータや参照を格納する用途で使用します。 例えば、沢山の敵が居たとします。その敵は大量に配置する予定のため、オブジェクトプールのように「再生成」ではなく「パラメータ初期化して再登場」させる物とします。その場合、何処かに「初期化時のパラメータを保持する場所」が必要です。 この時、初期化時のパラメータを敵各々が持つのは少し勿体無いです。1体が1MB分のパラメータを初期化に使うな

    ScriptableObjectについて - テラシュールブログ
  • 【Unity】ECSで配列を格納する Dynamic Buffers - テラシュールブログ

    今回はECSで配列を使用する方法についてです。 ECSで配列を使用する ECSに格納するComponentDataには配列を格納出来ません。とはいえ、マネージドなメモリも格納出来るSharedComponentDataは大量の種類を生成するとECSの効率が著しく下がるので余り良くありません。 とはいえ、 "接触したキャラクターの一覧"や"NavMeshのパス"など、連続した(可変の)データを必要とするケースはソコソコ多いです。 今回はDynamic Buffersを使用してこの問題を回避します。 下のような感じで特定のEntityが他のEntityを追跡する機能を作成してみました。中央のシリンダーが他の3つのEntityへの参照を保持していて、その参照経由でEntityへの線を引きます。 作ってみる まず線を引く対象となるEntity群を用意します。コードで配置するのが面倒くさいのでハイブ

    【Unity】ECSで配列を格納する Dynamic Buffers - テラシュールブログ
  • 【Unity】Unity 2018のEntity Component System(通称ECS)について(1) - テラシュールブログ

    今回はC# Job Systemと並びよく紹介されるEntity Component System…通称ECSについてです。 実行可能なビルドと簡単ではないプロジェクトが公開されているので、ついでに紹介していきます。 ただ経験的に、UnityのECSの「データ指向設計」と「ECS」と「Unityの制約」を一気に聞くと意味不明になるので、分けます。 まずはECSの概念から。 ECSとは何か? まずECSとは何か?ECSは 何か凄い機能 というよりは、コンポーネント志向に変わる新しいアーキテクチャパターンです。 要するに、(目標としては)GameObject / Componentを差し替えるモノです。 ECSはGameObject / MonoBehaviourと較べて、膨大なオブジェクトを処理しやすい設計になっています。ECSはUnityのコンポーネント志向と用語的には似ており、ECSはU

    【Unity】Unity 2018のEntity Component System(通称ECS)について(1) - テラシュールブログ
  • 【Unity】知らないと苦労するかもしれない、Timelineと座標の話 - テラシュールブログ

    Unity 2018.3以降の場合 Unity 2018.2までのTimelineの座標系の話 AnimationControllerがAnimatorにセットされていれば現在位置から移動、無ければ絶対座標からアニメーションを開始する ApplyTrackOffsetはAnimationControllerの有無で用途が異なる AnimationControllerがセットされている場合、移動にはApplyRootMotoinが必要 Timelineを編集後、キャラの位置がズレるのはPreview中にキャラの位置を編集しているため 要するに 宣伝 関連 Unity 2018.3以降の場合 この記事の内容の幾つかは当てはまりません。 tsubakit1.hateblo.jp Unity 2018.2までのTimelineの座標系の話 今回はTimelineで知らないと多分死ぬ思いをする、Ti

    【Unity】知らないと苦労するかもしれない、Timelineと座標の話 - テラシュールブログ
    amagitakayosi
    amagitakayosi 2019/04/14
    この辺の話でめっちゃハマってた……!!
  • Unityのシーン上に配置したモデルを結合する - テラシュールブログ

    以前、ステージの作り方について紹介しましたが、これには想像の通り問題が一つあります。それは、GameObjectをすごい数要求する事です。 Sample Assetsのプロトタイプアセットを並べて簡単なステージを作ってみよう[Unity] - テラシュールブログ Unityにおいて初期化時に問題になる項目は3つ、シェーダーのコンパイル、リソースのエンジン登録、GameObjectの構築です。ゲーム格化するとシリアライズの高速化や別スレッドに逃す事も含まれます。さらに言えば、参照の結合をランタイムで実行してるとコレも問題になりやすいのですが、それは取り敢えず置いておきます。 大量にGameObjectがあるとGameObjectの構築に時間がかかるため、以前紹介した方法でステージを作成すると少し問題となります。Unityのレンダラーは1つのモデルにつき1つのGameObjectを要求する

    Unityのシーン上に配置したモデルを結合する - テラシュールブログ
  • 【Unity】GPU Instancingで遊ぶ - テラシュールブログ

    Unity 5.4から搭載されるGPU Instancingで遊んでみます。 docs.unity3d.com GPU Instancingは、複数の「同一メッシュ」かつ「同一マテリアル」なオブジェクトがあった場合に、GPU側で一括で描画してくれる技術みたいです。 扱いにかなりクセがありますが、上手く使えば面白い事が出来るかもしれません。 似たような技術にバッチングがありますが、あちらはCPU側で纏めて描画するのに対し、GPU InstancingはGPU側で纏めて処理を行う事に違いがありそうです。 上の左の絵はGPU Instancingを使用せず色違いのメッシュを大量に配置した場合。右はGPU Instancingを使用した場合です。SetPass Callの数が明らかに異なります。 GPU Instancingを試す GPU Instancingを試してみます。 まずはGPU Ins

    【Unity】GPU Instancingで遊ぶ - テラシュールブログ
  • 【Unity】指定のアセットがプロジェクト内に存在しない場合、不足アセット一覧とパッケージへのリンクを表示してくれる効果が発動するアセットを作成した - テラシュールブログ

    指定のアセットがプロジェクト内に無い場合、不足ファイルの一覧と該当アセットのあるファイルへのリンクを表示してくれるアセットを作成しました。 エディタを起動させた際にアセットが不足している場合、必要なアセットを表示してくれます。また、「A$」ボタンを押すことで、アセットストアもしくは必要なアセットのあるサイトを開きます。 コンパイルエラーがあっても動作するので、ソースコードで不足分のファイルへアクセスしている場合でも使えます。 主に、オープンソースのようなプロジェクトでアセットストアのアセットを使用したい場合や、アセットのサンプルを作成した場合などに使う事を想定してます tsubakit1.hateblo.jp インポーターの使い方 インポーターの導入は、unitypackageにあるAssetRequest.dll を導入するだけです。GUIDが変わるのは避けたいのでUnitypackag

    【Unity】指定のアセットがプロジェクト内に存在しない場合、不足アセット一覧とパッケージへのリンクを表示してくれる効果が発動するアセットを作成した - テラシュールブログ
  • 【Unity】モデルを透明にする (2) - テラシュールブログ

    今回はよりアニメ寄りというか、正しくないが見た目の良い透明の表現について色々とやっていきます。 前回のエントリー(単純に透明マテリアルを設定する方法)はこちら。 tsubakit1.hateblo.jp 目次 目次 透明なオブジェクト Depthバッファへの書き込み Depthバッファを書き込みつつ透明シェーダー 二つのカメラで描画する 2つのカメラで描画する手順 透明なオブジェクト 前回のエントリー最後にユニティちゃん(天使)のグロ画像を紹介しました。この絵は間違っているように見えなくもないですが正しいです。 透明とは背景が見えている状態ではなく、中身が透けて見える状態を指します。例えばクリオネは透明な体を持っていますが、同時に内蔵も見えています。 つまりサーヴァントやら幽霊が透明になるシーンでは、実際は内蔵や筋肉・骨格が見えた状態でどんどん透明になるという、恐ろしい絵が見える訳です。あ

    【Unity】モデルを透明にする (2) - テラシュールブログ
  • 【Unity】Area Lightと、Emissiveな材質を持つ発光するオブジェクトが輝けと囁く - テラシュールブログ

    Unityのライティングシステムの隅にひっそりと存在するArea Light(エリアライト)、その知られざる生態系について、今回は踏み込んでみようと思います。 影の表現が柔らかくなるAreaLight 広い範囲からの照射ばぼんやり、狭い範囲からの照射はハッキリ AreaLightの影は静的なオブジェクトに焼く 発光するEmissiveオブジェクト Emissiveの特性 AreaLightと似たような特性 発光する範囲と形状 で、どっちが良いの? 関連 影の表現が柔らかくなるAreaLight AreaLightですが、マニュアルを見ても「ライトが柔らかくなる」的な事しか書いていません。 エリアライトは複数の異なる方向から同時にオブジェクトを照らすので、他の種類のライトと比べてシェーディングが柔らかく繊細になります。 細かい事は置いておいて、実際にAreaLightとDirectional

    【Unity】Area Lightと、Emissiveな材質を持つ発光するオブジェクトが輝けと囁く - テラシュールブログ
  • 【Unity】Unityでマルチディスプレイする方法 - テラシュールブログ

    Unity 5.3でマルチディスプレイに対応したので、マルチディスプレイする方法について紹介します。 マルチディスプレイのための準備 マルチディスプレイを設定する カメラを複数台設定する マルチディスプレイを有効化する マルチディスプレイにおけるマウス座標 uGUIとマルチディスプレイ 関連 マルチディスプレイのための準備 マルチディスプレイを行う為には、幾つか準備が必要です。 まず、ディスプレイが二つ以上必要です。なにせマルチディスプレイですから。片方はラップトップ(ノートPC)でもOKですが、とにかく二つ以上です。 Unity側ではディスプレイは謙虚にも8個まで繋げる事が出来るみたいです。 また、使えるのはスタンドアローン(PC向け)のみです。正確には、Windows/Linux/Macで動作するみたいです。 他のプラットフォームを選択中だと、マルチディスプレイの設定自体が非表示になり

    【Unity】Unityでマルチディスプレイする方法 - テラシュールブログ
  • UnityのuGUIでスクロールビューを作る - テラシュールブログ

    Unity4.6で追加したuGUIでスクロールバーを作る方法について紹介します。 大体こんな感じのスクロールバーを作ります。 作り方 まず、リストに表示するノードのプレハブを用意していきます。 適当な横長のImageを用意します。名前はNodeとします。 左の方にアイコン(Image)、真ん中にテキスト(Text))、右にチェックボックス(Toggle)を配置します。これらは全てNodeの子オブジェクトとして配置します. NodeオブジェクトにLayoutElementコンポーネントを追加します。 LayoutElementのMinHeightにノードの高さ(Height)を指定します。 作ったノードはプレハブにします(ProjectビューへD&D) 次にスクロールビューを作ります。 Canvas以下のパスにGameObjectを作ります(Create Empty Child等で)。 名前

    UnityのuGUIでスクロールビューを作る - テラシュールブログ
  • Unity上でHTML/CSS/JavaScriptを再現、HuG - テラシュールブログ

    HuGなる、恐ろしいアセットが来た。 機能は一言で言えば「Unity内でHTML/Javascript/CSSを再現」するといった物。 ネイティブプラグインに頼らず、解析済みのデータを渡す訳でもなく、画像をキャプチャーして貼り付ける訳でもなく、Unity上で文法を解析して再現するらしい。 恐ろしいことにHTMLJavaScriptも実行でき、UnityWebPlayerでも動作するといったぶっ飛びっぷり。 上手く使えば、UIHTML・キャラクターに3Dモデルといった使い方も出来そうだ。 何故か付属していたオスプレイをビューの前に配置。 HuG公式サイト http://www.programanic.com/ AssetStore https://www.assetstore.unity3d.com/#/content/10336 ちなみに他のアプローチとして、Webをテクスチャとして表

    Unity上でHTML/CSS/JavaScriptを再現、HuG - テラシュールブログ
    amagitakayosi
    amagitakayosi 2018/07/18
    ふむ〜
  • 【Unity】PostProcessingStack v2を使ってBloom(光のにじみ)を表現する - テラシュールブログ

    今回はPost Processing Stackの新バージョンである、Post Processing Stack v2を使ってみます。 今回はBloomを使用します。 何故Bloomかって?私が好きだからです。 Post Processing Stack V2 Post Processing Stackの導入 カメラの設定 エフェクトを設定する 感想 Post Processing Stack V2 Post Processing StackはUnity 2017辺りで特にフィーチャーされていた機能ですが、それのバージョン2がUnity 2018から楽に使えるようになりました。 変更点等色々ありそうですが、まぁ今回はとりあえず使い方について紹介します。 Post Processing Stackの導入 Post Processing Stack v2はPackage Managerにて提供

    【Unity】PostProcessingStack v2を使ってBloom(光のにじみ)を表現する - テラシュールブログ
  • AssetStoreのアセットをオープンソースに含めたい - テラシュールブログ

    便利なアセットを作っても、モデルやAssetStoreの機能を使用しているが故に 公開しにくいといった場合があるようです。 単純に有料で販売している物(NGUI等)をGithubで上げるのは普通に考えて違法コピーですし、 無料で上げているものも著作権を放棄していないので、これも二次配布・無断転載になります。 (アセットによっては初回無料ですが、後々有料にするケースもあります) ではAssetStoreのアセットは絶対にオープンソース系に組み込めないのかといえば、 そうではないように思います。 Unityのアセットは全てGUIDが割り振られ、これによって参照するアセットを 決定しています。このGUIDはプロジェクトに登録された際に設定され、 プロジェクトビューで更新している限り変更されません。 AssetStoreで購入したアセットのファイルパスやファイル名を変更したとしても、 更新時に特定

    AssetStoreのアセットをオープンソースに含めたい - テラシュールブログ
    amagitakayosi
    amagitakayosi 2018/07/17
    ふむ〜"オープンソース系プロジェクトでAssetStoreのアセットを使用したい場合、 AssetStoreのファイルを共有しないようにするだけで問題は無さそうです"
  • SendMessageに変わる新しいメッセージシステム、ExecuteEvents.Execute - テラシュールブログ

    Unity 4.6よりSendMessageに変わる新しいメッセージングが登場してしまいました。その名もExecuteEvents.Executeです。詳しくは下のマニュアルに書いてあります。 Unity - マニュアル: メッセージシステム この機能は、特定のインターフェースを持つコンポーネントを一括で操作する機能を有しています。要するに文字列ではなくインターフェースでメソッドを呼び出すSendMessageみたいなものです。 目次 目次 ExecuteEvents.Executeの使い方について サンプル ExecuteEvents.Executeの概要 継承されてるか判断する SendMessageとの違い 送信側・受信側が見つけやすい コールバック一覧をエディタで確認できる リファクタリングが容易 引数の指定が容易 高速 ExecuteEvents.Executeの使い方について

    SendMessageに変わる新しいメッセージシステム、ExecuteEvents.Execute - テラシュールブログ
  • 【Unity】シェーダーで3Dモデルのアニメーションを行う Animation Texture Baker - テラシュールブログ

    今回はシェーダーで3Dモデルのアニメーションを行います。 シェーダーで3Dモデルのアニメーションを行う とりあえずやってみる Animation Texture Bakerの導入 テクスチャでアニメーションするモデルの導入 アニメーションの変換 GPU Instancingに対応してみる 関連 シェーダーで3Dモデルのアニメーションを行う 最近流行りのアプローチの一つに、シェーダーでモデルのアニメーションを行う…という物があります。 例えば各頂点のXYZ等の情報をテクスチャのRGBAに格納し、それの読み取り位置を時間でズラす事により、キャラクターのアニメーションを実現する…的な感じです。 この辺りはUnite 2017のインスタンシング公演で少し触れた他、最近のUniteでは割と何度も取り上げられている項目だと記憶しています。 【Unite 2017 Tokyo】インスタンシングを用いた美

    【Unity】シェーダーで3Dモデルのアニメーションを行う Animation Texture Baker - テラシュールブログ
    amagitakayosi
    amagitakayosi 2018/06/17
    はえーなるほど、、、 “例えば各頂点のXYZ等の情報をテクスチャのRGBAに格納し、それの読み取り位置を時間でズラす事により、キャラクターのアニメーションを実現する”
  • 【Unity】パーティクルをGPU Instancingで描画してみる & 対応シェーダーを自作してみる - テラシュールブログ

    Unity 2018.1では、Instancing関係の機能が大幅に使い勝手良くなりました。 特にメッシュパーティクルの描画はCPUバッチングではなくGPU Instancingで行えるようになり、幾つかのケースでパフォーマンスが大幅に向上する事があります。 Unity 2018.1 でパーティクルに追加されたenable GPU Instancingを有効にしてみるテスト。無効(今まで通り)だと6~10FPSくらいしか出ないパーティクルの量でも、60FPS余裕で維持できた pic.twitter.com/wgRQ3Q2afu — 椿 (@tsubaki_t1) 2018年1月10日 例えば、パーティクルを描画するとレンダースレッドのGfx.ProcessCommandsが凄い事になっているような場合、この項目を見直すと劇的に改善するかもしれません。*1 他にもUnity 2018ではIn

    【Unity】パーティクルをGPU Instancingで描画してみる & 対応シェーダーを自作してみる - テラシュールブログ
  • 1