我如何在 OpenCascade 中用颜色显示侧面?
How can i show the side in OpenCascade with color?
我有一个 .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 软件中那样获得侧视图,其中显示了对象的颜色。
感谢 Benjamin Bihler 的评论,我得以解决我的问题,因为确实是 material 使对象从侧面发白。
要更改 material 我必须从我用来显示对象的 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();
我有一个 .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 软件中那样获得侧视图,其中显示了对象的颜色。
感谢 Benjamin Bihler 的评论,我得以解决我的问题,因为确实是 material 使对象从侧面发白。 要更改 material 我必须从我用来显示对象的 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();