본문 바로가기

전체 글55

유니티 셰이더 그래프 예제 04 포탈 구현, Unity shader graph Portal 유니티 셰이더 그래프 예제 04 포탈 구현, Unity shader graph Portal 유니티 셰이더 그래프를 이용 포탈 느낌을 구현해 봅니다. Lit Sahder Graph 생성, 이름은 원하는 대로 하세요 Graph inspector 에서 Surface 를 Transparent로 변경 먼저 회전하는 이미지 느낌을 제작 time과 multiply 를 사용해 수치적 이동량을 만들어서 Twirl 을 호출 UV좌표를 회전할 수 있는 기능을 노드의 offset에 연결합니다. -center 0.5,0.5로써 중심을 기준으로 회전합니다. 수치를 바꿔보면 느낌이 옵니다. 그것의 voronoi를 하나 생성시켜 UV로 끼워줍니다. 그 결과를 emission, Alpha 각각 넣어줘 봅니다. 현재까지의 결과 동그랗게.. 2021. 4. 19.
유니티 셰이더 그래프 예제 03 불꽃 구현, Unity shader graph Flame 유니티 셰이더 그래프 예제 03 불꽃 구현, Unity shader graph Flame 불꽃효과, Flame 효과를 구현해 봅시다. Lit Shader Graph로 하나 생성합니다. 이름은 적당히! surface Transparent Blend Addtive -해보고 맘에드는걸로 수정하시오 옵션관련 내용 인터넷에서 대충 캡쳐해왔습니다. 구성시작 택스쳐를 넣고, 칼라값과 택스쳐를 곱한다. Base Color, Alpha에 연결시켜줍니다. 칼라값 정보도 참조 하시고요. 불꽃에 일렁임을 만들어 봅시다. time과 vector2 x,y(0,-0.3)을 곱해서, tiling and offset에 offest으로 사용 택스쳐에 흐름을 만들어 줍니다. Grand Noide를 하나를 생성하고 Scale를 적당히 만져.. 2021. 4. 18.
HLSL 함수정리, 삼각함수, 수학함수, 값 변환, 백터 기타 HLSL 함수정리, 삼각함수, 수학함수, 값 변환, 백터 기타 유니티 Shader Graph를 보다 필요해서 자주 검색하다, 가져다 둡니다. 많은 함수가 Unity Sahder Graph 의 노드와 1:1 매칭됩니다. 해당 함수가 무슨 기능을 하나 보실때 유용합니다. 1. 삼각 함수 sin(x), cos(x), tan(x) : 기본삼각함수 asin(x), acos(x), atan(x) : x의 각 성분의 역삼각함수. 범위 asin : [-π/2, π/2] acos : [-1, 1] atan : [-π/2, π/2] atan2(y,x) : atan(y/x)에 해당하는 함수로, atan(x)는 [-π/2, π/2]의 범위의 값을 가지지만, atan2(y,x)는 [-π, π]의 값을 리턴한다. atan2(y,.. 2021. 4. 18.
유니티 셰이더 그래프 예제 02 디졸브 구현, Unity shader graph Dissolve 유니티 셰이더 그래프 예제 02 디졸브 구현, Unity shader graph Dissolve 이번에는 디졸브 효과 구현해봅니다. 이름은 적당히 만듬 surface Transparent Alpha Clip 체크 SimpleNoise 가져온다. 아래 X를 조절해서 모양을 조절한다. 요놈은 Alpha로 넣어줘본다. Time에서 SineTime을 가져오고 Remap으루 0~1범위화 시킨다. 요건 Alpha clip Threshold에 연결 add 노드 추가 디졸브 효과는 기존 알파 빠지는 부분 줍변에 먼가가 있어 보이는데, 이를 위해서 add시켜줌 step 노드 추가 step(x,y) : x≤y 이면 1을 리턴하고, 그렇지 않으면 0을 리턴한다. 디졸브 효과를 나타낼 부분을 단편화 시킨다. 해당 아웃을 Em.. 2021. 4. 18.
유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity ShaderGraph ForceField 유니티 셰이더 그래프 예제 01 포스필드 구현해보기, Unity ShaderGraph ForceField 한동안 그래픽스 작업을 안하다, 최근 필요성이 조금 생겨서 유니티에서 쉐이더를 맛을 좀 보려 했는데, 너무 많이 떠나 있다 복귀를 해서 ShaderGraph 란 녀석을 이제 좀 이것저것 만져보려 합니다. 그래서 만져보면서 공부한 내용도 좀 정리해 두려구합니다. 일단 제가 작업한 환경은 그리고 또 선제조건으로는 세이더 그래프를 이용하기 위해선 프로젝트 생성 시, High Definition RP나 Universal RP를 선택해주셔야 합니다. Universal 버전이 라이트하고, HD 버전이 U 버전에 비해 +된 노트가 있는 걸로 알고 있습니다. 세이더 그래프를 이용해야 된다는 여러 이유 중에서는, 버.. 2021. 4. 17.
유니티 머신러닝 개발 ML Agents 14편, 목표 찾기 예제 개선. 8 다수의 에이전트 사용하기 유니티 머신러닝 개발 ML Agents 14편, 목표 찾기 예제 개선. 8 다수의 에이전트 사용하기 이전에는 타깃을 복수로 설치할 수 있게 하고 Goal을 정해서 해당 Goal 수 까지 취득이 가능하다면, 에피소드가 종료되게끔 구성했습니다. 이번에는 Agentf를 복수로 구성해봅시다. 그것을 위하여 gAgentManager.cs 라는 소스를 추가하도록 합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class gAgentManager : MonoBehaviour { public List agentList = new List(); public void EndEpisode() { foreach .. 2021. 4. 16.
유니티 머신러닝 개발 ML Agents 13편, 목표 찾기 예제 개선. 7 여러 타깃 사용해보기, 관리자 만들기 유니티 머신러닝 개발 ML Agents 13편, 목표 찾기 예제 개선. 7 여러 타깃 사용해보기, 관리자 만들기 직전 수정은 사실 프로그램의 결과값, 즉 눈으로 보는 프로그램의 변화는 거의 없습니다. 로직 변화가 있지만요, 엄밀히 말하면 정말 같은 것은 아니지만, 그냥 보시기에는 거의 차이가 없는 수정이죠 출동 검증 방식이 바뀐 것이었으니까요. 이번에는 타겟을 추가할 수 있도록 수정하려 합니다. 타깃을 관리하는 관리 소스를 만들 예정입니다. 다음 이름의 cs 파일을 추가합니다. gTargetManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine; public class gTargetManager : M.. 2021. 4. 14.
유니티 머신러닝 개발 ML Agents 12편, 목표 찾기 예제 개선. 6 타겟 출동검증방슥을 교체, 거리비교에서 트리거 사용하기 유니티 머신러닝 개발 ML Agents 12편, 목표 찾기 예제 개선. 6 타겟 출동검증방슥을 교체, 거리비교에서 트리거 사용하기 저번 작업에서는 관측시스템을 바꾸었죠. 수치로 포지션과 이동량등을 제공하다, mlagent가 제공하는 타겟 센서로 교체하였고, 교육이후 보여주는 퍼포먼스가 이전 수치로만 교육시키던 상황보다 눈으로 봐도 상당히 좋아진것을 볼수 있었습니다. gRollerAgent.cs의 public override void OnActionReceived(ActionBuffers actionBuffers) 함수를 보면 public override void OnActionReceived(ActionBuffers actionBuffers) { // Rewards float distanceToTarge.. 2021. 4. 12.
유니티 머신러닝 개발 ML Agents 11편, 목표 찾기 예제 개선. 5 관측정보 바꾸기, Ray Perception Sensor 3D를 이용한 개선 유니티 머신러닝 개발 ML Agents 11편, 목표 찾기 예제 개선. 5 관측정보 바꾸기, Ray Perception Sensor 3D를 이용한 개선 저번 예제에는 훈련장을 줄이고, 벽을 설치해서 낙하하는 로직을 제거하고, 이동 방식은 인풋을 반영해서 움직이는 방식으로 변경하였습니다. 이번에는 뭘 해볼 것이냐. 이번에는 우리가 재공 하는 관측치를 바꿔봅시다. 현재 우리가 관측치를 재공하는 방법은 gRollerAgent.cs의 public override void CollectObservations(VectorSensor sensor) 해당 함수를 통해 샌서에 정보를 넣어줍니다. 함수를 볼까요 /// /// 강화학습 프로그램에게 관측정보를 전달 /// /// public override void Coll.. 2021. 4. 11.
유니티 머신러닝 개발 ML Agents 10편, 목표 찾기 예제 개선. 4 벽 설치, 이동 방식의 변경, 연속적인 값에서 이산적인 값으로 변경 유니티 머신러닝 개발 ML Agents 10편, 목표 찾기 예제 개선. 4 벽 설치, 이동 방식의 변경, 연속적인 값에서 이산적인 값으로 변경 지난 예제까지는 여러개의 훈련장을 사용하여 교육 속도를 올려보았습니다. 하지만, 교육장이 넓어져서 훈련에 많은 시간이 소요되었을 겁니다. 이번에는 이동방식을 개선해볼 생각입니다. 훈련장 조정 일단 위의 훈련장을 좀 줄이고 시작할게요 추가되었던 trainingArea를 지웁니다. floor을 하나만 남기고 Transform 다음과 같이 합니다. 에이전트와 타겟도 다음 정보를 참고해서 수정해주세요 gRollerAgent.cs 의 public override void OnEpisodeBegin() 함수도 수정해줍니다. public override void OnEpiso.. 2021. 4. 10.
유니티 머신러닝 개발 ML Agents 9편, 목표 찾기 예제 개선. 3 다수의 훈련장 사용해보기, 버퍼 사이즈 교체로 멈춤 현상 개선 유니티 머신러닝 개발 ML Agents 9편, 목표 찾기 예제 개선. 3 다수의 훈련장 사용해보기, 버퍼 사이즈 교체로 멈춤 현상 개선 이번 편에서는 현재까지 하나의 훈련장을 이용시켜서 훈련시켰는데, 동시에 다수에 훈련장을 사용시켜 같은 시간대비 훈령 양을 늘려서 더 빠르게 교육이 진행될 수 있게 하겠습니다. 이전에 해당 구멍난 맵으로 학습시켜보았고 한계가 있음을 어느 정도 보았습니다. 일단 가운데 floor를 활성화시켜 하나의 큰 평면 바닥을 만듭니다. 다수의 훈련장소 활용하기 TrainingArea 복사합니다. 유니티에서는 해당 오브젝트를 선택하고 Ctrl+D 활용하시면 복사가 됩니다. 9개 정도 해봅니다. 그리고 겹치지 않게 적당히 배치해 줍니다. TrainingArea x, z값을 변경시켜 펼쳐줍.. 2021. 4. 9.
유니티 머신러닝 개발 ML Agents 8편, 목표 찾기 예제 개선. 2 floor 확장, 복잡한 바닥형태 태스트와 학습의 한계점 유니티 머신러닝 개발 ML Agents 8편, 목표 찾기 예제 개선. 2 floor 확장, 복잡한 바닥 형태 테스트와 학습의 한계점 저번 글에서는, 이쁘게 꾸며보고, 에이전트가 타겟을 바라보며 갈 수 있게 구성하였습니다. 그래서 모델이 회전을하지 못하는 제한을 설정했고요 그로 인해 변경된 환경 때문에 세팅을 바꾸고 다시 교육을 시키는 내용을 진행했었죠. 이번에도 환경에 대한 변화를 줘 보도록 하겠습니다 이번에는 floor를 확장시켜 봅시다. floor의 Transform의 Scale를 2,1,2로 수정합니다. 위의 자료 참고하여서 이후 플레이해봅니다. 넓어진 플로어에서 활동하는 에이전트를 보실 수 있습니다. 하지만 타깃이 한정적으로 설치되기 때문에 에이전트가 활동하는 반경은, 기존 floor 사이즈로 제.. 2021. 4. 7.