我有一个 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) 我需要在 javafx 中显示一个四边形网格,每个网格面有 4 个点我已经尝试了 fxyz库中的一些三角形网格示例,但不确定它对四边形如何工作,有人可以帮助指出 javafx 中的四边形网格示例。
我需要创建这个形状。我了解如何创建简单的形状,例如立方体,但我完全不了解如何创建这样的形状。如何获得这些数组的正确点?请帮忙
TriangleMesh mesh = new TriangleMesh();
mesh.getPoints().addAll(
0, 0, 0,//P1
0,0,100,//P2
0,20,100,//P3
60,20,100,//P4
60,0,100,//P5
60,20,60,//P6
60,0,60,//P7
40,0,60,//P8
40,20,60,//P9
40,20,0,//P10
40,0,0,//P11
0,20,0//P12
);
mesh.getTexCoords().addAll(
//which points should be here?
);
mesh.getFaces().addAll(
// which points should be here?
);
return mesh;
Run Code Online (Sandbox Code Playgroud)
`
有没有办法像搅拌机一样在 3D 表面上绘制 3D 纹理?
有没有办法执行布尔运算,如联合,交叉和JavaFX 3D对象之间的差异,例如,在Sphere实例,Cylinder实例和Box实例之间.
从Shape类继承的JavaFX 2D对象已经有了union()和subtract()方法 http://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Shape.html
我想知道JavaFX或F(X)yz库中的Shape3D对象是否有这样的东西.如果不是,我很想知道实施这些操作的最佳方法.
亲切的问候,
是否可以在JavaFX中创建与Google地图中的photoshpere类似的光球?如果有,怎么样?
我的目标是玩骰子游戏。我正在使用 javafx。
第一个问题:有没有一种简单的方法可以在 javafx.ini 中自定义 3d 框?如果我必须在模具的每一面添加一个图像,或者我是否只使用一个环绕盒子的图像,这对我来说并不重要。(经过大量研究,我没有找到任何相关信息。)
在下面的代码中,我创建了一个堆栈窗格,它是一个 3d 立方体。它由 6 个矩形构成,每个矩形都填充了骰子的一侧(1 到 6)。如果我将堆栈窗格旋转 180 度,则应该在前景中的矩形在背景中,而在前面的矩形再次可见。
第二个问题: 如何解决这个问题?
或者有没有更好的方法来实现这一点?起初我正在考虑使用 TriangleMesh,但它似乎和我的版本一样复杂。
@FXML
private StackPane stack;
@Override
public void initialize(URL url, ResourceBundle rb) {
...
//other code
for (int i = 1; i < 7; i++){
Rectangle rt = getRectangle(i);
rt.setSmooth(true);
stack.getChildren().add(rt);
switch(i) {
case 1:
rt.setTranslateZ(100);
break;
case 2:
rt.getTransforms().add(new Rotate(270, 50,50,0,Rotate.X_AXIS));
rt.setTranslateZ(100*0.5);
rt.setHeight(100);
rt.setTranslateY(100*0.5);
break;
case 3:
rt.setTranslateZ(100*0.5);
rt.getTransforms().add(new Rotate(90, 50, 50, 0, Rotate.Y_AXIS));
rt.setWidth(100);
rt.setTranslateX(-(100*0.5-1));
break;
case 4: …Run Code Online (Sandbox Code Playgroud) 我在JavaFX中有一个3D场景,需要在3D场景上叠加GUI.我尝试将按钮和文本添加到场景中,但它们总是作为3D对象出现在3d视图中.我环顾四周,还没找到怎么做.唯一的解决方法是创建一个全新的窗口并将设置放在那里,但在这种情况下这不是一个选项.谢谢您的帮助!!
请忍受我的长期问题,我想尽可能清楚.(如另一个问题所示.)
在下面的示例中,所有旋转按钮都是来自陀螺仪传感器的陀螺仪值的测试替代品.传感器固定在现实世界的躯干上,因此按钮用于表示相对于躯干坐标系而不是场景坐标系应用于虚拟躯干的旋转增量.
如果从"零"旋转开始,所有按钮都能正常工作.但是当我按下3次偏航然后滚动时,我看到滚动旋转在场景轴上工作.但我想将其应用于当前的躯干旋转.
我已经从这里尝试了几个相关问题的建议,但没有找到解决方案.
旁注:我不确定偏航,俯仰和滚转这两个术语是否通常都与欧拉角有关,所以我想强调一下,根据我的理解,陀螺仪传感器的值不是欧拉角,因为它们代表相对于旋转角的旋转角度.当前的躯干旋转,而不是躯干起始点的"绝对"累积角度.因此,如果我不恰当地使用这些术语,请尝试理解我的意思.
(背景信息:我有一个机器人项目roboshock.de,陀螺仪传感器连接到机器人躯干,我想在屏幕上看到机器人的旋转.下面示例中的旋转按钮只是测试的替代品.来自传感器的陀螺仪值.)
任何帮助深表感谢.
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
public class PuppetTestApp extends Application {
int width = 800;
int height = 500;
XGroup torsoGroup;
double torsoX = 50;
double torsoY = 80;
public Parent createRobot() {
Box torso = new Box(torsoX, torsoY, 20);
torso.setMaterial(new PhongMaterial(Color.RED));
Box head = new Box(20, 20, 20);
head.setMaterial(new …Run Code Online (Sandbox Code Playgroud) 我有一个程序,该程序生成一个高度图(0到255之间的2D整数数组),并使用Shape3D“ Box”对象为每个“像素”建立一个3D视图,其高度与其在高度图中的值成比例。这将创建一个看上去很酷的四方形外观。我的程序还创建了一个相应的“颜色图”,以映射地形中每个框应具有的颜色。
我还希望能够将此高度图转换为可以使用颜色图进行纹理处理的网格。
2D高度和颜色图

从高度图和颜色图创建的彩色三角形网格

(这些是我从Google抓取的图片)