Save 37% off PRO during our Black Friday Sale! »

URP/HDRPを使ったVRM対応アプリの開発方法 / VRM Importer Extension

URP/HDRPを使ったVRM対応アプリの開発方法 / VRM Importer Extension

第5回 VRM勉強会 LT資料

02c47acb1dcec7e7c7fa1e9f94c14abb?s=128

sotanmochi

March 31, 2021
Tweet

Transcript

  1. URP/HDRPを使った VRM対応アプリの開発方法 2021/03/31 Soichiro Sugimoto sotan(@sotanmochi)

  2. 自己紹介 2 @sotanmochi xR系Unityエンジニアの端くれ xRに関連する新規事業開発・研究開発など 個人開発しているアプリを年内にリリースしたい

  3. 今回話すこと VRMモデルをインポートする時に任意のシェーダーを適用する方法 - URP/HDRPに対応したトゥーンシェーダーが使える - Built-in Render PipelineでMToon以外のシェーダーが使える 3

  4. 背景 Visual Effect Graphと組み合わせたVRMアプリを作りたい 4

  5. デモ VRMモデルをインポートしてUniversal ToonまたはReal Toonを適用する - Unity Editor上でプロジェクトにインポート - ビルドしたアプリでランタイムインポート 5

  6. 具体的な実装方法 1. VRMMaterialImporterを継承したクラスを作成 - CreateMaterialメソッドをオーバーライドする - マテリアルの変換処理を実装する 2. VRMImporterContextを継承したクラスを作成 -

    ParseJsonメソッドをオーバーライドする - MaterialImporterの設定処理を実装する 3. VRMをインポートするクラスを実装する 6
  7. 1. VRMMaterialImporterを継承したクラスを作成 VRMMaterialImporter.CreateMaterialメソッドをオーバーライドする 7

  8. 1. VRMMaterialImporterを継承したクラスを作成 VRMMaterialImporter.CreateMaterialメソッドをオーバーライドする 8

  9. CreateMaterialメソッドにマテリアルの変換処理を実装する 主なシェーダープロパティの対応表 Universal Toon Shader RealToon (URP) MToon _MainTex _MainTex

    _MainTex _BaseColor _MainColor _Color _1st_ShadeMap _ShadeTexture _1st_ShadeColor _OverallShadowColor _ShadeColor _Cutoff _Cutout _Cutoff _BaseShade_Feather 1.0 - _ShadeToony _NormalMap _NormalMap _BumpMap _BumpScale _NormalMapIntensity _BumpScale _Emissive_Tex _GlossTexture _EmissionMap _Emissive_Color _GlossColor _EmissionColor Universal Toon Shader RealToon (URP) MToon _MatCap_Sampler _MCap _SphereAdd _RimLightColor _RimLightColor _RimColor _OutlineTex _OutlineWidthControl _OutlineWidthTexture _Outline_Width _OutlineWidth _OutlineWidth _Outline_Color _OutlineColor _OutlineColor 1. VRMMaterialImporterを継承したクラスを作成 9
  10. CreateMaterialメソッドにマテリアルの変換処理を実装する 1. VRMMaterialImporterを継承したクラスを作成 10 VRM Universal Toon

  11. 2. VRMImporterContextを継承したクラスを作成 VRMImporterContext.ParseJsonメソッドをオーバーライドする MaterialImporterの設定処理を実装する 11

  12. 3. インポート処理を実装 実装例 12

  13. その他Tips ビルドしたアプリでランタイムインポートする場合は、 必要なShaderVariantがストリッピングされないようにする。 方法: ・Unity Editorでインポートしたモデルをプロジェクトに含める ・Resourcesフォルダにマテリアルを配置する  など 参考情報: ShaderVariantについて~中編:AssetBundleとShaderVariantの関係~

    https://note.com/wotakuro/n/n5bbd88c62d61 13
  14. 具体的な実装方法(再掲) 1. VRMMaterialImporterを継承したクラスを作成 - CreateMaterialメソッドをオーバーライドする - マテリアルの変換処理を実装する 2. VRMImporterContextを継承したクラスを作成 -

    ParseJsonメソッドをオーバーライドする - MaterialImporterの設定処理を実装する 3. VRMをインポートするクラスを実装する 14
  15. ライブラリを公開しました VRM Importer Extension for Unity URP https://github.com/sotanmochi/VRMImporterExtension-URP 利用可能なシェーダー: ・Universal

    Toon Shader 2.2.1 ・RealToon Shader 5.0.8  ・URP: ランタイムインポートはデバッグ中  ・HDRP: 開発中 動作確認環境: ・Unity 2019.4 + URP 7.5.2 + UniVRM 0.66.0 15
  16. おわりに VRMモデルをインポートする時に任意のシェーダーを適用する方法を紹介した - URP/HDRPに対応したトゥーンシェーダーが使える - Built-in Render PipelineでMToon以外のシェーダーが使える URP/HDRPを使ってVRMアプリを作りましょう! 16

  17. ありがとうございました