如何使用线性渐变填充JavaFX 3D球体? 我使用JavaFX Scene Builder工作。如何使用两种颜色填充JavaFX球体
1
A
回答
3
由于@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在这种情况下,X和Y),该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);
现在你将有这样的:
现在,你不会对两极的副作用,你可以很容易地修改此功能的其他案件。
请注意,您可以添加创建自己的调色板或使用org/fxyz/utils/Palette
下的HSB功能进行播放。
0
实现三维形状梯度样作用的方式是通过施加照明材料和照明位置。你不能简单地应用两种颜色逐渐转化为对方。我为您烹制了一个小应用程序,演示如何实现这一点。
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. 用两种不同的颜色填充文字
- 4. 如何用3种随机颜色的渐变填充图像?
- 5. 如何用随机颜色填充svg?
- 6. GDI:如何用颜色填充RoundRect?
- 7. 如何用颜色填充形状
- 8. UIView填充颜色
- 9. 如何用三种颜色填充渐变三角形? (可能使用GD)
- 10. Java如何为每种颜色提供两种颜色值?
- 11. 如何使用鼠标单击填充html表格使颜色与颜色?
- 12. 如何填充颜色只在在iPhone
- 13. 如何在UIBezierPath中填充颜色?
- 14. 如何覆盖父级填充颜色?
- 15. 如何设置TextRange的填充颜色?
- 16. JavaFx:使用ObservableMap填充TableView
- 17. sifr两种颜色
- 18. 如何在两行之间填充颜色处理?
- 19. 如何填充颜色完全像这个图像的颜色?
- 20. 在Swift中填充颜色
- 21. 绘制MKPolyline填充颜色
- 22. Python的GUI - 填充颜色
- 23. 自举填充BG颜色
- 24. html canvas不填充颜色
- 25. gnuplot条件填充颜色
- 26. 颜色填充在柱中
- 27. 在imageview上填充颜色
- 28. 文本填充颜色CSS
- 29. 用较小的球体最佳填充3D球体
- 30. JavaFX文本控件:设置填充颜色