Helix 3d-toolkit显示.STL模型颜色变化

时间:2016-05-10 09:27:04

标签: helix-3d-toolkit

我正在创建一个在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;
    }
}

1 个答案:

答案 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;
}