Обсуждение статьи "Как создать 3D графику на DirectX в MetaTrader 5"

 

Опубликована статья Как создать 3D графику на DirectX в MetaTrader 5:

Компьютерная 3D графика хорошо подходит для анализа больших объемов данных, так как позволяет визуализировать скрытые закономерности. Такие задачи можно решать и напрямую в MQL5 - функции для работы с DireсtX позволяют при желании написать свою 3-мерную игру для MetaTrader 5. Начните изучение с рисования простых объемных фигур.

Изначально, когда компьютеры и видеокарты не были такими мощными как сейчас, каждый полигон делился на треугольники, так как с помощью треугольника можно однозначно описать положение небольшого участка поверхности и вычислить на нем такие необходимые параметры, как освещенность и отражение падающего света. Совокупность множества таких небольших треугольников позволяет создавать реалистичное трехмерное изображение объекта. Здесь и далее полигон и треугольник будут выступать синонимами, так как представить треугольник гораздо проще, чем полигон с N вершинами.


Куб, составленный из треугольников.

Таким образом, для создания трехмерной модели объекта достаточно описать координаты каждой вершины треугольника, чтобы затем вычислить координаты каждой точки объекта, даже если сам объект перемещается пространстве или меняется позиция наблюдателя. Вершины треугольника называются вертексами (vertex), соединяющие их отрезки называются ребрами (edge), а поверхность, заключенная между отрезками, называется гранью (face). Зная расположения треугольника в пространстве, мы можем по законам линейной алгебры построить к ней нормаль (вектор, который выходит из поверхности и перпендикулярен ей), и таким образом вычислить, как падающий на грань свет от источника будет окрашивать поверхность и отражаться от неё.


Примеры простых объектов с вершинами, ребрами, гранями и нормалями. Нормаль - стрелка красного цвета.

Автор: MetaQuotes

MetaQuotes
  • www.mql5.com
Профиль трейдера
 
Надо же, а возможностей Canvas3D очень немало! Спасибо. Без этой статьи темный лес.
 
2020.04.18 08:39:08.454 Step1_Create_Box (EURUSD,H1) Error creating canvas: 5151
описание ошибки 5151 нет в справке
 

даешь 3-х мерные чарты, как практическое применение.

Metaquotes team.

 

Пример с поверхностью понравился, спасибо. Возможно ли такой же короткий пример привести для 3D-столбчатой диаграммы?


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

 
fxsaber:

Возможно ли такой же короткий пример привести для 3D-столбчатой диаграммы?

думаю, что проще пару десятков CDXBox создать и одну грань зафиксировать, а противоположную грань перемещать по высоте в зависимости от данных гистограммы

 
Igor Makanu:

думаю, что проще пару десятков CDXBox создать и одну грань зафиксировать, а противоположную грань перемещать по высоте в зависимости от данных гистограммы

Нужен готовый пример для m_data.

 
fxsaber:

Нужен готовый пример для m_data.

В статье же есть

В этой статье мы показали как функции DirectX позволяют создавать простые геометрические фигуры и анимированную 3D графику для визуального анализа данных. Более сложные примеры вы можете найти папке установки терминала MetaTrader 5: эксперты "Correlation Matrix 3D" и "Math 3D Morpher", а также cкрипт "Remnant 3D". 


 
Rashid Umarov:

В статье же есть

Спасибо, но к сожалению.

Error creating canvas: 5151
DXContextCreate возвращает INVALID_HANDLE.
 
fxsaber:

Спасибо, но к сожалению.

DXContextCreate возвращает INVALID_HANDLE.

у меня на ноуте тоже ошибка 5151

вот Ренат объяснял почему не будет работать у меня DirectX https://www.mql5.com/ru/forum/327001/page10#comment_14021506

возможно у Вас тоже не совместим видеодрайвер с DirecrX 11

Новые графические возможности в MQL5 с прямым доступом к DirectX 11
Новые графические возможности в MQL5 с прямым доступом к DirectX 11
  • 2019.11.26
  • www.mql5.com
27 ноября 2019 года мы выпустим релиз с новыми графическими возможностями для построения сложных 3D визуализаций...
 
Igor Makanu:

у меня на ноуте тоже ошибка 5151

вот Ренат объяснял почему не будет работать у меня DirectX https://www.mql5.com/ru/forum/327001/page10#comment_14021506

возможно у Вас тоже не совместим видеодрайвер с DirecrX 11

Спасибо, железяку идти обновлять не готов.

Причина обращения: