如何在JavaFX画布中对大区域进行凹凸贴图
我想使用JavaFX在画布上应用一些照明效果如何在JavaFX画布中对大区域进行凹凸贴图,javafx,light,bump-mapping,Javafx,Light,Bump Mapping,我想使用JavaFX在画布上应用一些照明效果GraphicsContext。首先,我使用Lighting.bumpInput传递一个用于照明的静态凹凸贴图。但是,这只会照亮画布的某个区域。 因此,现在我手动进行照明,首先在画布上绘制所有凹凸贴图,然后应用照明效果,最后将所有原始图像与BlendMode.MULTIPLY和照亮的凹凸贴图混合在一起。 这看起来不像第一种方法那么好,但它确实起到了作用。 现在仍然存在一个问题,即照明效果(点光源)应用于整个画布,而不管区域有多大。 现在我的问题是,在
GraphicsContext
。首先,我使用Lighting.bumpInput
传递一个用于照明的静态凹凸贴图。但是,这只会照亮画布的某个区域。因此,现在我手动进行照明,首先在画布上绘制所有凹凸贴图,然后应用照明效果,最后将所有原始图像与
BlendMode.MULTIPLY
和照亮的凹凸贴图混合在一起。
这看起来不像第一种方法那么好,但它确实起到了作用。
现在仍然存在一个问题,即照明效果(点光源)应用于整个画布,而不管区域有多大。现在我的问题是,在JavaFX中,什么是只将照明应用于画布上特定区域的正确方法?要定义点光源的半径吗
public void start(Stage primaryStage) {
Image texture = new Image("...");
Image bumpMap = new Image("...");
Light.Point pointLight = new Light.Point(256, 256, 25, Color.WHITE);
Lighting lighting = new Lighting(pointLight);
Canvas canvas = new Canvas(1280, 800);
canvas.getGraphicsContext().setGlobalBlendMode(BlendMode.MULTIPLY);
canvas.getGraphicsContext().drawImage(bumpMap, 0, 0);
canvas.getGraphicsContext().applyEffect(lighting);
canvas.getGraphicsContext().drawImage(texture, 0, 0);
Scene scene = new Scene(new AnchorPane(canvas), 1280, 800);
primaryStage.setScene(scene);
primaryStage.show();
}