Отображение сложных трехмерных объектов

В этом примере показано, как создать и отобразить комплексный трехмерный объект и контролировать его внешний вид.

Получение геометрии объекта

Этот пример использует графический объект, называемый чайником Ньюэлла. Данные о вершине, грани и цветовом индексе для чайника вычисляются teapotData функция. Поскольку чайник является сложной геометрической формой, существует большое количество вершин (4608) и граней (3872), возвращаемых функцией.

[verts, faces, cindex] = teapotGeometry;

Создайте объект Patch чайника

Используя данные геометрии, нарисуйте чайник с помощью patch команда. The patch команда создает объект закрашенной фигуры.

figure
p = patch('Faces',faces,'Vertices',verts,'FaceVertexCData',cindex,'FaceColor','interp')

Figure contains an axes. The axes contains an object of type patch.

p = 
  Patch with properties:

    FaceColor: 'interp'
    FaceAlpha: 1
    EdgeColor: [0 0 0]
    LineStyle: '-'
        Faces: [3872x4 double]
     Vertices: [4608x3 double]

  Show all properties

Используйте view команда для изменения ориентации объекта.

view(-151,30)     % change the orientation
axis equal off    % make the axes equal and invisible

Настройка прозрачности

Сделайте объект прозрачным, используя FaceAlpha свойство объекта закрашенной фигуры.

p.FaceAlpha = 0.3;   % make the object semi-transparent

Если на FaceColor для свойства задано значение 'none', затем объект появляется как схема системы координат проводов.

p.FaceColor = 'none';    % turn off the colors

Изменение Палитры

Измените цвета для объекта используя colormap функция.

p.FaceAlpha = 1;           % remove the transparency
p.FaceColor = 'interp';    % set the face colors to be interpolated
p.LineStyle = 'none';      % remove the lines
colormap(copper)           % change the colormap

Осветите объект

Добавьте свет, чтобы объект казался более реалистичным.

l = light('Position',[-0.4 0.2 0.9],'Style','infinite')
l = 
  Light with properties:

       Color: [1 1 1]
       Style: 'infinite'
    Position: [-0.4000 0.2000 0.9000]
     Visible: on

  Show all properties

lighting gouraud

Эти свойства объекта закрашенной фигуры влияют на силу света и отражающие свойства объекта:

  • AmbientStrength - контролирует силу окружающего света

  • DiffuseStrength - контролирует силу рассеянного света

  • SpecularStrength - контролирует силу отраженного света

  • SpecularExponent - управляет жесткостью отраженного света

  • SpecularColorReflectance - управляет вычислением отраженного цвета.

Эти свойства можно задать по отдельности. Чтобы задать эти свойства для предопределённого множества значений, которые аппроксимируют внешний вид металла, блестящего или тусклого материала, используйте material команда.

material shiny

Отрегулируйте положение света, используя его Position свойство. Положение находится в координатах x, y, z.

l.Position = [-0.1 0.6 0.8]

l = 
  Light with properties:

       Color: [1 1 1]
       Style: 'infinite'
    Position: [-0.1000 0.6000 0.8000]
     Visible: on

  Show all properties