gpt4 book ai didi

java - 如何用两种颜色填充 JavaFX 球体

转载 作者:行者123 更新时间:2023-11-30 06:59:59 27 4
gpt4 key购买 nike

如何在 JavaFX 中填充具有线性渐变(如 2d 圆)的 3D 球体?我使用 JavaFX Scene Builder。

enter image description here

enter image description here

最佳答案

正如@mohsenmadi 所指出的,漫反射颜色不允许您使用一种颜色以外的其他颜色。

但是您可以通过将图像用作漫反射贴图来在球体上设置不同的颜色。

根据您的第一张图片,我创建了这张纹理图片(名为 diffuse.jpg,并放置在与 JavaFX 类相同的文件夹下):

diffuse image

你现在可以创建你的双色球体了:

@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);
...
}

所以你会看到这个:

sphere

请注意,您可能会对两极产生一些副作用。

您还可以查看 FXyz元素,一个具有附加 JavaFX 3D 复杂形状以及复杂纹理选项的库。

例如,您可以使用密度贴图来创建您想要的相同效果,但无需提供纹理图像。

org/fxyz/shapes/primitives 下,您可以找到几个基元,例如 SegmentedSphereMesh

就像一个球体一样,您可以创建一个给出分区数、裁剪分区(在本例中 x 和 y 为 0)、半径和中心:

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);

现在你将拥有:

Sphere FXyz

现在你不会对两极产生副作用,你可以很容易地修改这个函数以适应其他情况。

请注意,您可以添加创建自己的调色板或使用 org/fxyz/utils/Palette 下的 HSB 函数。

关于java - 如何用两种颜色填充 JavaFX 球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30966124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com