夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

2023-03-01から1ヶ月間の記事一覧

Unityでリアルな揺れモノを実現する MagicaCloth2をxRで動かす その② HoloLens 2へのサンプルプロジェクトのビルド

本日はUnity枠です。 昨日Unityでリアルな揺れモノを実現するアセット、Magica Cloth 2を導入しました。 本日はHoloLens 2でサンプルシーンを実行していきます。 〇Magica Cloth 2とは? Magica Cloth 2は日本の作者がUnityAssetsStoreでリリースしている揺…

Unityでリアルな揺れモノを実現する MagicaCloth2をxRで動かす その① 導入

本日はUnity枠です。 先日筆者が好きなスマホゲームの開発秘話で揺れモノにMagicaClothというアセットを使用しているという話を聞いて興味を持っていたところMagicaCloth2という新しいバージョンがリリースされていました。 今回はこのMagicaCloth2を導入し…

VisualStudioでARM64用のDLLを作成する

本日はその他枠です。 NintendoSwitchのJoyConはGitHub上で公開されている有志のライブラリを使用することでUnityアプリケーションのコントローラーとしてHoloLensで使用できます。 しかしながらARMやARM64向けのdllが提供されていないためHoloLens2で動かす…

頂点シェーダーでのオブジェクトの回転を実装する

本日はShader枠です。 グラフィックパイプラインの中で3Dオブジェクトは頂点シェーダーステージで描画画面に対しての座標などが処理され、フラグメントシェーダーでピクセル色が決められています。 redhologerbera.hatenablog.com redhologerbera.hatenablo…

Hex表現を使用した出現シェーダーを作る まとめ

本日はUnityShader枠です。 先日までHex表現を行うシェーダーで出現エフェクトを作成しいていました。 今回はまとめ記事になります。 〇Hex.hlsl 今回の出現シェーダーの肝は参考として紹介させていただいているブログ記事様により公開されているShaderGraph…

UnityHDRPでWater Surface機能を使用する

本日はUnity枠です。 Unityではクラシックなレンダーパイプラインとは別にScriptableRenderPipeline(SRP)と呼ばれるグラフィックパイプラインをC#でカスタム可能なパッケージがあります。 このSRPの中でUnityが提供しているテンプレートが2種類あり、そのう…

UnityシェーダーのプロパティからBlendingを切り替えられるようにする

本日はShader枠です。 透明度を扱うシェーダーではそのシェーダーによって描画されたピクセルをすでに描画されているピクセルとどのように合成するか?というBlendingという設定があります。 この設定を行うことで半透明な表現を行うことができますが、これ…

Hex表現を使用した出現シェーダーを作る その⑦ HoloLensにビルドする

本日はShader枠です。 先日よりHex表現を使用した出現シェーダーを開発しています。 先日はSpatialMesh用に調整を行いました。 今回はこのシェーダーを実機で確認していきます。 〇SpatialMeshのマテリアルの設定 今回はMRTKv2.8を使用しています。またMRTK…

Hex表現を使用した出現シェーダーを作る その⑥ HoloLens用のSpatialMeshシェーダー

