Helix 3d-toolkit Отображено изменение цвета модели .STL

Я делаю приложение С#, которое отображает 3dmodel.stl в форме Windows.

Мне удалось отобразить его, но цвет модели по умолчанию синий, и мне нужно изменить его на что-нибудь другое, скажем, розовый/коричневый (он должен выглядеть как кожа).

Я искал его 2 дня, читал документацию и примеры, но не нашел способа его изменить.

Если кто-то работал со спиралью и знает, как (или даже если есть способ) это сделать, я буду ему очень благодарен за информацию.

код очень простой:

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>

And the C# code:

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

person Elan Sanchez    schedule 10.05.2016    source источник
comment
привет, я тоже застрял с той же проблемой. У вас есть решение для этого?   -  person Sribin    schedule 28.12.2018


Ответы (1)


Я обнаружил ту же проблему с файлом .obj с набором инструментов helix. Мое решение состояло в том, чтобы заменить 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;
}
person Nicolas Rauflet    schedule 17.05.2016
comment
Спасибо за помощь! проблема в том, что .STL не имеет свойства.Material, поэтому я не могу его изменить - person Elan Sanchez; 20.05.2016