Wpf 链接到表示三维模型的自包含XAML中的外部纹理文件

Wpf 链接到表示三维模型的自包含XAML中的外部纹理文件,wpf,xaml,resources,3d,textures,Wpf,Xaml,Resources,3d,Textures,我有一个用纹理表示3D模型的XAML文件 我想让纹理从文件所在的位置读取,或者相对于文件读取 我使用XamlReader读取该文件,因此我希望该文件是自包含的 我使用ImageBrush放置纹理,ImageSource是一个packSynatxURI 当我使用“siteoforigin”语法时,这仅在纹理文件位于应用程序旁边时有效。我希望它在Xaml旁边,无论它在哪里 我尝试将当前目录设置为Xaml目录,但没有帮助 不使用包语法也不起作用-它只是查找具有该名称的资源 我需要如何编写Xaml图像源

我有一个用纹理表示3D模型的XAML文件

我想让纹理从文件所在的位置读取,或者相对于文件读取

我使用XamlReader读取该文件,因此我希望该文件是自包含的

我使用ImageBrush放置纹理,ImageSource是一个packSynatxURI

当我使用“siteoforigin”语法时,这仅在纹理文件位于应用程序旁边时有效。我希望它在Xaml旁边,无论它在哪里

我尝试将当前目录设置为Xaml目录,但没有帮助

不使用包语法也不起作用-它只是查找具有该名称的资源

我需要如何编写Xaml图像源(或者是否有其他方法来放置漫反射材质笔刷的纹理?)才能正常工作


Itai。

如果您的模型是一个独立的xaml文件,我认为按照您描述的方式单独使用xaml加载纹理会有问题。因此,如果您的xaml文件位于某个任意位置,并且不在应用程序的同一路径下,它将不可用


我建议在实际从xaml加载图像文件后,将其添加到控件的资源集合中。然后,实际的xaml可以像任何其他资源一样绑定到映像。

我只需将xaml预加载到内存流中,用xaml所在的路径替换siteoforigin:,,语句,然后使用xaml Reader.Load从更新的内存流加载模型,就解决了这个问题

顺便说一句,我的模型是使用您自己的xaml导出器插件导出的sketchup导出,尽管我修改了它以导出法线并将模型旋转到WPF坐标系,等等。

这次尝试如何?