분류 전체보기 127

클래스와 구조체 차이

클래스와 구조체 가장 큰 차이 1. 클래스는 힙 메모리에 할당된다 vs 구조체는 스택 메모리에 할당된다.=> 클래스는 GC관리 대상 / 구조체는 GC관리 대상이 아니다.2. 클래스는 상속이된다. vs 구조체는 상속이 안된다. 잘못된 사실 1. 구조체에 선언된 필드의 총 사이즈가 16이 넘으면 힙에 할당된다는데 이는 잘못된 사실이다. 2. 구조체에 클래스 타입을 필드로 가진다고 해서 "구조체" 자체가 힙에 할당되는 것은 아니다. 단지, 클래스 타입의 필드는 그 인스턴스만 힙에 있고 그 인스턴스를 가리키는 포인터 값은 구조체 내에 존재하며 따라서 스택에 구조체가 유지된다는 사실에는 변함이 없다. 언제 클래스? 언제 구조체? Choosing Between Class and Struct - Framework D..

게임엔진/Unity 2023.07.03

List를 사용할 때 Reserve해야하는 이유

List는 Size가 가변적인 Collection이다. List에 데이터를 Add할 때 내부코드는 아래와 같다. => Add 를 호출하면 현재 배열의 사이즈를 비교하고 if (this._size == this._items.Length) 가득찼다고 판단하면 EnsureCapacity 메서드를 호출한다.=> EnsureCapacity를 보니, Length가 0이 아니면 무조건 Length의 2배를 Capacity Property에 할당해버림 => 일단 new T[value]로 destinationArray라는 새로운 배열 객체를 생성하는데, EnsureCapacity로부터 받은 원래 사이즈의 두배 만큼의 메모리공간을 할당함. => 그 다음 destinationArray에 원래 데이터들을 Copy한다음의 기존..

게임엔진/Unity 2023.07.03

High Poly 기초 연습 - 구

일반적으로 max에서 제공해주는 구는 모든 엣지가 한점에 모이는 구조라서 High Poly 작업에는 적합하지 않다고 한다. 따라서 구는 직접 만들어줘야하는데 과정은 아래와 같다. 박스를 만들어 준다. Edit Poly에서 Polygon모드로 들어가 GeoPoly를 연타하여 입방체를 만든다.(정육면체) Turbo Smooth 모디파이어를 적용하고 Iteration을 올린다. 그 다음 Spherify 모디파이어를 적용하여 완벽한 구 형태로 면들을 보정한다. 구 모양이 완성돼었고 모든 면이 사면(기본 원리)이기 때문에 원하는대로 구를 베이스로한 모델링이 가능해진다. 모든 면이 사면이기에 원하는 곳을 Inset하여 또다른 내부 면을 만들고 Extrude로 뽑아낸 모습.

High Poly 기초 연습 - Contraint

하이폴리곤 원칙에서 엣지 간격들은 서로 균일할 수록 좋다고 한다. 따라서 버텍스 위치를 아래와 같이 옮겨 간격을 맞춘다. 그런데 위치 이동을 하려니까 엣지 선 따라서 이동시키는게 불가능한 아래와 같은 경우가 있다. 이 때는 Contraint로 버텍스를 구속시켜야 한다. 아래의 두 곳에서 확인할 수 있다. 적용해보자. Contraint Edge로 적용하면 버텍스를 위로 이동시켰는데 엣지 선 따라서 잘 이동한다. Contraints에서 Normal은 법면을 의미한다.(직각 방향) 걍 맥스에서 Normal을 의미하는게 다 법선을 의미한다고 한다. 이제 Swift Loop를 이용하여 엣지를 추가한다. (Alt로 loop를 이동시키다가 한번 끊고 ctrl+alt 누르고 이동시키면 가까운 면에 맞게 loop가 적용..

카테고리 없음 2023.07.02

Transform ToolBox

Transform toolbox는 pivol이나 Rotation size조절을 좀 더 편하게 해준다. 단축키 ctrl + T 이 메뉴에서 Pivot의 위치를 옮길 수 있고 Center에 맞출 수 잇는데 Tool Box에서 Center를 클릭하면 자동으로 맞춰진다. 그리고 오브젝트를 Rotate하게되면 Pivot의 방향이 막 z축이 위로가있고 꼬이는데, 이 때 R버튼을 누르면 Pivot이 정리된다. Get버튼을 누르면 언제든 Size를 볼 수 있다. Rotate는 각도를 지정한 다음 버튼 클릭으로 쉽게 바꿔줄 수 있음 생각보다 90도 딱 맞추는게 마우스 드래그로 힘들다.

High Poly 기초 연습 - Turbo Smooth & NURMS

일단 하이폴리를 이해하기 위해서 몇 가지 개념들을 우선적으로 익히자. 1. Turbo Smooth와 NURMS는 High Poly 적용의 핵심인데 엣지가 추가됨에 따라 면이 가라앉는 현상이 발생한다. 면에 엣지가 추가되면서 중간값을 위치하게 된다고 생각하면 된다. Iteration을 더 많이 주면 엣지에 더 많이 생긴 만큼 더 많은 많은 면이 중간값에 만들어져 부드러운 곡선의 형태를 띈다. 엣지를 각진 부분에 가까이 많이 만들 수록 더 부드러운 곡선이 된다. 엣지 간의 간격이 멀 수록 더 먼 구간부터 면이 가라앉아 곡선이 만들어 질 테니까 엣지간의 간격을 감각적으로 잘 조절하여 Turbo smooth를 적용해야 한다.(SpaceBar 핫 키로 껏다켰따 하면서 확인하면 빠르다) 추가로, 엣지 추가할 때에는..

카테고리 없음 2023.07.02