我要把TriangleMesh的16个立方体加到MeshView上.不知怎么的,立方体的脸看起来有些破损,尽管我遵循了逆时针规则.也许在3D网格中有多个立方体会使立方体看起来破碎? 我的多维数据集代码是一个较大程序中的两个类: 类别Cubes及 类别Chart3DItem

import common.Common;
import entities.Location;
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;

public class Cubes extends TriangleMesh
{   
   public Cubes ()
   {
      float size = 50;
      
      //    /Z
      //   /
      //  /
      // 0 -------->X
      // |
      // |
      // | 
      // Y
 
      int count = Common.getCurrentGame()
            .getVisitedSolarsystemsMap().keySet().size();
      
      float[] allCorners = new float[count*24];
      int index = 0;
      
      for (Location location : Common.getCurrentGame()
            .getVisitedSolarsystemsMap().keySet())
      {
         float deltaX = location.getX().floatValue()*120; // factor is to scale the range [0 to 10} to [0 to 600]
         float deltaY = location.getY().floatValue()*120;
         float deltaZ = location.getZ().floatValue()*120;
         
         float[] corners = new float[]{ 
               // X, Y, Z 
               deltaX,deltaY,deltaZ+size,
               deltaX+size,deltaY,deltaZ+size,
               deltaX,deltaY+size,deltaZ+size,
               deltaX+size,deltaY+size,deltaZ+size,
               deltaX,deltaY,deltaZ,
               deltaX-size,deltaY,deltaZ,
               deltaX,deltaY+size,deltaZ,
               deltaX+size,deltaY+size,deltaZ
                 };
         
         for (int i = 0; i < corners.length; i++)
         {
            allCorners[i+index] = corners[i];
         }
         index += 24;
      }
      
      
      
      // 0--------->1
      // |
      // |
      // |
      // |
      // 1

        float[] textureCoordinateOnImage = new float[]{
              0,0
        };
        
        //    4---------5
        //   /|        /|
        //  / |       / |
        // 0--------->1 |
        // |  6------|--7
        // | /       | /
        // |/        |/
        // 2---------3
        
        int[] allTriangles = new int[count*72];
        index = 0;
        int a = 0;
        for(int i = 0; i < count; i++)
        {
           int triangles[] = new int[]{
                 a+5,0,a+4,0,a+0,0, // top
                 a+5,0,a+0,0,a+1,0, // top
                    
                 a+0,0,a+4,0,a+6,0, // left
                 a+0,0,a+6,0,a+2,0, // left
                    
                 a+1,0,a+0,0,a+2,0, // front
                 a+1,0,a+2,0,a+3,0, // front
                    
                 a+5,0,a+1,0,a+3,0, // right
                 a+5,0,a+3,0,a+7,0, // right
                    
                 a+4,0,a+5,0,a+7,0, // back
                 a+4,0,a+7,0,a+6,0, // back
                    
                 a+3,0,a+2,0,a+6,0, // bottom
                 a+3,0,a+6,0,a+7,0  // bottom
              };
           
           for (int j = 0; j < triangles.length; j++)
           {
              allTriangles[j+index] = triangles[j];
           }
           
           a += 8;
           index += 72;
        }

        this.getPoints().addAll(allCorners);
        this.getTexCoords().addAll(textureCoordinateOnImage);
        this.getFaces().addAll(allTriangles);
   }
   
   public static MeshView getSolarsystems()
   {
      MeshView cube = new MeshView(new Cubes());
      cube.setDrawMode(DrawMode.FILL);
      PhongMaterial material = new PhongMaterial();
      material.setSpecularColor(Color.ORANGE);
      cube.setMaterial(material);
      return cube;
   }
}

import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.PointLight;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.MeshView;
import javafx.scene.transform.Rotate;
import scences.Cubes;

public class Chart3DItem extends StackPane
{
   private Group group = new Group();
   private SubScene scene3d;
   
