VRM의 1인칭 시점에 음영을 더하는 방법
8404 단어 VRM
VRMFirstPerson
이 있다.하지만 설정을 실행하면 1인칭 시점에 자신의 머리 위의 그림자THIRDPERSON_ONLY_LAYER
가 보이지 않는다는 것이 이 문제를 해결하는 방법이다.방법으로
THIRDPERSON_ONLY_LAYER
를 Clone
FIRSTPERSON_ONLY_LAYER
로 변경한다.Cast Shadows
를 Shadows 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한 경우.설치 참조
사용법
Reference
이 문제에 관하여(VRM의 1인칭 시점에 음영을 더하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sesleria/items/875566585e8cb1888256텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)