在XNA模型上应用多重效果,同时保留模型材质外观



如何将各种不同的效果应用于模型,同时保持模型不同部分上不同材料的特性?

我在xna中使用Model类,并在blender中创建了模型(使用.fbx文件格式)。据我所知,通过xna的内容管道加载模型可以存储各种BasicEffect实例中不同材质的信息(例如镜面反射功率和漫反射颜色)。我想做的是将各种不同的自定义效果应用于模型(包括我的世界中的所有点光源),同时仍然使模型的光泽部分保持其光泽外观(例如)。我的想法是永远不要重新映射模型,而是保留BasicEffect实例作为某些材质外观的参考。在这种情况下,我需要在应用正确的效果后手动绘制每个ModelMeshPart。我是否在正确地思考将大量全球效应应用于我的模型?有没有更好的方法来访问.fbx文件中的材料信息?我应该用我需要的所有技术重新映射我的模型吗?

在绘制循环中,您已经在网格上迭代,并为每个网格部分调用单独的绘制。因此,在该循环中,不要使用附加到模型的效果,而是将设置(来自模型或其他方面)放在您自己的效果上,应用它,并使用它来绘制网格。

XNA开发人员注意到,内容导入器和Model类必须是专门的,以使初学者绘制模型变得简单。不幸的是,这使得它们不适合您想要实现的技术。如果要进行更高级的绘图,可能需要扩展Model类,并将基础用作几何体/纹理存储介质。

最新更新