标签: javafx-3d

JavaFX 8 - 如何在并行相机上设置NearClip和FarClip?

我所在的团队正在构建一个使用 JavaFX 8 3D 操作视觉模型的应用程序。我们同时使用透视相机和平行相机。透视相机按预期工作。目前正在使用isEyeAtCameraZerofalse。这样做是为了最大限度地兼容并行相机。

调用camera.setNearClip()和时,透视相机会正确运行。camera.setFarClip()

并行相机似乎没有响应camera.setNearClip()camera.setFarClip()。并行相机确实执行近距和远距剪切,但我无法更改并行相机剪切范围。

我正在使用基于 JavaFX 8 javadocs 页面上的伪代码的算法来计算传递到和 的Camera值。这似乎适用于透视相机,但不适用于平行相机。camera.setNearClip()camera.setFarClip()

任何人都可以提供有关如何管理并行相机的剪辑范围的建议吗?

3d camera clipping javafx-8 javafx-3d

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

在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
查看次数

如何使用JavaFX在3D形状上播放视频?

我是JavaFX和Java的新手.我想知道如何在立方体或任何多面体的表面上制作场景?我想在任何3D形状的表面上播放视频.我怎么能这样做?

3d video javafx javafx-3d

5
推荐指数
3
解决办法
1934
查看次数

如何在JavaFX中渲染3D文本?

我正在制作我的第一个JavaFX项目,我需要渲染一些3D文本.我已经放置了一个PerspectiveCamera,我显示了一个文本节点,但它的Z维度为0,我不知道如何更改它.

提前致谢!

javafx javafx-8 javafx-3d

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

JavaFX 8 Z缓冲区问题

我的问题是JavaFX 3D中的Z-Buffer,它似乎无法在我的计算机上正常工作。

我知道以下问题: 形状... Z顺序重叠...

但是我确实启用了Z缓冲区,并且仍然按照将节点添加到场景图的顺序来渲染节点。

也许我缺少一些依赖关系或其他东西?

我正在发布代码,希望有人能帮助我。我正在创建一个过渡,使节点在椭圆路径上绕另一个节点移动。

先感谢您!

public class OrbitExp extends Application {
Group root = new Group();
Scene scene = new Scene(root, 800, 600, true, SceneAntialiasing.BALANCED);
PerspectiveCamera camera = new PerspectiveCamera();
@Override
public void start(Stage primaryStage) {
    root.setDepthTest(DepthTest.ENABLE); 
//Tried to set Depthtest explicitly. Assumed maybe it did not inherit:S
    System.out.println(
        "3D supported? " +
        Platform.isSupported(ConditionalFeature.SCENE3D)
    );    // returns true

    System.out.println("root z-buffer: " + root.getDepthTest());
    initCamera();
    Box 
            box1 = new Box(50,50,50),
            box2 = new …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-8 javafx-3d

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

JavaFX 3D Coloring再次面临......

我研究过这个问题,但我仍然没有得到它.下面最短的代码显示了一个Pyramid完全灰色,而我尝试给6 triangles组成pyramid不同的颜色.那么......为什么不出现这些颜色?

请注意,我借用了getTexCoords().addAll(..)该问题的陈述,但显然我仍然做错了.是uv mapping吗?那到底是什么?我看过一个拓扑解释(sphere< - > map),但这与纹理/颜色有什么关系......?

感谢你的帮助 - 迈克尔

public class ColoredPyramid extends Application {
    public void start(Stage primaryStage) {
        Group root = new Group();
        Scene scene = new Scene(root, 200, 200, true);
        primaryStage.setTitle("Colored Pyramid");
        primaryStage.setScene(scene);
        primaryStage.show();

        TriangleMesh colouredPyramid = new TriangleMesh();
        float height = 100;
        float hypotenuse = 150;
        colouredPyramid.getPoints().addAll(0, 0, 0); //0-index:: top
        colouredPyramid.getPoints().addAll(0, height, -hypotenuse / 2); //1-index:: x=0, z=-hyp/2 ==> Closest …
Run Code Online (Sandbox Code Playgroud)

java javafx javafx-3d

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

JavaFX 8作为3D游戏引擎?

我想创建一个MMO 3D游戏,我正在寻找一个3D引擎,我的问题是关于javaFX 8,我可以用它来渲染很多 3D立方体,模型和动画而不会失去性能或者最好使用lwjgl吗?

最后一个问题是:javaFX 8可以用作3D引擎吗?

java javafx 3d-engine javafx-3d

4
推荐指数
1
解决办法
8074
查看次数

JavafX 8 3D Z 顺序。重叠形状行为是错误的。

我有一个 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)

java depth-buffer javafx-8 javafx-3d

4
推荐指数
1
解决办法
1414
查看次数

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

我正在使用JavaFX的JCSG库.

我有一些MeshView对象,我想将它们转换为CSG对象,有没有办法实现这一目标?

java javafx csg javafx-8 javafx-3d

4
推荐指数
1
解决办法
965
查看次数

Javafx 四边形网格

我需要在 javafx 中显示一个四边形网格,每个网格面有 4 个点我已经尝试了 fxyz库中的一些三角形网格示例,但不确定它对四边形如何工作,有人可以帮助指出 javafx 中的四边形网格示例。

javafx javafx-8 javafx-3d

4
推荐指数
1
解决办法
652
查看次数

标签 统计

javafx-3d ×10

javafx ×8

javafx-8 ×6

java ×5

3d ×3

3d-engine ×1

axis ×1

camera ×1

clipping ×1

csg ×1

depth-buffer ×1

drag ×1

video ×1