Tag: javafx 3d

如何正确渲染3D图形

我试图在javafx制作一个rubiks立方体,结果是这个图像中给出的非常糟糕的模型。 我正在为此提供代码源代码,我使用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 […]

如何使用JavaFX中的JCSG库将MeshView转换为CSG对象

我正在使用JavaFX的JCSG库。 我有一些MeshView对象,我想将它们转换为CSG对象,有没有办法实现这一点?

如何在JavaFX中将GUI叠加在3D场景上?

我在JavaFX中有一个3D场景,需要在3D场景上叠加GUI。 我尝试将按钮和文本添加到场景中,但它们总是作为3D对象出现在3d视图中。 我环顾四周,还没找到怎么做。 唯一的解决方法是创建一个全新的窗口并将设置放在那里但在这种情况下不是一个选项。 谢谢您的帮助!! 像这样的东西 或这个

如何使用两种颜色填充JavaFX Sphere

如何使用像2d Circle一样的线性渐变来填充JavaFX 3D球体? 我使用JavaFX Scene Builder。

如何在框的每个面添加文本

我创建了一个可以旋转的框,以及在点击时会做什么〜某些动作〜 我遇到的问题是在这个盒子的所有面上显示文字,例如; 正面1个,顶部2个,背面3个,底部4个,左侧5个,右侧6个。 我知道StackPane可以用来覆盖多维数据集顶部的文本框,但我不认为这在这种情况下真的有用。 由于box本质上是一个预构建的TriangleMesh,这可能吗? 就目前所见,box没有任何内置function来执行此操作。 static double mousePosX; static double mousePosY; static double mouseOldX; static double mouseOldY; public static Scene testScene(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, stage.getWidth(), stage.getHeight(), true, SceneAntialiasing.BALANCED); scene.setFill(Paint.valueOf(“Blue”)); PerspectiveCamera camera = new PerspectiveCamera(true); camera.setNearClip(0.1); camera.setFarClip(10000.0); camera.setTranslateZ(-10); scene.setCamera(camera); Box box = new Box(1,1,1); box.setOnMouseClicked(e -> […]

JavaFX 2D文本与3D场景中的背景

对于我的项目,我需要3D场景中的2D文本(而不是叠加!)。 所以我尝试将带有Label / Text节点的BorderPane添加到我的场景中: 然而问题是,当我用相机放大,缩小或飞行时,面板的白色背景有时与标签重叠(它们显然具有相同的深度)。 有没有办法从其面板“提升”标签? 我试过设置setDepthTest(true); 没有效果。 这是一个显示问题的简单示例。 Xform类来自Oracle的分子样本( http://docs.oracle.com/javase/8/javafx/graphics-tutorial/sampleapp3d-code.htm#CJAGGIFG ): package mypackage; import mypackage.Xform; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.PerspectiveCamera; import javafx.scene.Scene; import javafx.scene.SceneAntialiasing; import javafx.scene.layout.BorderPane; import javafx.scene.paint.Color; import javafx.scene.text.Text; import javafx.stage.Stage; public class Example extends Application { private Stage primaryStage; private final Group root = new Group(); @Override public void start(Stage primaryStage) […]

在JavaFX中正确旋转3轴上的3D对象

所以到目前为止我用来在JavaFX中旋转对象的方法是我将它分成3组,每组都附加一个Rotate并锁定到单个轴,如下所示: Rotate heading, roll, pitch; Group normalrotate, rollrotate, verticalrotate; heading.setAxis(new Point3D(0,1,0)); normalrotate.getTransforms().add(heading); roll.setAxis(new Point3D(0,0,1)); rollrotate.getTransforms().add(roll); pitch.setAxis(new Point3D(1,0,0)); verticalrotate.getTransforms().add(pitch); 并且每次我需要旋转对象时都会执行setAngle()。 这对于前进和滚动非常有效,直到我决定我也需要投球。 现在很多OpenGL等教程都说旋转的matix或四元数最适合这种类型的旋转,但javadoc缺乏任何有用的数据。 示例:当我在y轴上旋转对象180度时会发生什么(实际上应该以透明蓝色旋转) 我错过了什么吗? 所有帮助将不胜感激。