Как я могу показать сторону в OpenCascade цветом?

У меня есть файл .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, где показаны цвета объекта.


person Flo    schedule 18.10.2019    source источник
comment
Я не совсем понимаю, что вы имеете в виду. Хотите добавить скриншоты, объясняющие вашу проблему? Учтите, что в Open CASCADE и цвет, и материал объекта влияют на то, как он выглядит. Объект может казаться просто белым, потому что его материал слишком блестящий. В этом случае может помочь установка матового, нейтрального материала. Например, я установил материал по умолчанию на пластик. В C++ это выглядит так: presentation->SetMaterial(Graphic3d_NameOfMaterial::Graphic3d_NOM_PLASTIC);.   -  person Benjamin Bihler    schedule 21.10.2019
comment
Спасибо за ответ, думаю проблема в нем. К сожалению, мне не разрешено размещать изображения (до нескольких баллов). Пример это будет вид с белой стороны. Какова ваша презентация? К сожалению, я использую много кода, написанного не мной, поэтому я не совсем в теме.   -  person Flo    schedule 21.10.2019
comment
Здесь я использую атрибуты презентации для хранения настроек в документе OCAF. Возможно, это не то, как вы хотите это сделать, но я не знаю, как устанавливать материалы в С#...   -  person Benjamin Bihler    schedule 21.10.2019


Ответы (1)


Благодаря комментарию Бенджамина Бихлера я смог решить свою проблему, так как это действительно был материал, из-за которого Объект сиял белым сбоку. Чтобы изменить материал, мне пришлось получить доступ к AisShapes из моего объекта VisualNode, который я использую для отображения объекта.

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();
person Flo    schedule 21.10.2019