3D визуализация научных данных в Mayavi / Python

30 000 руб. за проект
24 августа 2022, 16:26 • 5 откликов • 66 просмотров
Нужно сохранять много картинок в фоне. Картинки нужно рендерить с помощью Mayavi.

Рендерить нужно один объект - конечно-элементную модель (узлы, элементы).

У конечно-элементной модели есть свойства (температура, скорости, ...). Свойства нужно отображать цветовой гаммой или векторным полем.

По ссылке можно скачать Тестовый файл на Python (mayavi_test_v00.py) и конечно-элементную модель со свойствами (mayavi_inputs.npz) - https://1drv.ms/u/s!AgsliTwx9ZLRhNFS_PzMXYKY4UfBRw...

Тестовый файл сделан на основе моего рабочего проекта. Их проекта я выкинул всё, что связано с генерацией модели и её свойств. Осталась голая структура, которую не надо менять.

Функционал по рендерингу и сохранению картинки в файл нужно добавлять в функцию "plot_with_mayavi" между комментариями "Begin plotting here" и "End plotting here".

В итоге нужно получить картинки, примерно как во вложении к заказу.

!!! ТИПЫ КАРТИНОК И ДРУГИЕ ТРЕБОВАНИЯ:

1. Рендер объекта, сцены, фона и свойств нужно настраивать. В функцию рендеринга (которую вам надо написать) я передаю словарь со следующими ключами:
{
'type': '',
'camera_view': [],
'slice_view': {},
'projection_view': '',
'mesh_view': '',
'colormap': '',
'colormap_shading': '',
'colormap_range': [],
'resolution': [],
'title': 'Test image',
'colormap_title': 'Colormap test title',
'image_file_extension': 'png',
'nodes': numpy.array((10000, 3)),
'elements': numpy.array((20000, 4)),
'variable': numpy.array((10000, 1)),
'path': 'C:\\...\\images'}

2. Ключи словаря из пункта 1 могут принимать следующие значения и списка:
{
'camera_view_list': ['iso, '-x', '+x', ..., '-z', '+z'], # Лучше использовать те же параметры что и Mayavi
'slice_list': self.get_slice_list(), # Смотрите возможные значения сечений в коде
'projection_view_list': ['parallel', 'perspective'],
'mesh_view_list': ['surface', 'wireframe', 'surface_with_wireframe'], # "отображать поверхность, но не триангуляционную сетку", "отображать тольо рёбра сетки, но не поверхность", "отображать и поверхность и рёбра сетки"
'colormap_list': ['gray', 'rainbow'], # Тип цветовой шкалы
'colormap_shading_list': ['shaded', 'shaded_with_isolines', 'solid_bands'], # "Сглаженный градиент цветов как на картинке Screenshot_2022y02m21d_13h02m43s_001.png", "Сглаженный градиент + изолинии", "Ступенчатый градиент как на картинке Screenshot_2022y02m21d_13h02m16s_001.png"
'colormap_range_list': [[0., 1.], [0., 10.], [0., 100.], [0., 1000.]], # Нижний и верхний пределы цветовой шкалы
'resolution_list': [[100, 100], [100, 1000], [1000, 100], [1000, 1000], [2000, 2000], [5000, 5000]] # разрешение сохраняемых картинок (*.png)
}

3. Тестовой программе "mayavi_test_v00.py" функция "plot_with_mayavi" для рендеринга и сохранения полученной картинки в файл вызывается около 10000 раз с разными значениями ключей. Это для тестирования написанной вами функции рендеринга.

4. Если рендеринг невозможен, то картинка всё же должна быть сохраненна в файл. В картинке разместить соответствующее сообщение об ошибке, почему рендеринг объекта не выполнен.

5. Рендеринг и сохранение картинки в *.png файл должно происходить в фоне.

6. Обратите внимание в тестовой программе "mayavi_test_v00.py" функция "plot_with_mayavi" для рендеринга и сохранения полученной картинки в файл вызывается через multiprocessing.Queue.
Файлы
Отзывы
Второй раз выбираю Рауля исполнителем и снова только положительный опыт работы. Задача была сложная, недостаточно документированная, но Рауль задачу выполнил. Проявил инициативу и гибкость. Рекомендую
~ 2 года назад
R50 f112c4fab8e72c3a1f9e23acb75c977c
Фрилансер
Было очень приятно и продуктивно работать с заказчиком!
Очень развёрнуто отвечал на все уточняющие вопросы, а также содействовал на каждом этапе выполнения заказа.
Помог разобраться с сутью задачи и оперативно принял заказ.
В целом максимально доволен взаимодействием, буду рад дальнейшему сотрудничеству.
~ 2 года назад