Импорт файла obj с помощью Assimp

Я искал в Интернете для некоторых Assimp образец, но без успеха.

У меня есть следующая структура:

struct VertexTextureNormal
{
XMFLOAT3 Position;
XMFLOAT2 TexCoord;
XMFLOAT3 Normal;
};

Может ли кто-нибудь опубликовать фактический код, который заполняет массив вершин и индексов?

0

Решение

        DWORD nIndices;
DWORD *pIndices;

if (pAIMesh->HasFaces())
{
aiFace *pAIFaces;

pAIFaces = pAIMesh->mFaces;
nIndices = pAIMesh->mNumFaces * 3;

pIndices = new DWORD[nIndices];

for (DWORD i = 0; i < pAIMesh->mNumFaces; i++)
{
if (pAIFaces[i].mNumIndices != 3)
{
aiReleaseImport(pScene);
delete[] pIndices;
return E_FAIL;
}

for (DWORD j = 0; j < 3; j++)
{
pIndices[i * 3 + j] = pAIFaces[i].mIndices[j];
}
}
}

if (pAIMesh->HasPositions())
{
DWORD nVertices;
CVertex *pVertices;

nVertices = pAIMesh->mNumVertices;

pVertices = new CVertex[nVertices];

for (DWORD i = 0; i < nVertices; i++)
{
pVertices[i].vPos = XMFLOAT3(pAIMesh->mVertices[i].x, pAIMesh->mVertices[i].y, pAIMesh->mVertices[i].z);

XMStoreFloat3(&pVertices[i].vPos, XMVector3TransformCoord(XMLoadFloat3(&pVertices[i].vPos), mLocalWorld));
}

if (pAIMesh->HasNormals())
{
for (DWORD i = 0; i < nVertices; i++)
{
XMVECTOR xvNormal = XMLoadFloat3((XMFLOAT3 *)&pAIMesh->mNormals[i]);

xvNormal = XMVector3Normalize(xvNormal);

XMStoreFloat3(&pVertices[i].vNormal, xvNormal);
}
}

if (pAIMesh->HasTextureCoords(0))
{
for (DWORD i = 0; i < nVertices; i++)
{
pVertices[i].vTexCoords = XMFLOAT2(pAIMesh->mTextureCoords[0][i].x, pAIMesh->mTextureCoords[0][i].y);
}
}

pMesh->m_pVertices = pVertices;
pMesh->m_dwNumVertices = nVertices;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector