1

我正在尝试使用 Helix Toolkit ( https://github.com/helix-toolkit/helix-toolkit ) 和 SharpDX 构建一个 obj 文件查看器。到目前为止,我能够加载一个目标文件并将其内容渲染到 Helix Viewport3DX。模型在某些 obj 文件中看起来不错,但对于其他文件,则存在一些闪电问题,并且背面总是黑色。我不确定我做错了什么。这是因为SharpDX不支持背面材料的事实吗?请帮忙。

使用 Helix Sharp DX 的问题: 在此处输入图像描述

Adobe DC Reader 中的原始模型如下所示: 在此处输入图像描述

Viewport3DX 设置为:

<Window.Resources>
    <DataTemplate x:Key="Template1">
        <hx:MyMeshGeometryModel3D Geometry="{Binding Geometry}" Transform="{Binding Transform}" Material="{Binding Material}"/>
    </DataTemplate>
    <hx:RenderTechniqueConverter x:Key="RenderTechniqueConverter"/>
</Window.Resources>
<hx:Viewport3DX x:Name="helixViewport" Camera="{Binding Camera}" CameraRotationMode="Trackball" RenderTechnique="{Binding RenderTechnique}" RenderTechniquesManager="{Binding RenderTechniquesManager}" EffectsManager="{Binding EffectsManager}" BackgroundColor="{Binding BackgroundColor}" UseDefaultGestures="False">
    <hx:Viewport3DX.InputBindings>
        <MouseBinding Gesture="LeftClick" Command="hx:ViewportCommands.Rotate"/>
        <MouseBinding Gesture="MiddleClick" Command="hx:ViewportCommands.Zoom"/>
        <MouseBinding Gesture="RightClick" Command="hx:ViewportCommands.Pan"/>
    </hx:Viewport3DX.InputBindings>
    <hx:AmbientLight3D Color="{Binding AmbientLightColor}"/>
    <hx:DirectionalLight3D Color="{Binding DirectionalLightColor1}" Direction="-1,-1,-1"/>
    <hx:DirectionalLight3D Color="{Binding DirectionalLightColor2}" Direction="1,-1,-0.1"/>
    <hx:DirectionalLight3D Color="{Binding DirectionalLightColor3}" Direction="0.1,1,-1"/>
    <hx:DirectionalLight3D Color="{Binding DirectionalLightColor4}" Direction="0.1,0.1,1"/>
    <hx:ItemsModel3D x:Name="itemsModel3d" ItemTemplate="{StaticResource Template1}" ItemsSource="{Binding Items}"/>
</hx:Viewport3DX>
4

1 回答 1

1

我不确定你所说的“背面材料”是什么意思。

SharpDX 支持你想要的任何东西,因为它只是 DirectX 的一个包装器,这个问题可能与 helix 有关,但我真的不知道,因为 helix 是一个基于sharpDX的框架,我只是使用sharpDX建立我自己的框架。

您永远不会绘制网格的背面,因为无论如何您都看不到它,所以为什么还要发送绘制它呢?

它几乎看起来像灯光上有某种衰减,但因为它是一个没有用的定向光。

有时,在最大情况下,我必须翻转法线,以便在游戏中正确绘制,或者在使用 assimp 导入网格时更改缠绕顺序。

于 2016-01-22T08:02:55.883 回答