전체 글 91

체감형 AR 디자인 - 최적화

텀프를 어느 정도 진행하다보니, 오류나 어려웠던 점들을 정리해두려고 오랜만에 티스토리 들어왔다 요즘 거의 텀프랑 팀플에만 시간을 다 쓰는 것 같고 그러니 24시간이 부족하다는 생각이 든다.. 암튼,, 우선 monster 프리팹이 3가지로, 색이 각각 다르다 그래서 monsterFactory를 3개 만들어서 하나의 오브젝트 풀에 담고, 조건에 맞게 씬에 생성하도록 했다. 생성은 SetActive를 활용했고, 총알에 맞으면 SetActive(false)하도록 충돌처리를 했다. 몬스터가 생성될 때 StartCoroutine()을 사용해봤다. 총알도 마찬가지로 오브젝트 풀을 사용했고, 터치를 입력 받을 때마다 생성되도록 했다. 배열로 써둔 코드를 최적화할 때 좀 어려웠고 생각보단 시간 투자를 많이 한 것 같다...

Metaverse/Unity 2023.05.17

Object Pool

메모리는 좌측에서 우측으로, 위쪽에서 아래쪽으로 데이터를 저장하는 특징이 있음 이 때 첫번째 이미지와 네번째 이미지를 메모리에서 제거해보면 아래 이미지 처럼 됨 만약, 3번 이미지를 추가로 로드하려면 3번 이미지가 메모리에 로드될 때 필요한 공간은 6칸이 되고 확보하고 있는 빈 공간은 1번과 4번을 제거했으므로 7칸이 남아있음 그러면 3번 이미지를 로드할 때, 이렇게 오버 플로우가 발생함 2번 이미지는 데이터의 손실이 발생해 문제가 생김: 메모리 파편화 / 메모리 단편화 문제 이를 방지하기 위해 C# / JAVA는 가비지 콜렉터를 돌려 메모리를 정리해주지만, 이는 CPU를 낭비하는 일이므로 비효율적 따라서, 사용할 데이터를 미리 메모리에 올려 메모리에서 삭제하지 않음 그러면 메모리를 정리할 필요도 없으니..

Metaverse/Unity 2023.05.06

C# / 싱글톤 디자인 패턴

해당 객체의 메모리를 정적으로 할당하여 하나의 객체에만 접근하는 방법 프로그램이 동작하는 동안 최초로 생성된 객체 하나에만 접근하게 되므로 데이터를 접근하고 수정하는데 아주 용이한 특징이 있음 생성자를 다른 곳에서 새롭게 선언하더라도 이미 정적으로 선언된 객체가 반환되므로 중복 생성을 방지 초기 객체를 생성하게 되면 정적 메모리에 올라가므로 이후 호출하는데 빠르게 접근 가능 정적 메모리에 할당된 객체로 해당 객체에 너무 큰 메모리가 쌓이게 되면 프로그램 성능이 현저하게 낮아질 수 있음 (정적 메모리에 할당할 수 있는 메모리 크기가 제한적) 프로그램이 복잡해지면서 서로 다른 데이터를 공유하게 되는데 이때 다른 객체들과 결합도가 낮아지게 됨 하나의 정적 메모리를 사용하므로 병렬 처리나 동기화와 같이 여러 방..

Metaverse/Unity 2023.05.06

Raycast

