Unity/VR(14)
-
Unity 그래픽 최적화를 위한 Batches관리
이번 포스팅은 개인적으로 프로젝트를 진행하면서 프레임률에 큰 문제를 주었던 드로우콜을 관리 하기위해 가장 유용했던 방법을 기술하기 위해 작성해보려한다. 기본적으로 Batches를 관리하기위해서는 여러가지 방법이 있지만 대표적으로는 당연히 "머터리얼을 통합한다"가 가장 대표적인 방법이다. 하지만 개발을 진행하다 보면 최대한 머터리얼의 통합을 진행하여도 왜인지 배치가 줄어들지 않는 현상을 분명히 볼 수 있을 것이다. 본인도 개인 프로젝트에서 3D에셋들은 거의 다른 곳에서 가져오는 편이라 머터리얼을 통합에는 한계가 있었고 그렇다고 에셋들을 덜 배치하는 것도 퀄리티에 문제가 있었다. 그렇기에 선택한 것이 선택적 쉐도우 관리이다. 현재 건물의 모습을 보자. 한눈에봐도 다양한 물체들이 있고 다 개별로 머터리얼을 가..
2022.07.22 -
XR Interaction toolKit IndexTouch 인식 이슈
이번 포스팅은 VR개발중 Hand Animation이나 XR Ray를 조정할때 CommonUsages.indexTouch를 쓰는 것이 불가능할 때 이를 해결 할 솔루션을 적을 생각이다. 자료를 찾아본 바로는 thumbTouch도 같은 방법으로 해결할 수 있을 것 같다. 먼저 XR Interaction Debugger에는 이렇기 IndexTouch의 상태가 잘 나타나는 것을 볼 수 있는데 이를 보면 하드웨어적 문제가 없다는 것을 알 수있다. 그렇다면 스크립트 상의 문제인데 몇번 시도해본 바로는 일단 CommonUsages.indexTouch는 위의 parameter를 보면 Boolean타입으로 나오는데 스크립트상에서 out의 타입을 bool로 적으면 컴파일 에러가 발생한다. 이는 유니티 문서에서 index..
2022.06.30 -
Unity Shader 적용된 Material Property Runtime변경
이번 포스팅은 본인이 직접 셰이더를 통해 만든 매터리얼의 셰이더 파라미터를 런타임으로 변경하는 과정에서 여러 시행착오를 겪은 것으로 여러 글 들에서 놓치고 있던 정보를 기록하기위해 쓰는 것이다. Reference 변경 위의 셰이더 그래프의 Properties중 Color를 런타임으로 변경하는 방법을 알아보자. 먼저 위의 Color property인 Emission을 눌러 Node Settings의 Reference를 확인해야한다. 기본적으로 아무것도 입력을 안했다면 영문을 알 수 없는 엄청나게 긴 값으로 설정 되있을 것이다. 이를 자신이 식별할 값으로 넣어줘야한다. 이렇게 설정했다면 다음으로 넘어가자. 위 빨간색 화살표를 눌러 Debug모드로 들어갑니다. 그 후 매터리얼을 보면 Saved_Properie..
2022.06.28 -
XR Interaction ToolKit Teleportation, Grab 분리
XR Interaction Toolkit에서 XRController의 컴포넌트 속성은 이렇게 된다. 여기서 우리가 지금 중점적으로 봐야하는 속성이 Select Usage이다. 왜 이 Select Usage가 문제냐면 이 속성이 Teleport시스템과 Grab시스템 두개에 적용되어서 어떠한 물체를 잡으려고 했을 때 Teleport가 동시에 발생되어 의도치않은 이동이 발생한다는 것이다. 이 문제를 해결하는 방법은 내부 시스템을 다량 분석해 Select Usage와 Teleport 스크립트, XR Grab interactable 스크립트등을 고치는 것이 있다. 하지만 위의 방법은 너무 방대해 나는 다른 방법을 사용했다. 생각해보면 나름 간단한 시스템이다. 코드를 한번 봐보자 using System.Collec..
2022.06.26 -
VR 캐주얼 FPS제작
이번 포스팅은 기존에 만들었던 프로젝트의 방향성을 확실하게 잡고자 캐주얼 fps장르로 변경한 것에 기초해 제작을 할 것입니다. 기존 프로젝트의 문제점 기존에 만들고 있던 프로젝트의 가장 큰 문제점은 바로 "전투가 정형화 되있지가 않다" 였다. 말만 언뜻 들어서는 '오히려 좋은 것 아닌가?'라고 생각할 수 있는데 이는 전투의 자유화를 의미하기도 하지만 동시에 개발의 난이도의 기하 급수적인 상승을 초래하고 전투의 긴장감을 오히려 떨어뜨릴 수 있는 요소이기도 했다. 만약 200가지의 스킬을 구현해 그 것을 독자적으로 3가지를 골라 전투를 진행한다는 것의 의미는 강력한 스킬 3가지만으로도 모든 전투를 행할 수 있다는 것도 의미하기 때문이다. 그렇기에 기존 전투시스템을 어느정도 방향성을 잡아두고 그 안에서 자신이..
2022.06.26 -
Unity 스킬 확장
이번 포스팅에서는 지금까지 제작해온 스크립트들로 여러가지 스킬들을 조립하는 것을 해보겠다. 먼저 처음부터 스킬을 제작할 때 스킬1개라도 기능분리를 2~3개로 나눠주었다. 그 기준은 아래와 같이 나눠놓았다. 1.SkillManager에 들어갈 위임용 스크립트 2.스킬 발동조건 스크립트 3.데미지 트리거 스크립트 폭발타입 스킬 배리에이션 폭발타입은 조립순서가 명확하다. 기존의 만들었던 IceBomb의 로직을 그대로 가져가면 되었다. 하지만 한가지 추가할점이 있었는데 기존의 로직을 여러가지 모습으로 바꾸려면 정적으로 할당된 이펙트를 동적으로 할당해줄 필요가 있다. 그렇기에 맨처음 위임용 스크립트에 이펙트를 같이 넣어주었다. public class Bomb : MonoBehaviour { private Tran..
2022.02.22