【问题标题】:J3D - How to use a UV mapping of an object to convert 2D coordinates to 3D onesJ3D - 如何使用对象的 UV 映射将 2D 坐标转换为 3D 坐标
【发布时间】:2014-05-06 12:03:18
【问题描述】:

我目前正在尝试将 2D 坐标转换为 3D 坐标。 基本上,我有 2D 的纹理,我希望能够在 3D 对象上显示,应用相同的纹理,我指向的地方。

假设我拥有世界的 2D 纹理。我希望能够知道,给定纹理上的 U、V 坐标,以获得应用了相同纹理的球体上的 X、Y、Z 坐标。

我正在使用 J3D,现在我正在使用 Blender 并找出解决此问题的最佳方法。

有什么想法吗?

编辑

这是我想要实现的图形化想法:

您获得了 2D 纹理上一个点的 (X,Y) 坐标,并且由于某些功能,如果将其放置在 3D 对象上,您将获得并可视化它的位置(我定义了映射和对象本身)。

【问题讨论】:

    标签: java 3d blender java-3d uv-mapping


    【解决方案1】:

    我不是 J3D 用户,以前从未使用过,我在 Blender 和 OpenGL 中使用过这些,所以我想我可以尝试这个问题。

    我认为您在理解 3D 纹理时遇到了一些问题。 您不会从 UV 坐标生成顶点,您将使用顶点上的 UV 坐标(为了清楚起见,我称之为 texCoords)将纹理应用到它们。如果你不知道怎么在blender中做UV贴图,可以看我的视频here.

    那么你就有了this教程中指定的一些步骤。

    首先,您需要创建一个多边形。希望你已经知道,这里跳过。然后像这样将纹理坐标设置到那个多边形上。

    polygon1.setTextureCoordinate (0, new Point2f(u1, v1));
    polygon1.setTextureCoordinate (1, new Point2f(u2, v2)); 
    polygon1.setTextureCoordinate (2, new Point2f(u3, v3));
    polygon1.setTextureCoordinate (3, new Point2f(u4, v4));
    

    假设坐标在 UV 中(有些人也称它们为 ST)。

    然后您使用TextureLoader 类加载纹理图像。

    Texture texImage = new TextureLoader("brick.jpg", this).getTexture();
    

    然后使用setTexture() 方法将其设置在appearance 上。就是这样。

    希望这会有所帮助。

    【讨论】:

    • 我会尽量听从你的建议,谢谢。但是,为了澄清起见,我需要能够将 X、Y 坐标发送到函数(与 2D 图像相关的坐标)并返回 X、Y、Z 坐标,这些坐标表示应用时该点在纹理上的位置到对象。基本上,我正在寻找一种方法来创建返回 3D 坐标的 2D 矩阵。假设我点击伦敦市(在 2D 图像中),我应该能够在 3D 对象中有一个小指针,伦敦位于该对象上。
    • @N3sh 你能再澄清一点吗?您是否希望能够通过单击其纹理或什么来选择 3d 空间中的对象?
    猜你喜欢
    • 2018-05-25
    • 2021-05-05
    • 1970-01-01
    • 2015-01-01
    • 2015-06-29
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多