[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Panda3D - по русски » Panda3D » Для начинающих » Панда как инструмент научной графики?
Панда как инструмент научной графики?
math-beginerДата: Понедельник, 18.04.2011, 13:23 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Ищу инструмент обладающий следующими возможностями:

1. отображает трехмерные замкнутые поверхности, которые заданы численно (т.е. координаты вершин четырех-угольных и трех-угольных площадок храняться в обычном текстовом
файле)

2. позволяет построить сечение сцены (несколько трехмерных поверхностей)

3. позволяет статические картинки сохранять в файл

Подходит ли Панда? И нет ли примеров отображения поверхности, заданной как в п.1 (пример, в котором Панда идет по лесу я посмотрел :-)) ?

P.S. "Не движки", например http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/mlab.html не устраивают тем, что в них в "базовые рисователи " расчитаны на функции z=f(x,y) которых у меня нет (у меня числа в файле, которые соответствуют маленьким площадкам)

Сообщение отредактировал math-beginer - Понедельник, 18.04.2011, 13:27
 
dis_nodeДата: Понедельник, 18.04.2011, 21:18 | Сообщение # 2
Лейтенант
Группа: Пользователи
Сообщений: 56
Награды: 0
Репутация: 2
Статус: Offline
В формате EGG модель хранится в виде списков полигонов (в текстовом виде), в разделе файлы есть описание формата, конвертер написать не сложно.
Есть прямой доступ к вершинам, но встроенных аналитических функций я не видел.
Срез визуально сделать можно (простое отсечение бесконечной плоскостью), но возможно сечется только перпендикулярно экрану.
Вообще Панда не ориентирована на математическое моделирование.
 
ninthДата: Вторник, 19.04.2011, 00:51 | Сообщение # 3
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
С сечениями думаю можно извернуться, зная математическую часть, но в общем могу лишь добавить к предыдущему посту, что в твоём случае самый простой вариант написать небольшой конвертер в какой-нить общераспространённый формат, например *.OBJ и дальше работать в специализированном софте - например CAD системах, которые по определению должны уметь делать сечения. Ну или в программе 3D моделирования многие из которых тоже это умеют.
Если информация в твоём файле уже структурирована, т.е. есть инфа о том какие вершины каким полигонам ("площадкам") принадлежат, то написать конвертер не сильно сложно.
 
BlackCatДата: Вторник, 19.04.2011, 05:16 | Сообщение # 4
Подполковник
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 1
Статус: Offline
Хм, а что, SolidWorks не подходит для твоих целей?

http://alphahole.do.am - версия 0.015 вышла 22.02.10
 
math-beginerДата: Вторник, 19.04.2011, 20:07 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
Quote (BlackCat)
Хм, а что, SolidWorks не подходит для твоих целей?

мне бы свободный софт и под линукс

Добавлено (19.04.2011, 20:07)
---------------------------------------------

Quote (ninth)
например *.OBJ

А вы не могли бы дать ссылочку на подробное описание формата.

достаточно ли просто поставить v перед моими вершинами, т. е . так :

Code

v -0.0191470260 0.0002018149 0.9398515351
v 0.1722740070 0.0639799463 0.9416690758
v 0.1594417556 0.0938763691 0.9407592382
v -0.0191470260 0.0002018149 0.9398515351

v -0.0191470260 0.0002018149 0.9398515351
v 0.1594417556 0.0938763691 0.9407592382
v 0.1433816565 0.1227894883 0.9434250944
v -0.0191470260 0.0002018149 0.9398515351

...

здесь первые четыре строчки координаты углов (вершин) первой площадки (сегмента), далее следующие четыре строчки описывают вторую плошадку, и так далее

 
dis_nodeДата: Вторник, 19.04.2011, 20:42 | Сообщение # 6
Лейтенант
Группа: Пользователи
Сообщений: 56
Награды: 0
Репутация: 2
Статус: Offline
http://panda3d.org.ru/load/egg_spravka_v_chm/3-1-0-26
Недостаточно, придется компоновать данные по другому. Не теряй время, скриптуй в спецсофте. Видел кстати бесплатный CAD на Питоне (если это рулит), гугл те в помощь ).
 
