【问题标题】:Lights not working properly in Helix Sharp DXHelix Sharp DX 中的灯无法正常工作
【发布时间】:2016-01-17 10:24:58
【问题描述】:

我正在尝试使用 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>

【问题讨论】:

  • 关于上述模型中出了什么问题的任何提示?谢谢。
  • 可能是着色器的问题吗?

标签: directx-11 directx-9 sharpdx directx-10 helix-3d-toolkit


【解决方案1】:

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

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

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

看起来灯光上似乎有某种衰减,但因为它是无用的定向光。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    相关资源
    最近更新 更多