5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Unity】3Dオブジェクトに透過処理された2D画像の透過部分を反映させる

Last updated at Posted at 2022-03-23

はじめに

今回は3Dオブジェクトに透過処理された2D画像を透過部分を反映させるやり方を説明します。
基本のキなのでご存じの方も多いと思いますが、Shader Graphについてはまとめている記事が少なく私は苦労しました。
同じように困っている方の参考になれば幸いです。

01Blog18.png

この記事ではMacOS Monterey 12.0にインストールしたUnity 2020.3.20f1を使っています。
URP (Universal Render Pipeline)テンプレートからプロジェクトを作っています。

手順

1) 既存のShaderを使う

  1. 透過処理されている画像(png形式)を用意
    cat_image

  2. Unity > Project内の任意のフォルダーに入れます

  3. Hierarchyの+ボタン、または右クリックで3Dオブジェクトを作成します
    今回はハリボテのように表示させたいのでQuadを作成します
    quad_image

  4. Projectの+ボタン、または右クリックCreateからMaterialを任意のフォルダーに作成します
    わかりやすい名前にしておきます
    material_image

  5. Materialを適用させたいオブジェクトにアタッチさせます

  6. 作成したMaterialを選んだ状態で、InspectorからShaderでUniversal Render Pipeline > 2D >Sprite-Lit-Defaultを選びます

  7. DiffuseのTexture>Selectから表示させたい画像を選ぶか、ドラッグしてアタッチします

  8. 透過部分が透過されて表示されます。
    ※Shader Unlit > Transparentでも同じように表示されます。

material_image

(基本的な手順はとんプログラミングを参照しています)

2)Shader GraphでShaderを自作する場合

  1. 最初の手順は(1)の手順1〜4まで同じです。

  2. Projectの+ボタン、または右クリックCreateからShader > Universal Render Pipeline > Unlit Shader Graphを任意の場所に作成します。お好きな名前をつけてください。material_image

  3. MaterialのShaderを2で作成したものにします。
    material_image

  4. 作成したShader Graphを開きます
    Graph InspectorのGraph Settingタブ > Universal > SurfaceのプルダウンからTransparentを選びます
    01Blog8.png

  5. 右クリックでCreate Node > Sample Texture 2D を作成ST2D_image

  6. Sample Texture 2DのRGBAとFragmentのBase Colorを繋げる
    Save Assetをクリックして保存する
    ST2D_image

  7. Sample Texture 2DのTextureに表示させたい画像をアタッチします
    これで画像が表示されました。ですが透過反映されていませんimage1

  8. 次に右クリックでCreate Node > Stepを作成
    Sample Texture 2DのAとStepのInを繋げ、StepのOutとFragmentのAlphaを繋げますimage2
    変更をSaveすると透過が反映されます
    ただジャギーや髭が細いのが気になるので一手間かけます!image4

  9. Blackboardウィンドウ(シェイダーの名前が表示されているウィンドウ)の「+」ボタンをクリックしてVector2を作成
    image2
    とりあえず名前を「Cutoff」にします

  10. Cutoffを選んでPropertyでXの値を0.2ぐらいにします
    CutoffをドラッグしてStepのEdgeに繋げます
    セーブして反映させます
    01Blog15.png

  11. 髭の線が太くなりました
    ただ白いフチが出てしまったので値を調整などしてご自分の望むようにしてくださいませ
    01Blog17.png

(手順はUnity公式YouTubeUnity Answersを参考いたしました)

5
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?