gpt4 book ai didi

c# - 如何使用 Helix.SharpDX 体积渲染可视化 3D 标量场?

转载 作者:太空狗 更新时间:2023-10-29 21:48:23 26 4
gpt4 key购买 nike

我的任务是使用 Helix Toolkit 可视化标量的 3D 场。输入数组包含没有限制的 double 值,但通常介于 [-50000, +50000] 之间。标量值影响立方体的颜色:最小值为蓝色,0 - 白色,最大值 - 红色。所有其他颜色值都根据该值进行插值。

现在我正在尝试了解 Color Transfer Map 在 HelixToolkit.Wpf.SharpDX 中的工作原理。为此,我创建了一个简单的 2x2x1 标量场。

MainWindow.xaml

<hx:Viewport3DX
Name="view1"
Grid.Row="1"
BackgroundColor="SkyBlue"
Camera="{Binding Camera}"
EffectsManager="{Binding EffectsManager}"
EnableDesignModeRendering="True"
UseDefaultGestures="False"
CameraRotationMode="Trackball">
<hx:Viewport3DX.InputBindings>
<KeyBinding Key="B" Command="hx:ViewportCommands.BackView" />
<KeyBinding Key="F" Command="hx:ViewportCommands.FrontView" />
<KeyBinding Key="U" Command="hx:ViewportCommands.TopView" />
<KeyBinding Key="D" Command="hx:ViewportCommands.BottomView" />
<KeyBinding Key="L" Command="hx:ViewportCommands.LeftView" />
<KeyBinding Key="R" Command="hx:ViewportCommands.RightView" />
<KeyBinding Command="hx:ViewportCommands.ZoomExtents" Gesture="Control+E" />
<MouseBinding Command="hx:ViewportCommands.Rotate" Gesture="RightClick" />
<MouseBinding Command="hx:ViewportCommands.Zoom" Gesture="MiddleClick" />
<MouseBinding Command="hx:ViewportCommands.Pan" Gesture="LeftClick" />
</hx:Viewport3DX.InputBindings>
<hx:VolumeTextureModel3D VolumeMaterial="{Binding VolumeMaterial}" />
</hx:Viewport3DX>

MainWindowViewModel.cs

public MainWindowViewModel()
{
Nx = 2;
Ny = 2;
Nz = 1;

var m = new VolumeTextureDiffuseMaterial();

var data = new[] {0.0f, 0.25f, 0.5f, 1.0f};

var gradients = VolumeDataHelper.GenerateGradients(data, Nx, Ny, Nz, 1);
m.Texture = new VolumeTextureGradientParams(gradients, Nx, Ny, Nz);
m.TransferMap = new[]
{Colors.Red.ToColor4(), Colors.Blue.ToColor4(), Colors.Lime.ToColor4(), Color4.White};
m.SampleDistance = 0.1;
m.Freeze();

VolumeMaterial = m;
}

我期望有 4 个不同颜色的不同立方体,类似于(由于插值和采样,立方体之间可能有渐变): Desired

但我一直收到这种奇怪的三角形颜色组合: Actual

颜色传输贴图阵列究竟是如何工作的?如何使用 HelixToolkit.SharpDX 的体积渲染对立方体实现预期的结果?

最佳答案

你可以尝试引用这个教程。 Tutorial 1Tutorial 2

Helixtoolkit 就是这样实现体绘制的。

关于c# - 如何使用 Helix.SharpDX 体积渲染可视化 3D 标量场?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com