Volumetric LightBeam 란? Volumetric Light Beam을 사용하면 유니티 내 조명 퀄리티를 크게 향상시킬 수 있습니다. Volumetric LightBeam 영상 Volumetric LightBeam에는 두 가지 종류가 있으며 플랫폼에 맞게 사용하시면 됩니다. - SD Beam은 빠르지만 기능이 제한적이며(트루 볼류메트릭 섀도 및 쿠키 지원 없음), 모바일 및 독립형 VR(Oculus Quest)에서 실행되게 끔 최적화되어 있습니다. - HD Beam은 고급 기능(트루 볼류메트릭 섀도 및 쿠키)을 제공하지만 성능이 더 무겁기 때문에 하이엔드 플랫폼(PC 및 콘솔)에서만 사용해야 합니다. Volumetric LightBeam 사용 방법 이 포스팅에서는 SD Beam에 대한 설명만..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. 이번 포스팅에서는 DOM에 대해 알아보는 시간을 갖고자 합니다. DOM이란? DOM은 "Document Object Model"의 약어로, HTML 문서의 구조를 나타내고 브라우저와 상호작용하기 위한 프로그래밍 인터페이스입니다. DOM은 웹 페이지의 구조, 스타일 및 내용을 변경할 수 있도록 프로그램에서 HTML 문서 데이터에 액세스할 수 있는 방법을 제공합니다. DOM의 주요 특징은 다음과 같습니다. 객체 지향 표현: DOM은 웹 페이지를 완전한 객체 지향 방식으로 나타냅니다. HTML 문서의 각 요소(element)들은 브라우저에서 로딩되면서 객체화됩니다...
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. 이번편은 JavaScript:Asynchronous Programming 1편에 이은 2편입니다. 이전 1편을 읽고오시는 것을 추천드립니다. 웹 시스템 개발 #Asynchronous Programming 중급편(1) 학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. Asynchronous(비동기) Programming란? JavaScript에 wlsdn629.tistory.com 이번 포스팅에서는 async function과 await에 대한 설명을 해보고자 합니다..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. Asynchronous(비동기) Programming란? JavaScript에서 비동기(asynchronous) 프로그래밍은 중요한 개념 중 하나입니다. 왜냐하면 JavaScript는 기본적으로 단일 스레드(single-threaded)로 동작하기 때문에, 어떤 작업이 시간이 오래 걸린다면 그 작업이 완료될 때까지 다른 작업은 대기해야 때문입니다. 이를 해결하기 위해 자바스크립트에서 비동기 프로그래밍을 사용하게 된 것입니다. 비동기와 이벤트 사용자의 마우스 클릭, 키보드 입력 등과 같은 이벤트는 비동기적으로 발생합니다. 즉, 이러한 이벤트가 언제 일어날지 예측..
유니티에서 화면을 회색으로 바꾸는 방법은 정말 다양합니다. 예를 들어, 셰이더를 이용해서 카메라의 렌더링을 컨트롤한다거나, 간단하게 UI를 이용하여 화면을 회색으로 가리는 방법 등이 있습니다. 저는 그중에서 (Post Processing)채널 믹서를 이용한 방법에 대해 소개드리고자 합니다. (Post Processing)채널 믹서 을 이용하기 위해서는 URP & HDRP환경이여야 합니다. 즉, 빌트인 환경에서는 어렵다는 뜻입니다. 채널 믹서란? 채널 믹서는 Unity의 URP 및 HDRP에서 사용되는 포스트 프로세싱 효과입니다. 채널 믹스를 통해 이미지의 빨강(R), 녹색(G), 파랑(B) 색상 채널의 강도를 조정할 수 있습니다. 앞서 언급했다시피, Unity의 채널 믹서를 이용하여 일반적으로 각 R, ..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. 이번편은 JavaScript:Functions and Classes 초급편에 이은 고급편입니다. 더 심화된 기초를 다루므로 이전 초급편을 읽고오시는 것을 추천드립니다. 웹 시스템 개발 #JavaScript: Functions and Classes 초급편 학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. JavaScript의 함수(Functions) 함수란 무엇인가 wlsdn629.tistory.com Closure 클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조..
HMD(헤드셋)없이 VR테스트 하는 방법에 대해 소개해드리고자 합니다. 우선 이 방법을 사용하기 위해서는 조건이 있습니다. 필수조건은 진행중인 프로젝트의 Toolkit은 "XR Interaction Toolkit"이여야 한다는 점입니다. Device 세팅 [Project Setting]에 들어가셔서 "Use XR Device Simulator in scenes" 옵션을 체크해줍니다. 실행하기 에디터를 실행시키면 좌측 하단에 컨트롤러 조작 설명이 적혀있는 이미지를 보실 수 있습니다. 키보드 및 마우스를 이용하여 실제 VR 기기의 컨트롤을 따라할 수 있습니다. 조작키가 어려우시면 "XR Device Sumulate"프리팹을 수정하여 본인의 취향에 맞게 설정할 수 있습니다. 결과
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. JavaScript의 함수(Functions) 함수란 무엇인가요? 함수는 코드의 "재사용성"을 높이고 모듈화를 가능하게 하는 프로그래밍 구조 중 하나입니다. JavaScript에서 함수는 'Single Unit'으로 취급되며, 변수에 할당하거나 다른 함수의 인자로 전달할 수 있습니다. function helloWorld() { console.log("Hello, 세상~!"); } 함수 선언(Function Declaration) Function Invocation은 함수를 일반적인 방법으로 호출하는 것을 의미하며 함수의 이름, 매개변수, 그리고 실행할 코드 블..
이 글은 빌드를 하고 apk파일을 VR에 업로드하는데 문제가 생겼던 팀원을 도와주면서 어떻게 해결했는지 공유하기 위해 쓰는 글입니다. 아래 에러는 빌드 후 업로드할 때 apk파일 용량이 2GB가 넘으면 발생하거나, 인증 키가 없어서 발생하는 에러라고 합니다. 팀원의 프로젝트 경우 인증키는 이미 존재하기에 전자에 대한 해결책으로 최적화(빌드 크기 줄이기)와 관련해서 포스팅을 해보고자 합니다. 이 방법이 100% 해결법은 아닐 수 있겠지만 해결방법 중 하나가 될 수 있기에 참고하시면 좋을 것 같습니다. A task failed. Check the tasks screen for more info. bulid.apk: /data/local/tmp/_stream.apk could not be installed [..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. 이번편은 JavaScript:Fundamentals 초급편에 이은 고급편입니다. 더 심화된 기초를 다루므로 이전 초급편을 읽고오시는 것을 추천드립니다. 2023.10.26 - [학교 공부/웹 개발] - 웹 시스템 개발 #JavaScript:Fundamentals 초보편 Objects 객체(Object)는 "키-값" 쌍의 집합으로, 자바스크립트에서 복잡한 데이터 구조를 표현하는 데 사용됩니다. 객체는 어떤 형태의 데이터든 담을 수 있고, 함수를 통해 그 데이터를 조작하는 로직을 포함할 수 있습니다. 사용 예시 const person = { name: "John"..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. JavaScript란 무엇인지 JavaScript는 웹 브라우저에서 작동하는 인터프리터 언어로, 동적 웹 페이지를 생성하기 위해 사용됩니다. HTML은 구조를, CSS는 스타일을, JavaScript는 기능을 추가합니다. 주석 사용방법 주석은 코드의 일부를 무시하게 만들거나, 설명을 추가하는 데 사용됩니다. 한 줄 주석: 코드 뒤에 //를 삽입합니다. // 이 줄은 주석입니다. 여러 줄 주석: /*로 시작하고 */로 끝납니다. /* 이것은 여러 줄 주석입니다. */ Character Set JavaScript는 Unicode Character Set를 사용합니..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. CSS란? CSS (Cascading Style Sheets)는 마크업 언어의 문서를 "꾸미기 위한" 스타일시트 언어입니다. 다양한 디자인과 레이아웃을 적용하여 웹 페이지의 외관을 제어(꾸밈)합니다. 외부 스타일 시트 (External Style Sheet) 외부 스타일 시트는 .css 파일에 스타일을 정의하고 HTML 문서에서 참조합니다. 여러 HTML 문서에서 동일한 스타일을 재사용할 수 있습니다. This is a paragraph. Syntax CSS 문법은 선택자(Selector)와 중괄호("{ }") 안에 속성: 값; 형식으로 작성됩니다. p { c..
학교 공부를 복습할 겸 적는 것이기에 내용이 부족할 수 있습니다. 부족한 것은 상관 없으나, 잘못된 부분이 발견된다면 지적해주시면 감사하겠습니다. HTML 배우기 시작~! HTML5란? HTML5는 웹 페이지를 만들기 위한 가장 최신의 웹 기술입니다. HTML5 문서의 기본 구조는 다음과 같습니다. 먼저, 문서의 첫 줄에는 선언이 와야 합니다. 이 선언은 HTML5 문서임을 선언해주는 역할입니다. 다음에는 최상위 요소인 태그가 와야 합니다. 이 태그는 Header 1 Header 2 Header 3 Header 4 Header 5 Data Data Data Data Data Data Data Data Data Data Data Data Data Data Data HyperLink Tag: Descript..
개발을 하다보면 런타임에 돌아가지 않고 에디터 상에서 특정 함수가 실행되게 하고 싶을 때가 종종 생깁니다. 예를 들어, 10x10 블록을 배치한다거나 랜덤한 미로를 만든다 등의 경우가 있습니다. 저의 경우, 디버그를 할 때 사용하기 위한 Debug Color Preset을 적용해야 하기 위해 인스펙터창에서 특정 함수가 실행되게 해주어야 합니다. ContextMenu [ContextMenu]는 Unity의 C# 스크립트에서 사용되는 특성(Attribute) 중 하나로, 해당 스크립트의 메서드를 인스펙터에서 실행할 수 있도록 하는 특성입니다. [ContextMenu] 특성을 메서드 위에 추가해준 다음 "이름"을 설정해주시면, 해당 메서드가 인스펙터에서 지정한 "이름"으로 나타납니다. 인스펙터에서 [Conte..
CreateAssetMenu란? CreateAssetMenu는 특정 스크립트에서 새로운 어셋을 생성할 수 있는 메뉴 옵션을 제공해줍니다. 이를 통해 사용자가 유니티 에디터의 메뉴를 통해 쉽게 새로운 인스턴스를 만들 수 있게 됩니다. CreateAssetMenu 어트리뷰트(attribute)는 클래스 선언 바로 위에 위치해야 합니다. 예시 [CreateAssetMenu(fileName = "MonsterData", menuName = "MonsterScriptable/CreateMonsterData", order = int.MaxValue)] public class MonsterData: ScriptableObject { [SerializeField] private int hp; public int HP ..
유니티 3D 개발을 하면서 가장 애용하고 유용하게 사용중인 에셋을 소개드리고자 합니다. 지극히 주관적인 생각이며 저의 개발 스타일에 맞춰 추천하는 것임을 강조합니다. Odin Inspector 유니티 Odin Inspector Odin Inspector란? 오딘 인스펙터는 커스텀 에디터 코드를 한 줄도 작성하지 않고도 강력하고 사용자 친화적인 커스터마이징 에디터의 모든 워크플로 이점을 누릴 수 있는 Unity용 플러그인입니다. wlsdn629.tistory.com 프로젝트를 시작하면 아무 생각 없이 패키지 매니지먼트에 들어간 후 오딘 인스펙터를 설치합니다. 오딘 인스펙터를 알고 난 후와 전의 개발속도 차이는 실감이 날 정도로 제 값을 똑똑히 해주는 에셋입니다. 마치, GPT가 생겨난 후와 전과 같은 느낌..
애니메이션을 제작하다보면 가끔 디자이너로부터 잘못된 애니메이션 클립을 전달받는 경우가 생깁니다. 디자이너가 바쁘지 않다면 바로 수정해줄 수 있지만 여유가 없다면 유니티 개발자가 직접 수정하는 방법도 있습니다! 물론, 애니메이션 클립을 수정해주는 것이 가장 좋은 방법이라고 저는 생각합니다만 서로의 시간을 아끼기 위해 이번 포스팅에서는 개발자가 "직접" 애니메이션 클립을 조정하는 방법에 대해 알아보고자 합니다. Animation Clip 조정해보기 애니메이션 클립을 조정해보기 위해 애니메이션 클립 하나를 선택해봅니다. 애니메이션 클립을 눌러보면 Loop Time, Root Transform Rotation, Root Transfom Rotation(Y), Root Transfom Rotation(XZ) 옵션..
IK관련한 포스팅은 아래를 참고해주세요. 유니티 VR Full Body IK Setup with Hand Animation 저의 천사 발렘 유튜버님의 영상을 후루룩 해왔습니다!!! 필요한 재료 첫 번째로 Animation Rigging이 필요합니다! 더보기 IK Foot Solver using UnityEngine; public class IKFootSolver : MonoBehaviour { public bool isMovingFor wlsdn629.tistory.com Control Rig란? 원클릭 설정만으로 "휴머노이드 캐릭터"에 IK 설정을 간편하게 사용할 수 있습니다. 무엇보다 "무료"입니다! 특징 : 원클릭 설정: 캐릭터를 선택하고 "Build Rig(리그 구축)" 버튼을 클릭하여 해당 Co..
프로젝트를 하다보면 팀장이 PR좀 보내주세요~ 할 때가 오게 됩니다. PR이 무엇인지, 어떻게 보내는지 이번 포스팅을 통해 알아보겠습니다. PR이란? PR은 Pull Request의 약자로, 코드베이스에 대한 변경을 제안하기 사용되는 메커니즘입니다. 프로젝트에 새로운 기능, 버그 수정 또는 업데이트를 제공하기 위한 방법이라고 생각하시면 됩니다. PR하는 방법 프로젝트를 열심히 하면 위와 같이 changed files을 볼 수 있습니다. 변화된 파일들은 곧 본인이 작업한 Task를 뜻합니다. 제목을 적으신 후에 [Commit to ~] 버튼을 눌러줍니다. 먼저 원격 저장소에 Push를 해줍니다. 다음으로 [Create Pull Request]버튼을 눌러줍니다. 만약 [Create Pull Request]버..
Git PR 템플릿을 만들어야 하는 이유 개발자들 간의 일관된 커뮤니케이션을 강화하고, 코드 리뷰의 효율성을 높이기 위함 PR의 목적과 변경 사항이 명확히 전달되어 팀 내의 협업 퀄리티와 코드의 퀄리티 향상 Git PR 템플릿 만드는 방법 GitHub 홈페이지에 들어가준 다음, 본인의 Repo에 들어가셔서 [Create new file] 버튼을 눌러줍니다. Name your file에는 "pull_request_template.md"을 작성해 줍니다. 이때 주의하셔야 할 점은 pull_request_template.md가 저장되어야 하는 위치는 Base repository에 있어야 적용되며 대소문자를 가리지 않습니다. ## Summary (Task 요약) - ## 변경사항을 전부다 기재합니다(코드 수정,..