相关疑难解决方法(0)

为什么漫反射贴图不适用于我的 MeshView?

问题

我想将漫反射贴图应用于 MeshView。当我将带有漫反射贴图的材质应用到 MeshView 时,它不可见。然而,应用于 Box 的相同材质是可见的。

我需要做什么才能将漫反射贴图应用到 MeshView?

代码

该代码生成带有随机噪声的图像。该图像用作 PhongMaterial 中的漫反射贴图。显示图像,其上方是应用了材质的框,框上方是应用了材质的 MeshView(金字塔)。该材料在金字塔上不可见。您可以使用鼠标拖动进行旋转。

import java.util.Random;

import javafx.application.Application;
import javafx.geometry.Point3D;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.Box;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.MeshView;
import javafx.scene.shape.TriangleMesh;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;

public class Test extends Application {

    private double mousePosX, mousePosY;
    private double mouseOldX, mouseOldY;
    private final Rotate rotateX = new Rotate(20, Rotate.X_AXIS);
    private final Rotate …
Run Code Online (Sandbox Code Playgroud)

javafx javafx-3d

2
推荐指数
1
解决办法
1480
查看次数

在JavaFX中,如何为网格的反面着色?

我正在使用本答案中讨论的相同技术在 JavaFX 中创建 3D 绘图,并使用 MeshView 和 PhongMaterial 来提供颜色。然而,只有材质的顶部是彩色的,如果用户旋转相机从下面查看,则无法确定绘图的形状,因为它是全黑的。

我的问题:

  1. 有什么办法可以设置网格反面的材质吗?
  2. 如果没有,有没有一个好的方法来“伪造”它?我想在完全相同的位置创建一个颠倒的新网格会导致渲染问题;最好的方法是应用一个非常小的偏移量,以便两个网格体不完全重叠?

编辑:我在下面包含了一些示例代码,这些代码是从我的真实代码中删除的,但包含足够的内容来说明问题。默认情况下,它显示网格的顶部,在本例中为红色。如果您更改读取的行new Rotate(-30, Rotate.X_AXIS)以使角度变为+30而不是-30,它将旋转相机以显示网格的底面,您将看到它显示为黑色。

package test;

import javafx.application.Application;
import javafx.scene.DepthTest;
import javafx.scene.PerspectiveCamera;
import javafx.scene.Scene;
import javafx.scene.SceneAntialiasing;
import javafx.scene.SubScene;
import javafx.scene.image.Image;
import javafx.scene.image.PixelWriter;
import javafx.scene.image.WritableImage;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.MeshView;
import javafx.scene.shape.TriangleMesh;
import javafx.scene.transform.Rotate;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;

public class TestApp extends Application {

  public static void main(String[] args) {
    launch(args);
  }

  @Override …
Run Code Online (Sandbox Code Playgroud)

3d javafx

2
推荐指数
1
解决办法
264
查看次数

标签 统计

javafx ×2

3d ×1

javafx-3d ×1