J3D - Как использовать UV-отображение объекта для преобразования 2D-координат в 3D-координаты

В настоящее время я работаю над преобразованием 2D-координат в 3D. По сути, у меня есть текстура в 2D, и я хотел бы иметь возможность показывать на 3D-объекте, применяя к нему ту же текстуру, на которую я указываю.

Допустим, у меня есть 2D-текстура мира. Я хотел бы знать, учитывая координаты U, V на текстуре, чтобы получить координаты X, Y, Z на сфере, к которой применена та же текстура.

Я использую J3D, и теперь я работаю с блендером и выясняю, как лучше всего решить эту проблему.

Есть идеи?

ИЗМЕНИТЬ:

Вот графическое представление того, чего я пытаюсь достичь: введите здесь описание изображения

Вы получаете координаты (X,Y) точки на 2D-текстуре и, благодаря какой-то функции, получаете и визуализируете, где она была бы, если бы она была размещена на 3D-объекте (я определяю и сопоставление, и сам объект).


person N3sh    schedule 27.03.2014    source источник


Ответы (1)


Я не пользователь J3D и никогда не использовал его раньше, я использовал их в Blender и OpenGL, поэтому я думаю, что могу попытаться ответить на этот вопрос.

Я думаю, у вас возникли проблемы с пониманием текстурирования в 3D. Вы не будете генерировать вершины из UV-координат, вы будете использовать UV-координаты (которые я для ясности обозначил как texCoords) для вершин, чтобы применить к ним текстуры. Если вы не знаете, как сделать UV-развертку в блендере, вы можете посмотреть мое видео здесь

Затем у вас есть несколько шагов, как указано в этом учебник.

Во-первых, вам нужно создать полигон. Надеясь, что вы это уже знаете, пропуская это здесь. Затем установите координаты текстуры на этот многоугольник, как показано ниже.

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();

Затем установите его на appearance, используя метод setTexture(). Вот и все.

Надеюсь это поможет.

person Sri Harsha Chilakapati    schedule 27.03.2014
comment
Я постараюсь следовать вашим советам, спасибо. Но, просто чтобы уточнить, мне нужно иметь возможность отправлять координаты X, Y в функцию (координаты, связанные с 2D-изображением), и она возвращает координаты X, Y, Z, которые представляют местоположение этой точки на текстуре при применении к объекту. По сути, я ищу способ создать 2D-матрицу, возвращающую 3D-координаты. Скажем, я нажимаю на город Лондон (на 2D-изображении), у меня должен быть маленький указатель в 3D-объекте, где на этом объекте расположен Лондон. - person N3sh; 27.03.2014
comment
@ N3sh Не могли бы вы уточнить немного больше? Вы хотите иметь возможность выбирать объект в 3d пространстве, кликая по его текстуре или как? - person Sri Harsha Chilakapati; 27.03.2014