Multiply Node란? Multiply Node는 두 개의 입력 값(A, B 2개의 채널)을 받아서 그 두 값을 곱한 결과를 내보내는 역할을 합니다. 예를 들어, 두 개의 색상을 입력으로 받는다면, Multiply Node는 두 색상을 섞은 결과를 출력합니다. 즉, Multiply Node는 두 입력 값을 '조합(섞는)’하는 역할을 한다고 생각하시면 됩니다. Multiply Node는 색상 뿐만 아니라 다른 벡터나 매트릭스 값들에도 사용할 수 있습니다. 예시 1 빨간색 바와 파란색 바를 각각 벡터로 표현할 때, 빨간색 바는 (1, 0, 0)으로, 파란색 바는 (0, 0, 1)로 표현할 수 있습니다. 이 두 벡터를 Multiply Node에 입력으로 주면, Multiply Node는 두 벡터를 곱한 ..
Split Node란? Split Node는 입력 벡터를 4개의 Float 출력인 R, G, B 및 A로 분할합니다. 출력 벡터( R, G, B, A)는 입력의 개별 채널 (R, G, B 및 A )에서 정의됩니다. 입력 벡터의 차원이 4(Vector 4)보다 작은 경우 입력에 없는 출력 값은 0이 됩니다. 활용 예시 Position Node에서 추출한 입력 벡터를 Split Node에서 활용할 수 있습니다. Position Node의 3차원 공간 위치 정보를 Split Node를 통해 x, y, z 좌표로 분리할 수 있습니다. 분리된 좌표들을 개별적으로 조작할 수 있습니다.
Position Node란? Position Node는 그래픽을 만드는 데 필요한 각각의 점(버텍스) 또는 색상의 단위(프래그먼트)의 위치를 알려주는 역할을 합니다. Position Node에는 5개의 space가 존재합니다. Space 설명 Object 객체 자체를 기준으로 한 위치를 나타냅니다. View 카메라 뷰를 기준으로 한 위치를 나타냅니다. World World를 기준으로 한 위치를 나타냅니다. Tangent 텍스처 좌표를 기준으로 한 위치를 나타냅니다. Absolute World 모든 Scriptable Render Pipeline에 대해 Scene의 객체의 절대적인 월드 위치를 항상 반환합니다. Object & World Space 차이 설명 연습 Position Node의 Object S..
AR Plane Manager이란? 실제 환경의 평면을 감지하고 추적하는 컴포넌트입니다. 감지된 각 평면에 게임 오브젝트를 생성할 수도 있습니다. 평면으로 감지될 수 있는 예로는 수평, 수직, 둘 모두 설정할 수 있습니다. 평면이 감지되면, AR Plane Manager에 할당한 Plane Prefab이 생성되며 평면을 나타냅니다. 이때 생성되는 Plane Prefab에는 ARPlane 컴포넌트가 존재해야 하며, 해당 컴포넌트를 통해 감지된 평면 데이터를 사용할 수 있습니다. AR Plane 컴포넌트의 주요 속성은 다음과 같습니다. Destroy On Removal: 속성이 참(true)인 경우, 객체가 제거될 때 파괴됩니다. Vertex Changed Threshold: 평면의 꼭짓점 위치가 이 값만큼..
코드 using UnityEngine; using UnityEngine.UI; public class ResolutionManager : MonoBehaviour { public TMP_Dropdown resolutionDropdown; private Resolution[] resolutions; private void Start() { resolutions = Screen.resolutions; resolutionDropdown.ClearOptions(); HashSet options = new HashSet(); int currentResolutionIndex = 0; for (int i = 0; i < resolutions.Length; i++) { string option = resolutions..
프로젝트 그래픽 퀄리티 옵션 설정 기능 만드는 방법 중 드롭다운(UI)를 이용한 방식에 대해 설명해보겠습니다. 드롭다운 UI를 생성해주고 Option에 High, Middle, Low를 적어줍니다. Option에 적은 순서대로 드롭다운 박스에 나타납니다. 스크립트 작성 public class GameManager : MonoBehaviour { [SerializeField] private List RenderPipelineAssets; [SerializeField] private TMP_Dropdown Dropdown; public void SetPipeline(int value) { if (value = RenderPipelineAssets.Count) { Debug.LogEr..
중요 클래스 - Time - Unity 매뉴얼 Unity의 Time 클래스가 제공하는 중요한 기본 프로퍼티를 사용하여 프로젝트에서 시간과 관련된 값으로 작업할 수 있습니다. docs.unity3d.com 좋은 컴퓨터는 1초에 2프레임 진행된다고 가정해보겠습니다. 플레이어의 속도가 1m라고 가정했을 때 1초에 2프레임이 진행되는 컴퓨터에의 플레이어는 2m를 가게됩니다. 나쁜 컴퓨터는 1초에 1프레임 진행된다고 가정해보겠습니다. 플레이어의 속도가 1m라고 가정했을 때 1초에 1프레임이 진행되는 컴퓨터에의 플레이어는 1m를 가게됩니다. 나쁜 컴퓨터는 억울하겠죠...? 게임이 공평해야지! 컴퓨터가 좋다고 1m더 멀리 가다니.. 그럴 순 없습니다. 이럴 때 사용하는 것이 Time.deltaTime입니다. Time..
이전 글에서 이어지는 내용이므로 이전 글을 보고 와주세요. 2024.03.26 - [Unity/Study] - 유니티 Audio Spectrum에서 얻은 데이터들을 대역 별로 나누기 #기초 Buffer를 사용하면 위 파란색 큐브처럼 값이 급격하게 변화하는 것을 막을 수 있습니다. 값이 갑자기 튀는 현상을 '약간 해결'해줄 수 있다고 생각하시면 됩니다. Buffer란? 'Buffer’는 일반적으로 데이터를 일시적으로 저장하는 임시 저장소를 의미합니다. 데이터를 처리하는 두 개의 프로세스 사이에서 임시 데이터로 사용된다고 생각하시면 됩니다. 아래 코드에서 사용되는 'Buffer’는 FrequencyBands[i]의 값들을 일시적으로 저장하고, 이전의 값들을 기반으로 새로운 값을 계산하는 데 사용됩니다. 버퍼..
유니티에는 씬을 불러오는 두 가지 방법이 있습니다. 동기 방식 - LoadScene LoadScene (동기 방식): LoadScene은 동기 방식으로, 씬을 불러오는 동안 다른 작업을 수행하지 못합니다. 즉, 씬의 모든 데이터를 메모리로 가져오기 전까지 다른 작업이 중지됩니다. 불러오려는 씬의 규모가 크다면, 게임이 멈춰있는 상황이 더 지속될 수 있습니다. 씬의 크기가 작은 경우 LoadScene 방식을 사용하면 됩니다. using UnityEngine; using UnityEngine.SceneManagement; public class Example : MonoBehaviour { public void LoadSceneExample() { SceneManager.LoadScene("SceneName..
아래 스펙트럼 대역에 대한 내용을 보고 와주세요! 유니티 Audio Spectrum 이론에 대해서 #기초 오디오 스펙트럼이란 악기나 음악에 포함된 음향에너지를 주파수별로 나타낸 것을 뜻합니다. 오디오 스펙트럼을 가지고 무엇을 할 수 있냐? 오디오 스펙트럼을 분석해서 아래 사진처럼 비쥬얼 wlsdn629.tistory.com 움짤을 보면 아시겠지만 서브 베이스랑 베이스, 미드 레인지(하)가 가장 강하네요! AudioPeer 수정 이전 Audio Peer 코드는 이전 글을 참고해주세요. 2024.03.25 - [Unity/Study] - 유니티 Audio Spectrum을 이용한 큐브 스케일 변화 시키기 #기초 using UnityEngine; public class AudioPeer : MonoBehavi..
GetSpectrumData 함수 만들기 using UnityEngine; public class AudioPeer : MonoBehaviour { public static AudioPeer Instance; public enum AudioChannel { Left = 0, Right = 1, Center = 2, LFE = 3, RearLeft = 4, RearRight = 5 } [Header("[Ref]")] [SerializeField] private AudioSource audioSource; [Space(3)] [Header("[Value]")] [SerializeField, Tooltip("첫 번째 (왼쪽) 스테레오 채널 또는 모노 채널 \n두 번째 (오른쪽) 스테레오 채널 \n센터 채널 \..
GetSpectrumData란? 재생 중인 오디오 소스의 스펙트럼 데이터를 제공해주는 함수입니다. 스펙트럼 데이터란? 이전 글을 참고해주세요. 유니티 Audio Spectrum 이론에 대해서 #기초 오디오 스펙트럼이란 악기나 음악에 포함된 음향에너지를 주파수별로 나타낸 것을 뜻합니다. 오디오 스펙트럼을 가지고 무엇을 할 수 있냐? 오디오 스펙트럼을 분석해서 아래 사진처럼 비쥬얼 wlsdn629.tistory.com GetSpectrumData 매개 변수 매개변수 설명 samples FFT 결과를 저장할 배열입니다. 배열의 길이는 2의 제곱 수여야 합니다. channel 채널을 나타냅니다. 모노, 스테레오 및 멀티 채널(최대 여덟 개 채널)을 지원합니다. (FFTWindow) window 샘플링할 때 사용..
오디오 스펙트럼이란? 악기나 음악에 포함된 음향에너지를 주파수별로 나타낸 것을 뜻합니다. 오디오 스펙트럼을 가지고 오디오 스펙트럼을 분석해서 아래 사진처럼 시각적 연출을 해보고자 합니다. 스펙트럼 기초 이론 소리를 분석해봤을 때 진동수가 많고 주파수가 높으면 높은소리입니다. 진동수가 적고 주파수가 낮으면 낮은 소리입니다 인간이 들을 수 있는 소리의 범위, 즉 가청 주파수의 범위는 20Hz~20kHz라고 합니다. 스펙트럼에서 사운드에 어떻게 영향을 미치는가에 오디오 스펙트럼을 서브 베이스, 베이스, 미드레인지(하, 중, 상), 하이엔드(하, 상)으로 구분짓는다고 합니다. 스펙트럼 대역 서브 베이스 사람이 들을 수 있는 가장 깊고 낮은 소리의 대역이라고 합니다. 20Hz~60Hz사이라고 합니다. 예시로는 베..
제가 즐겨하는 모바일 게임에서 플레이어 근처에 소환되는 구체들이 멋있길래 한 번 구현해봤습니다. 플레이어를 기준으로 동그랗게 소환되는 방법입니다. 코드 public GameObject SpawnObject; public GameObject go; public int SpawnCount = 10; public float Range = 5f; private void Spawn() { for (int i = 0; i < SpawnCount; i++) { float angle = i * Mathf.PI * 2 / SpawnCount; float x = Mathf.Cos(angle) * Range; float z = Mathf.Sin(angle) * Range; float angleDegrees = -angle ..
이전 글을 보지 않으셨다면 반드시 보고 와주세요! 이어지는 내용입니다. 유니티 AR Foundation 시작하기 #1편 AR Foundation을 선택한 이유 AR Foundation은 Unity에서 제공하는 AR 개발 프레임워크로, ARKit과 ARCore의 핵심 기능을 대부분 지원하며, Unity의 고유한 기능들도 사용할 수 있기 때문입니다. 주요 기능은 다 wlsdn629.tistory.com XR Origin 살펴보기 XR Origin오브젝트를 보면 XR Origin, Input Action Manager, AR Plane Manager, AR Raycast Manager 총 4개의 컴포넌트가 부착되어 있습니다. 컴포넌트 설명 XR Origin 객체와 추적 가능한 특징들을 Scene에서의 최종 위..