我正在创建一个在Windows窗体中显示3dmodel.stl的c#应用程序。
我设法显示它,但模型的默认颜色是蓝色,我需要将其更改为其他任何东西,让我们说粉红色/棕色(它应该看起来像皮肤)。
我已经2天寻找它并阅读文档和示例但我还没有找到改变它的方法。
如果某人已经使用了helix并且知道如何(或者甚至有办法)这样做,那么我将非常感谢他的信息。
代码非常简单:
XAML代码:
<UserControl x:Class="Ventana.Visor3D"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:helix="http://helix-toolkit.org/wpf"
xmlns:local="clr-namespace:Ventana"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<helix:HelixViewport3D x:Name="viewPort3d" ZoomExtentsWhenLoaded="true" Grid.RowSpan="2" >
<helix:SunLight/>
</helix:HelixViewport3D>
</Grid>
和C#代码:
public partial class Visor3D : UserControl
{
private const string MODEL_PATH = "\\Prueba.STL";
ModelVisual3D device3D;
public Visor3D(){ }
public void Carga() {
InitializeComponent();
device3D = new ModelVisual3D();
device3D.Content = Display3d(MODEL_PATH);
viewPort3d.Children.Add(device3D);
}
private Model3D Display3d(string model)
{
Model3D device = null;
try
{
viewPort3d.RotateGesture = new MouseGesture(MouseAction.LeftClick);
ModelImporter import = new ModelImporter();
device = import.Load(Environment.CurrentDirectory + model);
}
catch (Exception e)
{
MessageBox.Show("Exception Error : " + e.StackTrace);
}
return device;
}
}
答案 0 :(得分:0)
我在使用 helix 工具包的 .obj 文件中发现了同样的问题。我的解决方案是用新的对象替换Material
对象。我认为这不是最好的解决方案,但它适用于我的WPF项目。
// Set your RGB Color on the SolitColorBrush
System.Windows.Media.Media3D.Material mat = MaterialHelper.CreateMaterial(
new SolidColorBrush(Color.FromRgb(255, 255, 255))
//Replace myModel3DGroup by your Model3DGroup of your view....
foreach (System.Windows.Media.Media3D.GeometryModel3D geometryModel in myModel3DGroup.Children)
{
geometryModel.Material = mat;
geometryModel.BackMaterial = mat;
}