Viewport3D/BitmapExporter (WPF) 在 Web 应用程序中不起作用

Viewport3D/BitmapExporter (WPF) doesn't Work in Web Apps

在我的网站上,它允许用户上传 3D 模型文件(.stl、.obj),网站会为其生成缩略图。在我本地的pc上运行的很好,但是在azure下就不行了,无一例外的只生成了一张空图(背景可以画出来,物体渲染不出来)。网站应用有限制吗?

public static void Export(Model3DGroup model, string outputFileName)
{
    var viewport = new Viewport3D();

    viewport.Measure(new Size(320, 240));
    viewport.Arrange(new Rect(0, 0, 320, 240));

    var root = new ModelVisual3D();
    viewport.Children.Add(root);

    var camera = new PerspectiveCamera();
    camera.Position = new Point3D(2, 16, 20);
    camera.LookDirection = new Vector3D(-2, -16, -20);
    camera.UpDirection = new Vector3D(0, 0, 1);
    camera.FieldOfView = 45;
    camera.NearPlaneDistance = 0.1;
    camera.FarPlaneDistance = double.PositiveInfinity;

    viewport.Camera = camera;

    root.Children.Add(new DefaultLights());

    root.Content = model;

    CameraHelper.ZoomExtents(camera, viewport);
    Viewport3DHelper.Export(viewport, outputFileName, Brushes.WhiteSmoke);
}

我在他们的论坛 here 上查看了您正在使用的工具包和您的问题明确 Helix ToolKit 正在使用调用 OS 级 directX 代码的方法,该代码可能受到 WebApp Worker VM 沙箱的限制.

Azure WebApps 有一个沙盒,可以在 VM 上运行您的用户代码,作为保护 VM 不被损坏的预防措施,它拒绝直接针对内核的特定调用,并且图形。

作为试用 Azure 云服务的变通方法,它可以让您更自由地处理像您这样的场景。