assimp

assimp的下载使用

3D加载的前提基础和学习教程

在此感谢创作者的创作

assimp编译好的库文件----如果是需要在Qt上使用,而且编译器是minGw不用使用这个

转自

上面的assimp源码可能会编译失败,使用这个链接的源码

编译过程---链接

编译好之后需要使用的设置

1,提取下载好的源码中的include目录以及其中文件和目录,;

2,再提取构建好的build目录中的bin目录下的库文件到项目中,;

3,复制libs下的config.h文件到include下的aasimp目录下;

4,在CMakeLists.txt中include_directories头文件和target_link_libraries链接动态库即可。

函数

GetTexture


`aiMaterial` 是`Assimp`库中的一个类,用于表示一个模型材质。`GetTexture` 函数是 `aiMaterial` 类中的一个成员函数,用于获取一个指定类型的纹理贴图。以下是该函数的函数原型:

```c++
aiReturn GetTexture(aiTextureType type, unsigned int index, aiString* path = NULL, 
                    aiTextureMapping* mapping = NULL, unsigned int* uvindex = NULL, 
                    float* blend = NULL, aiTextureOp* op = NULL, 
                    aiTextureMapMode* mapmode = NULL, 
                    int* flags = NULL) const
```

函数参数说明:

- `type`: 纹理贴图类型,可以是 `aiTextureType_DIFFUSE`、`aiTextureType_SPECULAR`、`aiTextureType_AMBIENT`、`aiTextureType_EMISSIVE`、`aiTextureType_HEIGHT`、`aiTextureType_NORMALS`、`aiTextureType_SHININESS`、`aiTextureType_OPACITY

AI对话未来丨智能写作对话:
`、`aiTextureType_DISPLACEMENT`、`aiTextureType_LIGHTMAP`、`aiTextureType_REFLECTION`、`aiTextureType_UNKNOWN`其中的一种。

- `index`:同一种类型可能会有多个纹理贴图,这个参数用于获取指定在同一类型下的第几个纹理贴图。

- `path`:用于返回纹理贴图的文件路径。

- `mapping`:纹理映射方式,可以是 `aiTextureMapping_UV`、`aiTextureMapping_SPHERE`、`aiTextureMapping_CYLINDER`、`aiTextureMapping_BOX`、`aiTextureMapping_PLANE`其中的一种。

- `uvindex`:纹理映射坐标,可以是0到7。

- `blend`:纹理贴图颜色混合系数,从0到1。

- `op`:纹理贴图运算类型,可以是 `aiTextureOp_Multiply`、`aiTextureOp_Add`、`aiTextureOp_Subtract`、`aiTextureOp_SmoothAdd`、`aiTextureOp_SignedAdd`其中的一种。

- `mapmode`:纹理贴图的坐标映射模式,可以是 `aiTextureMapMode_Wrap`、`aiTextureMapMode_Clamp`、`aiTextureMapMode_Decal`、`aiTextureMapMode_Mirror`其中的一种。

- `f
lags`:纹理贴图的标志,目前未被使用。

函数返回值类型为 `aiReturn` 类型,表示函数执行的结果。具体值有:

- `aiReturn_SUCCESS`:获取纹理贴图成功
- `aiReturn_FAILURE`:获取纹理贴图失败
- `aiReturn_OUTOFMEMORY`:内存不足

示例代码:

```c++
unsigned int numTextures = material->GetTextureCount(aiTextureType_DIFFUSE); // 获取漫反射贴图的数量
if(numTextures > 0){
    // 获取第0个漫反射贴图(通常一个材质只使用一个漫反射贴图)
    aiString path;
    if(material->GetTexture(aiTextureType_DIFFUSE, 0, &path) == aiReturn_SUCCESS){
        std::cout << "Diffuse texture file path:" << path.C_Str() << std::endl;
    }
}

 

你可能感兴趣的:(c++,开发语言)