반응형

[Unity] 109

[게임 엔진] 1. 렌더링 엔진(4) - 시각 효과와 오버레이

1) 파티클 효과 : 연기, 불꽃 등 일정한 형상이 없는 물체를 구현한 것입니다. 실제 게임 엔진에서는 특수화된 파티클 효과 애니메이션 및 렌더링 시스템을 사용해 파티클 효과를 구현합니다. 파티클 효과의 주요 특징은 다음과 같습니다. 상대적으로 단순한 기하 형상들이 여러개 모여 이뤄지며, 항상 카메라를 향합니다. 머티리얼이 거의 예외없이 반투명합니다. 다양한 방향으로 애니메이션합니다. 계속 스폰되었다가 없어집니다. 2) 데칼 : 기하 형상들의 표면에 씌우는 작은 기하 형상으로, 표면의 외양을 바꾸는데 쓰입니다. (ex) 총탄 흔적, 발자국, 긁힌 자국, 갈라진 흔적 데칼을 사각형 영역으로 모델링 -> 화면에 일직선으로 투영해서 3차원 공간에 직육면체 프리즘을 만듦 -> 프리즘이 가장 먼저 교차하는 표면에..

[게임 엔진] 1. 렌더링 엔진(3) - 가상 카메라

: 초점과 감광 표면으로 이루어져 있습니다. 감광 표면은 직사각형 형태의 가상의 감광 센서들이 격자 모양으로 이루고 있고, 각 센서는 픽셀 하나에 해당합니다. 이 센서들에 기록될 색과 빛의 강도를 결정하는 과정이 렌더링 입니다. 1) 뷰 공간 가상 카메라의 원점 = 뷰 공간의 원점이며, 카메라의 위치와 방향은 뷰-월드 행렬로 나타낼 수 있습니다. 삼각형 메시 렌더링 : 정점 -> 모델 공간에서 월드 공간으로 변환(모델-월드 행렬 사용) -> 월드 공간에서 뷰 공간으로 변환(월드-뷰 행렬로, 뷰-월드 행렬의 역행렬) 모델-월드 행렬 * 월드-뷰 행렬 = 모델-뷰 행렬 이렇게 모델-뷰 행렬을 미리 계산해서 정점을 모델 공간에서 뷰 공간으로 변환할 때 행렬 곱셈을 한 번만 해도 되게 합니다. 2) 투영 : 3..

[게임 엔진] 1. 렌더링 엔진(2) - 조명

1. 지역 조명과 전역 조명 모델 지역 조명 모델 : 한 물체에 대한 지역적인 빛의 효과만 고려하고, 서로의 외관에 영향을 주지 않습니다. 퐁 조명 모델 : 게임 렌더링 엔진이 가장 흔히 사용하는 지역 조명 모델로, 표면에서 반사되는 빛을 환경 + 난반사 + 정반사(+발산광(물체 스스로 내는 빛))의 합으로 표현합니다. 블린-퐁 모델 : 퐁 모델을 확장한 모델로, 속도가 더 빠르지만 정확도가 조금 떨어지는 단점이 있습니다. 전역 조명 모델 : 간접 조명을 고려하는 조명 모델로, 특정한 시각 현상을 흉내내는 데 목적이 있습니다. 간접 조명 : 여러 표면에 여러 번 반사해서 최종적으로 가상 카메라에 도달 2. 광원 모델링 정적 조명 조명 맵 : 픽셀 단위의 조명을 미리 계산한 후 텍스처 맵에 저장합니다. 조..

[게임 엔진] 1. 렌더링 엔진(1) - 렌더링 기초

3차원 씬을 렌더링하는 과정을 대략적으로 살펴보면 다음과 같습니다. 가상의 씬이 있고, 상 표면이 붙어있는 가상의 카메라가 있습니다. 상 표면은 픽셀 단위의 빛 센서들이 모여있고, 렌더링 엔진이 렌더링 방정식을 통해 다양한 광원의 속성과 표면의 시각적인 속성으로 색과 강도를 계산해서 상 표면의 픽셀에 나타내줍니다. 게임 렌더링 엔진의 주된 작업은 표면을 렌더링하는 것입니다. 그 외의 일정한 형상이 없는 물체는 파티클을 써서 표현합니다. 렌더링을 배우기 앞서 기본적인 개념들을 배워봅시다. 1. 삼각형 메시 다음과 같은 이유로 실시간 렌더링에 주로 사용됩니다. 가장 단순한 다각형으로, 꼭지점이 3개여서 항상 평평할 수 밖에 없음 대부분의 변환을 거쳐도 삼각형(최악의 경우 선) 삼각형 하나는 세 정점을 나타내..

