WPF模型在Helix Viewer 3D C#中呈现为黑色

3

我对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();

显示方法如下(来自我所看到的helix3d教程):
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;
}

我尝试寻找这个问题的答案,但没有成功。能否请你帮我一下。

2个回答

0

我通过在zoomextents()之后添加这两行代码解决了我的问题;

ui.viewPort3d.Children.Remove(ui.defaultLights);
ui.viewPort3d.Children.Add(ui.defaultLights);

感谢所有抽出时间来帮助的人。


0

我没有看到你在代码中设置任何灯光。


我曾经在viewerport中的xaml中使用helix:DefaultLights/,但效果仍然相同。您可以指出正确的方法吗? - José Pintor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接