Mesh?
3차원 오브젝트를 구성하는 덩어리!
< Mesh의 구성요소 >
- 버텍스
- 폴리곤 정점 인덱스 : 삼각형의 정점 번호
- 정점 노멀벡터
- UV 좌표
< 게임오브젝트의 메시정보 >
- 인간형의 캐릭터와 같이 애니메이션이 작동하는 게임오브젝트인 경우 : skinnedMeshRenderer컴포넌트안에 메시가 포함
- 큐브와 같이 MeshRenderer를 사용하는 오브젝트인 경우: meshFilter컴포넌트에 포함
mesh로 이것도 할 수 있다!
더보기

(1) 정점의 개수 및 각 꼭지점의 좌표
void GetMeshInfo()
{
MeshFilter mf = GetComponent<MeshFilter>();
Debug.Log($"정점의 개수 = {mf.mesh.vertexCount}");
for (int i = 0; i < mf.mesh.vertexCount; i++)
{
// 지역좌표
Debug.Log($"정점의 좌표 = {mf.mesh.vertices[i]}");
// 전역좌표
Vector3 worldPos = mf.mesh.vertices[i] + transform.position;
}
}
(2) 오브젝트의 x,y,z축 길이
void GetMeshInfo()
{
MeshFilter mf = GetComponent<MeshFilter>();
Debug.Log($"정점의 개수 = {mf.mesh.vertexCount}");
for (int i = 0; i < mf.mesh.vertexCount; i++)
{
// 지역좌표
Debug.Log($"정점의 좌표 = {mf.mesh.vertices[i]}");
// 전역좌표
Vector3 worldPos = mf.mesh.vertices[i] + transform.position;
Debug.Log($"정점의 좌표 = {worldPos}");
GameObject tmp = GameObject.CreatePrimitive(PrimitiveType.Sphere);
tmp.GetComponent<MeshRenderer>().material.color = Color.green;
tmp.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
worldPos.x = transform.position.x + mf.mesh.vertices[i].x * transform.localScale.x;
worldPos.y = transform.position.y + mf.mesh.vertices[i].y * transform.localScale.y;
worldPos.z = transform.position.z + mf.mesh.vertices[i].z * transform.localScale.z;
tmp.transform.position = worldPos;
}
}

=> (1)과 (2)를 사용해 콜라이더 박스를 자동화 할 수 있는 코드 작성 가능!
'Unity' 카테고리의 다른 글
상속 예제 (0) | 2021.05.31 |
---|---|
애니메이션 - StateMachineBehaviour (0) | 2021.05.28 |
애니메이션 - Legacy, Generic, Humanoid (0) | 2021.05.26 |
애니메이션 (0) | 2021.05.26 |
싱글톤 (0) | 2021.05.26 |