用Assimp导入obj文件

寻求

我在网上寻找一些Assimp示例,但没有成功。

我有以下结构:

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

任何人都可以发布填充顶点和索引数组的实际代码吗?

阿列克西
        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;
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章