(유니티 자격시험 Unity GameDeveloper) 2. 유니티 기능 (년도 버전차이)

2021. 11. 29. 01:33유니티 & C# 공부

반응형

이재현 강사님 강의 듣고 나름 정리해서 올립니다.

1. 네비게이션

유니티 3은 2010.9 출시 

유니티 3.5 이전 - 자체적으로 길찾기 알고리즘만 제공(A * pathfinding = A스타 패스웨이)

유니티 3.5 이후  - 네비게이션 메쉬 적용 

  

      네비게이션 - 3D 지형/지오메트릭을  분석, 미리 데이터화 해서 가장 최단경로를 계산

                       가장 난이도 쉬운 경로 쪽으로 이동 가능

 

 

  https://mowingnow.tistory.com/8   네비게이션 정리

 

(유니티 자격시험 Unity GameDeveloper)5. 네비게이션

1. 네비게이션 유니티 3은 2010.9 출시 유니티 3.5 이전 - 자체적으로 길찾기 알고리즘만 제공(A * pathfinding = A스타 패스웨이) 유니티 3.5 이후 - 네비게이션 메쉬 적용   네비게이션 - 3D 지형/지오메

mowingnow.tistory.com

2. 쉐이더 

   빛 받을 때 겉표면 재질의 표현 방법

 

3. 물리기반 쉐이더 PBR

유니티 5. 2015.3.3 시작

유니티 5 이후 - 물리기반 쉐이더 PBR도입되어 정반사 난반사 정도 등 표현가능해짐, 비쥬얼퀄리티 상승

                     재질마다 빛 반사 흡수율을 실사 흡사하게 렌더링해주는 기능)

 

4. URP(이전 LWRP), HRP

  LWRP(현재 URP) - 유니티 2019년부터 모바일,VR,AR에서 가볍고 퀄리티 높게 사용할 수 있게 제공,

                          URP로 이름변경. 유니버셜 렌더링 파이프

  HRP - 최고사항 그래픽 퀄리티

 

5. 개발방식 및 물리엔진 기존 / 개발 방향

 기존에는 컴포넌트 기반의 개발 방식(CBD : Component Based Development)이고 현재 physX를 사용

하나, 데이터 기반 개발방식(DOTS, Data orientated Technologies Stack) 개발중으로, 퍼포먼스를 극대화

하고자 하며 DOTS에 사용되는 3D물리엔진은 unity physics(유니티 기본 물리엔진)과  havok Physics로 

개발중이고 프리뷰로 제공한다. 

 

 hovk은  비활성 오브젝트를 수면 모드로 전환하는 것을 비롯한 다양한 자동 캐싱 전략을 통해

CPU 리소스가 필요한 곳에, 복잡한 씬과 물리적 상호작용을 할 때 사용한다고 함

 

  hovk와 유니티 physics 관련 게시글, 그리고 DOTS 모두 아래 사이트에서 확인 가능

https://blog.unity.com/kr/technology/announcing-unity-and-havok-physics-for-dots

 

차세대 DOTS 시스템 구축을 위한 유니티와 Havok의 협업 – Unity 피직스, Havok 피직스 공개 | Unity Blog

통합된 Unity 피직스는 DOTS 기반 프로젝트를 위한 유니티 기본 물리 시스템을 의미하며, 현재 프리뷰 릴리스 형태로 제공되고 있습니다. 이 시스템은 DOTS 물리 솔버(physics solver) 기반으로, C# DOTS 프

blog.unity.com

https://blog.unity.com/kr/technology/havok-physics-in-unity

 

Unity에서 Havok 피직스 사용하기 | Unity Blog

위 표를 보면 데이터는 작성(authoring)에서 시뮬레이션 시스템(simulation systems)으로 이동합니다. 루트 수준에서 시스템에 구애받지 않도록 작성 데이터를 추상화함으로써 양측 시뮬레이션 백 엔드

blog.unity.com

데이터 기반 개발방식(DOTS, Data orientated Technologies Stack) =멀티스레드 지향

 

DOTS - Unity의 새로운 멀티스레드 데이터 지향 기술 스택

Unity의 새로운 고성능 멀티스레드 DOTS(데이터 지향 기술 스택)를 사용하면 멀티코어 프로세서를 최대한 활용할 수 있으며, 보다 풍부한 사용자 경험을 제공하고 더 쉽게 읽고 재사용할 수 있는 C#

unity.com

 

6. 라이트와 조명 관련 

   1) 라이트 매핑  (정적 물체) -  GI = 전역조명(직접광원간접광원)에 대한 데이터를 미리

                                         택스쳐(=Light map)로 1개이상 제작.

                                         특히 간접광원퍼포먼스에 과부하되기 때문임.

                                               간접광원 = 빛이 물체에서 튕기면서 발생

                                               직접광원 = Directional Light    4)번 참고

                                        미리 조명효과를 만들어서 프레임드랍을 최소, 최적화.

 

                                         실시간 조명을 사용한다면, 조명이나 그림자는

                                         모든 프레임마다 연산(계산)

                                         프레임 드랍 발생. 

                                         미리 만든 조명효과와 실시간 렌더링 화면과 오버레이(Overlay)시킴

 

                                     실시간 라이트매핑 기능 취소는 window - lighting - setting의

                                      lighting view에서  Auto Generate옵션을 해제하면 됨.

                                              . pc성능 떨어져있다면 버벅이긴함

 

                                      Auto Generate - 라이트매핑은 처음에는 하는게 좋음(선택)

                                                             . pc성능 떨어져있다면 버벅이긴함

 

                          [ Secene탭 프로퍼티]

                                    [Mapping Light 탭]

                                       Baked Global IIumination 체크 하기

 

                                    [Lightmapping Settings 탭]으로 bake할 수 있음

                                      1. Lightmapper Progressive GPU 빠르지만 아직 개발Privew 

                                                           Progressive CPU

                                                           Enlighter (Deprecated)  지원x, 

 

                                                     Progressive 는 결과미리보기 + bake, 일시정지가능

                                                     Enlighter  결과 아웃풋 미리보기 x

 

                                       2. Lightmapper Progressive GPU 빠르지만 아직 개발Privew

                                                         Progressive CPU

                                                         Enlighter (Deprecated)  지원x, 

 

                                                     Progressive 는 결과미리보기 + bake, 일시정지가능

                                                     Enlighter  결과 아웃풋 미리보기 x

 

                                       3. Direct Samples     직접 광원 퀄리티

                                       4. InDirect Samples   간접 광원 퀄리티

                                       5. Min Bounces    조명 튕기는 거 감지

                                       6. Max Bounces   조명 튕기는 거 감지

                                       7. Lightmap Resolution   텍셀(텍스쳐해상도) 얼마만큼 - 40은 높음

 

                                                         Progressive CPU

                                                         Enlighter (Deprecated)  지원x, 

                                       8. Lightmap Padding    너무 타이트하면 텍스쳐 품질 저하.

                                                                        경고 나오면 padding늘리기

                                       9. Max Lightmapsize    2048까지 무난, 모바일 저사양은 4096위험함

                                     10. Compress                 압축 하기(적용함)

                                     11. Ambient Occulsion        물체와 지면 닿는 경계선 어둡게

                                                                            압체감 현실감을 더 증가한다.

 

                                     12. Auto Generate옵션    선택임 (pc성능 저하된다면 해제하고 가능)

                               

 

 

                                       환경광원(skybox 의 은은한 빛) 없애기

                          [  Enviroment 탭 프로퍼티 ]

                                                Enviroment light 의 skybox를 color로 

                                                Ambient color를 가장 어둡게(예시)

                                                Enviroment Reflections 의 skybox를 custom로 

 

https://blog.unity.com/kr/technology/lighting-tips-for-mobile-game-development

 

모바일 게임 개발을 위한 조명 설정 팁 | Unity Blog

텍스처 요소인 텍셀은 텍스처 맵의 개별 픽셀입니다. 따라서 이런 텍셀은 라이트맵을 구성하고 조명 정보를 인코딩하는 단위입니다. 텍셀 관리는 라이트맵의 조명 품질과 베이크에 소요되는 컴

