Как заполнить JavaFX 3D-сферу линейным градиентом, как 2d-круг? Я работаю с JavaFX Scene Builder.Как заполнить область JavaFX двумя цветами
ответ
Как @mohsenmadi указал, диффузный цвет не позволяет, используя кроме одного цвета.
Но вы можете иметь разные цвета на сфере, используя изображение в виде диффузной карты.
Основываясь на своем первом изображении, я создал эту текстуру (так называемый diffuse.jpg
и помещен под одной и той же папке, что и класс JavaFX):
Вы можете создать Теперь ваш двукрашенных сферу:
@Override
public void start(Stage primaryStage) throws Exception {
// 3D
Sphere sphere = new Sphere(5);
PhongMaterial phongMaterial = new PhongMaterial();
phongMaterial.setDiffuseMap(new Image(getClass().getResource("diffuse.jpg").toExternalForm()));
sphere.setMaterial(phongMaterial);
...
}
Таким образом, вы увидите следующее:
Обратите внимание, что у вас могут быть побочные эффекты на полюсах.
Вы также можете посмотреть проект FXyz, библиотеку с дополнительными сложными формами JavaFX 3D, а также сложные параметры текстуры.
Например, вы можете использовать карту плотности для создания того же эффекта, который вам нужен, но без изображения текстуры.
Под org/fxyz/shapes/primitives
вы можете найти несколько примитивов, таких как SegmentedSphereMesh
.
Подобно сфере вы можете создать один дающее количество делений, на полях подразделения (0 в этом случае для й и у), то radiuos, и центр:
SegmentedSphereMesh sphere = new SegmentedSphereMesh(200,0,0,100,new Point3D(0f,0f,0f));
Теперь вы можете определить функция:
Function<Point3D, Number> dens = p->p.y>0?1:0;
и применить его, с количеством цветов (2 в данном случае):
sphere.setTextureModeVertices3D(2,dens);
Теперь у Вас есть это:
Теперь вы не будете иметь побочные эффекты на полюсах, и вы могли бы изменить эту функцию легко и в других случаях.
Обратите внимание, что вы можете добавить создание собственной палитры цветов или играть с функцией HSB под номером org/fxyz/utils/Palette
.
Путь к достижению градиентных-подобных эффектов на 3D-форм является путем применения освещения материала и положение освещения. Вы не можете просто применить два цвета, которые постепенно преобразуются друг в друга. Я приготовил для вас небольшое приложение, которое показывает, как это сделать.
public class ShadedSphere extends Application {
public void start(Stage stage) {
StackPane layout = new StackPane();
layout.setPrefSize(300, 300);
Scene scene = new Scene(layout);
createScene(scene);
stage.setScene(scene);
stage.show();
}
private void createScene(Scene scene) {
PhongMaterial material = new PhongMaterial();
material.setDiffuseColor(Color.ORANGE);
material.setSpecularColor(Color.BLACK);
Sphere sphere = new Sphere(100);
sphere.setMaterial(material);
Pane root = (Pane) scene.getRoot();
root.getChildren().add(sphere);
}
public static void main(String[] args) {
launch(args);
}
}
Который даст вам:
Если изменить расположение сферы (например, с использованием setTranslateX()
и то же самое для Y
и Z
), вы должны заметить различные эффекты освещения на нем; так что следующая вещь для вас, чтобы понять, как контролировать расположение осветительных приборов. Кроме того, свет может иметь цвет! Это означает, что вы можете достичь эффекта «Северного сияния», если хотите увидеть классные вещи.
Чтобы узнать немного больше о освещения, камеры и эффектов, see this link.
- 1. javafx как заполнить сетку со случайными цветами
- 2. Заполнить графический путь двумя цветами
- 3. Круг JavaFx с двумя цветами
- 4. Заполнить область в приложении JavaFx
- 5. Как заполнить между двумя AreaCharts в JavaFX?
- 6. Заполнить область между двумя линиями
- 7. Как заполнить область между двумя сериями в Hightcharts?
- 8. JavaFX WebView растет, чтобы заполнить всю область
- 9. Заполнить область между двумя кривыми matlab
- 10. Заполнить область между двумя горизонтальными линиями
- 11. Как интерполировать между двумя цветами?
- 12. Как JavaFx GridLayout Заполнить
- 13. HR с двумя цветами
- 14. Как заполнить область между двумя линиями, используя диаграмму C3?
- 15. Как заполнить область между двумя сериями кратным yAxis в HighChart?
- 16. Как заполнить область между двумя кругами в холсте?
- 17. Как заполнить область между двумя линейными диаграммами в TeeChart HTML5?
- 18. Текст с двумя цветами
- 19. Окраска дерева двумя цветами
- 20. Пробег с двумя цветами
- 21. Фон с 2 цветами в JavaFX?
- 22. HTML5 Canvas Fill с двумя цветами
- 23. Как заполнить область определенным цветом
- 24. Как заполнить всю область тела?
- 25. Как заполнить область графика цветом
- 26. Заполнить область содержимого ползунка орбиты
- 27. Как заполнить области с разными цветами в слое Fusion Tables
- 28. полосатый фон с двумя цветами?
- 29. Управление двумя цветами вставки границы?
- 30. TD-фон с двумя цветами