exponenta event banner

plotMesh

Сетки экранных объектов на графике птичьего глаза

Описание

plotMesh(mPlotter,vertices,faces) отображает сети, состоящие из указанных вершин и граней на графике птичьего глаза. Чтобы получить вершины и грани сети объекта в сценарии управления, используйте targetMeshes функция. Сетчатый плоттер, mPlotter, связан с birdsEyePlot и настраивает отображение сетей.

График птичьего глаза присваивает каждому актеру разный цвет, основанный на порядке цветов по умолчанию Axes объекты. Дополнительные сведения см. в разделе ColorOrder свойство для Axes объекты.

Удаление всех сетей, связанных с плоттером сети mPlotter, вызовите clearData функции и указать mPlotter в качестве входного аргумента.

пример

plotMesh(mPlotter,vertices,faces,'Color',colors) задает цвета сетей.

Примеры

свернуть все

Отображение актёров в управляющем сценарии с использованием их представлений сетки вместо их кубовидных представлений.

Создайте сценарий движения и добавьте к нему 25-метровую прямую дорогу.

scenario = drivingScenario;
roadcenters = [0 0 0; 25 0 0];
road(scenario,roadcenters);

Добавить в сценарий пешехода и транспортное средство. Задайте размеры сетки акторов с помощью предварительно встроенных сетей.

  • Укажите пешеходную сеть как driving.scenario.pedestrianMesh объект.

  • Укажите сетку транспортного средства как driving.scenario.carMesh объект.

p = actor(scenario,'ClassID',4, ...
            'Length',0.2,'Width',0.4, ...
            'Height',1.7,'Mesh',driving.scenario.pedestrianMesh);

v = vehicle(scenario,'ClassID',1, ...
            'Mesh',driving.scenario.carMesh);

Добавить траектории движения пешехода и транспортного средства.

  • Укажите, чтобы пешеход переходил дорогу со скоростью 1 метр в секунду.

  • Укажите, должно ли транспортное средство следовать по дороге со скоростью 10 метров в секунду.

waypointsP = [15 -3 0; 15 3 0];
speedP = 1;
smoothTrajectory(p,waypointsP,speedP);

wayPointsV = [v.RearOverhang 0 0; (25 - v.Length + v.RearOverhang) 0 0];
speedV = 10;
smoothTrajectory(v,wayPointsV,speedV)

Добавьте эгоцентрический график для транспортного средства. Включите отображение сетей.

chasePlot(v,'Meshes','on')

Создайте график птичьего глаза, на котором будут отображаться сетки. Также создайте сетчатый плоттер и плоттер границ полос движения. Затем выполните цикл моделирования.

  1. Получение границ дороги, на которой находится транспортное средство.

  2. Получение вершин, граней и цветов сетки актера с позициями относительно транспортного средства.

  3. Постройте границы дорог и актерские сети на сюжете птичьего глаза.

  4. Приостановите сценарий, чтобы предоставить время для обновления графиков. График погони обновляется при каждом продвижении сценария.

bep = birdsEyePlot('XLim',[-25 25],'YLim',[-10 10]);
mPlotter = meshPlotter(bep);
lbPlotter = laneBoundaryPlotter(bep);
legend('off')

while advance(scenario)

   rb = roadBoundaries(v);

   [vertices,faces,colors] = targetMeshes(v);

   plotLaneBoundary(lbPlotter,rb)
   plotMesh(mPlotter,vertices,faces,'Color',colors)

   pause(0.01)
end

Входные аргументы

свернуть все

Сетчатый плоттер, указанный как MeshPlotter объект. Этот объект хранится в Plotters свойство birdsEyePlot и конфигурирует отображение сетей на графике птичьего глаза. Чтобы создать этот объект, используйте meshPlotter функция.

Вершины сетки каждого субъекта, заданные как массив ячеек N-элементов, где N - число субъектов.

Каждый элемент в vertices должна быть V-by-3 вещественной матрицей, содержащей вершины актера, где:

  • V - число вершин.

  • Каждая строка определяет 3-D (x, y, z) положение вершины. При использовании targetMeshes для получения вершин сетки положения вершин относятся к положению действующего лица, которое вводится в эту функцию. Единицы в метрах.

Грани сетки каждого субъекта, определенные как массив ячеек N-элементов, где N - количество субъектов.

Каждый элемент в faces должна быть F-by-3 целочисленной матрицей, содержащей грани актера, где:

  • F - количество граней.

  • Каждая строка определяет треугольник идентификаторов вершин, составляющих грань. Идентификаторы вершин соответствуют номерам строк в vertices.

Предположим, что первая грань i-й элемент faces имеет эти идентификаторы вершин.

faces{i}(1,:)
ans =

     1     2     3

В i-й элемент vertices, строки 1, 2 и 3 содержат положения (x, y, z) вершин, составляющих эту грань.

vertices{i}(1:3,:)
ans =

    3.7000    0.9000    0.8574
    3.7000   -0.9000    0.8574
    3.7000   -0.9000    0.3149

Цвет граней сети для каждого субъекта, определяемый как N-by-3 матрица триплетов RGB. N - число действующих лиц и равно числу элементов в vertices и faces.

iтретий ряд colors - значение цвета RGB граней в i-й элемент faces. Функция применяет одинаковый цвет ко всем граням сети субъекта.

Триплет RGB - это трехэлементный вектор строки, элементы которого задают интенсивности красной, зеленой и синей составляющих цвета. Интенсивности должны находиться в диапазоне [0, 1]. Например, [0.4 0.6 0.7].

Подробнее

свернуть все

Сетки

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

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

CuboidСетка

A vehicle represented as a cube.

A vehicle represented as a mesh.

Представлен в R2020b