![Unity VR에 Occlusion Culling 적용해서 실제로 Batch 수 줄어드는거 확인해보기](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/coaUNm/btrRMwzlXV1/wqBDSPAwjREBKXW8NHZe7k/img.gif)
Unity VR에 Occlusion Culling 적용해서 실제로 Batch 수 줄어드는거 확인해보기
적용방법은 쉽다 오클루전 Static을 오브젝트에 설정하고 오클루전 굽기만 하면 된다 끗!
- Unity/Study
- · 2022. 11. 21.
100MB이상의 파일을 업로드해야 하기 때문에 테스트용으로 100MB짜리를 만들었습니다. 그러나 이러면 정상적으로 Git push가 됩니다. 파일의 크기가 100MB초과를 하지 않았기 때문입니다. 그래서 104857602 크기의 파일을 만들어서 100MB 크기를 초과하게 끔 해보았습니다. 101m.file의 크기를 보면 100 MB를 초과하는걸 볼 수 있습니다. Git LFS Git Large File Storage Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file conte..
포물선 방정식 포물선 방정식은 물체가 중력의 영향을 받아 수직 방향으로 자유낙하하면서 수평 방향으로 일정한 속도로 직진하는 운동을 모델링하는 데 사용되는 수학적인 표현입니다. 이 방정식은 2차원 운동의 궤도를 설명하는 데 주로 사용됩니다. 포물선 방정식의 일반적인 형태는 다음과 같습니다. y는 물체의 수직 위치를 나타냅니다. x는 물체의 수평 위치를 나타냅니다. a, b, c는 상수 계수입니다. 포물선 운동에서 중요한 것은 중력의 영향으로 수직 방향으로 가속하고, 수평 방향으로 일정한 속도로 움직인다는 것입니다. 따라서 포물선 방정식을 사용하면 어떤 시간에 물체의 위치를 예측할 수 있습니다. 일반적으로 포물선 방정식은 다음과 같이 표현됩니다. g는 중력 가속도를 나타냅니다 (주로 9.8 m/s^2로 가정..
이 녀석을 사용하면 동그란 영역 안에 랜덤한 Position을 받을 수 있다 Random.insideUnitSphere 이 녀석은 Value가 1이므로 곱해서 사용하면 된다 ex) transform.position = Random.insideUnitSphere * value;
적용방법은 쉽다 오클루전 Static을 오브젝트에 설정하고 오클루전 굽기만 하면 된다 끗!
Dotween이란? Dotween은 빠르고 효율적이며 안전성을 갖춘 애니메이션 엔진으로, C#에 최적화되어 있습니다. 높은 수준의 유연성과 커스터마이징을 유지하면서 단순하고 사용하기 쉬운 것으로 잘 알려져 있습니다. 또한, Unity의 내장 애니메이션 및 tweening 시스템보다 더 빠르고 메모리를 적게 사용합니다. Tween이란? 트위닝('Betweening'의 줄임말)은 두 상태 사이에 중간 프레임을 생성하여 모션이나 변형의 느낌을 주는 프로세스입니다. 이러한 전환은 게임 오브젝트를 한 지점에서 다른 지점으로 이동하거나 오브젝트의 크기, 색상, 회전을 변경하거나 시간에 따른 오브젝트 속성의 기타 변형 등 모든 것이 가능합니다. DoTween에서는 스크립트를 이용해 애니메이션을 적용하려는 오브젝트에서..
예전부터 해보고 싶었던 기능인데 드디어 하게 돼서 매우 기쁘다 먼저 HandGrabPoseTool이라는 씬을 찾도록 한다 이거는 OVR에서 제공하는 씬으로 Hand Pose를 저장하는데 도움을 주는 유용한 툴 씬이다 이거는!!!! 구글링 or 유튜브에서 HandPose저장하는 방법을 찾지못해서 내가 열심히 이것저것 찾아보다가 발견한 씬이다!! 매우 감사하도록!!ㅎ_ㅎ 먼저 HandPose를 녹화하려면 위와 같은 과정을 거쳐야 한다고 한다 첫 번째로, 오브젝트가 필요하며 그 오브젝트에는 rigidbody와 grabbable 컴포넌트가 반드시 부착되어 있어야 한다( + Collider도 -> 필자는 콜라이더 빼먹어서 한참 애먹음) 아 그리고 반드시 모델을 스케일이 (1,1,1)로 맞추어져 있어야지 안그러면 ..
OculusInter.....이놈을 하이러키창에 끌어다 놓고 포지션을 (0,0,0)으로 맞추자 다음 Poses라는 빈 게임오브젝트를 하나 생성한다 Poses의 자식으로 빈 오브젝트 Bunny Right라는 녀석을 생성한다 이 녀석을 이용해서 포즈를 기록할 것이다 Shape Recognizer Active State컴포넌트를 부착해준다 Hand Ref 컴포넌트르 부착해주고 Shape Recognizer Active State 컴포넌트의 Hand에는 Hand Ref를 할당해준다 RightHand를 끌어다가 놓는다 Hand Pose라는 빈 폴더를 하나 생성해주고 [Create] - [Oculus] - [Interaction] - [SDK] - [Pose Detection] - [Shape] 를 순서대로 클릭해..
먼저 TextMesh Pro를 사용하는 이유는 기존 TextComponent의 품질이 좋지 않기 때문이다 TextMeshPro를 사용할 경우 품질 향상 및 텍스트 스타일 지정 부문에서 큰 유연성을 가진다는 장점이 있다 스크립트는 이렇게 사용하는 하다 get set은 내가 사용하기 위해 그냥 작성한거
이번 시간엔 Leg Ik 설정하는 방법에 대해 알아보겠다 먼저 모델의 Animation Type을 Humanoid로 바꿔준다 그다음 믹사모같은데에서 Walk관련 애니메이션을 하나 다운받아준다 그 애니메이션 또한 휴머노이드로 바꿔주고 캐릭터애니메이션을 넣어준다 이렇게 그다음으로 새로운 아바타 마스크를 만들어주고 상체부분을 꺼준다 Base Layer에 방금 만든 아바타 마스크를 집어넣어준다 IKPass도 체크해준다 다음으로 VRLegIK 스크립트를 하나 생성해준다 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class VRFootIK : MonoBehaviour { priva..
패키지 매니저에 들어가서 Animation Rigging 패키지를 다운받는다 준비해둔 휴머노이드 모델에다가 Rig Builder를 추가하고 Animation을 삭제해준다 Bone Renderer를 추가해주고 모델의 Root부분부터 맨 아래까지 다 Transforms안에다가 넣어주면 된다 IK를 만들기 위한 사전 작업으로 빈오브젝트 VR Contraints를 하나 생성해준다음 Rig컴포넌트를 부착해준다 그다음으로 아까 만들어둔 Rig Builder 컴포넌트에 방금 생성한 VR Contraints컴포넌트를 넣어준다 다음으로 VR Contraints자식으로 빈 오브젝트 Right Arm Ik를 하나 만들어주고 거기에 Two Bone IK Contraints 컴포넌트를 만들어준다 Root, Mid , Tip 각..
가장 큰 특징으로는 UV와 Tangents좌표계의 의존성을 없애기 Generic Surface 접근을 돕는다 평면 투사(Projection)를 사용한다 3가지의 mapping을 Blend한다 Texturing Without UV Coordinates Texture mapping을 수행하기 위해 일반적으로 사용되는 방법은 Mesh에 각 Vertex가 저장된 UV-좌표계를 사용하곤 한다 그러나, 이렇게 하는 것이 유일한 방법은 아니다 때때로, 사용가능한 UV 좌표계가 없을 수도 있기 때문이다 예를 들어, 임의의 Shpae의 절차적 Geometry 과정일 때 런타임에서 Terrain이나 Cave를 생성할 때, 적절한 텍스쳐 UnWrap를 위한 UV 좌표계를 생성할 수 없다 이러한 경우, 우리는 대안적인 방법으..
모든 사진 출처는 Unity Korea 여기에 있다 병목이라는 단어는 말 그대로 병의 목부분을 말한다 병의 내부는 공간이 넓지만 목 부분은 공간이 좁아서 병에서 나오는 양이 병의 목에 의해 지연된다 드로우콜이란 CPU가 GPU에게 장면을 렌더링 하라고 명령을 내리는 거다 CPU가 명령을 내릴 때 Command Buffer을 이용해서 명령을 내린다 GPU는 Command Buffer에 있는 Command를 받아서 명령을 처리한다 CPU와 GPU의 처리 작업은 직렬적이 아닌 병렬적이다 위 사진은 GPU가 CPU에게 받은 명령을 다 처리하고 놀고 있는 장면이다 CPU는 계속 일하고 있는 모습 그렇다면 CPU가 일을 많이 하는게 좋으냐? GPU가 일을 많이 하면 좋으냐? 누가 더 많이해서 좋은 건 아니고 바쁜 ..
사진의 모든 출처는 Unity Korea이다 NO!!!! 유니티의 내부 엔진은!! C++로 되어 있다!!! 흔히 게임엔진을 자동차로 비유하는데 엔진 내부는 C++로 되어 있고 유저에게 노출되어 있는 유저 스크립트들은 C#으로 작성할 수 있다!! IL2CPP가 도입되고 나서부터 유저 코드 부분도 C++로 작성할 수 있게 되었다 IL2CPP를 알기 위해서는 C#과 C++의 차이점을 알아야 한다 C++은 객체지향 즉, Class가 생겼으며 메모리 할당과 삭제를 유저가 직접 해주어야 한다 C#은 MS에서 개발한 .Net Framework기반으로 돌아가는 언어임, C++보다 생산성이 높은데 그 이유는 메모리 관리를 자동적으로 해주기 때문임!(가비지 컬렉터!) Mono같은 경우 .Net Framework를 대응하기..
그냥 간단하게 만들어봄 제목 뒤틀린 차원의 열쇠 보는 방향에 따라 열쇠 Room이 보일 수도 안보일 수 있음 힌트로 바닥에 빨간 라이트를 비춤
오늘은 베지어 커브에 대해 공부해 보았다 이론은 이러하다 3개의 네모 박스가 존재하고 첫 번째 파란색 동그라미는 Point 1에서 Point 2로 향하고 두 번째 파란색 동그라미는 Point 2에서 Point 3으로 향한다 향할때는 Lerp(보간)식을 이용해서 간다 targets[0].position = Vector3.Lerp(points[0].position, points[1].position, t / s); targets[1].position = Vector3.Lerp(points[1].position, points[2].position, t / s); 이때 보라색 하트는 첫 번째 파란색 동그라미와 두 번째 파란색 동그라미의 위치를 Lerp의 매개변수로 받아서 사용한다 player.position =..