BlackCatДата: Среда, 20.04.2011, 05:39 | Сообщение # 7
Подполковник
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 1
Статус: Offline
Quote (math-beginer)
мне бы свободный софт и под линукс

А в сторону VRML не смотрели? Там всё описывается примитивами. По идее может подойти.
http://ru.wikipedia.org/wiki/VRML
http://ru.wikipedia.org/wiki/X3D
http://ru.wikipedia.org/wiki/WebGL
http://ru.wikipedia.org/wiki/3DMLW


http://alphahole.do.am - версия 0.015 вышла 22.02.10
 
ninthДата: Четверг, 21.04.2011, 01:43 | Сообщение # 8
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
BlackCat, я думаю тут не важно через какой формат obj или vrml - кому что удобнее )
dis_node, хм, подкинь инфу по CAD на питоне )) Я когда-то искал но не нашёл ничего подходящего - самое близкое это фреймворк, ориентированный на CAD.

math-beginer, если под линукс, то пока самая вменяемая альтернатива - Blender - сечения можно построить с помощю булевых операций, ну а по части визуализации вопросов возникнуть не должно.
По формату - в obj немного другое строение - отдельно описываются вершины, отдельно - связи между вершинами. Т.е. нужно прочитать все вершины в список. Сделать ещё один список, удалить из него дубли вершин, проиндексировать и на основе этих двух построить связи. В коде выглядеть будет проще чем описал ) Строк 20 потребуется.
Вопрос только с твоим форматом: насколько я понимаю, у тебя просто список координат, отделяются они пробелом, тройки и четвёрки вершин отделяются пустой строкой? Неплохо было бы кинуть сюда пример файла.

 
ninthДата: Четверг, 21.04.2011, 02:22 | Сообщение # 9
Admin
Группа: Администраторы
Сообщений: 1555
Награды: 5
Репутация: 46
Статус: Offline
Если моё предположение верно, то у меня получилась такая штука из того что ты привёл как пример, толькоя убирал 'v '

Листинг полученного OBJ:

Code
v 0.1594417556 0.0938763691 0.9407592382
v 0.1722740070 0.0639799463 0.9416690758
v -0.0191470260 0.0002018149 0.9398515351
v 0.1433816565 0.1227894883 0.9434250944

f 1 2 3 1
f 1 3 4 1

Один момент - в фэйсах у тебя первая и последняя вершина совпадают - это излишне, поэтому для нормального отображения поверхности я удалял лишние ссылки на вершины перед импортом в блендер, т.е. получал
Code
f 1 2 3
f 1 3 4

В конвертере я это удаление не предусматривал т.к. не знаю фишка это твоего формата или баг приведённой геометрии )

Код конвертера (питон, естесно):

Code
lines = open('testvert.txt', 'r').readlines()
vtx = {}
idx = 1
for line in lines:
      if line != '\n':
          x, y, z = line.split(' ')
          if not (x, y, z) in vtx.keys():
              vtx[(x, y, z)] = idx
              idx += 1
fcs,fc = [], []
for line in lines:
      if line == '\n':
          fcs.append(fc)
          fc = []
      else:
          x, y, z = line.split(' ')
          fc.append(str(vtx[(x, y, z)]))
f = open('out.obj', 'w')
for v in vtx:
      f.write('v ' + ' '.join(v))
f.write('\n')
for fc in fcs:
      f.write('f ' + ' '.join(fc) + '\n')
f.close()
Прикрепления: 5330549.jpg(14Kb)
 
Форум Panda3D - по русски » Panda3D » Для начинающих » Панда как инструмент научной графики?
Страница 1 из 11
Поиск: