簡體   English   中英

使用Assimp導入obj文件

[英]Importing obj file with Assimp

我在互聯網上尋找一些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;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM