1

我有一个 .step 文件,我需要从侧面为项目制作图像。现在我的问题是两边都是白色的。

为了获得侧面,我改变了观点,现在我改变了一点以显示颜色,但这通常不起作用并且对象仍然是白色的。我还尝试添加 PositionalLight 和 DirectionalLight,它们充其量只能提供稍微多一点的灰白色。但我可能会忽略一些简单的事情。

更改视图的代码

            localView = new View3D();
            localView.Dock = DockStyle.Fill;
            Visualizer = new ObjectVisualizer();
            localView.AddVisualizer(Visualizer);
            stepImport = new StepImport();
            Import = stepImport.Import(_currentFile);
            localView.BeginUpdate();
            localView.ViewBottom();
            localView.EndUpdate();

我试过的示例光源

            localView.View.SetLightOn(new OCV3d_DirectionalLight(localView.View.Viewer(), OCV3d_TypeOfOrientation.V3d_Zneg, OCQuantity_NameOfColor.Quantity_NOC_RED));
            localView.View.SetLightOn(new OCV3d_PositionalLight(localView.View.Viewer(), -10, -10, -10, OCQuantity_NameOfColor.Quantity_NOC_BLACK));

我试图获得像 FreeCad 软件那样的侧视图,其中显示了对象的颜色。

4

1 回答 1

1

感谢 Benjamin Bihler 的评论,我能够解决我的问题,因为它确实是使物体从侧面发出白色光的材料。要更改材质,我必须从用于显示对象的 VisualNode 对象访问 AisShapes。

VisualNode visualNode = new VisualNode(item.Name, new ObjectVisualizer(localView));
visualNode.AddShape(item.Shape, c, (double)c.A / 255);
foreach(var x in visualNode.AisShapes)
{
    x.SetMaterial(OCGraphic3d_NameOfMaterial.Graphic3d_NOM_PLASTIC);
}
Visualizer.RootNode.Children.Add(visualNode);
visualNode.Show();
于 2019-10-21T10:49:54.957 回答