如何解决WPF 模型在 helix viewer 3d c# 中显示为黑色
我是 WPF 和模型的新手,我想制作一个可以打开各种 obj 文件并显示模型的界面。
此刻所有这些都在视口中显示为黑色,如下所示:
我不知道为什么,但我认为这是一个闪电问题,因为所有模型都有不同的位置,我不知道如何改变位置。 我不认为它与 obj 本身有关,因为在 Windows 的查看器中,它看起来是彩色的:
这是我的 xaml 部分:
<Grid>
<Grid.ColumnDeFinitions>
<ColumnDeFinition Width="1*"/>
<ColumnDeFinition Width="1*"/>
<ColumnDeFinition Width="2*"/>
</Grid.ColumnDeFinitions>
<ListBox x:Name="Groupfiles" SelectionChanged="Groupfiles_Selected" Grid.Column="0"></ListBox>
<StackPanel Grid.Column="1">
<Button x:Name="ClickThebutton" Click="ClickThebutton_Click" >Click Me</Button>
</StackPanel>
<helix:HelixViewport3D x:Name="viewPort3d" ZoomExtentsWhenLoaded="true" Grid.Column="2" >
</helix:HelixViewport3D>
</Grid>
这是c#部分:
ModelVisual3D device3D = new ModelVisual3D();
string file_to_open = null;
file_to_open = Groupfiles.SelectedItem.ToString();
string obj_file = Path.ChangeExtension(file_to_open,".obj");
if (!File.Exists(obj_file))
{
/// converts original file to obj file
}
device3D.Content = display3d(obj_file);
viewPort3d.Children.Clear();
viewPort3d.Children.Add(device3D);
viewPort3d.ZoomExtents();
public static Model3D display3d(string model)
{
Model3D device = null;
try
{
//Adding a gesture here
viewPort3d.RotateGesture =new MouseGesture(MouseAction.LeftClick));
//Import 3D model file
ModelImporter import = new ModelImporter();
//Load the 3D model file
device= import.Load(model);
}
catch (Exception e)
{
// Handle exception in case can not find the 3D model file
MessageBox.Show("Exception Error : " + e.StackTrace);
}
return device;
}
我试图找到这个问题的答案,但无济于事。 你能帮我吗。
解决方法
我没有看到您在代码中设置任何灯。
,我通过在 zoomextents() 之后添加这两行来解决我的问题;
ui.viewPort3d.Children.Remove(ui.defaultLights);
ui.viewPort3d.Children.Add(ui.defaultLights);
感谢所有花时间提供帮助的人。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。