-
[Unity] URP 머티리얼 핑크색(깨짐) 문제 해결 방법
3D URP 템플릿이 적용된 프로젝트에서 위 이미지처럼 오브젝트의 머티리얼이 깨져서 핑크색으로 변경되는 문제가 있다. 해결 방법은 다음과 같다. 1-1. 머티리얼 수동 선택 해결 문제가 있는 머티리얼을 찾아서 선택 (다중 선택 가능) [Edit > Rendering > Materials > Convert Selected Built-in Materials to URP] 선택한 머티리얼을 URP로 변환하는 기능이다. [Proceed] 버튼 클릭 (대충 진행하기 전에 백업했냐는 메시지) 위 이미지처럼 정상적으로 머티리얼이 적용된 것을 볼 수 있다. 1-2. 머티리얼 자동 선택 해결 [Window > Rendering > Render Pipeline Converter] [Bulit-in to URP]로 되어있는..
-
[Unity] 버전 컨트롤로 협업하는 방법
개요 유니티에서 팀 프로젝트를 할 때 다른 팀원들에게 나의 작업 내용을 공유하기 위해서는 협업 툴이 필수다. GitHub의 Collaborator 서비스처럼 작업 내용을 패키지하여 일일이 공유할 수 있지만 경우에 따라 비효율적이다. 그래서 작업 내용을 실시간으로 유니티 내부에서 관리하는 협업 툴을 사용한다. 기존 협업 툴이었던 Plastic SCM과 Collaborate가 서비스 종료되고 현재는 Plastic SCM 기술을 사용하는 Version Control이 서비스되고 있다. 하지만 국내에 버전 컨트롤에 관한 정보가 너무 없어서 시작하기조차 어렵다. 나 또한 플라스틱 SCM이 서비스가 끝난지도 모르고 구독하려다가 큰일 날뻔했다. 대부분 영문으로 되어있고 과정이 복잡하니 잘 보고 따라 해야 한다. De..
-
[Unity] 캐릭터 Mixamo 애니메이션 적용하는 방법
유니티에서 캐릭터에 애니메이션을 적용하기 위해 먼저 캐릭터 모델과 행동할 애니메이션을 구한다. Mixamo에서 다양한 캐릭터 모델과 애니메이션을 제공하고 있어 많이들 사용하는데 이곳에서 구한 애니메이션을 유니티에서 적용해 보자. Mixamo 사이트에 접속하여 회원가입 및 로그인을 한다. Mixamo www.mixamo.com 좌측 상단에 캐릭터 탭에서 애니메이션을 적용할 캐릭터 모델을 선택하여 미리 보거나 다운로드할 수 있다. 준비한 캐릭터 모델이 있다면 [UPLOAD CHARACTER] 버튼을 클릭하여 캐릭터 모델을 업로드할 수 있다. (업로드하려는 캐릭터 모델이 리깅이 안되어있으면 Mixamo 내부의 [AUTO-RIGGER] 기능으로 쉽게 리깅이 가능하다.) 이 작업을 안 해도 유니티에서 애니메이션을..
-
[Unity] 포스트 프로세싱(Post-process) 적용하는 방법
개요 포스트 프로세싱(Post-process)은 렌더링이 완료된 화면에 적용되는 추가적인 이미지 처리 기술이다. 실제 몇몇 게임을 플레이하면서 볼 수 있는 블룸(Bloom), 모션 블러(Motion Blur) 등이 이에 해당한다. 유니티에서 포스트 프로세싱은 렌더 파이프라인마다 2가지 버전이 존재한다. URP 내장 포스트 프로세싱 이 방법은 URP 자체 포스트 프로세싱 솔루션을 이용한다. URP로 프로젝트를 설정한 경우 하이어라키 뷰에 [Global Volume] 오브젝트가 자동 생성되었을 것이다. 없는 경우 하이어라키 뷰에서 다양한 형태의 Volume을 직접 생성할 수 있다. Volume - 포스트 프로세싱 스택에서 포스트 프로세싱 프로필을 적용하는 데 사용 Global Volume - 게임 내의 전역..
-
[Unity] 1인칭(FPS) 캐릭터 이동 및 회전 구현 방법
유니티에서 1인칭 시점의 캐릭터 조작을 간단하게 구현해보려 한다. 본인의 개인적인 생각으로 구현한 내용이므로 정답은 아니니 참고하기 바란다. 지면을 대체할 Plane 오브젝트와 캐릭터를 대체할 Capsule 오브젝트를 생성한다. (캐릭터의 정면을 구분하기 위해 양팔을 추가했다.) 1인칭 시점을 구현하기 위해 메인 카메라를 캐릭터의 하위 오브젝트로 설정한다. 그다음 카메라 위치를 적절하게 조정한다. Player.Ctrl using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class Player_Ctrl : MonoBehaviour { Rigidbod..
-
[Unity] 포스트 프로세싱(Post-process) 적용하는 방법
개요 포스트 프로세싱(Post-process)은 렌더링이 완료된 화면에 적용되는 추가적인 이미지 처리 기술이다. 실제 몇몇 게임을 플레이하면서 볼 수 있는 블룸(Bloom), 모션 블러(Motion Blur) 등이 이에 해당한다. 유니티에서 포스트 프로세싱은 렌더 파이프라인마다 2가지 버전이 존재한다. URP 내장 포스트 프로세싱 이 방법은 URP 자체 포스트 프로세싱 솔루션을 이용한다. URP로 프로젝트를 설정한 경우 하이어라키 뷰에 [Global Volume] 오브젝트가 자동 생성되었을 것이다. 없는 경우 하이어라키 뷰에서 다양한 형태의 Volume을 직접 생성할 수 있다. Volume - 포스트 프로세싱 스택에서 포스트 프로세싱 프로필을 적용하는 데 사용 Global Volume - 게임 내의 전역..
-
DirectX 9 SDK 설치 및 Visual Studio 2022 연동 방법
DirectX 9 SDK를 설치하고 Visual Studio 2022에 연동해 보자. 윈도우10과 윈도우11 환경에서 진행한 결과 문제없었다. 먼저 아래 사이트에서 DirectX 9 SDK를 다운로드한다. Download DirectX SDK - (June 2010) from Official Microsoft Download CenterThis download is the legacy DirectX SDK. It is now end-of-life and should only be used for maintaining older software. For targeting DirectX for Windows 7 or later, use the modern Windows SDK instead.www.micro..
-
[Unity] VR 캐릭터 이동 및 회전 조작(Locomotion System)
개요 VR 기기와 연동되어 있는 캐릭터의 이동과 회전을 컨트롤러로 조작해 보자. Locomotion System을 사용하여 쉽게 구현할 수 있다. 진행하기 전 VR 기기와 캐릭터를 연동하자. [Unity] VR 캐릭터 리깅 및 연동하여 조작하는 방법개요 오늘 작업을 진행하기 전 먼저 유니티에서 퀘스트와 연동해 주자. [Unity] VR 퀘스트2 연동(OpenXR 플러그인 세팅) 개요 유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정teinoi.tistory.com Locomotion System 세팅 XR > Locomotion System (Action-based) 하이어라키 뷰에 Locomotion System (Action-based)을 생성한다. Locomotion S..
-
[Unity] VR 캐릭터 하체 애니메이션 컨트롤러 조작
개요 VR(퀘스트2) 컨트롤러의 스틱으로 캐릭터의 하체 애니메이션을 조작해 보자. 그전에 기본 상태(Idle) 애니메이션과 걷는(Walking) 애니메이션이 필요한데 Mixamo에서 구할 수 있다. Mixamo www.mixamo.com 이전에 진행했던 프로젝트를 이어서 한다. [Unity] VR 캐릭터 손 애니메이션 컨트롤러 조작개요 VR(퀘스트2) 컨트롤러의 트리거(검지)와 그립 버튼(중지)에 따라 캐릭터의 손이 집게손가락이 되거나 주먹을 쥐게 해 보자. 이전에 진행했던 VR 기기와 캐릭터 모델이 연동된 상태에서 계속teinoi.tistory.com 사전 세팅 캐릭터 모델이 휴머노이드 타입이며 아바타가 생성되어 있는지 확인한다. 적용할 애니메이션 클립의 Rig 탭을 다음과 같이 변경 및 할당한다. ..
-
[Unity] 1인칭 캐릭터 카메라 렌더링 레이어 세팅
위 이미지같이 카메라를 캐릭터의 머리 위치에 놓으면 캐릭터 모델에 시야가 가려지는 문제가 있다. 이 문제를 카메라가 렌더링할 레이어를 구분해서 해결하자. [Edit > Project Settings > Tags and Layers > Layers] 카메라가 렌더링을 안할 레이어를 추가한다. 캐릭터 모델의 구성 오브젝트 중에 렌더링을 원하지 않는 오브젝트를 선택한다. 선택한 오브젝트의 레이어를 렌더링 안 할 레이어로 설정한다. 카메라의 인스펙터 뷰로 넘어온다. [Camera > Rendering > Culling Mask] 항목에서 렌더링 안 할 레이어를 제외한다. 위 이미지처럼 제외한 레이어의 오브젝트는 카메라에 보이지 않게 된다.
-
[Unity] VR 캐릭터 손 애니메이션 컨트롤러 조작
개요 VR(퀘스트2) 컨트롤러의 트리거(검지)와 그립 버튼(중지)에 따라 캐릭터의 손이 집게손가락이 되거나 주먹을 쥐게 해 보자. 이전에 진행했던 VR 기기와 캐릭터 모델이 연동된 상태에서 계속한다. [Unity] VR 캐릭터 리깅 및 연동하여 조작하는 방법개요 오늘 작업을 진행하기 전 먼저 유니티에서 퀘스트와 연동해 주자. [Unity] VR 퀘스트2 연동(OpenXR 플러그인 세팅) 개요 유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정teinoi.tistory.com 컴포넌트 세팅 아래 패키지 파일을 다운받고 프로젝트에 임포트한다. 1. 캐릭터 오브젝트에 Animator 컴포넌트를 추가(Avatar 항목에 캐릭터 모델 아바타가 할당되어 있는지 확인) 2. Controll..
-
[Unity] VR 캐릭터 리깅 및 연동하여 조작하는 방법
개요 Animation Rigging 패키지를 이용하여 캐릭터 리깅 작업을 하고 VR 기기와 연동하여 조작해 보자. 애니메이션 리깅 | Animation Rigging | 0.2.6-preview애니메이션 리깅 다음 문서는 애니메이션 리깅 패키지 **[com.unity.animation.rigging]**의 설정 프로세스, 제약 정의, 추가 정보에 대해 설명합니다. 애니메이션 리깅이란 ? 사용자는 애니메이션 리깅을docs.unity3d.com 진행하기 전 유니티에서 퀘스트와 연동해 주자. [Unity] VR 퀘스트2 연동(OpenXR 플러그인 세팅)개요 유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정해야 한다. 23년 10월 스팀 기준으로 가장 많은 유저가 사용하는 VR 기기..
-
[Unity] 캐릭터 Mixamo 애니메이션 적용하는 방법
유니티에서 캐릭터에 애니메이션을 적용하기 위해 먼저 캐릭터 모델과 행동할 애니메이션을 구한다. Mixamo에서 다양한 캐릭터 모델과 애니메이션을 제공하고 있어 많이들 사용하는데 이곳에서 구한 애니메이션을 유니티에서 적용해 보자. Mixamo 사이트에 접속하여 회원가입 및 로그인을 한다. Mixamo www.mixamo.com 좌측 상단에 캐릭터 탭에서 애니메이션을 적용할 캐릭터 모델을 선택하여 미리 보거나 다운로드할 수 있다. 준비한 캐릭터 모델이 있다면 [UPLOAD CHARACTER] 버튼을 클릭하여 캐릭터 모델을 업로드할 수 있다. (업로드하려는 캐릭터 모델이 리깅이 안되어있으면 Mixamo 내부의 [AUTO-RIGGER] 기능으로 쉽게 리깅이 가능하다.) 이 작업을 안 해도 유니티에서 애니메이션을..
-
[Unity] URP 머티리얼 핑크색(깨짐) 문제 해결 방법
3D URP 템플릿이 적용된 프로젝트에서 위 이미지처럼 오브젝트의 머티리얼이 깨져서 핑크색으로 변경되는 문제가 있다. 해결 방법은 다음과 같다. 1-1. 머티리얼 수동 선택 해결 문제가 있는 머티리얼을 찾아서 선택 (다중 선택 가능) [Edit > Rendering > Materials > Convert Selected Built-in Materials to URP] 선택한 머티리얼을 URP로 변환하는 기능이다. [Proceed] 버튼 클릭 (대충 진행하기 전에 백업했냐는 메시지) 위 이미지처럼 정상적으로 머티리얼이 적용된 것을 볼 수 있다. 1-2. 머티리얼 자동 선택 해결 [Window > Rendering > Render Pipeline Converter] [Bulit-in to URP]로 되어있는..
-
[Unity] OpenXR Feature Groups 기능 문서 정리
OpenXR 기능에 대한 문서 OpenXR Features | OpenXR Plugin | 1.9.1 OpenXR Features OpenXR is an extensible API that can be extended with new features. To facilitate this within the Unity ecosystem, the Unity OpenXR provider offers a feature extension mechanism. Feature Management You can manage features from the Project S docs.unity3d.com D-Pad Binding D-Pad Interaction | OpenXR Plugin | 1.9.1 D-Pad Inter..
-
[Unity] VR 퀘스트 2 연동(OpenXR 플러그인 세팅)
개요 유니티에서 VR 환경을 구축하기 전 어떤 VR 기기를 표준으로 해야 할지 정해야 한다. 23년 10월 스팀 기준으로 가장 많은 유저가 사용하는 VR 기기는 메타의 퀘스트 2이므로 퀘스트 2를 표준으로 유니티에서 VR 환경을 구축해 보자. Steam 하드웨어 및 소프트웨어 설문조사 store.steampowered.com 유니티에서 메타 퀘스트와 연동하는 방법은 크게 2가지 있는 것으로 알고 있다. 1. *OpenXR 플러그인2. 오큘러스 패키지(메타가 오큘러스를 인수) *OpenXR : 가상현실 및 증강현실 플랫폼과 장치에 접근하기 위한 로열티 없는 개방형 표준 OpenXR 플러그인은 표준화 방법을 제공하며 복잡하지만 오큘러스 패키지는 한정적이며 간단하다는 차이가 있다. 본인은 OpenXR 플러그인..
-
[Unity] Hub에서 버전 컨트롤 사용하기
유니티 허브 3.6.0 버전부터 허브에서 버전 컨트롤을 사용할 수 있다. 하지만 3.6.0 버전부터 프로젝트를 생성할 때 자동으로 클라우드에 연결하려는 등 불편함이 있다. 개인적으로 3.6.0 이전 버전으로 사용하는 것을 추천한다.
-
[C++] 예제 연습 / 23.10.10
예제 - Circle 객체의 동적 생성 및 반환 Circle.h #ifndef CIRCLE_H #define CIRCLE_H class Circle { int radius; public: Circle(); ~Circle(); Circle(int r); }; #endif Circle.cpp #include #include "Circle.h" using namespace std; Circle::Circle() { radius = 1; cout
-
[Unity] 그래플링 훅(로프 액션) 구현하는 방법
개요 유니티에서 그래플링 훅(로프 액션)을 구현하는 방법은 보통 다음 같은 과정을 거친다. 1. 자신의 위치에서 로프를 연결할 지점을 Raycast한다. 2. Line Renderer로 자신의 위치와 로프를 연결할 위치 사이를 선으로 변환한다. 3. Spring Joint를 사용해 두 지점 사이를 스프링 형태의 물리적 재질을 적용한다. 먼저 그래플링 훅을 구현하기 전, 간단한 캐릭터 이동을 구현했다. [Unity] 1인칭(FPS) 캐릭터 이동 및 회전 구현 방법 유니티에서 1인칭 시점의 캐릭터 조작을 간단하게 구현해보려 한다. 글 하단에 전체적인 내용을 구현한 유니티 패키지 파일을 사용해도 된다. 지면을 대체할 Plane 오브젝트와 캐릭터를 대체할 Ca teinoi.tistory.com 스크립트 작성 G..
-
[C# 코딩테스트 연습] LV.0 문자열 돌리기
문제 설명 문자열 str이 주어집니다. 문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str의 길이 ≤ 10 Solution.cs using System; public class Example { public static void Main() { String s; Console.Clear(); s = Console.ReadLine(); for (int i = 0; i < s.Length; i++) { Console.WriteLine(s[i]); } } } 실행 결과 테스트 1 입력값 〉 "abcde" 기댓값 〉 "a b c d e" 실행 결과 〉 테스트를 통과하였습니다. 출력 〉 a b c d e
-
[C# 코딩테스트 연습] LV.0 문자열 붙여서 출력하기
문제 설명 두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다. 입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str1, str2의 길이 ≤ 10 Solution.cs using System; public class Example { public static void Main() { String[] input; Console.Clear(); input = Console.ReadLine().Split(' '); String s1 = input[0]; String s2 = input[1]; String result = s1 + s2; Console.WriteLine(result.Replace(" ", String.Empty)); } } ..
-
[C# 코딩테스트 연습] LV.0 덧셈식 출력하기
문제 설명 두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요. a + b = c 제한사항 1 ≤ a, b ≤ 100 Solution.cs using System; public class Example { public static void Main() { String[] s; Console.Clear(); s = Console.ReadLine().Split(' '); int a = Int32.Parse(s[0]); int b = Int32.Parse(s[1]); Console.WriteLine("{0} + {1} = {2}", a, b, a + b); } } 실행 결과 테스트 1 입력값 〉 "4 5" 기댓값 〉 "4 + 5 = 9" 실행 결과 〉 테스트를 통과하였습니..
-
[C# 코딩테스트 연습] LV.0 특수문자 출력하기
문제 설명 다음과 같이 출력하도록 코드를 작성해 주세요. 출력 예시 !@#$%^&*(\'"?:; Solution.cs using System; public class Example { public static void Main() { Console.WriteLine("!@#$%^&*(\\'\"?:;"); } } 실행 결과 테스트 1 입력값 〉 "이 문제는 입력이 없습니다." 기댓값 〉 "!@#$%^&*(\'"?:;" 실행 결과 〉 테스트를 통과하였습니다. 출력 〉 !@#$%^&*(\'"?:;
-
[C# 코딩테스트 연습] LV.0 대소문자 바꿔서 출력하기
문제 설명 영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str의 길이 ≤ 20 str은 알파벳으로 이루어진 문자열입니다. Solution.cs using System; public class Example { public static void Main() { String s; Console.Clear(); s = Console.ReadLine(); String result = ""; foreach (char c in s) { if (char.IsLower(c)) { result += char.ToUpper(c); } else if (char.IsUpper(c)) { result += char..
-
[C# 코딩테스트 연습] LV.0 문자열 반복해서 출력하기
문제 설명 문자열 str과 정수 n이 주어집니다. str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요. 제한사항 1 ≤ str의 길이 ≤ 10 1 ≤ n ≤ 5 Solution.cs using System; public class Example { public static void Main() { String[] input; Console.Clear(); input = Console.ReadLine().Split(' '); String s1 = input[0]; int a = Int32.Parse(input[1]); String result = ""; for (int i = 0; i < a; i++) { result += s1; } Console.WriteLine(result); } } ..
-
[C# 코딩테스트 연습] Lv.0 두 수의 곱
문제 설명 정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ num1 ≤ 100 0 ≤ num2 ≤ 100 Solution.cs using System; public class Solution { public int solution(int num1, int num2) { int answer = num1 * num2; return answer; } } 실행 결과 테스트 1 입력값 〉 3, 4 기댓값 〉 12 실행 결과 〉 테스트를 통과하였습니다. 테스트 2 입력값 〉 27, 19 기댓값 〉 513 실행 결과 〉 테스트를 통과하였습니다.
-
[C# 코딩테스트 연습] LV.0 a와 b 출력하기
문제 설명 정수 a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요. 제한사항 -100,000 ≤ a, b ≤ 100,000 Solution.cs using System; public class Example { public static void Main() { String[] s; Console.Clear(); s = Console.ReadLine().Split(' '); int a = Int32.Parse(s[0]); int b = Int32.Parse(s[1]); Console.WriteLine("a = {0}", a); Console.WriteLine("b = {0}", b); } } 실행 결과 입력값 〉 "4 5" 기댓값 〉 "a = 4 b = 5"..
-
[Unity] 1인칭(FPS) 캐릭터 이동 및 회전 구현 방법
유니티에서 1인칭 시점의 캐릭터 조작을 간단하게 구현해보려 한다. 본인의 개인적인 생각으로 구현한 내용이므로 정답은 아니니 참고하기 바란다. 지면을 대체할 Plane 오브젝트와 캐릭터를 대체할 Capsule 오브젝트를 생성한다. (캐릭터의 정면을 구분하기 위해 양팔을 추가했다.) 1인칭 시점을 구현하기 위해 메인 카메라를 캐릭터의 하위 오브젝트로 설정한다. 그다음 카메라 위치를 적절하게 조정한다. Player.Ctrl using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; public class Player_Ctrl : MonoBehaviour { Rigidbod..
-
[Unity] Rigdbody 속성 정리
유니티에서 Rigidbody는 게임 오브젝트에 물리 엔진을 적용할 때 사용되며, 오브젝트의 물리적인 동작을 제어하는 데 도움이 된다. 본 글은 2023.2 버전 기준으로 작성되었다. Mass (질량) 오브젝트의 질량을 설정 기본값은 킬로그램 질량이 큰 오브젝트는 작은 오브젝트보다 물리적인 힘에 더 어렵게 반응한다. Drag (저항) 오브젝트가 힘에 의해 움직일 때 공기 저항이 영향을 미치는 정도 높은 Drag 값은 오브젝트를 빠르게 멈추게 하고, 낮은 Drag 값은 오브젝트를 더 멀리 이동하게 한다. Angular Drag (각속도 저항) 물체의 회전 각속도에 대한 저항 높은 Angular Drag 값은 오브젝트의 회전을 빠르게 멈추게 하고, 낮은 Angular Drag 값은 오브젝트를 오랫동안 회전할 ..
- 방문자수
전체 방문자
오늘 방문자
어제 방문자