유니티(unity)에서 카메라와 먼 거리의 오브젝트가 그림자를 표시하지 않는문제1)아래 예에서 프랍과 카메라의 거리가 멀어짐에 따라서 그림자를 표시하지않는것을 확인할수있다. 2)이런 경우 project settings의 quality에서 shadow distance 수치를 높이면 해결할수있다. 3)기본 값은 350이며 수치를 올리면 그림자가 정상적으로 표시되는것을 확인할수있다.
유니티 - 스크립트 에디터에서 코드 자동완성 기능 하지않는 문제(유니티에서 csproj 및 sln 파일을 생성하지 않는 문제)1)유니티에서 생성한 C# 스크립트를 비쥬얼 스튜디오에서 열었는데 스크립팅 API 에 대한 코드 제안을 하지않는다. (아래 예에서 Rigidbody 클래스에 대해 코드 제안을하지않는다) 2)컴파일은 정상적으로 동작하고 유니티에서 이것이 문제없이 구현되지만 코드 자동완성 기능(intellisense)을 하지않고 class를 색상으로 표시하지않는다. 3)유니티에서 csproj 및 sln 파일을 생성하지 않아서 현재 비쥬얼 스튜디오에서 작업중인 해당 스크립트에 대한 프로젝트가 존재하지않는것을 확인하였다(보기>솔루션 탐색기)4)유니티의 external tools에서 스크립트 에디터를 비쥬..
유니티(unity)에서 스카이 박스 블렌딩하기(SkyboxBlended)두개의 스카이 박스 텍스처를 블렌딩하는 스카이 박스 셰이더로 낮과 밤의 변화 또는 날씨의 변화 연출에 사용할수있다.셰이더는 아래 웹사이트의 소스 코드를 사용하였다.https://wiki.unity3d.com/index.php/SkyboxBlended 1)먼저 프로젝트에 커스텀 쉐이더를 생성한다. 2)쉐이더의 스크립트에 위 웹사이트의 SkyboxBlended 소스 코드를 기입하고 저장한다. 3)스카이 박스 재질에 사용할 6개의 텍스쳐 2세트를 임포트하였다. 4)새로운 재질을 생성하고 위에서 작성한 쉐이더를 선택한후 텍스쳐를 할당한다. 5)씬의 스카이 박스 재질로 설정한다.슬라이더를 조절하면 두 스카이박스를 혼합한다. 또 스크립트에서 s..
유니티(unity)에서 perlin noise를 이용한 wave 애니메이션 만들기1)아래 웹사이트에서 제공하는 스크립트를 유니티에서 생성한 primitive plane 오브젝트에 추가한다. 해당 스크립트는 기본적으로 매프레임마다 메쉬의 버텍스 포지션값을 변경함으로써 wave 애니메이션을 만든다. https://pastebin.com/enKSz6Mm 2)perlin noise의 스케일과 높이, 스피드 값을 입력하고 게임을 플레이하면 plane의 버텍스 애니메이션을 확인할수있다. 3)plane의 해상도를 높이기위해 3D 맥스에서 제작한 오브젝트를 유니티에서 임포트하였다. 4)유니티에서 임포트한 모델의 메쉬 데이터를 수정 및 변경하려면 import settings에서 Meshes의 read/write enab..
유니티(unity)에서 커스틱(water caustics) 이펙트 만들기 BlobLightProjector와 커스텀 쉐이더, 스크립트를 이용하여 커스틱 이펙트 애니메이션을 만드는 방법 (아래 튜토리얼을 요약 및 정리) https://youtu.be/OvJ7u2Y9Arw 1)씬에 플레인을 생성한다. 2)씬에 BlobLightProjector를 추가한다. 해당 에셋은 유니티의 standard assets에 포함된 프리팹으로 에셋 스토어에서 다운로드할수있다. 해당 어셋은 standard assets의 effects>projectors>prefabs에 위치한다. 3)BlobLightProjector가 오브젝트에 빛을 투사하는것을 확인할수있다. 4)BlobLightProjector의 orthographic에 체크..
유니티(unity)에서 skybox 환경맵 설정하기(6sided, cubemap, panoramic)1)유니티는 환경맵으로 사용할수있는 몇가지 스카이박스 쉐이더를 제공한다. 재질을 생성하고 shader에서 스카이박스 쉐이더를 확인할수있다. 2)6 sided 쉐이더는 6장의 이미지를 텍스쳐로 사용한다. 3)lighting 윈도우의 scene에서 스카이박스 재질로 설정하면 6장의 이미지로 맵핑한 환경을 씬에서 확인할수있다. 4)panoramic 쉐이더는 hdr 포맷의 이미지를 사용한다. hdr 포맷은 비교적 더 넓은 대역의 색상을 저장할수있다. 4k 해상도를 가지는 2:1비율의 hdr 이미지를 유니티에서 임포트하였다. 5)panoramic 쉐이더에서 mapping 방법은 lat-long 레이아웃을 선택하고 ..
유니티(unity)에서 Pegasus를 이용해 카메라 path 애니메이션 만들기Pegasus 어셋을 이용하면 카메라 및 게임 오브젝트의 path 애니메이션을 쉽고 빠르게 만들수있다. Pegasus는 유니티 유료어셋으로 아래에서 구매할수있으며 아래 예시에서 Pegasus v1.5.0 를 사용하였다.https://assetstore.unity.com/packages/tools/animation/pegasus-653971)유니티에서 Pegasus 에셋을 임포트한다. 2)hierarchy에서 마우스 우클릭, pegasus>add pagasus manager를 선택하면 씬에 pegasus manager 오브젝트를 생성한다. 3)pagasus manager를 선택하고 씬의 터레인 위에서 ctrl+마우스클릭하면 pa..
유니티(Unity)에서 unity recorder v2 설치하기(실시간 게임 플레이 녹화)유니티 에디터에서 실시간으로 게임 플레이를 캡쳐할수있는 unity recorder를 설치하는 방법 및 간단한 사용법이다.1)유니티의 unity recorder v2를 다운로드하려면 먼저 상단의 window메뉴에서 package manager를 선택한다. 2)package manager에서 advanced를 클릭하고 show preview packages를 선택한다. 3)목록에서 unity recorder를 확인할수있다. install를 클릭해 다운로드 및 설치한다. 4)설치가 완료된 unity recorder는 window>general>recorder>recorder window에서 사용할수있다. 5)add new..
유니티 설치하기유니티는 해당 버전을 직접 또는 유니티 허브를 통해 설치가 가능하다. 예에서는 아래 공식 웹사이트에서 다운로드한 유니티 허브를 통하여 설치하였다.https://unity3d.com/kr/get-unity/download1)유니티 허브를 실행하고 좌측의 설치를 선택하고 추가를 클릭한다.2)정식 릴리스된 버전을 표시하고있다. 정식 버전 외의 모든 릴리스, LTS릴리스(장기지원), 패치릴리스등은 아래 웹사이트에서 확인 다운로드가능하다.https://unity3d.com/get-unity/download/archive3)사용할 유니티 버전을 선택하고 다음을 클릭한다.4)타겟 빌드 플래폼이 있다면 체크한다. 플래폼 모듈은 이후에 추가 가능함으로 예에서는 기본 설정인 비쥬얼 스튜디오에만 체크하였다.5..
Unity에서 collaborate를 활용하여 프로젝트 클라우드 백업하기유니티의 collaborate는 팀 작업시 클라우드 환경에서 프로젝트를 저장, 동기화, 공유할수있게 하기위해 고안되었다. collaborate를 이용하면 프로젝트를 클라우드에 백업하고 업데이트할수있다.1)테스트를 위해 새 프로젝트를 생성하였다(에셋 패키지를 추가하려면 add asset package를 클릭하여 추가)2)새로운 오브젝트를 생성하고 씬을 구성 및 씬을 저장한다. 새로운 에셋을 임포트하고 project settings를 변경하는 등 게임 프로젝트를 진행하였다.3)unity collaborate의 설치 유뮤, 버전을 확인하기위해 package manager로 이동한다.4)목록에서 unity collaborate를 확인할수있다..
UNITY에서 렌더 텍스쳐(render texture) 사용하는 방법아래 스크린샷에서 유저가 캐릭터를 선택하면 사용자 메뉴(UI)의 특정 영역에서 애니메이션을 실행하는 3D 모델을 확인할수있다. 렌더 텍스쳐를 활용하면 캔버스에 영역을 설정하고 이 영역에 카메라뷰에서 보여지는 씬을 렌더링 할수있다.1)캔버스에 panel를 생성하였다.2)예시에서 사용할 피사체로 캐릭터(sphere)와 새로운 카메라를 생성한다.3)렌더텍스쳐에 렌더링할 카메라뷰의 구도를 아래와 같이 구성하였다. 4)프로젝트에 render texture를 생성한다.5)render texture의 속성을 설정한다.6)이 렌더 텍스쳐를 위에서 새로 생성한 카메라의 target texture에 참조시킨다.7)ui에서 위 카메라뷰를 렌더링할 영역을 위..
unity에서 sprite packer를 사용하여 드로우콜(batches, setpass calls)을 줄이는 방법개별적으로 존재하는 텍스쳐를 아틀라스에 모아(packing) 이미지의 불필요한 공백을 줄이고 렌더링 프로세스에서 한번에 처리하여 드로우콜 수치를 낮출수있다.1)먼저 텍스쳐의 타입을 sprite로 변경한다(텍스쳐를 선택하고 import 세팅에서 sprite 타입을 선택, apply를 클릭하여 반영한다)2)동일한 방법으로 sprite packer를 사용할 모든 텍스쳐를 스프라이트 타입으로 변경하였다.게임을 플레이하여 드로우콜 수치를 확인한다. 이 수치가 높으면 렌더링 프로세스에서 프레임레이트에 영향을 끼친다.3)sprite packer를 활용하여 이 수치를 낮출수있다. 유니티의 editor se..