Автор Тема: Тема для быстрых вопросов от новичков  (Прочитано 1305143 раз)

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8730 : 13 Январь 2021, 22:43:52 »
кстати, о бесплатных решениях, есть такая штука как openfoam и paraviev https://blog.kitware.com/paraview-glance-mobile-support/
про openfoam уже несколько раз писал на форуме, но попробую представить результаты визуализации как и обещал после выходных ...


Обязательно изучу!

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8731 : 13 Январь 2021, 22:46:03 »
Цитировать
не поверхностное отображение, а объемное. То есть просто загрузить точки и построить полисетку получиться месиво.
Цитировать
выгрузить в 3д редактор, отфильтровать точки, убрав ненужные, настроить цвета для точек исходя из density.
Извините, что вмешиваюсь. Возможно, подойдёт вместо каждой "точки" формировать некие маленькие кубики/тексели?

А "цветность исходя из density" - , например, можно создать некое ограниченное количество материалов/цветов, и все тексели со значениями плотностей, попавшими в соответствующий диапазон, объединять в один объект, которому присвоить этот материал. Дальнейшая "фильтрация по плотности" будет выражаться во включении/отключении отдельных объектов.


Спасибо за помощь!
Честно говоря, даже идей нет как это делается. Вообще пока с трудом могу разобраться как заставить обрабатывать точные данные. Как много нам открытий чудных...

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8732 : 14 Январь 2021, 04:04:43 »
... насколько понял у тебя есть опыт работы с blender и с его нодами, это радует поскольку будет легче объяснить и соответственно совместно далее развить и усовершенствовать ...
... суть реализации и сразу вытекающие проблемы:
что есть для визуализации облака в blender - 1) массив элементов классической полисетки 2) система частиц 3) объемные шейдеры 4) флюуиды
1) здесь проблема сложности связывания массива элементов с цветом (материалом), получается громоздко ...
3) и 4) пока мне не известно как задать координаты точек и опять же связать с цветом (хотя вроде должно быть управляемо, а поскольку предназначено  для облака, то априори более эффективно) ...
2) удалось реализовать на скорую руку
сделать это получилось для Cycles, у которого в шейдерах есть рабочий узел Particle Info (акцентирую внимание на рабочий, поскольку в Eevee он не работает по определению, не реализован) ...
... соответственно можно выкрутиться и задать цвет конкретной частицы через этот узел, а к координатам частицы есть доступ через API, более того через ColorRamp имеем некоторый интерактив по связыванию плотности с визуальными характеристиками облака - цветом частиц и прозрачностью ...
... прозрачность - это вторая проблема, поскольку без неё не разобрать это месево, а с ней решение получается ресурсоёмко (но опять же реализуемо, как видно из видео) ...
... у Particle Info на выходе есть значения Age, LifeTime, Location, Size, Velocity и Angelar Velocite ...
... мне удалось зацепиться за Size и задать значение для каждой частицы и потом уже в шейдере на нем строить колоризацию и фильтрацию (снимок экрана во вложении) ...
... скрипт работает тоже не сложно
1) считывается массив данных из CSV, определяется количество элементов, максимальное (dmin) и минимальное (dmax) значение плотности (для нормирования показателя и использования в ColorRamp)
2) для системы частиц устанавливается количество частиц равное количеству записей в массиве данных, для каждой частицы устанавливается соответсвующее положение и нулевая скорость (чтобы не двигалась),  а также размер по формуле base +(1-base)*(density-dmin)/(dmax-dmin), где base примерно равно 0.8 - 0.9 ...
3) в шейдере выход Size узна Particle Info расшифровывается в обратном порядке (size - base)/(1-base) получаем нормированную от 0 до 1 плотность, кототрую используем для ColorRamp и для прозрачности ...
кода не много, сейчас он выглядит так
Код: python
import bpy
import mathutils
import csv

def open_csv(filename):
    dmin = 9999
    dmax = 0
    csv_data = []
    with open(filename, newline='') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=',', quotechar='|')
        for row in spamreader:
            x =  float(row[0])
            y =  float(row[1])
            z =  float(row[2])
            d =  float(row[3])
            if d<dmin:
                dmin = d
            if d>dmax:
                dmax = d               
            csv_data.append([(x,y,z),d])
    return csv_data,dmin,dmax

def routine(data,dmin,dmax):
    print(dmin,dmax)
    dd = dmax - dmin
    bpy.ops.particle.particle_edit_toggle()
    degp = bpy.context.evaluated_depsgraph_get()
    object = bpy.data.objects["Cube"]
    particle_systems = object.evaluated_get(degp).particle_systems
    particles = particle_systems[0].particles
    setting = particle_systems[0].settings
    degp = bpy.context.evaluated_depsgraph_get()
   
    setting.count = len(data)
    for i in range(len(data)):
        p = particles[i]
        p.alive_state = 'ALIVE'
        p.location = mathutils.Vector(data[i][0])
        p.prev_location = mathutils.Vector(data[i][0])
        p.prev_velocity = [0,0,0]
        p.size = 0.8+0.2*(data[i][1]-dmin)/dd

