quad(5)
-
4. 블록 생성 및 제거
이 글을 읽이에 앞서 이전글에 대해서 이해를 하지 못하셨다면 이전 글을 읽는 것을 추천 드립니다. * 이동 스크립트 만들기 블럭을 생성/삭제 하는 기능을 만들기에 앞서 불편하지 않게 먼저 플레이어 이동 스크립트를 간단하게 만들어 주세요. - Player 스크립트 - using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { public float speed = 3; void Start() { // 마우스 위치를 고정 Cursor.lockState = CursorLockMode.Locked; } void Update() { PlayerMovement(); M..
2021.06.22 -
3. 청크 만들기
저번시간에는 마인크래프트 청크를 구현하기 위한 필수 방법에 대해서 알아 봤습니다. 이번에는 직접적으로 청크를 생성해봅시다. 1. Chunk 스크립트 생성하기 우선 3D 공간상에서 Chunk을 표현하기 위해서 3차원 배열을 사용해야 하는데요. 우리가 기존에 만든 Block 스크립트를 3차원 배열로 선언해 준후 월드 크기에 맞게 초기화를 해줘야 합니다. 하지만 아직 World를 관리하는 스크립트가 없기 때문에 임시적으로 8*8*8 크기의 Chunk로 초기화 합니다. 그리고, 3중 for문을 이용하여 블럭의 정보를 대입해 줍니다. 또한 Block 스크립트를 직접적으로 사용하지 않을거기 때문에 Chunk 스크립트를 이용해서 Material을 받는 식으로 변경해야 합니다. - Chunk 스크립트 안에 있는 Bui..
2021.05.31 -
2. UV및 텍스쳐 아틀라스
지난 시간에 Quad를 이용하여 Cube를 만들어 봤습니다. 하지만, 아직 모양만 있을 뿐입니다. 이번 시간에는 Quad에 UV(Texture)를 입히는 방법에 대해서 알아보겠습니다. 1. UV UV는 기본적으로 3D모델링의 '전개도'라고 생각하시면 됩니다. 또한 UV는 float2로 이루어진 숫자이고, 0~1까지로 표현할 수 있습니다. (UV=XY=RG) 그렇지만 우리는 각 엔진이나 툴마다 UV 배치가 조금 다를 수 있다는 것을 알아야 합니다. 언리얼 엔진이나 DirectX는 좌측 상단이 float2(0, 0)인데, 유니티 엔진이나 OpenGL은 좌측 하단이 float2(0, 0) 입니다. 그러므로 만약 3ds Max에서 UV를 배열하고 이를 유니티로 넘겼다면, 각 버텍스에는 0에서 1사이의 float..
2021.05.27 -
1. Quad를 이용한 Cube구축
우리는 왜 Cube오브젝트로 마인크래프트를 구축할 수 없는지에 대해서 배웠고, 해결방안도 알아봤습니다. 그렇다면 이제는 직접 만들어보면서 익혀봅시다! CombineMeshes를 써보신 분이라면 '오브젝트를 하나로 만들었다고 한들 내가 어떤 블럭을 눌렀고, 어느면을 눌렀는지 어떻게 알까?' 이런 의문이 들 것입니다. 기존은 오브젝트에 Ray쏴서 그 오브젝트의 정보를 볼 수 있었습니다. (hit.transform.position) 하지만 하나로 합쳐진 오브젝트는 Ray를 쏜다고 해서 그 오브젝트 안에 여러 블럭의 정보를 알기란 쉽지 않을 겁니다. 그러한 정보를 알기 위해서 우리는 Block의 정보를 저장하고, 생성하는 클래스를 만들어야 합니다. 1. Block 스크립트 생성하기 우리는 우선 Block 스크립..
2021.05.26 -
Cube오브젝트로 마인크래프트를 만들 수 없는 이유.
1. Draw call(Batches) 단순히 블록 하나당 하나의 오브젝트를 사용하며, 여러개의 Material을 사용하면 Draw call이 많이 발생 합니다. Draw call은 cpu에서 gpu로 그래픽 명령어를 전달할때 발생합니다. 뿐만 아니라 Draw call이 많아질수록 프레임이 나빠져 물리 및 수치 연산, 스크립트, overdraw, fill late, 메모리, verts 등 종합적으로 생각해야 합니다. 이 Draw call을 줄이기위한 대표적인 방법이 Texture Atlas를 활용하는 겁니다. 2. Texture Atlas 여러 개의 Texture를 한 장의 큰 텍스쳐에 모아놓은 것이라고 볼 수 있습니다. Texture Atlas를 사용하면 각각 호출하던 Draw Call을 뭉쳐서 한번에..
2021.05.25