exponenta event banner

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

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

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

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

[verts, faces, cindex] = teapotGeometry;

Создать объект исправления чайника

Используя данные геометрии, нарисуйте чайник с помощью patch команда. 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