标签: javafx-3d

JavaFX 8 3D场景交叉点

在JavaFX 8 3D场景中是否可以沿着光线(例如PickRay)找到点,从3D空间中的任意点开始,使用一些3D方向向量,其中光线与网格中的三角形相交(MeshView内的TriangleMesh)?

我知道这是在Camera/MouseHandler中完成的,用于鼠标拾取,但我无法看到任何方式为任意光线做这件事.

3d javafx intersection javafx-3d

8
推荐指数
2
解决办法
2308
查看次数

JavaFX在虚拟平面上使用鼠标移动3D对象

当我在JavaFX中创建我的第一个3D游戏时 - 您可以使用鼠标从零件组装船只.这提出了一个问题,因为JAVAFX似乎没有用于将PerspectiveCamera屏幕2D坐标转换为场景3D空间的原生元素.

这是我正在努力实现的目标.鼠标移动的块应在假想的平面上移动,该平面始终相对于摄像机旋转90°: 表示 我试图用三角函数解决问题而没有太大的成功.我没有附加代码片段,因为我正在寻找更通用的数学解决方案,但如果需要,我会提供它.

所有帮助将不胜感激!

期望的结果: 之前

后

3d mouse raycasting javafx-8 javafx-3d

8
推荐指数
1
解决办法
5130
查看次数

在javafx上的三角形网格中着色单个三角形

我在JAVAFX中有一个三角形网格物体,并且想要

  1. 三角形网格的单个三角形颜色

要么

  1. 对每个三角形的各个顶点进行着色,并根据每个顶点的颜色插值(例如,使用Gouraud阴影)对三角形进行着色.

特定的三角形网格物体是一个拥有数百万个面孔的icosphere(这就是我使用三角形网格的原因:我需要速度).

我没有使用纹理坐标,因为我无法使用JAVAFX找到它的明确解释,而且我希望有一种更简单的方法.

geometry javafx mesh colors javafx-3d

6
推荐指数
1
解决办法
4786
查看次数

JavaFX 3D透明度

我正在寻找一种在JavaFX 3D中渲染透明对象的方法.到目前为止,没有.我发现问题https://bugs.openjdk.java.net/browse/JDK-8090548.是否有解决方法或这是我不能使用的东西?如果我需要透明对象,我还需要JavaFX之外的东西(比如Java3D)吗?

3d transparency javafx javafx-3d

6
推荐指数
2
解决办法
3635
查看次数

在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);
Run Code Online (Sandbox Code Playgroud)

并且每次我需要旋转对象时都会执行setAngle().这对于前进和滚动非常有效,直到我决定我也需要投球.现在很多OpenGL等教程都说旋转的matix或四元数最适合这种类型的旋转,但是javadoc缺少任何有用的数据.

示例:当我在y轴上旋转对象180度时会发生什么(实际上应该以透明蓝色旋转) 在此输入图像描述 我错过了什么吗?所有帮助将不胜感激.

java 3d javafx quaternions javafx-3d

6
推荐指数
1
解决办法
4381
查看次数

如何3D打印JavaFX 3D场景?

我一直在JavaFX中研究这个科学应用程序.该程序基本上从算法生成数据,并将它们可视化为相交的球体. 在此输入图像描述

我想3D打印这个模型的一部分(彩色形状).有没有办法导出JavaFX场景?即使这意味着将其导出到.stl或.obj等文件中并导入Blender以进行进一步细化或文件转换.

java 3d javafx blender javafx-3d

6
推荐指数
1
解决办法
325
查看次数

如何为陀螺制作动画?

它是光明节,我正在尝试动画陀螺(dreidel):

陀螺

我可以让它在自己的轴上旋转.这是我的代码:

import static javafx.scene.paint.Color.*;

import javafx.animation.KeyFrame;
import javafx.animation.KeyValue;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.geometry.Point3D;
import javafx.scene.Camera;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.shape.Cylinder;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
import javafx.util.Duration;

public class DreidelAnim extends Application {

    private double bodyBase = 30;
    private double bodyHeight = bodyBase * 3 / 2;
    private double baseRadius = bodyBase / 2;

    @Override
    public void start(Stage stage) throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java animation javafx javafx-8 javafx-3d

6
推荐指数
1
解决办法
305
查看次数

如何在javafx中的球体上绘制文本

我想在javafx中将文本绘制到球体上。

我尝试将其纯粹保留为javafx。我正在使用PerspectiveCamera

一种选择是仅绘制3D文本(如果存在),使其接触球体并与查看者平行以提高可读性。更好的选择是将弯曲的文本直接绘制在球体上,同时也面向观察者。

text javafx javafx-3d

6
推荐指数
2
解决办法
91
查看次数

如何在javafx中对纹理坐标进行动画处理

是否有某种液体表面动画可以通过对 uv 坐标进行动画处理来模拟波浪,如下图所示?这个方法可以在JavaFX框架中重新创建吗?

在此输入图像描述

animation javafx uv-mapping javafx-3d

6
推荐指数
1
解决办法
168
查看次数

在JavaFX中将3D对象鼠标拖动移动限制到一个平面

我正在使用JavaFX通过鼠标拖动来移动3D立方体。立方体应停留在x和z轴所跨的平面上。我的解决方案效果很好,但是,如果我用鼠标将多维数据集移动得太快,或者当它遇到具有特定深度(y轴)的对象时,则假定鼠标在y轴和多维数据集上移动开始向前或向后跳跃。有没有一种方法可以将鼠标限制在xz平面上?一个更复杂的解决方案是将y长度投影回xz平面,但是我不知道该怎么做。我看了看JavaFX Moving 3D Objects,但是无法适应我的情况。

到目前为止,我的代码:

    private volatile double relMousePosX;
    private volatile double relMousePosZ;

    public void enableDragMove(PaneBox paneBox) {
        Group paneBoxGroup = paneBox.get();

        paneBoxGroup.setOnMousePressed((MouseEvent me) -> {
            if(isSelected(paneBox) && MouseButton.PRIMARY.equals(me.getButton())) {
                relMousePosX = me.getX();
                relMousePosZ = me.getZ();
            }
        });

        paneBoxGroup.setOnMouseDragged((MouseEvent me) -> {
            if(paneBoxGroup.focusedProperty().get() && MouseButton.PRIMARY.equals(me.getButton())) {
                setDragInProgress(paneBox, true);
                System.out.println(me.getY()); // should stay small value, but jumps to higher values at times, creating the problem.
                paneBoxGroup.setCursor(Cursor.MOVE);
                paneBox.setTranslateX(paneBox.getTranslateX() + (me.getX() - relMousePosX));
                paneBox.setTranslateZ(paneBox.getTranslateZ() + (me.getZ() - relMousePosZ));
            }
        });

        paneBoxGroup.setOnMouseReleased((MouseEvent …
Run Code Online (Sandbox Code Playgroud)

3d axis javafx drag javafx-3d

5
推荐指数
1
解决办法
1560
查看次数