오늘은 유니티의 mesh에 대해서 알아보도록 하겠습니다.


mesh란 쉽게 말해 점, 폴리곤(삼각형), UV를 관리하는 구조체입니다.

컴퓨터 그래픽, 특히 게임 그래픽은 삼각형이 기본이 되는데

이 삼각형(폴리곤) 2개를 가지고 사각형을 만든 다음 텍스쳐를 입히는 방식입니다.


폴리곤에 대해서 좀 더 얘기해보자면 mesh의 한 단위를 가리키는 것으로

이것이 많이 사용될수록 3D모델의 디테일이 좋다진다 할 수 있습니다.


이렇듯 mesh는 게임 제작에서 사용되는 모든 모델의 기초구조라고 생각하시면 됩니다.


오늘은 mesh의 verices, triangles, uv를 가지고 mesh가 만들어지는 과정에 대해 얘기해볼까 합니다.


앞서 말씀드렸듯이 mesh란 것은 삼각형들이 모여 만들어진 것입니다.

위의 상자에 보이는 v0,v1,v2.. 가 vertex(꼭지점)가 되는 것이고, 그것들로 이어진 삼각형이

triangle polygon이 되는 것입니다. 그렇다면 꼭지점을 만들고 이어붙여 폴리곤을 만든다음 mesh로 만들면 되겠네요.



이차원 사각형을 나타내는 코드입니다. 먼저 Vector3로 꼭지점의 좌표를 배열로 만들어 줍니다.

그 다음 삼각형을 만들어 주어야 하는데, int형 배열을 사용해서 3개씩 이을 꼭지점(vertices)의 인덱스를 입력해주면 됩니다.

삼각형이기 때문에 꼭지점을 3개씩 맞춰줘야 합니다. 이번에는 텍스처를 한번 넣어보도록 하겠습니다.



여기서 UV라는 놈이 나오는데, 텍스처를 넣으려먼 이 UV좌표를 설정해주어야 합니다. UV의 좌표는 vertex와 동일 해야 합니다.

uv의 수치는 0~1까지이며 다음과 같습니다.


즉, vertex가 

2        1

3        4            이 순서로 찍혔기 때문에


uv 좌표 또한

2        1

3        4            이 순서로 찍어주어야 합니다.


그리고 나서 mesh.uv에 만든 uv 배열을 넣어주고 SetTexture라는 함수를 만들어 원하는 텍스처를 입혀주시면 됩니다~


참고 : http://www.devkorea.co.kr/reference/Documentation/ScriptReference/Mesh.html







DFS 알고리즘 문제 - 안전 영역(백준)


DFS혹은 BFS의 기본 원리를 알고 있다면 쉽게 풀릴만한 문제이다.

완벽하게 풀었다 생각했지만 4번의 실패..


문제는 비가 안올 경우도 존재한다는 것이다..

백준 사이트는 문제가 많아서 좋지만.. 이런 경우 조금 짜증이 나기도한다.

어떤 부분이 틀렸는지 정올 처럼만 가르켜줘도 쓸데없는 시간이 단출될텐데 말이다..

(물론 오답을 찾는 과정이 쓸데없는 시간은 아니지만 이러한 부분은 쪼금...)


예를들어 

1 1

1 1

이 입력되었다면 모두 물에 잠겨버리기 때문에 답은 0일 것이다.

하지만 비가 오지 않는다면 1개의 지역이 남기 때문에 답은 1이 된다는 것이다.. 하...


안전 영역 - DFS 알고리즘 문제


01. 변수 선언, 초기화


02. DFS 알고리즘


03. 메인


풀 때까지만해도 기분좋게 풀었는데.. 틀린 부분을 찾다가 기분이 그닥..

문제를 몇번이나 읽어보았는데 비가 안올 경우는 정말 생각하지도 못했다..

반성하자.



다이나믹 프로그래밍 (동적 계획법) 알고리즘 문제 - 다리 놓기 (백준)


점화식을 찾는 과정이 상당히 어려웠다.

N의 수를 차례로 늘려보기도 하고, M의 수를 차례로 늘려보기도 했으나

도저히 감이 잡히지 않아 굉장히 어려운 문제였다.


하지만 다리가 크로스 될 수 없다는 조건을 떠올려서 간신히 점화식을 구할 수 있었다.

N의 가장 위에 점이 M의 가장 위의 점에다 다리를 놓게 된다면


dp[N-1][M-1]의 경우의 수를 얻을 수 있다.

거기에다 M에 하나의 점이 추가되기 전인 dp[N][M-1]의 경우의 수를 더해주면 점화식을 완성할 수 있다.

(N과 M은 1부터 차례대로 올라가면서 모든 경우의 수를 찾아 dp에 저장하였다.)


dp[N][M] = dp[N-1][M-1] + dp[N][M-1]


설명이 상당히 미흡한 부분이 많은데, 이해가 가지 않는 다면

기존에 구해 놓은 답을 통해 현재의 답을 찾는다 라는 동적 계획법의 기본 원리를 떠올려보고

몇 가지의 케이스를 노트에다 적으면서 점화식을 찾아내는 것도 좋은 방법일 것이다.


동적 계획법 문제 - 다리 놓기 (백준)


항상 느끼는 것이지만 수행 시간이 다른 사람보다 많이 나오는 것 같다.

시간 단축을 위해 dp[0][M]을 초기화하는 과정을 빼고 싶었으나 GG..



다이나믹 프로그래밍은 정말 많이 풀어봐야겠다는 생각이 든다..


+ Recent posts