   public Chart3DItem()
   {
      initContent();
   }

   private void initContent()
   {
      this.setAlignment(Pos.CENTER);
      this.getStyleClass().add("solarsystem-pane");
      this.setPrefHeight(600.0);
      this.setMinHeight(600.0);
      this.setMaxHeight(600.0);
      this.setPrefWidth(600.0);
      this.setMinWidth(600.0);
      this.setMaxWidth(600.0);
      
      this.getChildren().add(new PointLight());
      PerspectiveCamera camera = new PerspectiveCamera();
      camera.setTranslateZ(-2000);
      this.getChildren().add(camera);
      
      scene3d = new SubScene(group, 600, 600, true, SceneAntialiasing.DISABLED);
      scene3d.setCamera(camera);
      this.getChildren().add(scene3d);
   }

   public void update()
   {
      group.getChildren().clear();
      MeshView view = Cubes.getSolarsystems();
      group.getChildren().add(view);
      this.setOnMouseDragged(event -> {
         Rotate rotX = new Rotate(event.getX()/1000f);
         rotX.axisProperty().set(Rotate.X_AXIS);
         view.getTransforms().add(0,rotX);
         Rotate rotY = new Rotate(event.getY()/1000f);
         rotY.axisProperty().set(Rotate.Y_AXIS);
         view.getTransforms().add(1,rotY);
         /*Rotate rotZ = new Rotate(event.getZ()/1000f);
         rotZ.axisProperty().set(Rotate.Z_AXIS);
         view.getTransforms().add(rotZ);*/
      });
   }
}

broken cube faces

代表3D网格中的15个太阳系和1个宇宙飞船的16个立方体被添加到一个组中,该组被添加到子场景中,子场景被添加到StackPane(在程序中作为 node 添加到菜单项中).

在菜单项中可以看到破碎的立方体.此外,它们还显示为黑白,尽管我 Select 将Color.ORANGE添加到PhongMaterial.

欢迎所有的 idea .我用谷歌搜索了互联网,但没有发现一个网格中有多个立方体并失go colored颜色 的问题.

推荐答案

有一个小减号,而不是+加号.

float[] corners = new float[]{ 
           // X, Y, Z 
           deltaX,deltaY,deltaZ+size,
           deltaX+size,deltaY,deltaZ+size,
           deltaX,deltaY+size,deltaZ+size,
           deltaX+size,deltaY+size,deltaZ+size,
           deltaX,deltaY,deltaZ,
           deltaX+size,deltaY,deltaZ,
           deltaX,deltaY+size,deltaZ,
           deltaX+size,deltaY+size,deltaZ
             };

现在显示正确.

要获得橙色,需要设置扩散 colored颜色 .

 public static MeshView getSolarsystems()
 {
  MeshView cube = new MeshView(new Cubes());
  cube.setDrawMode(DrawMode.FILL);
  PhongMaterial material = new PhongMaterial();
  material.setDiffuseColor(Color.ORANGE);
  cube.setMaterial(material);
  return cube;
 }

我还修正了轮换.因此,我发布了类Chart3DItem.

import javafx.geometry.Pos;
import javafx.scene.AmbientLight;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.layout.StackPane;
import javafx.scene.shape.MeshView;
import javafx.scene.transform.Rotate;
import scences.Cubes;

public class Chart3DItem extends StackPane
{
   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 final double VIEWPORT_SIZE = 600;

   private Group group = new Group();
   private SubScene scene3d;

   public Chart3DItem()
   {
      initContent();
   }

   private void initContent()
   {
      this.setAlignment(Pos.CENTER);
      this.getStyleClass().add("chart3d-pane");
      this.setPrefHeight(600.0);
      this.setMinHeight(600.0);
      this.setMaxHeight(600.0);
      this.setPrefWidth(600.0);
      this.setMinWidth(600.0);
      this.setMaxWidth(600.0);
  
      this.getChildren().add(new AmbientLight());
      PerspectiveCamera camera = new PerspectiveCamera();
      camera.setTranslateZ(-300);
      this.getChildren().add(camera);
  
      scene3d = new SubScene(group, VIEWPORT_SIZE, VIEWPORT_SIZE, true, SceneAntialiasing.BALANCED);
      scene3d.setCamera(camera);
      this.getChildren().add(scene3d);
   }

   public void update()
   {
      group.getChildren().clear();
  
      MeshView view = Cubes.getSolarsystems();
      view.setTranslateX(VIEWPORT_SIZE / 2);
      view.setTranslateY(VIEWPORT_SIZE / 2);
      view.setTranslateZ(VIEWPORT_SIZE / 2);
      view.getTransforms().add(0,rotateX);
      view.getTransforms().add(1,rotateY);
      view.getTransforms().add(2,rotateZ);
      group.getChildren().add(view);
  
      rotateX.setPivotX(VIEWPORT_SIZE / 2);
      rotateX.setPivotY(VIEWPORT_SIZE / 2);
      rotateX.setPivotZ(VIEWPORT_SIZE / 2);

      rotateY.setPivotX(VIEWPORT_SIZE / 2);
      rotateY.setPivotY(VIEWPORT_SIZE / 2);
      rotateY.setPivotZ(VIEWPORT_SIZE / 2);

      rotateZ.setPivotX(VIEWPORT_SIZE / 2);
      rotateZ.setPivotY(VIEWPORT_SIZE / 2);
      rotateZ.setPivotZ(VIEWPORT_SIZE / 2);
  
      this.setOnMousePressed(event -> {
         mouseOldX = event.getSceneX();
         mouseOldY = event.getSceneY();
      });
  
      this.setOnMouseDragged(event -> {
         rotateX.setAngle(rotateX.getAngle() - (event.getSceneY() - mouseOldY));
         rotateY.setAngle(rotateY.getAngle() + (event.getSceneX() - mouseOldX));
         mouseOldX = event.getSceneX();
         mouseOldY = event.getSceneY();
      });
   }
}

The result so far: 16 cubes plus axis

如你所见,我添加了轴,它们也是立方体.因此,这里再来一次立方体类:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import business.Solarsystem;
import common.Common;
import javafx.scene.image.Image;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.MeshView;
import javafx.scene.shape.TriangleMesh;
import resources.images.Images;

public class Cubes extends TriangleMesh
{   
   public Cubes ()
   {
      float size = 50;
  
      //    /Z
      //   /
      //  /
      // 0 -------->X
      // |
      // |
      // | 
      // Y
  
      //    0---------1
      //   /|        /|
      //  / |       / |
      // 4--------->5 |
      // |  2------|--3
      // | /       | /
      // |/        |/
      // 6---------7

      int count = Common.getCurrentGame().getAllSolarsystemsList().size();
  
      float[] allCorners = new float[(count+4)*24]; // +1 for spaceship cube +3 for grid cubes
      int index = 0;
  
      ArrayList<Solarsystem> systems = Common.getCurrentGame().getAllSolarsystemsList();
      Collections.sort(systems, new Comparator<business.Solarsystem>() {
         @Override
         public int compare(business.Solarsystem system1, business.Solarsystem system2)
         {
             return  system2.getName().compareTo(system1.getName());
         }
     });
  
      for (Solarsystem system : systems)
      {
         float deltaX = system.getLocation().getX().floatValue()*60; // factor is to scale the range [0 to 10} to [0 to 600]
         float deltaY = system.getLocation().getY().floatValue()*60;
         float deltaZ = system.getLocation().getZ().floatValue()*60;
     
         float[] corners = new float[]{ 
               // X, Y, Z 
               deltaX,deltaY,deltaZ+size,               // 0
               deltaX+size,deltaY,deltaZ+size,          // 1
               deltaX,deltaY+size,deltaZ+size,          // 2
               deltaX+size,deltaY+size,deltaZ+size,     // 3
               deltaX,deltaY,deltaZ,                    // 4
               deltaX+size,deltaY,deltaZ,               // 5
               deltaX,deltaY+size,deltaZ,               // 6
               deltaX+size,deltaY+size,deltaZ           // 7
                 };
     
         for (int i = 0; i < corners.length; i++)
         {
            allCorners[i+index] = corners[i];
         }
         index += 24;
      }
  
      float deltaX = Common.getCurrentGame().getCurrentSpaceship().getLocation().getX().floatValue()*60;
      float deltaY = Common.getCurrentGame().getCurrentSpaceship().getLocation().getY().floatValue()*60;
      float deltaZ = Common.getCurrentGame().getCurrentSpaceship().getLocation().getZ().floatValue()*60;
  
      float[] corners = new float[]{ 
            // X, Y, Z 
            deltaX,deltaY,deltaZ+size,               // 0
            deltaX+size,deltaY,deltaZ+size,          // 1
            deltaX,deltaY+size,deltaZ+size,          // 2
            deltaX+size,deltaY+size,deltaZ+size,     // 3
            deltaX,deltaY,deltaZ,                    // 4
            deltaX+size,deltaY,deltaZ,               // 5
            deltaX,deltaY+size,deltaZ,               // 6
            deltaX+size,deltaY+size,deltaZ           // 7
              };
  
      for (int i = 0; i < corners.length; i++)
      {
         allCorners[i+index] = corners[i];
      }
  
      index += 24;
      deltaX = 0.0f;
      deltaY = 5.0f*60;
      deltaZ = 5.0f*60;
      size = 5.0f;
  
      corners = new float[]{ 
            // X, Y, Z 
            deltaX,deltaY,deltaZ+size,               // 0
            deltaX+600f,deltaY,deltaZ+size,          // 1
            deltaX,deltaY+size,deltaZ+size,          // 2
            deltaX+600f,deltaY+size,deltaZ+size,     // 3
            deltaX,deltaY,deltaZ,                    // 4
            deltaX+600f,deltaY,deltaZ,               // 5
            deltaX,deltaY+size,deltaZ,               // 6
            deltaX+600f,deltaY+size,deltaZ           // 7
              };
  
      for (int i = 0; i < corners.length; i++)
      {
         allCorners[i+index] = corners[i];
      }
  
      index += 24;
      deltaX = 5.0f*60;
      deltaY = 0.0f;
      deltaZ = 5.0f*60;
      size = 5.0f;
  
      corners = new float[]{ 
            // X, Y, Z 
            deltaX,deltaY,deltaZ+size,               // 0
            deltaX+size,deltaY,deltaZ+size,          // 1
            deltaX,deltaY+600f,deltaZ+size,          // 2
            deltaX+size,deltaY+600f,deltaZ+size,     // 3
            deltaX,deltaY,deltaZ,                    // 4
            deltaX+size,deltaY,deltaZ,               // 5
            deltaX,deltaY+600f,deltaZ,               // 6
            deltaX+size,deltaY+600f,deltaZ           // 7
              };
  
      for (int i = 0; i < corners.length; i++)
      {
         allCorners[i+index] = corners[i];
      }
  
      index += 24;
      deltaX = 5.0f*60;
      deltaY = 5.0f*60;
      deltaZ = 0.0f;
      size = 5.0f;
  
      corners = new float[]{ 
            // X, Y, Z 
            deltaX,deltaY,deltaZ+600f,               // 0
            deltaX+size,deltaY,deltaZ+600f,          // 1
            deltaX,deltaY+size,deltaZ+600f,          // 2
            deltaX+size,deltaY+size,deltaZ+600f,     // 3
            deltaX,deltaY,deltaZ,                    // 4
            deltaX+size,deltaY,deltaZ,               // 5
            deltaX,deltaY+size,deltaZ,               // 6
            deltaX+size,deltaY+size,deltaZ           // 7
              };
  
      for (int i = 0; i < corners.length; i++)
      {
         allCorners[i+index] = corners[i];
      }
  
  
      // 0--------->1
      // |
      // |
      // |
      // |
      // 1
  
       int[][] textureNumbers = new int[][] {
            {0,1,2},
            {3,4,5},
            {6,7,8},
            {9,10,11},
        
            {12,13,14},
            {15,16,17},
        {18,19,20},
        {21,22,23},
        
        {24,25,26},
        {27,28,29},
        {30,31,32},
        {33,34,35},
        
        {36,37,38},
        {39,40,41},
        {42,43,44},
        {45,46,47},
        
        {48,49,50},
        {51,52,53},
        {54,55,56}
  };

    float[] textureCoordinateOnImage = new float[]{
          // sort backwards also
          
          0.5f,0.75f,      // 42
          0.75f,0.75f,     // 43
          0.5f,1,          // 44 => 42,43,44 light violet Zells
          
          0.25f,0.75f,     // 39
          0.5f,0.75f,      // 40
          0.25f,1,         // 41 => 39,40,41 dark violet Xoquam
          
          0,0.75f,         // 36
          0.25f,0.75f,     // 37
          0,1f,            // 38 => 36,37,38 dark brown Treblar
          
          0.75f,0.5f,      // 33
          1,0.5f,          // 34
          0.75f,0.75f,     // 35 => 33,34,35 medium brown Singuis
          
          0.5f,0.5f,       // 30
          0.75f,0.5f,      // 31
          0.5f,0.75f,      // 32 => 30,31,32 light brown Razor
          
          0.25f,0.5f,      // 27
          0.5f,0.5f,       // 28
          0.25f,0.75f,     // 29 => 27,28,29 turquoise Pot
          
          0,0.5f,          // 24
          0.25f,0.5f,      // 25
          0,0.75f,         // 26 => 24,25,26 dark blue Olam
          
          0.75f,0.25f,      // 21
          1,0.25f,          // 22
          0.75f,0.5f,       // 23 => 21,22,23 light blue Meichu
          
          0.5f,0.25f,       // 18
          0.75f,0.25f,      // 19
          0.5f,0.5f,        // 20 => 18,19,20 dark green Kantell
          
          0.25f,0.25f,      // 15
          0.5f,0.25f,       // 16
          0.25f,0.5f,       // 17 => 15,16,17 light green Irisa
          
          0,0.25f,          // 12
          0.25f,0.25f,      // 13
          0,0.5f,           // 14 => 12,13,14 dark red Holm
          
          0.75f,0,          // 9
          1,0,              // 10
          0.75f,0.25f,      // 11 => 9,10,11 pink Fantus
          
          0.5f,0,           // 6
          0.75f,0,          // 7
          0.5f,0.25f,       // 8 => 6,7,8 light red Dora
          
          0.25f,0,          // 3
          0.5f,0,           // 4
          0.25f,0.25f,      // 5 => 3,4,5 orange Bini
          
          0,0,              // 0
          0.25f,0,          // 1
          0,0.25f,          // 2 => 0,1,2 yellow Aglena
          
          0.75f,0.75f,      // 45
          1,0.75f,          // 46
          0.75f,1,          // 47 => 45,46,47 white Spaceship
          
          0.75f,0.75f,      // 48
          1,0.75f,          // 49
          0.75f,1,          // 50 => 48,49,50 white axis
          
          0.75f,0.75f,      // 51
          1,0.75f,          // 52
          0.75f,1,          // 53 => 51,52,53 white axis
          
          0.75f,0.75f,      // 54
          1,0.75f,          // 55
          0.75f,1          // 56 => 54,55,56 white axis
    };
    
    //    3---------2
    //   /|        /|
    //  / |       / |
    // 0--------->1 |
    // |  7------|--6
    // | /       | /
    // |/        |/
    // 4---------5
    
    int[] allTriangles = new int[(count+4)*72];
    index = 0;
    int a = 0;
    for(int i = 0; i < count; i++)
    {
       int[]t = textureNumbers[i];
       int triangles[] = new int[]{
             a+5,t[0],a+4,t[1],a+0,t[2], // top
             a+5,t[0],a+0,t[1],a+1,t[2], // top
                
             a+0,t[0],a+4,t[1],a+6,t[2], // left
             a+0,t[0],a+6,t[1],a+2,t[2], // left
                
             a+1,t[0],a+0,t[1],a+2,t[2], // front
             a+1,t[0],a+2,t[1],a+3,t[2], // front
                
             a+5,t[0],a+1,t[1],a+3,t[2], // right
             a+5,t[0],a+3,t[1],a+7,t[2], // right
                
             a+4,t[0],a+5,t[1],a+7,t[2], // back
             a+4,t[0],a+7,t[1],a+6,t[2], // back
                
             a+3,t[0],a+2,t[1],a+6,t[2], // bottom
             a+3,t[0],a+6,t[1],a+7,t[2]  // bottom
          };
       
       for (int j = 0; j < triangles.length; j++)
       {
          allTriangles[j+index] = triangles[j];
       }
       
       a += 8;
       index += 72;
    }
    
    // spaceship
    int[]t = textureNumbers[count];
    int triangles[] = new int[]{
          a+5,t[0],a+4,t[1],a+0,t[2], // top
          a+5,t[0],a+0,t[1],a+1,t[2], // top
             
          a+0,t[0],a+4,t[1],a+6,t[2], // left
          a+0,t[0],a+6,t[1],a+2,t[2], // left
             
          a+1,t[0],a+0,t[1],a+2,t[2], // front
          a+1,t[0],a+2,t[1],a+3,t[2], // front
             
          a+5,t[0],a+1,t[1],a+3,t[2], // right
          a+5,t[0],a+3,t[1],a+7,t[2], // right
             
          a+4,t[0],a+5,t[1],a+7,t[2], // back
          a+4,t[0],a+7,t[1],a+6,t[2], // back
             
          a+3,t[0],a+2,t[1],a+6,t[2], // bottom
          a+3,t[0],a+6,t[1],a+7,t[2]  // bottom
       };
    
    for (int j = 0; j < triangles.length; j++)
    {
       allTriangles[j+index] = triangles[j];
    }
    
    a += 8;
    index += 72;
    t = textureNumbers[count+1];
    // axis
    triangles = new int[]{
          a+5,t[0],a+4,t[1],a+0,t[2], // top
          a+5,t[0],a+0,t[1],a+1,t[2], // top
             
          a+0,t[0],a+4,t[1],a+6,t[2], // left
          a+0,t[0],a+6,t[1],a+2,t[2], // left
             
          a+1,t[0],a+0,t[1],a+2,t[2], // front
          a+1,t[0],a+2,t[1],a+3,t[2], // front
             
          a+5,t[0],a+1,t[1],a+3,t[2], // right
          a+5,t[0],a+3,t[1],a+7,t[2], // right
             
          a+4,t[0],a+5,t[1],a+7,t[2], // back
          a+4,t[0],a+7,t[1],a+6,t[2], // back
             
          a+3,t[0],a+2,t[1],a+6,t[2], // bottom
          a+3,t[0],a+6,t[1],a+7,t[2]  // bottom
       };
    for (int j = 0; j < triangles.length; j++)
    {
       allTriangles[j+index] = triangles[j];
    }
    
    a += 8;
    index += 72;
    t = textureNumbers[count+2];
    // axis
    triangles = new int[]{
          a+5,t[0],a+4,t[1],a+0,t[2], // top
          a+5,t[0],a+0,t[1],a+1,t[2], // top
             
          a+0,t[0],a+4,t[1],a+6,t[2], // left
          a+0,t[0],a+6,t[1],a+2,t[2], // left
             
          a+1,t[0],a+0,t[1],a+2,t[2], // front
          a+1,t[0],a+2,t[1],a+3,t[2], // front
             
          a+5,t[0],a+1,t[1],a+3,t[2], // right
          a+5,t[0],a+3,t[1],a+7,t[2], // right
             
          a+4,t[0],a+5,t[1],a+7,t[2], // back
          a+4,t[0],a+7,t[1],a+6,t[2], // back
             
          a+3,t[0],a+2,t[1],a+6,t[2], // bottom
          a+3,t[0],a+6,t[1],a+7,t[2]  // bottom
       };
    for (int j = 0; j < triangles.length; j++)
    {
       allTriangles[j+index] = triangles[j];
    }
    
    a += 8;
    index += 72;
    t = textureNumbers[count+3];
    // axis
    triangles = new int[]{
          a+5,t[0],a+4,t[1],a+0,t[2], // top
          a+5,t[0],a+0,t[1],a+1,t[2], // top
             
          a+0,t[0],a+4,t[1],a+6,t[2], // left
          a+0,t[0],a+6,t[1],a+2,t[2], // left
             
          a+1,t[0],a+0,t[1],a+2,t[2], // front
          a+1,t[0],a+2,t[1],a+3,t[2], // front
             
          a+5,t[0],a+1,t[1],a+3,t[2], // right
          a+5,t[0],a+3,t[1],a+7,t[2], // right
             
          a+4,t[0],a+5,t[1],a+7,t[2], // back
          a+4,t[0],a+7,t[1],a+6,t[2], // back
             
          a+3,t[0],a+2,t[1],a+6,t[2], // bottom
          a+3,t[0],a+6,t[1],a+7,t[2]  // bottom
       };
    for (int j = 0; j < triangles.length; j++)
    {
       allTriangles[j+index] = triangles[j];
    }
    

    this.getPoints().addAll(allCorners);
    this.getTexCoords().addAll(textureCoordinateOnImage);
    this.getFaces().addAll(allTriangles);
    
    
this.getFaceSmoothingGroups().addAll(0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,0,0);
   }

