Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Моделирование


Автор: Амортизатор 6.6.2005, 01:01
Необходимо составить модель листа бумаги, который вел бы себя идентично натуральному. Т е имеется нечто вроде книги (книгу прорисовывать необязательно), нужно реализовать что-то вроде перелистывания страниц, т е сделать так, чтобы перемещение листа бумаги с одной стороны книги на другую роисходило в соответсвии с физическими законами.
Задача очень сложна. Если браться реализовывать с самого начала, нужно составить соответсвующие дифференциальные уравнения движения поверхности листа и найти способ их численного интегрирования. Что не есть элементарно. Нет ли каких похожих физических алгоритмов, которые можно было бы использовать хотя бы как образцы?

PS Хотя вопрос и не для этого форума, но все же заодно спрошу - нельзя ли сделать модель листа с анимацией в Maya или 3DS MAX и экспортировать ее в программу?

Автор: cardinal 6.6.2005, 01:48
Цитата
Если браться реализовывать с самого начала, нужно составить соответсвующие дифференциальные уравнения движения поверхности листа и найти способ их численного интегрирования.

Ну ты загнул. smile Я бы клонил в сторону того, чтобы сделать сетку (которая будет представлять страницу), "узлы" которой соединены скажем так пружинами с определенной упругостью. Ты берешься за самый крайний узел и тянешь его по определенной траектории (перелистывание страницы), а остальные узлы тянуться по цепной реакции друг за другом. При этом у каждого узла соответсвенно есть еще и вес (любой), который тянет страницу вниз. Когда это реализуешь поймешь чего еще не хватает для полной красоты. smile Вот тебе и вся симуляция. Я думаю готового ты ничего не найдешь...

Автор: Амортизатор 6.6.2005, 03:05
Все это чрезвычайно тяжело реализуется. По всей видимости придется упростить задачу - чтоб сила прикладывалась не к одной какой-то точке страницы, а по всему фронту (краю). Тогда в принципе можно будет рассматривать страницу как упругий стержень. Кроме того, надо наверное будет отказаться от динамики - т е не учитывать ускорения при движении, а прокрутить серию кадров, в каждом из которых она занимает определенное положение. Тогда фактически задача сведется к нахождению формы стержня в зависимости от координаты его верхнего конца...
Реализма, конечно, мало но на глаз это не будет заметно.
Добавлено @ 03:07
А как насчет Maya? Там ведь есть средства для моделирования физ. процессов. Например, я видел анимацию - развевающийся по ветру флаг, выглядело довольно правдоподобно.

Автор: III.nfo 6.6.2005, 07:30
Может, это тупо и ламерски, но нельзя ли сделать съёмку на камеру движения настоящего листа бумаги с разных ракурсов, а затем уже его перевести в цифровую модель?
Там уже можно и законы подыскать.

Автор: batigoal 6.6.2005, 09:34
А на чем будет программа? Если на С++, то есть возможность создать сцену в 3DS Max и экспортировать ее в программу средствами DirectX.

Автор: Гость_Амортизатор 6.6.2005, 15:38
Да, программа на С++ (мфс). Но дело в том, что я совершенно не разбираюсь ни в Maya, ни в том, как оттуда тащить модели.
III.nfo, к сожалению далеко не все так просто. smile Мне не фильм нужен и не мультик.

Автор: batigoal 6.6.2005, 17:47
Тащить-то их оттуда нетрудно... По крайней мере, из 3ДМакса. Достаточно сделать экспорт в файл *.x. А вот разобраться с ДиректИксом намного сложнее.

Автор: III.nfo 6.6.2005, 18:03
АмортизаторА нельзя из фильма «перелить» в 3Dmax/Maya?
Или, пользуясь фильмом, сделать там подобную модель - по-моему, будет удобнее.

Автор: Амортизатор 6.6.2005, 18:49
Lamer George, мне бы сделать эту модель в Maya и перетащить в прогу, дальше как нибудь постараюсь разобраться. У меня есть опыт работы с DirectX, правда небольшой - сделал в свое время пару простых моделей. Этого, естественно, не хватит, но постараюсь восполнить пробелы, для этого есть источники. Но вот про экспорт моделей из Maya - нигде ни слова! Уж сколько я не пытался искать - ничего нет. Я уже не говорю про работу в самой Maya - при одном виде ее интерфейса дурно становится.

III.nfo, нельзя. Фильм - это всего лишь картинки - растровые (точечные) изображения, следующие друг за другом. Физическая модель основывается на конкретных уравнениях, описыващих моделируемое явление (объект). Для того, чтобы "перегнать" фильм в модель нужна работа искуственного интеллекта, который в данном случае "обобщил" бы движения объекта и позволил бы в буквальном смысле "взглянуть на него под другими углами". Но ИИ еще, к сожалению, не придумали...

Автор: batigoal 6.6.2005, 21:39
Насчет Maya не знаю, но, наверное, там доже должна быть подобная возможность.

Автор: Амортизатор 6.6.2005, 22:10
Ну мне вообще все равно где делать. Я слышал, 3DC MAX куда проще Майи, было бы даже лучше если в нем.

Автор: III.nfo 7.6.2005, 15:05
Амортизатор
Цитата
Но ИИ еще, к сожалению, не придумали...

А вот и суперзадача... Покруче моделирования листа бумаги...

Автор: podval 7.6.2005, 21:42
Амортизатор
А ты в MATLAB пробовал развлекаться? В последних версиях есть даже такой Virtual Reality Toolbox - посмотри его.

Автор: Амортизатор 11.6.2005, 14:41
podval, MATLAB знаю не настолько. К тому же, насколько помнится, Virtual Reality Toolbox использует какой-то свой скриптовый язык,изучать который, конечно же. никакого желания не имеется. К тому же неизвестно, можно ли экспортировать оттуда анимацию, ведь для прокрутки анимации в нем используется программа, написанная на этом самом языке. Но в принципе, может MATLAB и можно использовать для того, чтобы просто посчитать матрицу поверхности.

Автор: podval 11.6.2005, 18:15
Цитата
Но в принципе, может MATLAB и можно использовать для того, чтобы просто посчитать матрицу поверхности.

Я всегда делал так: сначала обкатывал модели в МАТЛАБ, а только потом переносил в С. Особенно это касается матриц (у меня были ~30 млн. элементов).

Научиться программировать в Матлабе - запросто. Там язык почти такой же, как С. Рекомендую.

Автор: Kolia 11.6.2005, 20:22
Ну вы тут вломили, фильмы снимать предлагаете. Насчет диф. уравнений, ну так поискать в нете такую модель ты можешь. Вполне возможно, что ее кто-то на лабороторках делал. А там сам их численными методами решишь.

А флаг я видел. На OpenGL у меня где-то валяется (если надо, вышлю). Там он так развивается. Это, по-моему, стандартный пример SG. А делается такой флаг очень легко. Там используются Безье вычислитель (или как там его по научному). Строится кривая линия/поверхность (второго, третьего … порядка) по контрольным точкам. Эти точки со временем меняются, и создается иллюзия развивающегося флага. Имея поверхность из 9 точек, уже "флаг" сделаешь. Просто запросто smile

Вобщем если тебе нужна очень точная модель листа, то ищи мат. модель и решай ее smile . Если нужно только визуальное соответствие, то посмотри на пример флага. Там эти точки можно так расставить, что флаг у тебя в трубку скрутиться. smile smile

Автор: Амортизатор 11.6.2005, 20:41
Да, совершенно согласен. Твой флаг, о котором ты говоришь, он сделан лишь с целью имитации натурального флага, а я имел ввиду флаг, сделанный в Maya - т е его поведение целиком и полностью определяется физическими законами. Но так поступать, как я уже говорил, в моем случае совершенно не обязательно. Так что мне вполне подойдет некое подобие. Флаг, если тебе не трудно, можешь скинуть на майл.

Автор: Амортизатор 14.6.2005, 17:45
Kolia, спасибо, флаг получил!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)