Unity

폴리곤을 점으로 표현하기

Dean83 2023. 12. 6. 14:43

메쉬는 점으로 이루어져 있고, 이 점들을 선, 그리고 삼각형인 폴리곤을 만들어 3D 형태로 렌더링 한다. 

그냥 점 형태로 보여주고 싶을 경우 토폴로지 옵션을 변경하면 된다. 

 

그 전에 메쉬를 구성하는 구성요소에 대해 알아보자. 

1. vertices
    - 메쉬를 구성하는 각 점들의 Vector3 좌표들의 모음

2. triangles
    - vertices 를 이용하여 구성한 폴리곤
    - vertices 의 인덱스 값을 가지고 있으며, 3개의 점이 하나의 삼각형을 이룬다.
      즉, triangles[0], [1], [2] 가 1개의 삼각형이다. 
    - 삼각형을 이루는 점의 좌표를 알고 싶다면, 연속된 3개의 triangles 의 값을 vertices[] 의 인덱스로 활용하면 된다.
       예 )  triangles[0], [1], [2]  가 각각 4,6,10 일 경우, vertices[4], [6], [10] 의 vector3 값이 좌표값이다.


3. 토폴로지
     - 메쉬를 어떻게 구성할 것인지, 정확하게는 렌더링시 어떻게 표현할지 결정하는 옵션이다. 보통은 triangle인
      폴리곤 구성을 이용하지만, 이 옵션값을 통해 vertices 만 점으로 표현할 수 있다.

4. Indices
    - 메쉬는 종종 서브메쉬의 조합으로 구성되기도 한다. Indices 는 GetIndices 함수와 SetIndices 함수가 있다. 
    - GetIndices의 경우, 인자값으로 서브메쉬의 인덱스를 넣는다. (0 부터 시작)  결과값으로 해당 메쉬의
      triangles 값을 준다 (vertices 의 인덱스)
    - SetIndices 의 경우, 인자값으로 인덱스모음, 토폴리지 옵션, 서브메쉬 인덱스 를 받는다. 
      바로 여기에 토폴로지 옵션값을 넣기 때문에, 이를 이용하여 자신의 indices 값을 Get 하고, 옵션만 바꿔 다시 
       Set 하면 된다.     

 

예제 코드)

Mesh변수.SetIndices(mesh변수.GetIndices(0),MeshTopology.Points,0);

 

각 vertice의 vector3 값을 조종하면, 다양한 효과를 낼 수 있다. 예를들어 두점으로 부터 방향성을 구한다음, 방향성 만큼 값을 곱한다면, 흩어지는 효과를 낼 수 있을것이다.