夜風のMixedReality

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

MixedRealityGraphicsToolsに新機能を提出する  MRGTシェーダー適応済みマテリアルを作成する。

本日はMRGT枠です。

今回は先日作成したMRGTシェーダーを適応したUnityのプロジェクトウィンドウを右クリックした際のCreateコマンドから生成する機能をMRGT本リポジトリに提出します。

redhologerbera.hatenablog.com

〇MixedRealityGraphicsToolsとは?

MixedRealityGraphicsTools(MRGT)はMicrsoftがOSSの形で開発、提供しているツールでMixedRealityデバイス向けUnityのパッケージであるMixedRealityToolkit(MRTK)の一部として提供されているグラフィック関連の機能が詰まったパッケージになります。

筆者はMicrosoft社外からのコラボレーターとして開発に参加しています。

〇MRTKシェーダー適応済みマテリアルを作成するコマンド

今回はEditorフォルダ内にあるUnityプロジェクト内でのサンプルのインポートなどエディタ内のパッケージを管理するDevelopmentUtilities.csクラスにメソッドとして機能を追加しました。

  /// <summary>
        /// Generates a material for GraphicsToolsStandardShader in the Project window.
        /// </summary>
        [MenuItem("Assets/Create/Material(Graphics Tools)", false, 1)]
        public static void CreateGraphicsToolsMaterial()
        {
            var directory = AssetDatabase.GetAssetPath(Selection.activeObject);
            Material material = new Material(Shader.Find("Graphics Tools/Standard"));
            if (string.IsNullOrEmpty(directory))
            {
                directory = "Assets";
            }

            var extension = Path.GetExtension(directory);

            if (!string.IsNullOrEmpty(extension))
            {
                var filename = Path.GetFileName(directory);
                var startIndex = directory.LastIndexOf(filename) - 1;
                var count = filename.Length + 1;
                directory = directory.Remove(startIndex, count);
            }

            var path = directory + "/" + "NewGraphicsToolsMaterial.mat";
            var uniquePath = AssetDatabase.GenerateUniqueAssetPath(path);
            AssetDatabase.CreateAsset(material, uniquePath);
            AssetDatabase.SaveAssets();
            Selection.activeObject = material;
        }

基本的にOSSの形で提出するためメソッドには必ずサマリーを付けます。

〇提出の方法

①GitHubのリポジトリに提出を行いたい機能について記述したイシューを作成します。

github.com

今回は次のようなイシューを作成しました。

github.com

MRGTはワールドワイドなオープンな形での開発のため英語で記述する必要があります。

②リポジトリをforkします。

forkとはGitHub上で公開されているリポジトリを自分のリポジトリとして複製する作業を指します。

こちらが筆者がForkしたMRGTのリポジトリです。

github.com

③forkしたリポジトリをクローンします。

④ブランチ名を変更し提供したい機能をUnityで開発します。

今回はHoloMoto:holomoto/MRGTMaterialCreateという名前を付けました。

⑤Pushします。

⑥オリジナルのリポジトリ(Microsoft/MixedRealityGraphicsTools)に対してプルリクエストを作成します。

今回は次のようなPRを作成しています。

github.com

あとはリーダーより必要に応じて修正依頼が指示され、機能が問題ない場合はマージが行われMRGTの機能として自身の開発した機能が提供されるようになります。