2015-01-18 3 views
2

Я бы хотел, чтобы текстура отображала 2D-изображение на трехмерную поверхность. Я хотел бы сделать это в графическом интерфейсе, чтобы пользователь мог поворачивать/сдвигать/масштабировать поверхность с помощью панели инструментов камеры, а затем изображение будет отображаться на видимую часть поверхности.Как текстурировать карту на повернутой поверхности в Matlab?

Я знаю, что могу получить положение камеры с помощью команды campos, но как получить ориентацию камеры?

Любая идея? Или, может быть, вы можете предложить лучший подход?

Спасибо!

ответ

3

Чтобы ответить на этот вопрос из своей книги (от того, что я понимаю), вы можете назначить карту текстуры для 3D-данные, используя точно названный texturemap значение FaceColor собственности (оригинал справа?), А также соответствующий CData (здесь 2D-изображение).

Простой пример:

clear 
clc 

A = imread('peppers.png'); 

%// Generate dummy surface plot 
[X,Y] = meshgrid([-2:.25:2]); 
Z = X.*exp(-X.^2 -Y.^2); 

surf(X,Y,Z,'CData',A,'FaceColor','texturemap') 

Это выглядит следующим образом:

enter image description here

По умолчанию в окне отображения можно изменить масштаб изображения/двигаться вокруг, как вы хотите. Для второй части вашего вопроса, я думаю, вы должны внимательно прочитать документы для campos и связанные функции для получения/установки положения камеры. Поскольку для создания GUI для выполнения этой задачи требуется много усилий, я думаю, что лучше всего попробовать что-то само по себе и задавать вопросы об этом здесь, если вы где-то застряли.

Надеюсь, что это поможет!

+2

Приятный пример, а также второе понятие RTM. Кто бы предположил, что параметр текстурной карты для 'surf' был вызван' 'texturemap''. ;) – chappjc

+0

Ха-ха да, они не выглядели слишком далеко для этого :) –

+0

Спасибо Benoit_11, но мой вопрос был о повернутой поверхности, для нормального случая действительно есть несколько функций, которые выполняют отображение текстур. Во всяком случае, я обнаружил, что 'campos',' camtarget' и 'camva' дают мне информацию о положении камеры \ orintation \ zoom. теперь мне нужно будет найти, как перевести эту информацию, чтобы изменить поверхность перед составлением текстур. – EliS