blog.unity.com

    2) 라이트 프로브     (동족 물체)

        실시간 조명 아님. 모든 플랫폼에 다 사용할 것. 적용 안하면 퀄리티 증가

         몇 개의 Point Light 배치 후 라이트프로브 추가배치, 인스펙터 창에 Depulicate로 복사,

         배치 후 라이트매핑에서 베이크 하면

         주변 광원을 흡수, 조명 데이터 값을 저장시켜

         움직이는 캐릭터에 가지고 있는 빛을 제공하는 역할 함 

    

 

    3) 리플렉션 프로브  - 반사효과 가능 (참고 정리 사이트)

 

 

    4) 조명 Lighting에 관한 내용

        환경광원 - 스카이박스의 밝음에 의해 은은히 보이게 함

 

        직접광원  Directional Light = 실런더 형태 (문제!!)

        Directional Light - 전체 화면에 균일한 빛, 위치는 상관x, 각도에 따라 그림자 방향과 길이 변경

                                  Y축을 0보다 높게 설정하는 것이 편리 (빛이 미치는 범위 설정x Point light와 차이점)

                                  intensity - 빛 강도 

 

         Point Light - 위치한 좌표 중점으로 주변으로 퍼져나가는 조명. 백열전구.

                             빛이 퍼지는 범위(Range)설정할 수 있는 속성 있음 

         Spot Light  - 콘 모양, 가장 연산 부하가 크다. 빛이 뻗어나가는 각도를 조정

                           할 수 있는 Spot Angle 속성 제공함

         Area Light - 라이트 맵핑 해야만 보이는 조명, 간접 조명 효과. 사각형 형태 조명.

                          한쪽면에서 빛을 발함

 

        Light 인스펙터 창 프로퍼티

         Range 조명범위

         Mode   realTime실시간 / baked / mixed 2가지로 섞음

         intensity  강도

         Inderct    간접광원 증폭 값

         shadow type  hard /soft (그림자경계선이 부드러운가)

 

 

 

7. 하늘 표현 방식 

    1) 프로시저럴 스카이 - 기본 방식임  (머테리얼 생성 후 적용 방법 문제 나옴)

         머테리얼 제작  >  적용( window - lighting - Enviroment - Skybox Material에 적용)

       1. 머테리얼 제작     
            (1) Shader의 Skybox - procedural 설정 

            (2) 속성 sun size convergence로  테두리 밝고 진하게

            (3) 속성 Amophere Thickness - 대기 탁도, 먼지농도 조절 , 우주와 노을 표현 가능

            (4) 속성 Exposure - 노출 정도

 

     2) SkyBox  - 6-Slided sky으로 이름 변경 , 

                      카메라에 clear (floags/mode)를 skybox로 설정

                       유니티 문서 (https://docs.unity3d.com/kr/2019.3/Manual/class-Skybox.html)

 

 

                      카메라 clear flags - skybox

                                              - solid(색으로 렌더링)

                                              - Depth only(카메라 추가 시 렌더링 우선순위 설정)

                       카메라의 clear flags의 Depth only에 대한 설명 

                      http://twinbraid.blogspot.com/2015/02/blog-post_26.html

 

 

                       카메라가 렌더링 할 수 있는 기본 영역 = 프로스텀 영역

                                                                          Clipping Planes(Far) 속성에서 

                                                                          Near 0.3 = 30cm 앞에서부터

                                                                          Far 1000 = 1km  까지 렌더링 가능

 

                       카메라 프러스텀 영역에 찾다가 오쿨루젼 컬링과 프러스텀 컬링 차이가 헷갈렸음

                       이 사이트가 가장 쉽고 명쾌한듯

                      https://rito15.github.io/posts/unity-opt-occlusion-culling/

 

                    +  컬링 기법은 3가지 있다고 함

                        1) 프러스텀 컬링 (카메라 랜더링 영역으로만)

                        2) 카메라 거리에 의한(너무 멀면 렌더링X, 컬링(가림) = LOD , level of detail)

                        3) Occulusion Culling 오쿨루전 컬링 

                            1인칭, 건물 등 많으 오브젝트일 시 (tow down 시야 일 때는 효과x 안좋음)

                            앞 건물이 가장 커서 카메라 시야에서 안보이는 것들은 컬링(안보이게) 시키는 효과 

 

                            메인 카메라의 occlusion culling으로 비활성화 가능함

 

                            Smallest occluder  5m가 최소크기. 너무 작으면 안좋음

                      

                            오브젝트에 Static 설정해줘야 함

                             Occluder 다른 물체 가리는 오브젝트에 적용함.  

                                         투명쉐이더 쓰면 안됨  > 경고 나와도 어느오브젝트 문제인지 안나옴.

                                         메인 카메라가 이 안에 들어가면 안됨. 

                             Occludee  가려짐을 당하는 오브젝트에 적용

                            Occluder + Occludee  가려짐을 당하면서, 자신 뒤에 작은 물체도 가리게 하고 싶을 때 사용

 

                            Occlusion Area로 필요 부분만 베이크 가능

                        

   

     3) SkyDome  - Sphere을 절반으로 자른 메쉬

           드로우콜에 유리함.   하늘표현하는 메쉬 (1장의 텍스쳐)를 안으로 적용

           모바일 게임에 잘 적용. 반구형 Texture에 이미지 늘리므로 단점으로는 끝 부분이 일그러진다. 

 

      4) Cube Map 방식 - 카메라로 360 촬영, Texture 구한 후 유니티에 표현

            * 이 때 경계선이 지글지글 끓게 되는 현상이 발생되는데, 이는 Mip Map 옵션이

             기본적으로 활성화 되어 카메라로부터 멀리 떨어지면 미리 텍스쳐 사이즈를 축소,

             미리 축소된 텍스쳐로 렌더링

             렌더링 속도는 향상되는데, 메모리는 30% 늘어난다.

 

              이를 막으려면 texture 인스펙트 창- Adivanced- Generate Mip Map 체크 풀면 됨

 

               체크 되어 있다면, 제일 밑 슬라이드바가 보이게 됨 (사진참고 사이트는 아래)

                  https://learnandcreate.tistory.com/501

 

