Model 在保留模型材质外观的同时对XNA模型应用多种效果

Model 在保留模型材质外观的同时对XNA模型应用多种效果,model,xna,effect,lighting,Model,Xna,Effect,Lighting,如何对模型应用各种不同的效果,同时保持模型不同部分上不同材质的属性 我在xna中使用模型类,并在blender中创建了模型(使用.fbx文件格式)。据我所知,通过xna的内容管道加载模型会在各种基本效果实例(例如镜面反射功率和漫反射颜色)中存储有关不同材质的信息。我要做的是将各种不同的自定义效果应用于模型(包括我的世界中的所有点光源),同时仍保持模型的光泽部分保持其光泽外观(例如)。我的想法是永远不要重新映射模型,而是保留基本的效果实例,作为某些材质外观的参考。在这种情况下,我需要在应用正确的效

如何对模型应用各种不同的效果,同时保持模型不同部分上不同材质的属性


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

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

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