ARFoundation 環境光推定を行う

ARcameraのLightEstimationModeをAmbientIntensityに変更する
![9F05992D-5052-4097-BC3A-52816F32FD07.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/b8f47232-c9a7-e67f-8eb8-1b120c9ab22f.jpeg)

Shaderを作成する。Unit Shaderを選択し、名前をLightEstimationに変更する。
![169C429A-E2D8-4CAE-8B22-1D0A2520093D.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/c5ad8aab-31bd-da23-9f18-44367abbd7dd.jpeg)

キャラクターのMaterialをコピーする。わかりやすいように名前を変更しておく。
![01894344-B1D6-4D1C-BAD4-8982C91523C2.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/a189ddb9-8183-cc6a-5a32-31e9ad26e3fe.jpeg)

LightEstimation.Shaderに下記を追記する

```C#:Character/LightEstimation.Shader
Shader "Character/LightEstimation"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Brightness ("Brightness", Float) = 0.5 //追記
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _Brightness; //追記

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                col *= _Brightness; //追記 
                return col;
            }
            ENDCG
        }
    }
}
```


コピーしたMaterialを全選択し、ShaderをCharacter/LightEstimationに変更する
![53AAAC5F-0BE0-416A-BA64-AADB8BDCC97B.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/44f061eb-7f70-9fcd-a491-8edc64e5e0d8.jpeg)

各Materialが暗くなっているか確認する。なっていない場合はBrightnessを0.５に変更する。
![A8B62403-6A94-4241-8BD8-DBC5FDA15CB1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/71b9a8f5-86b5-9ad1-8298-349df5c0c5fa.jpeg)

キャラクターの部位に作成したMaterialをドラッグ＆ドロップする。
![D9DB40F2-C297-4794-AA71-DD91945BF69D.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/c2d601a9-3f14-813c-ef9a-85b34d84ea0b.jpeg)

LightEstimationObject.csを作成する。
![F541C76D-F174-4E60-8C1A-7C6DCFE90B32_4_5005_c.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/58408481-efbf-769c-5ce4-02095d101b2d.jpeg)

LightEstimationObject.csに下記を記述する

```C#:LightEstimationObject.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;

public class LightEstimationObject : MonoBehaviour
{
    [SerializeField]
    ARCameraManager m_CameraManager;

    private Renderer[] renderers;

    void OnEnable()
    {
        renderers = GetComponentsInChildren<Renderer>();

        if (m_CameraManager != null)
            m_CameraManager.frameReceived += FrameChanged;
    }

    void OnDisable()
    {
        renderers = null;

        if (m_CameraManager != null)
            m_CameraManager.frameReceived -= FrameChanged;
    }

    void FrameChanged(ARCameraFrameEventArgs args)
    {
        foreach (Renderer renderer in renderers)
        {
            renderer.material.SetFloat(
                                    "_Brightness",
                                    args.lightEstimation.averageBrightness.Value
                                    );
        }
    }
}
```

キャラクターにスクリプトをつけ、CameramanagerにARcameraをアタッチする。
![C20A25B9-D627-441F-A5B0-C5189AEC25B4.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/940521/25d2ffdf-e93f-46f5-2181-86b781fcff60.jpeg)


ビルドする