JavaFX 3D. Можно ли изменить ширину линии в DrawMode.Line?

Я хотел бы изменить linewidth любого меша с помощью DrawMode.LINE, но не знаю, возможно ли это.

Я добавил код для справки.

@Override
public void start(Stage primaryStage) throws Exception{
    PerspectiveCamera camera= new PerspectiveCamera(true);
    Group root = new Group();
    Scene scene = new Scene(root, 1024, 768, true);

    primaryStage.setScene(scene);
    primaryStage.show();

    scene.setFill(Color.BLACK);
    camera.setFarClip(10000);
    camera.setTranslateZ(-10);
    scene.setCamera(camera);

    Box box  = new Box();
    box.setDrawMode(DrawMode.LINE);
    root.getChildren().addAll(camera,box);
}


public static void main(String[] args) {
    launch(args);
}

person Alonso Sanchez    schedule 27.12.2019    source источник
comment
Я так не думаю. Не существует API для установки ширины линий каркаса. Единственный способ, который я могу придумать, это попытаться подделать его, например, визуализировав 3D-сцену в половинном размере, а затем увеличив ее в несколько раз. например 2, чтобы удвоить ширину линий. Я тоже не уверен, что это сработает.   -  person jewelsea    schedule 27.12.2019


Ответы (1)


Это невозможно. DrawMode передается собственному рендереру, чей каркас по умолчанию представляет собой линию шириной 1. Конвейер Direct3D см. в разделе Контур и состояние заполнения. . Даже если вы используете поддержку рисования линий библиотека, он скажет вам, что:

Библиотека использует встроенную аппаратную поддержку рисования линий (если она доступна в устройстве), только если:

  • Ширина линии 1.
  • Шаблон линии не включен.

Ширина линии, отличная от 1, не может быть отображена с помощью примитивов линии, но вместо этого нужно рисовать треугольниками:

Библиотека рисования линий эмулирует линии с помощью текстурных треугольников.

Другими словами, ширина, равная 1, особенная, потому что она имеет специфическую аппаратную поддержку.

person user1803551    schedule 06.01.2020