本日はShader枠です。 〇SptaialMeshように調整する HoloLensのSpatialMeshはUVを持たないという性質があります。 そのため最初に行うことはオブジェクトのUV座標を使用した処理をUnityのワールド座標に置き換えます。 CGPROGRAM ・・・ struct v2f { //UVを…

Hex表現を使用した出現シェーダーを作る その⑤ Unity上の別の物体との距離に応じてエフェクトをかける

本日は昨日に引き続きShader枠です。 昨日はUnityのワールド座標基準で出現エフェクトを行うシェーダーを作成しました。 今回はさらに発展させ、あるオブジェクトを中心に3次元的にエフェクトが行われる表現を行います。 〇Unity上の別のオブジェクトの位置…

Hex表現を使用した出現シェーダーを作る その④Unityのワールド座標基準でエフェクトをかける

本日はShader枠です。 先日に引き続きHex表現を使用したエフェクトを作成します。 redhologerbera.hatenablog.com 昨日の状態まではオブジェクトの持つUV座標に依存してHex表現を行っていました。 これによってオブジェクトの持つUV情報によっては表現が破断…

Hex表現を使用した出現シェーダーを作る その③発光演出

本日は昨日に引き続きシェーダー枠です。 先日はHex表現を使用した出現シェーダーとして透明度を持たせて出現する仕組みを作成しました。 redhologerbera.hatenablog.com 今回はさらに発光エフェクトを追加してエフェクトとしてディティールアップしていきま…

Hex表現を使用した出現シェーダーを作る その②透明度を実装する

本日は昨日に引き続きShader枠です。 redhologerbera.hatenablog.com 昨日は六角形の形で画像が現れるようなシェーダーを記述しました。 今回はこれをベースに本格的な出現エフェクトを作成します。 〇エフェクトの反転 透明度を実装する前に先日のシェーダ…

Hex表現を使用した出現シェーダーを作る その①

本日はUnityシェーダー枠です。 昨日他ブログにて紹介されていたHexagonNodeを使用してHex=ハニカム上にテクスチャをサンプリングするシェーダーを作りました。 redhologerbera.hatenablog.com 今回はこちらのシェーダーを応用して出現エフェクトを作成して…

UnityシェーダーでHex表現を導入する

本日はShader学習枠です。 〇Hexノード 今回は八角形の形状がタイリングされた見た目をシェーダーに組み込んでいきます。 今回シェーダーを使った面白い表現を探していた時に次の記事を見つけました。 r-ngtm.hatenablog.com 上記の記事ではShaderGraphを使…

ゼロから始めるUnityシェーダー開発  複数のテクスチャを使用するシェーダーを記述する その①

本日はシェーダー枠です。 今回はテクスチャを応用して複数のテクスチャを混ぜ合わせて表示できるシェーダーを記述していきます。 〇シェーダーでテクスチャを扱う方法 シェーダーでテクスチャを扱うシェーダーは次のようになります。 Shader "Unlit/Texture…

SubstancePainterで頂点カラーをもとにIDをベイクして一枚のテクスチャで様々な質感を再現する

本日はSubstance Painter枠です。 SubstancePainterを触り始めて数か月がたちますが今回はペイントの基本をさらっていきます。 〇IDをベイクする Substance Painterではベイクを行うことで3Dモデルの形状情報を取得することで3Dペイントを行うことができま…

Unityエディタ拡張を使用して現在開かれているシーンのすべてのMeshRendererから使用しているShaderベースでCastShadowを設定する

本日はUnity枠です。 昨日エディタ拡張を使用して現在開かれているシーンのすべてのMeshRendererから一斉にCastShadowをオンオフすることができる機能を作りました。 redhologerbera.hatenablog.com これは特にHoloLensなどのような影の描画を必要としないデ…

Unityエディタ拡張を使用して現在開かれているシーンのすべてのMeshRendererからCastShadowを設定する

本日はUnity枠です。 Unityではメッシュを描画する際は一般的にMeshRendererコンポーネントを使用しています。(アニメーションを行うメッシュなどはSkkinedMeshRendererなどが使用される場合もあります。) MeshRenererでは描画の設定として影を設定するこ…

MRGTShaderdShaderのCastShadowの実装を読み解く

本日はMRGT枠です。 Microsoft MixedRealityGraphicsToolsで提供されているGraphicsToolsStandardシェーダーはMixedRealtiyデバイス向け、特にMicrosoft HoloLensに最適なパフォーマンスを出すことを目的として開発されています。 Unityの描画処理の中で特に…

UnityEditor拡張でウィンドウ状にマテリアルを表示させる

本日はUnity枠です。 今回はUnityのEditor拡張機能を使用して作成可能なEditorWindowに表示されるUIでUnityのインスペクターウィンドウなどと同様にマテリアルを表示させていきます。 〇EditorWindowの作成 EditorWindowを表示させる最小コードは次のよう…

Unity上でChatGPTを使用してシェーダーを作成するAIShaderを試す。

本日はShader&AI枠です。 23年に入りChatGPTの普及が爆発的になっていますが、先日Unityのエディタ内でChatGPTを使用してシェーダーを作成するテストリポジトリが公開されました。 今回はこちらを試していきます。 〇ChatGPTとは? ChatGPTはDALL・E2やStab…

Unityプロジェクトウィンドウに追加したコマンドのレイアウトを変更する

本日は昨日に引き続きUnity枠です。 昨日はプロジェクトウィンドウを拡張してGraphicsToolsStandardシェーダー適応済みのマテリアルを直接生成する実装を行いました。 redhologerbera.hatenablog.com 昨日の段階では追加したコマンドは一番下に表示されUI的…

Unityプロジェクトウィンドウを拡張して直接GprahicsToolsStandardシェーダー適応済みのマテリアルを作成する

本日はMRGT調査枠です。 筆者は基本的にGraphicsToolsStandardShaderのマテリアルを愛用しています。 しかしUnityではマテリアルを作成する際にBuiltInパイプラインではStandard、URPではURP/Litシェーダーのマテリアルがデフォルトで作成されます。 毎回マ…

UnityEditor拡張でProjectWindowsを右クリックした際のコマンドをカスタマイズする

本日はUnity枠です。 〇ProjectWindowを右クリックした際のコマンド マテリアルやC#などUnityでUnityから提供されている新しいアセットを作成する場合はProjectウィンドウを右クリックしてコマンドから生成することが一般的です。 一部のパッケージでは独自…

Unityでステンシル値を任意に変更可能なシェーダーを実装する

本日はMRGT枠です。 MRGTではEnableStencileTestingという項目で一つのシェーダーでマテリアルごとにステンシルプロパティを変えることができます。 この機能を自作シェーダーに組み込んでみます。 〇MRGTの実装 GraphicsToolsStandardShaderの実装は次のよ…

Babylon.jsで任意の3Dモデルを使用する

本日はBabylon.jsを触っていきます。 昨日hellocubeでキューブを出しました。 今回は任意の3Dモデルを読み込みます。 〇Babylon.jsでGlbを読み込む 今回はglb形式の3Dモデルを使用していきます。 Publicフォルダ内にModelというサブフォルダを作成しました…

Babylon.jsでハローキューブを行う

本日はBabylon.js枠です。 Babylon.js自体は登場時から注目はしており、日本でのコミュニティ活動の中心的人物であるイワケンさんのGitHubをまねてみていたりなどもしていたのですが、ハローキューブを行ってはいませんでした。 今回お仕事用の社内ツールと…

Unityで特定のオブジェクトだけ明るく見えるシェーダーを作成する その② オクルージョンの実装

本日は昨日に引き続きシェーダーを紹介します。 〇Unityで特定のオブジェクトだけ明るく見えるシェーダーを作成する redhologerbera.hatenablog.com 昨日は特定のオブジェクトが明るく強調表現されるような表現を紹介しました。 この方法ではステンシルとい…

Unityで特定のオブジェクトだけ明るく見えるシェーダーを作成する

本日はMRGT&Shader枠です。 今回はMRGTを使用した特殊なエフェクト表現を紹介します。 例えば特定のオブジェクトに注目させたい場合などに全体的に描画を暗くしながらも特定のオブジェクトのみ通常の明るさで描画していきます。 〇環境 ・Unity2021.3.5f1 …