package-lock.json

유니티 버전을 업데이트하거나 할 때 생기는 package-lock.json 파일이 무엇인지 알아보았습니다. 뭔가 싶어서 제거하고 커밋에 포함시키지 않았었는데, package-lock.json 은 프로젝트에 설치된 노드 모듈들의 의존성 트리를 기록하고 있기 때문에 커밋에 꼭 포함시켜 주어야 합니다. "com.unity.services.core": { "version": "1.4.2", "version": "1.4.3", "depth": 1, "source": "registry", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.nuget.newtonsoft-json": "3.0.2", "com.unity.modules.a..

[Unity]/[Unity] 2022.11.01

[C#] 캡처(Capture feat. 람다식)

표현식 본문(Expresstion Lambda) : 본문의 코드를 한 줄로 단순화하여 쓴 경우 (input-parameters) => expression 문장 본문(Statement Lambda) : 중괄호를 포함한 경우 (input-parameters) => { } : 람다식으로 델리게이트 인스턴스를 생설할 때, 컴파일러는 람다식 내의 코드를 다른 메서드로 분리하여 생성합니다. 캡처 람다식 내에서 사용되었지만, 람다식 외부에서 선언된 변수 = 캡처된 변수. 람다식 자체의 매개변수, 람다식 내에서 선언된 지역 변수 = 캡처된 변수가 아님. 예시 코드) public class Test2_ { private string instanceField = "instanceField"; static public Ac..

[Unity]/[C#] 2022.10.12

[Unity] DOTween

: 오브젝트의 애니메이션, 값을 변경할 때 쉽고 다양한 모션을 줄 수 있는 간편한 API입니다. DOTween은 특정 변수의 값들을 일정 시간동안 원하는 값으로 부드럽게 변화시켜주는 역할을 합니다. * 공식 문서 링크 : http://dotween.demigiant.com/documentation.php DOTween - Documentation Nomenclature Tweener A tween that takes control of a value and animates it. Sequence A special tween that, instead of taking control of a value, takes control of other tweens and animates them as a group..

[Unity]/[Unity] 2022.10.10

[C#] 제네릭(Generic)

: 타입을 미리 정하지 않고, 선언할 때 타입을 지정. T로 주로 표기함. (ex) List : ArrayList와 달리 선언할 때 타입을 정함 → 다른 타입의 객체를 삽입하려하면 컴파일 오류 발생. 제네릭이 될 수 없는 것 : 필드, 속성, 인덱서, 생성자, 이벤트, 종료자 타입 parameter(매개변수)와 타입 argument(인수) public class List -> T : 타입 매개변수 List list = new List(); -> string이 타입 인수 제네릭 타입의 초기화 상태 : 개별적으로 초기화, 정적 필드를 독립적으로 가짐. public class GeneCounter { private static int value; public static void Increment() { va..

[Unity]/[C#] 2022.10.07

[C#] readonly 한정자 (feat.const 한정자)

: 변수를 상수로 만들어주며, (런타임 시에)값을 변경하거나 수정할 수 없습니다. * 기본적으로 static * 반드시 값이 초기화되어야 함. : 변수를 읽기 전용으로 만들어주며, 선언 시 또는 클래스 생성자에서 초기화 후에 수정할 수 없습니다. * 선언할 때 값을 초기화하는 것이 필수가 아님. * 생성자 외부에서 값을 수정할 수 없음. class ReadOnlyExample { public readonly int num = 5; public ReadOnlyExample() { num = 33; } public ReadOnlyExample(bool isTrue) { num = 500; } } ReadOnlyExample ex1 = new ReadOnlyExample(); ReadOnlyExample ex..

[Unity]/[C#] 2022.10.06
반응형