java - javafx 8 中的自定义 3D 立方体蒙皮

标签 java 3d javafx javafx-8

我尝试使用以下代码向多维数据集添加皮肤,但皮肤根本不起作用。我测试了它是否会添加到默认立方体,它会(但在每一侧重复完整图像而不是环绕它,这就是为什么我制作一个自定义立方体来防止这种情况)。任何帮助将不胜感激。

private void buildGraphics()
{
    Image dieImage = new Image(getClass().getResourceAsStream("images/die.gif"));

    PhongMaterial material = new PhongMaterial();
    material.setDiffuseMap(dieImage);
    material.setSpecularColor(Color.RED);

    float hw = 100/2f;
    float hh = 100/2f;
    float hd = 100/2f;

    float points[] = 
        {
            hw, hh, hd,
            hw, hh, -hd,
            hw, -hh, hd,
            hw, -hh, -hd,
            -hw, hh, hd,
            -hw, hh, -hd,
            -hw, -hh, hd,
            -hw, -hh, -hd,
        };

    float tex[] =
        {
            100, 0,
            200, 0,
            0, 100,
            100, 100,
            200, 100,
            300, 100,
            400, 100,
            0, 200,
            100, 200,
            200, 200,
            300, 200,
            400, 200,
            100, 300,
            200, 300
        };

    int faces[] =
        {
            0, 10, 2, 5, 1, 9,
            2, 5, 3, 4, 1, 9,
            4, 7, 5, 8, 6, 2,
            6, 2, 5, 8, 7, 3,
            0, 13, 1, 9, 4, 12,
            4, 12, 1, 9, 5, 8,
            2, 1, 6, 0, 3, 4,
            3, 4, 6, 0, 7, 3,
            0, 10, 4, 11, 2, 5,
            2, 5, 4, 11, 6, 6,
            1, 9, 3, 4, 5, 8,
            5, 8, 3, 4, 7, 3
        };

    TriangleMesh mesh = new TriangleMesh();
    mesh.getPoints().addAll(points);
    mesh.getTexCoords().addAll(tex);
    mesh.getFaces().addAll(faces);

    MeshView box = new MeshView(mesh);
    box.setMaterial(material);

    graphicGroup.getChildren().add(box);

    Box box2 = new Box(100, 100, 100);
    box2.setTranslateX(150);
    box2.setMaterial(material);


    graphicGroup.getChildren().add(box2);
    world.getChildren().add(graphicGroup);
}

最佳答案

你是对的...我也一直在尝试制作基本形状..如胶囊、高度图、环面等...

texCoords 很痛苦,但在制作更复杂的形状时,面部更痛苦。

正如您所评论的, texCoords 应该是矩形图像的 0.0(0%) 和 1.0(100%) 之间的值

我仍然无法计算出我的环面的 texCoords...

我仍然认为幕后人员需要摆脱他们构建 TriangleMesh 的系统。

Point3D 对于 Points[] 来说非常有意义,但它们使用 float[] ... 与 texCoords 相同...Point2D 会更适合恕我直言.. Faces[] 没问题...因为它是一个简单的 Integer[]...

我什至可以创建一个 SimpleMesh 类来以这种方式处理事情......无论如何,很高兴你明白了。

关于java - javafx 8 中的自定义 3D 立方体蒙皮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19458444/

相关文章:

java - 如何让 java.awt.Robot 响应鼠标拖动事件?

javascript - 3d 散点图 javascript 或 SVG

Java newSingleThreadExecutor 与带有队列的自有线程

java - 如何从 Java applet 启动服务器进程?

3d - Xna 4.0 3D 顶点示例

opengl - 如何获得fbx网格的正确位置?

java - 在 javafx 中使用 OnMousePressed 将两个 obj 放在彼此之上

image - 在 JavaFX HTMLeditor 中设置本地镜像

java - 如何将插入符号放置在用户在单元格中单击的位置

java - Struts 1.1 和 Servlet 2.5 - 测试期间 JspException 的 NoClassDefFoundError