VRM의 1인칭 시점에 음영을 더하는 방법

8404 단어 VRM
VRM은 VR을 대상으로 하는 가상 이미지 포맷이기 때문에 1인칭 편리한 기능VRMFirstPerson이 있다.하지만 설정을 실행하면 1인칭 시점에 자신의 머리 위의 그림자THIRDPERSON_ONLY_LAYER가 보이지 않는다는 것이 이 문제를 해결하는 방법이다.
방법으로 THIRDPERSON_ONLY_LAYERCloneFIRSTPERSON_ONLY_LAYER로 변경한다.Cast ShadowsShadows Only로 수정하고 섀도우만 표시되는 객체를 1인칭 레이어에 추가합니다.스크립트화 후 다음과 같다.장면에 첨부된 VRM을 통해 1인칭도 머리 등의 그림자를 보여준다.
VRMFirstPersonWithShadow.cs
using UnityEngine;
using VRM;

public class VRMFirstPersonWithShadow : MonoBehaviour
{
    private VRMFirstPerson vrmFirstPerson;

    void Start()
    {
        vrmFirstPerson = GetComponent<VRMFirstPerson>();
        vrmFirstPerson.Setup();

        foreach (var renderer in GetComponentsInChildren<SkinnedMeshRenderer>(true))
        {
            if(renderer.gameObject.layer == 10){
                var obj = Instantiate(renderer.gameObject, renderer.gameObject.transform.position, renderer.gameObject.transform.rotation);
                obj.transform.parent = renderer.gameObject.transform;
                obj.gameObject.layer = 9;
                var skin = obj.GetComponent<SkinnedMeshRenderer>();
                skin.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;

                foreach (Transform child in obj.transform) {
                    GameObject.Destroy(child.gameObject);
                }
            }
        }

        foreach (var renderer in GetComponentsInChildren<MeshRenderer>(true))
        {
            if(renderer.gameObject.layer == 10){
                var obj = Instantiate(renderer.gameObject, renderer.gameObject.transform.position, renderer.gameObject.transform.rotation);
                obj.transform.parent = renderer.gameObject.transform;
                obj.gameObject.layer = 9;
                var mesh = obj.GetComponent<MeshRenderer>();
                mesh.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;

                foreach (Transform child in obj.transform) {
                    GameObject.Destroy(child.gameObject);
                }
            }
        }
    }
}
실제 동작 인상이야.1인칭도 좋은 느낌.
왼쪽: 구현vrmFirstPerson.Setup();오른쪽: 구현vrmFirstPerson.Setup(); 후 섀도우용 Object를 Clone한 경우.

설치 참조
사용법

좋은 웹페이지 즐겨찾기