data,dmin,dmax = open_csv('/home/sungreen/Рабочий стол/QRead/body_small.csv')
routine(data,dmin,dmax)


в выходные посмотрю, что еще можно автоматизировать и оптимизировать по этому варианту и обновлю .blend файл
скрин https://yadi.sk/i/4KOoT6xu8jo-BQ сам файл https://yadi.sk/d/wDiObfZBerW0ZA
если есть еще тестовые массивы, то могу их принять для экспериментов по визуализации


Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8733 : 14 Январь 2021, 11:31:15 »
Добрый день!
Вроде во всем разобралась, не сразу нашла ноды subtract и divide. Радует, что копала хоть в нужном направлении, но объем знаний и понимания блендера пока не так велик, как хотелось бы, закопалась в итоге и до вашего решения, конечно, не докопала бы никогда.

Большущее спасибо за помощь и участие! Действительно спасли!
Больше тестовых массивов нет, только этот же, но с большим количеством данных.
Пойду еще посмотрю, что за звери openfoam и paraviev.
Спасибо!

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8734 : 14 Январь 2021, 11:58:39 »
Нет, все-таки вопрос остался - как это в итоге отрендерить? Все известные мне причины исчезновения частиц при рендере я проверила, все должно быть ок, кажется, тут что-то сложнее, что я не понимаю. Подскажите, пожалуйста, в чем дело.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8735 : 14 Январь 2021, 13:49:30 »
Про визуализацию (рендеринг) напишу после выходных. Видимо из-за отключения некоторых фич для ускорения отображения во вьюпорте, сломал рендер. Но проблему исправлю.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8736 : 14 Январь 2021, 14:31:42 »
косяк по рендеру нашел, исправлю

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8737 : 14 Январь 2021, 19:34:41 »
Про визуализацию (рендеринг) напишу после выходных. Видимо из-за отключения некоторых фич для ускорения отображения во вьюпорте, сломал рендер. Но проблему исправлю.

называется "ой")) Спасибо!!!
а дайте еще, пожалуйста, вдогонку совет по Phyton, есть какая-то вменяемая схема изучения\учебник\курс\ютуб-канал..? Немного разбираюсь в C#, так понимаю, что Phyton тоже штука нужная, если работать с блендером.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8738 : 15 Январь 2021, 04:29:38 »
>> вдогонку совет по Phyton, есть какая-то вменяемая схема изучения\учебник\курс\ютуб-канал..?
http://www.nclug.ru/forum/sungreen-nix-i-nashi-deti

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8739 : 15 Январь 2021, 10:42:51 »
спасибо :D

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8740 : 16 Январь 2021, 08:05:30 »
Claptrap, а есть осмысленная интерпретация плотности? то есть может специалист глядя на картинку сказать, что значит плотность 500 или 700?

Оффлайн Claptrap

  • Житель
Re: Тема для быстрых вопросов от новичков
« Ответ #8741 : 16 Январь 2021, 10:27:33 »
Claptrap, а есть осмысленная интерпретация плотности? то есть может специалист глядя на картинку сказать, что значит плотность 500 или 700?

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

Я все-таки склоняюсь к тому, чтобы освоить Гудини, так как там есть готовые решения для научной визуализации и интерпретации данных. Для меня проще освоить новый интерфейс все-таки, чем вот так сходу Питон. Хотя одно другому не мешает, конечно.

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8742 : 16 Январь 2021, 16:40:28 »
... ошибку рендера нашел и исправил, немного протестирую и выложу файл ...

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8743 : 16 Январь 2021, 23:23:19 »
.blend файл
https://yadi.sk/d/V5MWjU5pGJwRtQ

мувики
фильтр по плотности https://yadi.sk/i/w0LNWK_A9GQ23Q
скользящее окно плотности https://yadi.sk/i/aUCnCBxmGHhEkA

Оффлайн Николай Николаев

  • Житель
  • emerge --keep-going
Re: Тема для быстрых вопросов от новичков
« Ответ #8744 : 17 Январь 2021, 11:19:16 »
добавил ноду Vector Curve, теперь можно интерактивно фильтровать по координатам, типа срезы массива 
https://yadi.sk/d/FjuFrcxScKU-3Q

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 68
Автор: LEXA ANЭGROWND
blender.png
Скачано: 78
Автор: ipv2007
4.png
Скачано: 100
Автор: hiroyukiss
2.png
Скачано: 122
Автор: hiroyukiss

Скачано: 112
Автор: Dilifa12