  public static MeshView getSolarsystems()
  {
     MeshView cube = new MeshView(new Cubes());
     cube.setDrawMode(DrawMode.FILL);
      PhongMaterial material = new PhongMaterial();
      material.setDiffuseMap(new Image(
        
Images.class.getResource("colors.png").toExternalForm()));
      cube.setMaterial(material);
      return cube;
   }

}

Java相关问答推荐

如何在Spring Security中设置CustomLogin路径?

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

当切换javaFX场景时,stage的大小正在Minimize

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

对运行在GraalVM-21上的JavaFX应用程序使用分代ZGC会警告不支持JVMCI,为什么?

滚动视图&不能在alert 对话框中工作(&Q;&Q;)

使用Testcontainers与OpenLiberty Server进行集成测试会抛出SocketException

无法初始化JPA实体管理器工厂:无法确定为Java类型<;类>;推荐的JdbcType

格式中的特定回录键-值对

在Eclipse中数组的可空性

垃圾收集时间长,会丢弃网络连接,但不会在Kubernetes中反弹Pod

S数学.exp的相同错误保证也适用于StrictMath.exp吗?

如何制作回文程序?

OAuth:登录后无法查看Google邮箱地址

Java 17与Java 8双重表示法

ResponseEntity.控制器截断响应的JSON部分

如何调查进程列表中不可见的活跃 MySQL 事务?

将在 Docker 中运行的 Spring Boot 连接到在 Docker 中运行的 PostgreSQL,无需 compose 文件?

更新不可变的深层嵌套字段