인프런 커뮤니티 질문&답변

gsc0815님의 프로필 이미지
gsc0815

작성한 질문수

[게임 프로그래머 도약반] DirectX11 입문

Bone, Mesh 로딩

Converter의 ReadMeshData에서 Material의 저장 여부

작성

·

189

0

//Material Name

const aiMaterial* material = _scene->mMaterials[srcMesh->mMaterialIndex];

mesh->materialName = material->GetName().C_Str();

하나의 메시가 여러 서브 메시를 포함하는 형태로 저장을 하게 되고, 그에 따라서 메시는 각 서브 메시에 따르는 머티리얼을 저장해야 하는데 해당 코드를 통해서는 마지막 서브 메시의 머티리얼만 저장하게 되는것이 아닌지 궁금해서 질문 드립니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
gsc0815님의 질문 내용을 잘 살펴보았습니다.

제공해주신 코드를 보면, 각 메시의 머티리얼 인덱스(mMaterialIndex)를 통해 해당 메시의 머티리얼을 가져오고 있습니다. aiMaterial 객체에서 GetName() 함수를 이용해 머티리얼의 이름을 가져와서 mesh->materialName에 저장하고 계십니다.

이 코드는 반복문 안에서 사용되고 있다면, 각 서브 메시마다 다르게 저장될 것입니다. 하지만 코드만 봐서는 하나의 메시에 대해 하나의 머티리얼 이름만 저장되는 것 같으니, 만약 하나의 메시가 여러 개의 서브 메시와 이에 상응하는 머티리얼을 가지고 있고, 모든 서브 메시의 머티리얼 이름을 저장하길 원한다면 코드를 다르게 구성해야 할 것입니다.

예를 들어, mesh 객체가 각 서브 메시에 대한 머티리얼 이름을 리스트 형태로 저장할 수 있는 구조를 가지고 있다면, 각 서브 메시마다 머티리얼 이름을 리스트에 추가하는 식으로 구현할 수 있겠죠.

만약 mesh의 구조를 변경할 수 없고, 단일 메시 객체가 하나의 머티리얼만 가지도록 설계되어 있다면, 각 서브 메시를 별도의 메시 객체로 처리하여 각기 다른 머티리얼 이름을 저장해야 할 수도 있습니다.

정확한 상황이나 구조에 대한 정보가 더 필요하다면, 구체적인 코드의 구조와 실행 환경에 대한 추가적인 설명을 덧붙여 다시 질문해주시면 더욱 도움이 될 것 같습니다.

gsc0815님의 프로필 이미지
gsc0815

작성한 질문수

질문하기