2016-05-10 29 views
0

Ich mache eine C# -Anwendung, die eine 3dmodel.stl in einer Windows-Form anzeigen.Helix 3D-Toolkit Angezeigte .STL-Modell Farbwechsel

Ich habe es angezeigt, aber die Standardfarbe für das Modell ist blau und ich muss es zu etwas anderem ändern, sagen wir rosa/braun (es sollte wie Haut aussehen).

Ich habe 2 Tage danach gesucht und Dokumentation und Beispiele gelesen, aber ich habe keinen Weg gefunden, es zu ändern.

Wenn jemand mit Helix gearbeitet hat und weiß (oder auch wenn es einen Weg gibt) es zu tun, werde ich ihm für die Info danken.

der Code ist sehr einfach:

XAML-Code:

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

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

Antwort

0

ich das gleiche Problem mit OBJ gefunden haben Datei mit Helix Werkzeugkasten. Meine Lösung war, das Objekt Material durch ein neues zu ersetzen. Ist nicht die beste Lösung, denke ich, aber es funktioniert auf meinem WPF-Projekt.

// 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; 
} 
+0

Danke für die Hilfe! Das Problem ist, dass. STL nicht die Eigenschaft.Material hat, also kann ich es nicht ändern –