JavaFX: Как сделать прозрачный светящийся материал? - PullRequest
1 голос
/ 03 марта 2020

Я хочу создать PhongMaterial с равномерным свечением. В результате у меня есть маленькая модель Земли, и я хотел бы окружить ее дешевой имитацией сияния. https://i1.wp.com/trendintech.com/wp-content/uploads/2017/07/Screen-Shot-2017-07-09-at-12.06.23.png?fit=1079%2C742. Вспышки не нужны и не желательны, я просто хочу, чтобы вокруг нее была бледно-зеленая сфера.

Способ, которым я думал бы сделать это белым, - это просто

public static Sphere buildGlowingSphere(double radius) {

    String glowingFilename = "white_square_400x400.jpg";
    Image glowingMap = new Image(new File(glowingFilename).toURI().toString());

    PhongMaterial material = new PhongMaterial();
    material.setDiffuseColor(Color.rgb(255, 255, 255, 0.01));
    material.setSpecularColor(Color.rgb(255, 255, 255, 0.01));
    material.setSelfIlluminationMap(glowingMap);

    Sphere sphere = new Sphere(radius);
    sphere.setMaterial(material);

    return sphere;
}

Однако это просто создает непрозрачную белую сферу. Что мне нужно, чтобы сделать его прозрачным и достаточно тонким?

Пока мы занимаемся этим, мне бы не хотелось получать новое изображение для каждого цвета, который я хотел бы создать. Я хотел бы сделать что-то вроде

public static Sphere buildGlowingSphere2(double radius, Color color) {

    Image glowingMap = generateBlankImage(color);

    PhongMaterial material = new PhongMaterial();
    material.setDiffuseColor(Color.rgb(255, 255, 255, 0.01));
    material.setSpecularColor(Color.rgb(255, 255, 255, 0.01));
    material.setSelfIlluminationMap(glowingMap);

    Sphere sphere = new Sphere(radius);
    sphere.setMaterial(material);

    return sphere;
}

Как мне это сделать? Или иначе сделать материал, который равномерно самосветится?

Я также пытался сделать это, просто используя неосвещенную прозрачную сферу, и это выглядит хорошо, но у нее нет яркой конечности, которую вы получаете в этом образ; это просто похоже на плоский круг, покрывающий Землю. Я предположил, что это будет потому, что в реальной жизни этот материал светится. Но если есть другой или лучший способ добиться того же эффекта, я весь слух.

...