Physics.Raycast 직선을 씬에 투영하여 대상에 적중되면 true를 리턴하는 물리 함수 캐스팅 성공 실패에 따른 결과만 리턴하는 간단한 형태에서 부터 대상과 Ray의 충돌에 관련된 자세한 정보를 (직선과 객체의 교차 정보. 거리, 위치, 캐스팅에 검출된 객체의 Transform에 대한 참조 등) 리턴하는 다양한 버전이 제공되고 있음 Ray 변수 RaycastHit 변수 Raycast 함수 Ray 구조체 사용법 : Ray는 직선의 시작점(origin)과 방향(direction)을 가지고 있는 단순한 구조체 시작점(origin)은 Vector3 타입의 월드 포지션이며 방향(direction)은 직선 Ray 생성 방법 1) new 이용해 직접 생성 Ray ray = new Ray(transform.p..

Metaverse/Unity 2023.04.05

deltaTime & fixedDeltaTime

deltaTime 용도 : 타겟 디바이스마다 성능 격차로 인해 프레임 수행 시간이 다를 것을 대비해 보정하기 위해 사용됨 전 프레임이 완료되기까지 걸린 시간을 말함 컴퓨터의 성능이 나쁠수록 값이 커짐 한 프레임이 완료되기까지 걸린 시간이 1초면 1, 10초면 10이 됨 deltaTime Time.deltaTime을 통해 참조 : 이전 프레임의 발생 시각과 현재 프레임의 발생 시각 사이의 시간 간격, 즉 이전 프레임의 수행에 걸린 시간 의미 Update() 내에서 시간의 진행에 따른 일정한 기능을 구현하기 위해 Time.deltaTime을 이용해 보정 fixedDeltaTime Time.fixedDeltaTime을 통해 참조 : 기본적으로 물리 업데이트 발생 주기, 즉 Fixed Time Step 값을 의..

Metaverse/Unity 2023.04.05

OnCollision & OnTrigger

OnCollision OnCollisionEnter: 물체 간의 충돌이 처음 일어났을 때 호출 OnCollisonStay: 물체 간의 충돌이 일어난 후 충돌이 지속될 때 호출 OnCollisionExit: 물체 간의 충돌이 끝나는 그 순간에 호출 OnCollision은 물리적 계산과 충돌을 함께 감지 OnTrigger OnTriggerEnter: 물체 간의 충돌이 처음 일어났을 때 호출 OnTriggerStay: 물체 간의 충돌이 일어난 후 충돌이 지속될 때 호출 OnTriggerExit: 물체 간의 충돌이 끝나는 그 순간에 호출 OnTrigger는 물리적 계산은 하지 않고 충돌만 감지 OnCollision vs OnTrigger Collision 충돌 처리를 할 때, 두 객체 모두 컴포넌트에 Rigid..

Metaverse/Unity 2023.04.05

오일러 각 문제 해결

로드게리스 회전 공식 오일러 각의 문제는 임의의 축에 대한 평면의 회전 방식을 사용하면 해결이 가능함 이 방식을 축-각 회전이라 부르는데, 3차원 공간에서 지정된 임의의 축에 직교하는 평면에서 회전이 진행되는 형태를 띰 사원수 현재 CK소프트렌더러의 3차원의 회전 트랜스폼은 오일러 각 방식의 구조체인 Rotator가 담당함 3차원 공간에서 움직이지 않는 물체의 회전을 설정하고, 회전에 관련된 정보를 보여줄 때는 오일러 각 방식을 사용하는 것이 편리하지만, 시간에 따라 변하는 회전을 처리할 때는 짐벌락 현상이 없는 사원수를 사용하는 것이 안전하고 간편함 직관적인 오일러 각 방식은 회전을 지정하거나 게임 로직에서 사용하기가 편리하므로 사원수와 오일러 각이 자유롭게 변환되도록 기능을 제공해야 함 렌더링 로직에..

오일러 각과 짐벌락

오일러 각의 특징 : 3차원 공간의 회전을 지정할 때 직관적인 인터페이스 제공 설정할 값도 세가지뿐이고, 직관적인 표준기저벡터를 회전축으로 사용하므로 회전을 설계하기가 용이함 사용자 입장에서 물체의 회전을 설정할 때 가장 적합 적은 용량으로 3차원 공간의 회전 정보 기록 가능 행렬을 사용해 3차원 공간의 회전을 표현하려면 최소 9개의 실수 데이터가 필요하지만, 오일러 각은 3개의 데이터만 있으면 3차원 공간의 회전을 표현할 수 있음, 이는 트랜스폼 정보를 줄일 수 있어 적은 용량으로 게임 데이터를 관리할 수 있게 도와줌 짐벌락 현상 ex) 1) z축으로 90 회전 (반시계 방향) 2) x축으로 -90 회전(시계 방향) 3) y축으로 -45 회전 결과적으로 z축과 y축은 회전을 하는 동안 동일한 회전이 되..

1784 스쿨혁명

2023.02.06 ~ 2023.02.07 수업 준비를 위해 우리끼리 회의도 여러번 진행하고, 현역 선생님과 멘토링도 있었고, 엔트리 사용법도 익혀보고 아이스브레이킹 등 학생들이 참여할 수 있는 수업들을 구상하고 물품 준비 등등.. 정신 없이 방학이 지나갔다.. 준비하는 기간은 프로젝트 진행과 함께 하느라 벅찼지만 막상 학교에 가서 아이들을 만나니 너무 즐겁고 뿌듯했다. 회의 4시간씩쯤이야 기본이었고, 틈틈히 카톡으로도 계속 얘기 나누고, 각자 준비할 것들도 많았는데 아이들이 우리가 준비한 활동도 좋아해주고 걱정과 달리 우리도 좋아해줬다. 선생님 예쁘다고 해주고..^^v 나는 대학에 와서 처음 접해본 지식들을 요즘엔 어린 아이들이 당연하듯 접하고 있다. 인공지능, 메타버스 모두 실생활에 많이 다가왔으며 ..

기타/대외활동 2023.03.11

체감형 AR 디자인 - 프로젝트 자료조사 / Marker AR, Markerless AR

Marker AR 이미지 인식 AR로도 알려진 마커 기반 AR은 AR 경험을 활성화하기 위해 트리거 사진 또는 QR코드가 필요함 사용자는 휴대폰 카메라를 사용하여 마커를 스캔할 수 있으며 디지털 경험이 마커 위에 나타나 이를 통해 사용자는 마커 주변을 이동하고 3D로 디지털 경험을 볼 수 있음 마커 기반 AR은 클라우드 기반이거나 장치에 로컬화될 수 있음 앱을 통해 사용자 장치에 다운로드 되므로 로컬화된 AR 경험을 즉시 볼 수 있음 클라우드 기반 AR 경험은 서버에서 다운로드해야 하므로 로드하는데 시간이 좀 더 걸림 카메라가 인식할 수 있도록 마커가 고유해야 함 좋은 마커에는 로고, 포장, 포스터, 병, 기계류 등이 포함될 수 있으며 뚜렷한 모서리, 색상 및 가장자리가 있는 이미지가 가장 잘 작동 ex..