我有一个 JavaFX 3D 场景,在随机位置添加了一堆盒子和球体。似乎深度顺序都是错误的,我不知道为什么。我曾尝试使用 myNode.setDepthTest(DepthTest.ENABLE) 但这似乎没有帮助。我附上了一个应用程序,它应该可以证明这个问题。
知道我在这里可能做错了什么吗?非常感谢任何帮助。
import javafx.application.Application;
import javafx.application.ConditionalFeature;
import javafx.application.Platform;
import javafx.event.EventHandler;
import javafx.scene.DepthTest;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SubScene;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.ScrollEvent;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.shape.Shape3D;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class Array3DTest extends Application {
double mousePosX;
double mousePosY;
double mouseOldX;
double mouseOldY;
double mouseDeltaX;
double mouseDeltaY;
/**
* This is the group which rotates
*/
Group root3D;
/**
* The camnera to
*/ …Run Code Online (Sandbox Code Playgroud) 简而言之 - 我有2个旋转矩形.在旋转时(通过Y轴)它们应该相互重叠 - 不幸的是,尽管旋转180度,但是其中一个ractangles"总是在前面".如何解决这种行为?它似乎与whitch矩形中的顺序相关,并且已添加到组中.最后添加的那个总是在前面.
现场:
package drawing.scene;
import javafx.application.Application;
import javafx.geometry.Point3D;
import javafx.scene.Camera;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import drawing.objects.Clock;
import drawing.objects.Cube;
public class MyScene extends Application {
private int sceneEdgeSize = 800;
private int clolcSize = 400;
@Override
public void start(Stage primaryStage) throws Exception {
Group g = new Group();
g.setTranslateX((sceneEdgeSize - clolcSize) / 2f);
g.setTranslateY((sceneEdgeSize - clolcSize) / 2f);
final Cube c = new Cube(clolcSize);
g.getChildren().add(c);
Thread t = new Thread(new Runnable() …Run Code Online (Sandbox Code Playgroud) 我试图制作一个魔方,但javafx最终得到了一个非常糟糕的模型,如图所示。我给出了我的代码源代码,其中我使用RectangleBuilder类来创建矩形并在 3d 中进行转换。为了修复图形,我还尝试构建使用TriangleMesh类的矩形,并在向它们添加材质后,将它们转换为 3D,最终再次出现相同的糟糕图形。为什么会出现这种情况以及如何消除它?
import javafx.scene.transform.Rotate;
import javafx.scene.PerspectiveCamera;
import javafx.scene.transform.Translate;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.animation.Animation;
import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.SceneAntialiasing;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.RectangleBuilder;
import javafx.scene.transform.Rotate;
import javafx.util.Duration;
public class NewFXMain1 extends Application {
public class Cube extends Group {
final Rotate rx = new Rotate(0,Rotate.X_AXIS);
final Rotate ry = new Rotate(0,Rotate.Y_AXIS);
final Rotate rz = …Run Code Online (Sandbox Code Playgroud)