我正在使用 Assimp 将 3D 模型加载到我的程序中。到目前为止,一切都很顺利,除了我遇到了一个似乎没有意义的 Lightwave 对象。当然它在 Lightwave 中渲染得很好,但在 Assimp 中没有纹理坐标,没有 UV 坐标,但最终会加载纹理。但这无济于事 - 它们只是坐在内存中并且永远不会被使用,因为 - 你猜对了 - 没有纹理坐标。

到目前为止,我还没有找到任何有用的 Assimp 页面。其他模型加载良好并正确贴图。这是 Assimp 的问题吗?

最佳答案

所有 Lightwave 型号都会发生这种情况,还是仅此一种?您的程序是否正确渲染了其他模型?

我也遇到了和你一样的问题,使用 assimp 读取 OBJ 文件(而不是 Lightwave 数据文件)并在 OpenGL 中渲染。我的渲染器完全是从 assimp 站点上的示例中复制而来的。我对我的渲染器进行了一些调查,发现我没有任何代码来使用 UV!所以,我补充说

if( mesh->mTextureCoords[0] != NULL ) {
    glTexCoord2fv( &mesh->mTextureCoords[0][index].x );
}

就在我画一个顶点之前
int index = face->mIndices[i];

i 是 for 循环的循环控制变量。

问题:assimp 网站上的渲染代码对 UV 坐标没有任何帮助。你必须自己加上。

希望这不会太晚提供帮助!

关于3d - Assimp 模型有纹理但没有纹理坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16424847/

10-12 07:06