유니티에서 페인트 텍스처 사용하기(paint texture) 1)씬에 터레인을 생성한다. 텍스처 추가 이전의 터레인은 표면이 checkerboard 패턴으로 표시된다. 2)터레인에 텍스처를 페인트하기위하여 터레인 레이어를 생성한다. 프로젝트 폴더에서 마우스 우클릭한후 create의 terrain layer를 선택한다. 3)터레인 레이어를 설정한다. 페인트에 사용할 텍스처를 추가하고 재질의 속성(specular, metallic, smoothness), 타일링(tiling settings)을 설정한다. 4)터레인에서 paint texture 도구를 선택하고 edit terrain layers를 클릭한다. 5)add layer를 선택하고 터레인 레이어를 추가한다. add layer는 프로젝트에 존재하는 터레..
유니티 샘플 터레인 어셋 사용하기(speedTree, TerrainAssets) 유니티에서 제공하는 무료 에셋인 standard assets에는 터레인에서 사용할수있는 샘플 터레인 에셋이 포함되어있다(texture, tree, grass) 1)에셋 스토어에서 standard assets을 다운로드한다. 2)standard assets에서 environment의 speedTree, TerrainAssets에 체크하고 불러오기한다. 3)불러오기한 에셋을 프로젝트의 에셋 폴더에서 확인할수있다(speedTree, TerrainAssets) 4)speedTree 폴더에는 스피드트리 프로그램으로 제작한 샘플 나무 오브젝트 3종이 제공된다. 나무 오브젝트는 데스크톱, 모바일 버전으로 구분되고 LOD 및 빌보드가 설정..
유니티에서 터레인 페인트 도구 사용하기(paint terrain) 1)터레인 컴포넌트의 도구 모음에서 paint terrain 아이콘을 클릭하고 raise or lower terrain을 선택한다. 2)팔레트에서 몇가지 빌트인 브러쉬를 확인할수있다. 브러쉬를 선택하고 브러쉬의 속성을 조절한다. brush size는 브러쉬의 크기를 조절하고(단축키[ , ]), opacity는 브러쉬의 강도를 조절한다. 3)터레인 오브젝트에 페인팅을 진행한다. 터레인 위에서 클릭, 드래그하여 지형을 높일수있으며 클릭+shift, 드래그하여 지형을 낮출수있다. 4)paint holes는 지형에 구멍을 생성한다(opening) 동굴, 절벽과 같은 구조물을 생성할때 사용할수있다. blogs.unity3d.com/2020/01/3..
유니티에서 이웃 터레인 추가하기(create neighbor Terrains) 1)씬에 터레인 게임 오브젝트를 생성한다. 2)씬에 checker 패턴으로 표시되는 터레인 게임오브젝트가 생성된것을 확인할수있다. 3)터레인을 생성하면 터레인 에셋 데이터도 함께 생성한다. 터레인 게임오브젝트는 터레인 데이터를 참조하며 이것은 프로젝트의 에셋 폴더에서 확인할수있다. 3)터레인을 확장하려면 터레인 도구 모음에서 create neighbor Terrains를 활성화한다. 4)해당 터레인에 인접하여 확장 가능한 영역이 표시되는것을 확인할수있다. 5)해당 표시 영역을 클릭하면 이웃 터레인이 추가된다. 6)씬에서 추가된 터레인을 확인할수있으며 해당 터레인에 대한 터레인 데이터도 추가된것을 확인할수있다. 7)동일한 방법으..
유니티의 렌더링 파이프라인(built-in, SRP, URP, HDRP) Render Pipelines 렌더 파이프라인은 씬의 내용들을 취하여 컬링(culling), 렌더링(rendering), 포스트프로세싱(post-processing)등의 작업을 수행하고 그것을 스크린에 표시하는 역할을한다. 유니티는 몇가지 서로 다른 렌더 파이프라인을 제공한다(built-in, URP, HDRP) 렌더 파이프라인은 모두 다른 기능과 특성을 가지고있다. 사용자는 개발의 초기 단계에서 프로젝트(게임, 어플리케이션, 플래폼)에 적절한 렌더 파이프라인을 선택하는것이 중요하다(프로젝트 중간에 렌더 파이프라인을 다른것으로 변경하는것을 권장하지않는다) docs.unity3d.com/Manual/render-pipelines.ht..
skinned mesh renderer 게임 오브젝트의 인스턴싱 실외 씬 작업에서 건물, 나무, 잔디와 같은 오브젝트에 대해 GPU 인스턴싱을 사용하면 드로우콜을 낮출수있다. 하지만 캐릭터등의 SkinnedMeshRenderer 오브젝트는 스키닝(skinning)이 CPU에서 계산되고 하나씩 GPU로 제출되기때문에 일반적인 방법으로 인스턴싱을 사용할수없다. 만약 씬에 수많은 캐릭터가 존재한다면 그것은 막대한 양의 애니메이션 계산과 함께 높은 드로우콜 수치를 초래할것이다. 유니티에서는 이러한 한계에 대하여 CPU 비용을 절감하고 GPU 인스턴싱을 보강할수있는 방법을 제공한다. (현재는 root motion, attachment, animation events를 지원하며(transition, animatio..
유니티 최적화 GPU 인스턴싱(instancing) GPU 인스턴싱을 사용하면 다중으로 복사된 동일한 메시의 오브젝트(인스턴스)를 한번에 렌더링하여 드로우콜 수치를 낮추고 렌더링 퍼포먼스를 향상시킬수있다. 씬에서 반복적으로 사용되는 건물, 나무, 기타 오브젝트에 사용할수있다. 아래 예에서 씬에 게임 오브젝트를 생성하였다. 게임 오브젝트를 여러개 복사하면 batches의 수치가 증가한것을 확인할수있다. 재질의 쉐이더가 gpu instancing을 지원한다면 재질에 enable GPU instancing 속성이 표시된다. 유니티에서 기본적으로 제공하는 쉐이더인 standard, standardSpecular, mobile diffuse, mobile bumped등이 gpu instancing을 지원한다. 예..
유니티 게임 그래픽 최적화 주제 모음 프러스텀컬링 오쿨루젼컬링 정적 배칭 유니티에서 정적배칭(static batching) 사용하기 동적 배칭 유니티에서 동적배칭 사용하기(dynamic batching) GPU인스턴싱 유니티 GPU 인스턴싱(instancing) vsync CombineMeshes함수 유니티에서 CombineMeshes 함수를 이용하여 배칭하기 LOD(level of detail) 유니티에서 LOD 그룹 설정하기 라이팅기법 라이트맵 gpu스키닝 라이트프로브 리플렉션 프로브 텍스처 압축 파티클최적화 렌더링파이프라인(빌트인, URP, HDRP) 유니티의 렌더링 파이프라인(built-in, SRP, URP, HDRP) 포워드렌더링, 디퍼드렌더링 안티 엘리어싱 유니티 안타 엘리어싱(anti-al..
유니티에서 제공하는 VFX 이미지 시퀀스(VFX image sequences, flipbooks) 프로젝트에서 사용할수있는 연기, 화염, 폭발등의 이미지시퀀스를 제공한다. 파일형식은 이미지 시퀀스(exr, tga)의 압축파일 flipbooks(exr, tga) 이미지 파일이다. blogs.unity3d.com/2016/11/28/free-vfx-image-sequences-flipbooks/ Free VFX Image Sequences & Flipbooks - Unity Technologies Blog It is not so common to have either resources or budget to author smoke, fire and explosion flipbooks in video game..
유니티에서 오브젝트의 바운딩 박스 그리기(renderer.bounds)렌더러 컴포넌트를 가지는 오브젝트의 바운딩 박스를 그리는 방법이다.renderer.bounds는 오브젝트 렌더러의 바운딩 볼륨으로 오브젝트를 완전히 둘러싸는 경계 박스이다. 이러한 바운딩 박스를 표시하기위해 bound의 center(중심), size(크기) 값을 사용하여 와이어 큐브 기즈모를 그릴수있다. Gizmos.DrawWireCube1)아래 스크립트를 추가한 오브젝트를 씬에서 선택할때 와이어 큐브 형태의 기즈모를 그린다.Gizmos.DrawWireSphere2)아래에서 오브젝트 렌더러의 bounds.center, bounds.extents 값을 사용하여 구의 중심과 반경을 정의하고 와이어 스피어 형태의 기즈모를 그린다.
유니티에서 프리팹 및 씬 내보내기(export to package)1)프리팹을 파일로 내보내기하려면 프로젝트에서 프리팹을 선택, 마우스 우클릭한후 export package를 선택한다. 2)내보내기 옵션에서 include dependencies에 체크하면 프리팹에서 참조하는 모든 리소스를 포함한다. export를 클릭하면 설정한 경로에 .unitypackage 형식의 파일을 생성한다. 3)씬에 두개의 프리팹을 생성하고 아래와 같이 구성하였다. 4)프로젝트 폴더에서 씬을 선택하고 마우스 우클릭한후 export package를 선택한다. 5)씬 파일을 포함해서 씬에 존재하는 프리팹, 스크립트, 리소스를 내보내기한다.
mapbox - Maps SDK for Unityhttps://www.mapbox.com/unity/ Maps SDK for Unity는 실제지도 데이터에서 유니티 어플리케이션을 빌드하기위하여 Unity에 최적화 된 지도, 위치 데이터 및 강력한 개발자 도구모음을 제공한다. Unity 개발자는 Mapbox 웹 서비스 API와 상호 작용하고 C# 기반의 API 그리고 그래픽 사용자 인터페이스를 통해 Unity 프로젝트에 3D 월드를 생성하고 맵핑(mapping) 및 탐색(navigation) 환경을 구축 할 수 있다. 설치 및 사용법https://docs.mapbox.com/unity/maps/guides/ https://docs.mapbox.com/unity/maps/examples/