使用 Silk.NET.Assimp 从 Wavefront .obj 格式的 3D 模型加载 mtl 颜色

Loading the mtl colors from an 3D model in the Wavefront .obj format using Silk.NET.Assimp

提问人:Berti Krüger 提问时间:7/6/2023 最后编辑:Berti Krüger 更新时间:7/6/2023 访问量:71

问:

我使用 Silk.Net Assimp-Bindings 在 C# 中为 Wavefront obj 格式的 3D 模型编写了一个模型加载器。

我使用了 Silk.Net-Framework 提供的 opengl 教程(教程 4.1)中的代码作为基础。

到目前为止,一切正常(加载顶点、法线、纹理......但是现在我想从 mtl-File 中获取网格材料颜色。

使用 C++ 版本的 assimp,我只需调用函数,将类型传递为我想要获取的颜色类型的参数。aiGetMaterialColorAI_MATKEY_COLOR_XXXXX

例如:

aiColor4 diffuse;
aiGetMaterialColor(material, AI_MATKEY_COLOR_DIFFUSE, &diffuse);

如何使用 Silk.Net.Assimp 做同样的事情?

到目前为止,我有:

// get material
Material* material = scene->MMaterials[mesh->MMaterialIndex];

Vector4 diffuseColor = new Vector4();
this.assimp.GetMaterialColor(material, ...)

现在我陷入了困境,我应该将哪些参数传递给这个函数来获取材质颜色(环境、漫反射、镜面反射......这甚至是正确的调用方法还是我必须使用其他方法?

该方法本身有 21 个重载:

Visual Studio 中的方法重载和参数

C# .NET Assimp

评论


答: 暂无答案