유니티 터레인 텍스쳐 설정(밉맵, base map dis)

유니티 터레인 텍스쳐 설정(밉맵, base map dis, base texture resolution) 터레인 텍스처 밉맵 활성화하기 1)터레인에서 사용중인 텍스처에 밉맵을 설정한다. 텍스처 파일의 임포트 세팅(import settings)에서 g

learnandcreate.tistory.com

     5) 파노라믹 방식 - 360도 VR에서 많이 사용

     

 

 

7. 메쉬 / 머테리얼/ 텍스쳐 / 폴리곤 / Triangle / vertex / 빛

   메쉬 - 3차원 형상 정보, Vertex(점) 테이터 가짐

   머테리얼 -표면을 렌더링하는 방법( 텍스처에 대한 레퍼런스, 타일링 정보, 컬러 틴트 등을 포함)

 

(1) Metalic(금속) 에 있는 smoothness

     -금속과 고무 표현 정도를 조절 가능

(2) Emission 체크 후, Texure(검은...) 적용

      - 특정 부분만 밝게 빛나게 함

        (결과물 밑 사진)

(3) Secondary Map은 좀 더 디테일 정밀하게 함

 Emission 체크  결과 특정 원에서만 푸른 빛.

 

          

   텍스쳐 - 비트맵 이미지. 머티리얼에 텍스처에 대한 레퍼런스가 포함됨 (출처 :  유니티 메뉴얼)

   폴리곤 - 입체 형태 이루는 가장 작은 다각형(조각)

   Triangle(Tris) -Vertex점 3개 만나는 삼각형 면

    Vertex - 폴리곤의 꼭지점. 일련번호. 좌표값

    - 들어올 때 색깔 정보, 반사에 대한 정보, 법선벡터 

 

 

8. 씬 / 게임오브젝트/ 프리펩 / 네스티브(중첩) 프리펩

    씬 - 화면 구분 단위 (메뉴/옵션/게임씬/엔딩화면)

    게임오브젝트 - 씬에 존재하는 가장 작은 단위 , 컴포넌트 추가가능(스크립트 포함)

    프리팹 - 복제, 재사용 하는 원본 게임오브젝트, 완성된 기능을 재사용하기 위한 원본의 객체, 

                프리펩 수정 시, 하이어라이키에 있는 복사한 클론들은 자동 수정된다.

                복사 클론에 수정하고 원본프리펩에 반영 안하면 인스펙터 창에 파란색 뜬다. 

 

                선택한 프리펩만 연결 끊는 법 - 복사클론에 마우스 우클릭 - unpack prefab

                 모든 프리펩 연결 끊기 - 사클론에 마우스 우클릭 - unpack prefab Complately

                                                = 모든 프리팹 인스턴스(네스티드 프리팹 또는 기본 프리팹)를 언패킹

 

    네스티드 프리펩 - 2018.3 부터 중첩 프리펩 기능 ( 프리팹 하위오브젝트로 프리팹 중첩) 

 

 

9. 컴포넌트

   유니티는 CBD라는 컴포넌트 기반의 개발 방식을 사용하며 CBD는 독립적인 개발 기능단위를 의미한다.

   컴포넌트 안의 요소,속성(예: position x값, y값)들은 프로퍼티 라고 부름 .  

   Transform은 삭제 불가능한 컴포넌트.

   컴포넌트 삭제 시 누르는 버튼은 케밥이라고도 외국에서는 말함. 

 

    컴포넌트 예시

    1 콜라이더(=충돌체)

    2 Render(메쉬렌더링)- 반드시 Mesh Filter(오브젝트 어떤 것을 그리는지 형태, 모양)가 있어야 함

   

반응형