Je travaille sur un maillage triangulaire pour lequel je dois colorier chaque vertext avec une couleur spécifique. J'ai suivi l'exemple fourni icijavafx 3d colorier chaque sommet en maille triangle avec couleur spécifique
Using texture for triangle mesh without having to read/write an image file
qui a beaucoup aidé, mais je suis coincé avec tecturing les sommets, l'exemple ci-dessus décrit la coloration de chaque sommet en créant une palette de numColors, j'ai essayé la même chose pour mon ensemble de tableaux de couleurs spécifiques j'ai, la palette est créée mais les sommets ne sont pas colorés dans l'ordre que je voulais, Tout exemple sur ce serait vraiment aider, comment colorer chaque sommet dans un triangle maillage avec un ensemble de couleurs spécifiques fournis (pour chaque sommet) en cerant une palette de couleurs.
Merci
Voici mon exemple
import java.io.File;
import java.io.IOException;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.IntStream;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.input.ScrollEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.MeshView;
import javafx.scene.shape.TriangleMesh;
import javafx.scene.shape.VertexFormat;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
public class Sample1 extends Application {
private static final double MODEL_SCALE_FACTOR = 10;
private static final double MODEL_X_OFFSET = 0; // standard
private static final double MODEL_Y_OFFSET = 0; // standard
private static int VIEWPORT_SIZE = 800;
private double mouseOldX, mouseOldY = 0;
private Rotate rotateX = new Rotate(0, Rotate.X_AXIS);
private Rotate rotateY = new Rotate(0, Rotate.Y_AXIS);
private Rotate rotateZ = new Rotate(0, Rotate.Z_AXIS);
private Group root = new Group();
//Xform sceneRoot;
PerspectiveCamera camera;
private TriangleMesh mesh;
// Color[] colorArray;
@Override
public void start(Stage primaryStage) {
camera = new PerspectiveCamera(false);
camera.setTranslateX(0);
camera.setTranslateY(0);
camera.setTranslateZ(0);
camera.setNearClip(0.1);
camera.setFarClip(1000.0);
camera.getTransforms().addAll(rotateX, rotateY, new Translate(0, 0, 0));
root.setRotationAxis(Rotate.Y_AXIS);
root.setRotate(200);
rotateX.setPivotX(VIEWPORT_SIZE/2 + MODEL_X_OFFSET);
rotateX.setPivotY(VIEWPORT_SIZE/2 + MODEL_Y_OFFSET);
rotateX.setPivotZ(VIEWPORT_SIZE/2);
rotateY.setPivotX(VIEWPORT_SIZE/2 + MODEL_X_OFFSET);
rotateY.setPivotY(VIEWPORT_SIZE/2 + MODEL_Y_OFFSET);
rotateY.setPivotZ(VIEWPORT_SIZE/2);
rotateZ.setPivotX(VIEWPORT_SIZE/2 + MODEL_X_OFFSET);
rotateZ.setPivotY(VIEWPORT_SIZE/2 + MODEL_Y_OFFSET);
rotateZ.setPivotZ(VIEWPORT_SIZE/2);
root.setScaleX(MODEL_SCALE_FACTOR);
root.setScaleY(MODEL_SCALE_FACTOR);
root.setScaleZ(MODEL_SCALE_FACTOR);
createModel();
Scene scene = new Scene(root, 800, 500);
scene.setFill(Color.rgb(10, 10, 40));
scene.setCamera(camera);
scene.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
double zoomFactor = 1.05;
double deltaY = event.getDeltaY();
if (deltaY < 0) {
zoomFactor = 2.0 - zoomFactor;
}
// System.out.println(zoomFactor);
root.setScaleX(root.getScaleX() * zoomFactor);
root.setScaleY(root.getScaleY() * zoomFactor);
root.setScaleZ(root.getScaleZ() * zoomFactor);
event.consume();
}
});
scene.setOnMousePressed(event -> {
mouseOldX = event.getSceneX();
mouseOldY = event.getSceneY();
});
scene.setOnMouseDragged(event -> {
rotateX.setAngle(rotateX.getAngle() - (event.getSceneY() - mouseOldY));
rotateY.setAngle(rotateY.getAngle() + (event.getSceneX() - mouseOldX));
mouseOldX = event.getSceneX();
mouseOldY = event.getSceneY();
});
primaryStage.setTitle("Sample Mesh");
primaryStage.setScene(scene);
primaryStage.centerOnScreen();
primaryStage.show();
}
private void createModel() {
mesh = new TriangleMesh(VertexFormat.POINT_NORMAL_TEXCOORD);
addPoints();
addFaces();
addNormals();
PhongMaterial mat = new PhongMaterial();
mat.setDiffuseMap(colorPalette(colorArray));
int numVertices = mesh.getPoints().size()/3;
int numColors = colorArray.length;
IntStream.range(0, numVertices).boxed()
.forEach(i -> mesh.getTexCoords()
.addAll(getTextureLocation(i * numColors/numVertices, numColors)));
MeshView meshView = new MeshView(mesh);
meshView.setMaterial(mat);
meshView.setDrawMode(DrawMode.FILL);
meshView.setTranslateX(VIEWPORT_SIZE/2 + MODEL_X_OFFSET);
meshView.setTranslateY(VIEWPORT_SIZE/2 + MODEL_Y_OFFSET);
meshView.setTranslateZ(VIEWPORT_SIZE/2);
root.getChildren().addAll(meshView);
}
private void addPoints() {
mesh.getPoints().addAll(25.255093f, 0.86116815f, 0.9920882f,
28.010185f, 0.6422461f, 0.68806815f,
22.5f, 0.88371015f, 1.0604522f,
20.0f, 0.88371015f, 1.0604522f,
17.5f, 0.88371015f, 1.0604522f,
28.010185f, 0.9249993f, 0.0f,
28.010185f, 0.6422461f, -0.68806815f,
25.255093f, 1.2263886f, 0.0f,
25.255093f, 0.86116815f, -0.9920882f,
22.5f, 1.25f, 0.0f,
20.0f, 1.25f, 0.0f,
17.5f, 1.25f, 0.0f,
22.5f, 0.88371015f, -1.0604522f,
20.0f, 0.88371015f, -1.0604522f,
17.5f, 0.88371015f, -1.0604522f,
28.010185f, -1.4802974E-16f, 0.9898141f,
25.255093f, -7.401487E-17f, 1.4115738f,
25.255093f, -0.86116815f, 0.9920882f,
28.010185f, -0.6422461f, 0.68806815f,
22.5f, 0.0f, 1.5f,
20.0f, 0.0f, 1.5f,
17.5f, 0.0f, 1.5f,
22.5f, -0.88371015f, 1.0604522f,
20.0f, -0.88371015f, 1.0604522f,
17.5f, -0.88371015f, 1.0604522f,
30.0f, 0.0f, 0.0f,
28.010185f, -1.3158199E-16f, -0.9898141f,
25.255093f, -6.5790995E-17f, -1.4115738f,
28.010185f, -0.9249993f, 0.0f,
28.010185f, -0.6422461f, -0.68806815f,
25.255093f, -1.2263886f, 0.0f,
25.255093f, -0.86116815f, -0.9920882f,
22.5f, 0.0f, -1.5f,
20.0f, 0.0f, -1.5f,
17.5f, 0.0f, -1.5f,
22.5f, -1.25f, 0.0f,
20.0f, -1.25f, 0.0f,
17.5f, -1.25f, 0.0f,
22.5f, -0.88371015f, -1.0604522f,
20.0f, -0.88371015f, -1.0604522f,
17.5f, -0.88371015f, -1.0604522f,
15.0f, 0.88371015f, 1.0604522f,
12.5f, 0.88371015f, 1.0604522f,
10.0f, 0.88371015f, 1.0604522f,
7.5f, 0.88371015f, 1.0604522f,
4.744907f, 0.86116815f, 0.9920882f,
1.989814f, 0.6422461f, 0.68806815f,
15.0f, 1.25f, 0.0f,
12.5f, 1.25f, 0.0f,
10.0f, 1.25f, 0.0f,
15.0f, 0.88371015f, -1.0604522f,
12.5f, 0.88371015f, -1.0604522f,
10.0f, 0.88371015f, -1.0604522f,
7.5f, 1.25f, 0.0f,
4.744907f, 1.2263886f, 0.0f,
1.989814f, 0.9249993f, 0.0f,
1.989814f, 0.6422461f, -0.68806815f,
7.5f, 0.88371015f, -1.0604522f,
4.744907f, 0.86116815f, -0.9920882f,
15.0f, 0.0f, 1.5f,
12.5f, 0.0f, 1.5f,
10.0f, 0.0f, 1.5f,
15.0f, -0.88371015f, 1.0604522f,
12.5f, -0.88371015f, 1.0604522f,
10.0f, -0.88371015f, 1.0604522f,
7.5f, 0.0f, 1.5f,
4.744907f, -7.401487E-17f, 1.4115738f,
1.989814f, -1.4802974E-16f, 0.9898141f,
7.5f, -0.88371015f, 1.0604522f,
4.744907f, -0.86116815f, 0.9920882f,
1.989814f, -0.6422461f, 0.68806815f,
15.0f, 0.0f, -1.5f,
12.5f, 0.0f, -1.5f,
10.0f, 0.0f, -1.5f,
15.0f, -1.25f, 0.0f,
12.5f, -1.25f, 0.0f,
10.0f, -1.25f, 0.0f,
15.0f, -0.88371015f, -1.0604522f,
12.5f, -0.88371015f, -1.0604522f,
10.0f, -0.88371015f, -1.0604522f,
0.0f, -2.9605948E-16f, 0.0f,
7.5f, 0.0f, -1.5f,
4.744907f, -6.5790995E-17f, -1.4115738f,
1.989814f, -1.3158199E-16f, -0.9898141f,
7.5f, -1.25f, 0.0f,
4.744907f, -1.2263886f, 0.0f,
1.989814f, -0.9249993f, 0.0f,
1.989814f, -0.6422461f, -0.68806815f,
7.5f, -0.88371015f, -1.0604522f,
4.744907f, -0.86116815f, -0.9920882f);
}
private void addFaces() {
mesh.getFaces().addAll(80, 80, 80, 55, 55, 55, 56, 56, 56,
80, 80, 80, 56, 56, 56, 83, 83, 83,
83, 83, 83, 87, 87, 87, 80, 80, 80,
87, 87, 87, 86, 86, 86, 80, 80, 80,
80, 80, 80, 86, 86, 86, 70, 70, 70,
80, 80, 80, 70, 70, 70, 67, 67, 67,
67, 67, 67, 46, 46, 46, 80, 80, 80,
46, 46, 46, 55, 55, 55, 80, 80, 80,
55, 55, 55, 54, 54, 54, 58, 58, 58,
55, 55, 55, 58, 58, 58, 56, 56, 56,
56, 56, 56, 58, 58, 58, 82, 82, 82,
56, 56, 56, 82, 82, 82, 83, 83, 83,
83, 83, 83, 82, 82, 82, 87, 87, 87,
82, 82, 82, 89, 89, 89, 87, 87, 87,
87, 87, 87, 89, 89, 89, 86, 86, 86,
89, 89, 89, 85, 85, 85, 86, 86, 86,
86, 86, 86, 85, 85, 85, 69, 69, 69,
86, 86, 86, 69, 69, 69, 70, 70, 70,
70, 70, 70, 69, 69, 69, 66, 66, 66,
70, 70, 70, 66, 66, 66, 67, 67, 67,
67, 67, 67, 66, 66, 66, 46, 46, 46,
66, 66, 66, 45, 45, 45, 46, 46, 46,
46, 46, 46, 45, 45, 45, 55, 55, 55,
45, 45, 45, 54, 54, 54, 55, 55, 55,
54, 54, 54, 53, 53, 53, 57, 57, 57,
54, 54, 54, 57, 57, 57, 58, 58, 58,
58, 58, 58, 57, 57, 57, 81, 81, 81,
58, 58, 58, 81, 81, 81, 82, 82, 82,
82, 82, 82, 81, 81, 81, 89, 89, 89,
81, 81, 81, 88, 88, 88, 89, 89, 89,
89, 89, 89, 88, 88, 88, 85, 85, 85,
88, 88, 88, 84, 84, 84, 85, 85, 85,
85, 85, 85, 84, 84, 84, 68, 68, 68,
85, 85, 85, 68, 68, 68, 69, 69, 69,
69, 69, 69, 68, 68, 68, 65, 65, 65,
69, 69, 69, 65, 65, 65, 66, 66, 66,
66, 66, 66, 65, 65, 65, 45, 45, 45,
65, 65, 65, 44, 44, 44, 45, 45, 45,
45, 45, 45, 44, 44, 44, 54, 54, 54,
44, 44, 44, 53, 53, 53, 54, 54, 54,
53, 53, 53, 49, 49, 49, 52, 52, 52,
53, 53, 53, 52, 52, 52, 57, 57, 57,
57, 57, 57, 52, 52, 52, 73, 73, 73,
57, 57, 57, 73, 73, 73, 81, 81, 81,
81, 81, 81, 73, 73, 73, 88, 88, 88,
73, 73, 73, 79, 79, 79, 88, 88, 88,
88, 88, 88, 79, 79, 79, 84, 84, 84,
79, 79, 79, 76, 76, 76, 84, 84, 84,
84, 84, 84, 76, 76, 76, 64, 64, 64,
84, 84, 84, 64, 64, 64, 68, 68, 68,
68, 68, 68, 64, 64, 64, 61, 61, 61,
68, 68, 68, 61, 61, 61, 65, 65, 65,
65, 65, 65, 61, 61, 61, 44, 44, 44,
61, 61, 61, 43, 43, 43, 44, 44, 44,
44, 44, 44, 43, 43, 43, 53, 53, 53,
43, 43, 43, 49, 49, 49, 53, 53, 53,
49, 49, 49, 48, 48, 48, 51, 51, 51,
49, 49, 49, 51, 51, 51, 52, 52, 52,
52, 52, 52, 51, 51, 51, 72, 72, 72,
52, 52, 52, 72, 72, 72, 73, 73, 73,
73, 73, 73, 72, 72, 72, 79, 79, 79,
72, 72, 72, 78, 78, 78, 79, 79, 79,
79, 79, 79, 78, 78, 78, 76, 76, 76,
78, 78, 78, 75, 75, 75, 76, 76, 76,
76, 76, 76, 75, 75, 75, 63, 63, 63,
76, 76, 76, 63, 63, 63, 64, 64, 64,
64, 64, 64, 63, 63, 63, 60, 60, 60,
64, 64, 64, 60, 60, 60, 61, 61, 61,
61, 61, 61, 60, 60, 60, 43, 43, 43,
60, 60, 60, 42, 42, 42, 43, 43, 43,
43, 43, 43, 42, 42, 42, 49, 49, 49,
42, 42, 42, 48, 48, 48, 49, 49, 49,
48, 48, 48, 47, 47, 47, 50, 50, 50,
48, 48, 48, 50, 50, 50, 51, 51, 51,
51, 51, 51, 50, 50, 50, 71, 71, 71,
51, 51, 51, 71, 71, 71, 72, 72, 72,
72, 72, 72, 71, 71, 71, 78, 78, 78,
71, 71, 71, 77, 77, 77, 78, 78, 78,
78, 78, 78, 77, 77, 77, 75, 75, 75,
77, 77, 77, 74, 74, 74, 75, 75, 75,
75, 75, 75, 74, 74, 74, 62, 62, 62,
75, 75, 75, 62, 62, 62, 63, 63, 63,
63, 63, 63, 62, 62, 62, 59, 59, 59,
63, 63, 63, 59, 59, 59, 60, 60, 60,
60, 60, 60, 59, 59, 59, 42, 42, 42,
59, 59, 59, 41, 41, 41, 42, 42, 42,
42, 42, 42, 41, 41, 41, 48, 48, 48,
41, 41, 41, 47, 47, 47, 48, 48, 48,
47, 47, 47, 11, 11, 11, 14, 14, 14,
47, 47, 47, 14, 14, 14, 50, 50, 50,
50, 50, 50, 14, 14, 14, 34, 34, 34,
50, 50, 50, 34, 34, 34, 71, 71, 71,
71, 71, 71, 34, 34, 34, 77, 77, 77,
34, 34, 34, 40, 40, 40, 77, 77, 77,
77, 77, 77, 40, 40, 40, 74, 74, 74,
40, 40, 40, 37, 37, 37, 74, 74, 74,
74, 74, 74, 37, 37, 37, 24, 24, 24,
74, 74, 74, 24, 24, 24, 62, 62, 62,
62, 62, 62, 24, 24, 24, 21, 21, 21,
62, 62, 62, 21, 21, 21, 59, 59, 59,
59, 59, 59, 21, 21, 21, 41, 41, 41,
21, 21, 21, 4, 4, 4, 41, 41, 41, 41,
41, 41, 4, 4, 4, 47, 47, 47, 4, 4, 4,
11, 11, 11, 47, 47, 47, 11, 11, 11,
10, 10, 10, 13, 13, 13, 11, 11, 11,
13, 13, 13, 14, 14, 14, 14, 14, 14,
13, 13, 13, 33, 33, 33, 14, 14, 14,
33, 33, 33, 34, 34, 34, 34, 34, 34,
33, 33, 33, 40, 40, 40, 33, 33, 33,
39, 39, 39, 40, 40, 40, 40, 40, 40,
39, 39, 39, 37, 37, 37, 39, 39, 39,
36, 36, 36, 37, 37, 37, 37, 37, 37,
36, 36, 36, 23, 23, 23, 37, 37, 37,
23, 23, 23, 24, 24, 24, 24, 24, 24,
23, 23, 23, 20, 20, 20, 24, 24, 24,
20, 20, 20, 21, 21, 21, 21, 21, 21,
20, 20, 20, 4, 4, 4, 20, 20, 20,
3, 3, 3, 4, 4, 4, 4, 4, 4,
3, 3, 3, 11, 11, 11, 3, 3, 3,
10, 10, 10, 11, 11, 11, 10, 10, 10,
9, 9, 9, 12, 12, 12, 10, 10, 10,
12, 12, 12, 13, 13, 13, 13, 13, 13,
12, 12, 12, 32, 32, 32, 13, 13, 13,
32, 32, 32, 33, 33, 33, 33, 33, 33,
32, 32, 32, 39, 39, 39, 32, 32, 32,
38, 38, 38, 39, 39, 39, 39, 39, 39,
38, 38, 38, 36, 36, 36, 38, 38, 38,
35, 35, 35, 36, 36, 36, 36, 36, 36,
35, 35, 35, 22, 22, 22, 36, 36, 36,
22, 22, 22, 23, 23, 23, 23, 23, 23,
22, 22, 22, 19, 19, 19, 23, 23, 23,
19, 19, 19, 20, 20, 20, 20, 20, 20,
19, 19, 19, 3, 3, 3, 19, 19, 19,
2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2,
10, 10, 10, 2, 2, 2, 9, 9, 9,
10, 10, 10, 9, 9, 9, 7, 7, 7,
8, 8, 8, 9, 9, 9, 8, 8, 8,
12, 12, 12, 12, 12, 12, 8, 8, 8,
27, 27, 27, 12, 12, 12, 27, 27, 27,
32, 32, 32, 32, 32, 32, 27, 27, 27,
38, 38, 38, 27, 27, 27, 31, 31, 31,
38, 38, 38, 38, 38, 38, 31, 31, 31,
35, 35, 35, 31, 31, 31, 30, 30, 30,
35, 35, 35, 35, 35, 35, 30, 30, 30,
17, 17, 17, 35, 35, 35, 17, 17, 17,
22, 22, 22, 22, 22, 22, 17, 17, 17,
16, 16, 16, 22, 22, 22, 16, 16, 16,
19, 19, 19, 19, 19, 19, 16, 16, 16,
2, 2, 2, 16, 16, 16, 0, 0, 0,
2, 2, 2, 2, 2, 2, 0, 0, 0,
9, 9, 9, 0, 0, 0, 7, 7, 7,
9, 9, 9, 7, 7, 7, 5, 5, 5,
6, 6, 6, 7, 7, 7, 6, 6, 6,
8, 8, 8, 8, 8, 8, 6, 6, 6,
26, 26, 26, 8, 8, 8,
26, 26, 26, 27, 27, 27, 27, 27, 27,
26, 26, 26, 31, 31, 31, 26, 26, 26,
29, 29, 29, 31, 31, 31, 31, 31, 31,
29, 29, 29, 30, 30, 30, 29, 29, 29,
28, 28, 28, 30, 30, 30, 30, 30, 30,
28, 28, 28, 18, 18, 18, 30, 30, 30,
18, 18, 18, 17, 17, 17, 17, 17, 17,
18, 18, 18, 15, 15, 15, 17, 17, 17,
15, 15, 15, 16, 16, 16, 16, 16, 16,
15, 15, 15, 0, 0, 0,
15, 15, 15, 1, 1, 1, 0, 0, 0,
0, 0, 0, 1, 1, 1, 7, 7, 7,
1, 1, 1, 5, 5, 5, 7, 7, 7,
5, 5, 5, 25, 25, 25, 6, 6, 6,
6, 6, 6, 25, 25, 25, 26, 26, 26,
26, 26, 26, 25, 25, 25, 29, 29, 29,
29, 29, 29, 25, 25, 25, 28, 28, 28,
28, 28, 28, 25, 25, 25, 18, 18, 18,
18, 18, 18, 25, 25, 25, 15, 15, 15,
15, 15, 15, 25, 25, 25, 1, 1, 1,
1, 1, 1, 25, 25, 25, 5, 5, 5);
}
private void addNormals() {
mesh.getNormals().addAll(0.07288012f, 0.768564f, 0.6356083f, 0.21982567f, 0.7893725f, 0.5732083f, 0.012779057f,
0.76441664f, 0.6445959f, 0.0f, 0.76822126f, 0.6401844f, 0.0f, 0.76822126f, 0.6401844f, 0.25024077f, 0.96818364f,
0.0f, 0.21982567f, 0.7893725f, -0.5732083f, 0.07571304f, 0.9971296f, 0.0f, 0.07288012f, 0.768564f, -0.6356083f,
0.0087126205f, 0.99996203f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.012779057f, 0.76441664f, -0.6445959f, 0.0f,
0.76822126f, -0.6401844f, 0.0f, 0.76822126f, -0.6401844f, 0.22647266f, 0.0f, 0.9740175f, 0.07080862f, 0.0f, 0.9974899f,
0.07288012f, -0.768564f, 0.6356083f, 0.21982567f, -0.7893725f, 0.5732083f, 0.011401603f, 0.0f, 0.999935f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f, 1.0f, 0.012779057f, -0.76441664f, 0.6445959f, 0.0f, -0.76822126f, 0.6401844f, 0.0f, -0.76822126f, 0.6401844f,
1.0f, 0.0f, 0.0f, 0.22647266f, 0.0f, -0.9740175f, 0.07080862f, 0.0f, -0.9974899f, 0.25024077f, -0.96818364f, 0.0f, 0.21982567f,
-0.7893725f, -0.5732083f, 0.07571304f, -0.9971296f, 0.0f, 0.07288012f, -0.768564f, -0.6356083f, 0.011401603f, 0.0f, -0.999935f,
0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0087126205f, -0.99996203f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.012779057f, -0.76441664f,
-0.6445959f, 0.0f, -0.76822126f, -0.6401844f, 0.0f, -0.76822126f, -0.6401844f, 0.0f, 0.76822126f, 0.6401844f, 0.0f, 0.76822126f,
0.6401844f, 0.0f, 0.76822126f, 0.6401844f, -0.009348294f, 0.76747775f, 0.6410074f, -0.07317282f, 0.73539054f, 0.67368126f, -0.2320432f,
0.6365708f, 0.73548186f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.76822126f, -0.6401844f, 0.0f, 0.76822126f, -0.6401844f,
0.0f, 0.76822126f, -0.6401844f, -0.0030446206f, 0.99999535f, 0.0f, -0.044230007f, 0.99902135f, 0.0f, -0.19177821f, 0.9814383f, 0.0f,
-0.2320432f, 0.6365708f, -0.73548186f, -0.009348294f, 0.76747775f, -0.6410074f, -0.07317282f, 0.73539054f, -0.67368126f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, -0.76822126f, 0.6401844f, 0.0f, -0.76822126f, 0.6401844f, 0.0f, -0.76822126f, 0.6401844f,
-0.020870605f, 0.0f, 0.9997822f, -0.1069364f, 0.0f, 0.99426585f, -0.2851421f, 0.0f, 0.95848525f, -0.009348294f, -0.76747775f, 0.6410074f,
-0.07317282f, -0.73539054f, 0.67368126f, -0.2320432f, -0.6365708f, 0.73548186f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -1.0f,
0.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, -0.76822126f, -0.6401844f, 0.0f, -0.76822126f, -0.6401844f, 0.0f, -0.76822126f,
-0.6401844f, -1.0f, 0.0f, -4.363512E-17f, -0.020870605f, 0.0f, -0.9997822f, -0.1069364f, 0.0f, -0.99426585f, -0.2851421f, 0.0f,
-0.95848525f, -0.0030446206f, -0.99999535f, 0.0f, -0.044230007f, -0.99902135f, 0.0f, -0.19177821f, -0.9814383f, 0.0f, -0.2320432f,
-0.6365708f, -0.73548186f, -0.009348294f, -0.76747775f, -0.6410074f, -0.07317282f, -0.73539054f, -0.67368126f);
}
Color[] colorArray = {Color.rgb(0, 45, 255, 1.0),
Color.rgb(0, 81, 255, 1.0),
Color.rgb(0, 194, 255, 1.0),
Color.rgb(0, 255, 101, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 104, 255, 1.0),
Color.rgb(0, 95, 255, 1.0),
Color.rgb(0, 53, 255, 1.0),
Color.rgb(0, 59, 255, 1.0),
Color.rgb(0, 137, 255, 1.0),
Color.rgb(0, 255, 120, 1.0),
Color.rgb(0, 255, 79, 1.0),
Color.rgb(0, 203, 255, 1.0),
Color.rgb(0, 255, 100, 1.0),
Color.rgb(0, 255, 79, 1.0),
Color.rgb(0, 51, 255, 1.0),
Color.rgb(0, 21, 255, 1.0),
Color.rgb(0, 0, 255, 1.0),
Color.rgb(0, 38, 255, 1.0),
Color.rgb(0, 241, 255, 1.0),
Color.rgb(0, 255, 83, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 167, 255, 1.0),
Color.rgb(0, 255, 104, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 148, 255, 1.0),
Color.rgb(0, 65, 255, 1.0),
Color.rgb(0, 35, 255, 1.0),
Color.rgb(0, 61, 255, 1.0),
Color.rgb(0, 52, 255, 1.0),
Color.rgb(0, 7, 255, 1.0),
Color.rgb(0, 15, 255, 1.0),
Color.rgb(0, 248, 255, 1.0),
Color.rgb(0, 255, 83, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 101, 255, 1.0),
Color.rgb(0, 255, 126, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 176, 255, 1.0),
Color.rgb(0, 255, 103, 1.0),
Color.rgb(0, 255, 80, 1.0),
Color.rgb(0, 255, 117, 1.0),
Color.rgb(0, 255, 152, 1.0),
Color.rgb(0, 255, 100, 1.0),
Color.rgb(255, 246, 0, 1.0),
Color.rgb(255, 28, 0, 1.0),
Color.rgb(255, 52, 0, 1.0),
Color.rgb(0, 255, 104, 1.0),
Color.rgb(0, 255, 152, 1.0),
Color.rgb(0, 255, 143, 1.0),
Color.rgb(0, 255, 117, 1.0),
Color.rgb(0, 255, 152, 1.0),
Color.rgb(0, 255, 102, 1.0),
Color.rgb(155, 255, 0, 1.0),
Color.rgb(255, 36, 0, 1.0),
Color.rgb(255, 55, 0, 1.0),
Color.rgb(255, 65, 0, 1.0),
Color.rgb(255, 255, 0, 1.0),
Color.rgb(255, 42, 0, 1.0),
Color.rgb(0, 255, 128, 1.0),
Color.rgb(0, 255, 151, 1.0),
Color.rgb(0, 255, 59, 1.0),
Color.rgb(0, 255, 117, 1.0),
Color.rgb(0, 255, 151, 1.0),
Color.rgb(0, 255, 95, 1.0),
Color.rgb(255, 134, 0, 1.0),
Color.rgb(255, 5, 0, 1.0),
Color.rgb(255, 39, 0, 1.0),
Color.rgb(255, 216, 0, 1.0),
Color.rgb(255, 0, 0, 1.0),
Color.rgb(255, 11, 0, 1.0),
Color.rgb(0, 255, 129, 1.0),
Color.rgb(0, 255, 152, 1.0),
Color.rgb(0, 255, 62, 1.0),
Color.rgb(0, 255, 105, 1.0),
Color.rgb(0, 255, 151, 1.0),
Color.rgb(0, 255, 141, 1.0),
Color.rgb(0, 255, 117, 1.0),
Color.rgb(0, 255, 151, 1.0),
Color.rgb(0, 255, 97, 1.0),
Color.rgb(255, 93, 0, 1.0),
Color.rgb(255, 146, 0, 1.0),
Color.rgb(255, 19, 0, 1.0),
Color.rgb(255, 53, 0, 1.0),
Color.rgb(178, 255, 0, 1.0),
Color.rgb(255, 0, 0, 1.0),
Color.rgb(255, 12, 0, 1.0),
Color.rgb(255, 25, 0, 1.0),
Color.rgb(255, 226, 0, 1.0),
Color.rgb(255, 0, 0, 1.0),};
private Image colorPalette(Color[] colors) {
int numColors = colors.length;
int width = (int) Math.sqrt(numColors);
int height = numColors/width;
WritableImage img = new WritableImage(width, height);
PixelWriter pw = img.getPixelWriter();
//float[] colors = buffer.array();
AtomicInteger count = new AtomicInteger();
IntStream.range(0, height).boxed()
.forEach(y -> IntStream.range(0, width).boxed()
.forEach(x -> pw.setColor(x, y, getColor(count))));
// save for testing purposes
try {
ImageIO.write(SwingFXUtils.fromFXImage(img, null), "png", new File("palette" + ".png"));
} catch (IOException ex) {
}
return img;
}
private Color getColor(AtomicInteger count) {
return colorArray[count.getAndIncrement()];
}
private float[] getTextureLocation(int iPoint, int numColors) {
int width = (int) Math.sqrt(numColors);
int height = numColors/width;
int y = iPoint/width;
int x = iPoint - width * y;
float[] textureArray = new float[]{(((float) x)/((float) width)), (((float) y)/((float) height))};
return textureArray;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
Ceci est ma sortie:
et c'est le résultat attendu:
Pourriez-vous poster votre code en modifiant cette question? –
Pouvez-vous également créer un lien vers "l'exemple fourni ici"? – jewelsea
J'ai édité mon post pour ajouter l'exemple de code et le lien vers l'exemple. –