Matlab: как построить текст в 3D - PullRequest
5 голосов
/ 23 марта 2012

текст (x, y, z, 'текст') работает в трехмерном пространстве, но это не 3D. Есть ли способ отобразить простой трехмерный текст в Matlab, что-то такое простое: the text

Мне не нужны тени или рендеринг, я только могу добавить третье измерение в текст.

1 Ответ

6 голосов
/ 23 марта 2012

Нет способа сделать это, используя текст.Вы должны иметь изображение текста и текстурную карту 2-D изображение на 3-D поверхность .По умолчанию графика визуализируется в осях с использованием ортогональной проекции, поэтому для создания перспективы, как показано на изображении выше, вам потребуется:

  1. Искусственно создать ее, уменьшив длину одной стороныповерхность, на которой изображение текстурировано.
  2. Настройте проекцию осей на ось .

Вот пример кода для иллюстрации выше.Я начну с создания образца текстового изображения:

hFigure = figure('Color', 'w', ...        %# Create a figure window
                 'MenuBar', 'none', ...
                 'ToolBar', 'none');
hText = uicontrol('Parent', hFigure, ...  %# Create a text object
                  'Style', 'text', ...
                  'String', 'PHOTOSHOP', ...
                  'BackgroundColor', 'w', ...
                  'ForegroundColor', 'r', ...
                  'FontSize', 50, ...
                  'FontWeight', 'bold');
set([hText hFigure], 'Pos', get(hText, 'Extent'));  %# Adjust the sizes of the
                                                    %#   text and figure
imageData = getframe(hFigure);  %# Save the figure as an image frame
delete(hFigure);
textImage = imageData.cdata;  %# Get the RGB image of the text

Теперь, когда у нас есть изображение текста, которое мы хотим, вот как вы можете текстурировать его на трехмерной поверхности и настроить видпроекция:

surf([0 1; 0 1], [1 0; 1 0], [1 1; 0 0], ...
     'FaceColor', 'texturemap', 'CData', textImage);
set(gca, 'Projection', 'perspective', 'CameraViewAngle', 45, ...
    'CameraPosition', [0.5 -1 0.5], 'Visible', 'off');

А вот и полученное изображение:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...