![Unity Mixamo에서 받아온 캐릭터의 재질이 안입혀져있을 때](http://i1.daumcdn.net/thumb/C120x120/?fname=https://blog.kakaocdn.net/dn/lzYQ0/btrLugKGzyu/KG6H1riBgzuFlX7pUEm34k/img.png)
Unity Mixamo에서 받아온 캐릭터의 재질이 안입혀져있을 때
캐릭터 재질이 안입혀져있을 때 Extract Textures를 누르고 Materials를 클릭하고 폴더선택하면 끝!
- Unity/Study
- · 2022. 9. 6.
# Behavior Parameters Behavior Name : Behavior Parameters의 이름을 결정함, 여러개의 파라미터를 사용하는 경우 이들을 구분하기 위한 것 Vector Observation : Space Size : 현재 환경에서 사용할 벡터 관측의 크기를 설정 Stacked Vectors : 벡터 관측의 누적 횟수를 결정, 시간에 따른 누적으로 해당 누적 횟수만큼 시간 스텝에 대해 벡터 관측을 누적 - Why ? : 속도나 방향과 같이 시간에 대한 정보가 필요한 경우에는 상태를 누적해야함 Actions : 에이전트의 행동과 관련된 설정 3DBall 게임 같은경우 X,Z축을 회전시키면서 박스를 제어해야 하므로 2개의 축에대한 제어를 위해 Continuous Actions을 2로 ..
https://github.com/Unity-Technologies/ml-agents/releases Releases · Unity-Technologies/ml-agents The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement ... github.com 여기 링크에 들어가서 릴리즈 17을 찾고 다운받고 압축해제하셈 유니티에서도 다운받는 방법을 간단하게 소개하면 다운받은 경로로 들어가서 2개의 폴더를 확인 후 j..
ML - Agents는 유니티를 이용한 인공지능 에이전트의 학습을 지원하는 도구로, 기본적으로는 강화학습 에이전트를 학습하기 위한 다양한 기능을 제공한다고함! 강화학습의 특성상 학습 및 검증을 위해 주로 실제 환경이 아닌 시뮬레이션 황경을 이용함! ML - Agents의 역할 최근에는 딥러닝의 발전으로 인해 딥러닝과 강화학습을 결합한 심층강화학습 알고리즘이 주로 사용된다고함 심층강화학습 알고리즘을 구현하려면 우선 인공신경망을 구현해야 하는데, 인공신경망을 이용하는 알고리즘은 주로 파이썬 언어를 이용한다고함 유니티는 주로 C#코드를 사용하기 때문에 ... 강화학습 알고리즘과 환경이 서로 다른 프로그래밍 언어로 구현된 독립적인 프로그램이다... 따.라.서!!!!!! 프로그램들 간에 행동, 상태, 보상 등의 ..
강화학습은 순차적으로 행동들을 선택하면서 보상을 최대화하는 의사 결정 전략인 순차적 결정 문제이다 이런 순차적 결정 문제를 수학적으로 정의한 것이 마르코프 결정 프로세스 ( MDP ) 이다 MDP는 상태(state), 행동(action), 보상 함수(reward functions), 감가율(discount factor), 상태 변환 확률(state transition probabilty)로 구성돼 있다 State Agent는 상태를 기반으로 의사 결정을 함, 상태는 에이전트가 의사 결정하는 데 사용하기 위해 관측, 행동 등을 가공한 정보!! 일반적으로 현재 스텝의 상태는 s라고 표기함 Action Agent가 의사 결정을 통해 취할 수 있는 행동을 의미, 일반적으로 현재 상태에서 취하는 행동을 a라고 표..
파이토치와 유니티 ML-Agents로 배우는 강화학습 이라는 책을 읽고 쓰는 내용임 강화학습을 이해하기 앞서 기계학습이 무엇인지 짚고 가보자 기계학습은 1959년 아서 사무엘이라는 분이 기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야" 라고 정의했다 기계학습 알고리즘에는 결정 트리, 랜덤 포레스트, 서포트 벡터 머신,인공 신경망 등이 있다 기계학습은 크게 지도 학습, 비지도 학습, 강화 학습 3가지 유형으로 나눌 수 있다 3가지 유형에 대해 짤막하게 설명해보자면 지도 학습 : 머신러닝 알고리즘이 데이터 세트의 특징을 통해 예측한 값과 실제 정답의 오차를 줄여나가도록 반복적으로 학습, 주로 회귀나 분류와 같은 문제를 해결하는데 사용 됨,..
유니티 카메라를 눌러보면 Projection(투영방식) 탭에 2가지 선택지가 있다 1. Perspective 2. Orthographic persepctive멀리 있는 물체는 작게, 가까이 있는 물체는 크게 즉, 원근감과 공간감이 표현된 화면을 렌더링해서 보여줍니다 투영선(Field Of View)가 존재합니다(빨간색선) Orthographic투영선이 평행을 이루고 있다 따라서,멀리 있든 가까이 있든 실제 게임오브젝트의 사이즈로 보인다 즉, 원근감과 공간감이 따로 표현되지 않는다 투영선을 작게하면 화면이 좁아지지만 오브젝트는 커지고, 투영선을 크게하면 화면은 넓어지지만 오브젝트는 작아집니다. 즉 Zoom In / Zoom Out 개념을 생각하면 됩니다 정리Perspective : 원근법이 적용되는 3D ..
캐릭터 재질이 안입혀져있을 때 Extract Textures를 누르고 Materials를 클릭하고 폴더선택하면 끝!
New Input System은 기존 유니티 Input System의 단점을 보완한 시스템이다 다양한 플랫폼에서 빠르게 컨트롤 설정을 변경할 수 있다! 기존 Inpuy System은 하나하나 코드로 수정해야했다.. 패키지 시스템에서 인풋 시스템을 임포트하자.그럼 이런 무시무시한 워닝 문구가 뜨는데 그냥 Yes누르면 된다. 그다음 프로젝트 세팅에 가보면 [Player] 창에 아래로 내려가다보면 Active Input Handling이라는 칸이 있는데 거기에 Input System Package(New)로 체크되어있을 것이다. 나는 Old버전의 인풋 시스템도 사용중이라 Both를 체크했다.그다음 프로젝트 폴더 아래 [+]버튼을 누르고 아래로 내려가다 보면 Input Actions가 생겼을거다. 눌러보자!이런..
World는 이제 세계 본질의 값이다 인스펙터창 보면 x,y,z값이 있는데 그게 World값이다 Local은 내가 오브젝트 클릭했을 때 그 오브젝트가!!!!!!!!!!! 기준이 되고!!!! 세상아 나를 억까하지마셈!! 나는 내가 기준이 되겠어!!! 너따위는 기준이 되지 못해!! 이러는 거임 즉, Local과 World는 기준이 누구냐에 따름 더 쉽게 설명해보면 지금 이 친구는 로테이션이 0,0,0 포지션도 0,0,0 이기 때문에 월드좌표계와 Local좌표계가 일치함 근데 이 친구가 삐져서 등을 휙 돌리면(로테이션을 180도 하면) 이 친구의 Local좌표계는 이렇게 변함 즉, 이 친구가 기준이 되므로 Forward방향이 저 빨간 기둥이 아닌 캐릭터가 바라보는 방향이 Forward방향이 됨!!
카메라 X축 회전카메라 X축을 회전시킬 mouseSpeed와 값을 저장할 변수 mouseX를 선언합니다. mouseX += Input.GetAxis는 Mouse X의 회전축을 받아와 더합니다. (왼쪽으로가면 마이너스, 오른쪽으로가면 플러스입니다. 카메라 Y축 회전움짤을 보면 캐릭터의 rotation Y만 바뀌는걸 볼 수 있다..! 요약1. float mouseX += Input.GetAxis("Mouse X"); float mouseY += Input.GetAxis("Mouse Y"); 2. transform.eulerAngles = new Vector(-mouseY, mouseX, 0); mouseY에 마이너스를 하냐면 값이 작아질수록 위를향하고 커질수록 아래를 향하기 때문입니다.
Pooling이란? Unity의 풀링 시스템은 런타임 중에 게임 오브젝트를 효율적으로 관리하고 재사용하는 데 사용되는 기술로, 특히 총알, 적, 파티클과 같은 오브젝트를 자주 생성하고 소멸해야 할 때 유용합니다. 오브젝트를 지속적으로 생성하고 소멸하는 오버헤드를 줄여 성능을 개선하는 데 도움이 됩니다. 작동 방식에 대한 간단한 설명은 다음과 같습니다 초기화 : 특정 유형(예: 총알)의 게임 오브젝트 풀을 생성하는 것으로 시작합니다. 초기화된 게임오브젝트들은 시작과 동시에 비활성화됩니다. 오브젝트 요청: 오브젝트가 필요한 경우 새 오브젝트를 생성하는 대신 풀에서 오브젝트를 요청합니다. 풀은 사용 가능한 오브젝트를 계속 관리해 줍니다. 활성화 및 사용: 풀은 이미 초기화된 풀에서 오브젝트를 제공합니다. 개체..
먼저, 우리 게임의 주 기능은 컨트롤러를 누르면 사슬이 뻗어 나가 사념에 연결되는 것이다. 나는 내 방식대로 이 사슬이 뻗어나가는 것을 구현해보려고 한다.이론1. 사슬이 뻗어나가는 위치와 타켓의 위치를 계산한다(Distance)2. 사슬이 생길 개수를 미리 정한다(이렇게 한 이유는, 사슬의 크기를 고정할 경우 distance의 거리에 따라 사슬의 개수가 부족하거나 초과될 수 있기 때문에 사슬의 개수를 미리 정해서 사슬의 크기를 유동적으로 바꿀 예정이다), 사슬의 크기를 고정시키는 방법도 해볼 예정이다 코드는 이러하다 distance를 구하고, 방향을 구한다음, 오브젝트의 길이를 구하면 된다.이렇게하면 문제점이 하나 발생한다. 이렇게 사슬이 중심정에 서로 겹친다.사이즈를 조정해주자. 위 아래로 겹치기 ..
AddComponent는 GetComponent와 다른 녀석이다 Add, 말 그대로 더한다는 뜻인데 첫 번째줄에서 Test라는 게임오브젝트를 새로 만들고 그 Test오브젝트에 라는 스크립트를 집어 넣어주는 것이다
Repo 만들기 깃허브 사이트에 접속하신 후 새로운 프로젝트를 생성하면 위와 같은 화면을 보실 수 있습니다. Owner를 설정하신 다음 Repository의 이름을 정해주시면 됩니다. README file을 체크해주신 다음(웬만하면 체크 추천) gitignore에서 Unity을 찾아 체크해주시면 됩니다. 설정을 다하신 다음에 만들기 버튼을 누르시면 위와 같이 Repo가 만들어진 것을 확인할 수 있습니다. 오른쪽 [Code]버튼을 누른 후 [Open with GitHub Desktop] 버튼을 눌러줍니다. 원하는 저장경로에 저장하시면 됩니다.