forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Просто интересно (http://forum.boolean.name/showthread.php?t=8610)

falcon 04.07.2009 22:47

Просто интересно
 
Для тех кто не слышал:
есть такие волшебные вещи как DMM и Euphoria
первое эт вот:
http://www.youtube.com/watch?v=Z734GXypSwk
второе вот
http://www.youtube.com/watch?v=Qi5adyccoKI

в ДММ наверно очень упрощенны прощеты для каждой молекулы (отделенного полигона, группы полигонов)
иначе я ваще хз как можно СТОЛЬКО тел прощитывать -_-
к томуже наверняка там сделанно чтото вроде деления тел по материалам.... в меше типа "дерево" полики отщипляются продолговато и достраиваются до "тонких щепок"
камень такой тонкостью не обладает.
как так достраиваются полики до кусочков я конечно хз...
(ну полики еще более менее ясно... shell (модификатор в максе) уже сто лет существует... но это не совсем конечно то.. но как меши заделывают "дыры" правильно... эт ваще хз... хотя может отделенная частица и мешь как в максе boolean операция взаимодействуют.. но эт наверно все невероятные тормаза...для отдельной частицы то.)
но тем не менее DMM еще как то более менее примерно понятна...
как же работает ейфория -ума не приложу...
пытался манипулировать регдоллами на блице в физиксе..
ессно интересует не столько производительность сколько принцыпы..
заставить человечков хватать друг друга за руки это понятно - дело не хитрое.. когда то в игру себе хотел внедрить...
например массовые скилы - магниты рассталкивающие.. попавший в зону нпс рагдолиться и стремица уцепиться за любой ближайший боди (кроме ессно самой карты -_-)
после прекращения действия магнита - addlocalforce к голове вверх...потом дестройдим рагдол и подрубаем стандартные анимации :)
но чето не дошел до этого... забросил игру "с массовыми скилами" :)
нормально (не фейково) стоять персанажей так и не смог..
вот хотелось бы спросить... кто что думает ? как это(эйфория) работает? :)
(не думайте что я тут вдруг решил повторить её -_-.. просто чистый интерес... как же это реализованно)

NitE 04.07.2009 22:57

Ответ: Просто интересно
 
скачай да посомтри, простой просчет физики, ничего мегокрутого, у них там редактор есть, помню долго с ним прикалыался, просто идет временная линия и на ней добавляешь типа "аддфорс на ногу на 13 секунде" и всё собственно

falcon 04.07.2009 23:09

Ответ: Просто интересно
 
NitE ага
в реалтайме так просто - заставить регдолл стоять, дать ему форс в ногу а он еще устоять попробует.
я не про Endophrin говорю (рекдактор анимаций)
в ейфории все происходит реалтайм... ваще ни одной анимации..
позабавлятьс я могу
гораздо интереснее как это сделано...
как заставить рагдолл(!!) стоять? идти? встать?

Taugeshtu 04.07.2009 23:45

Ответ: Просто интересно
 
Хм, меня тоже этот вопрос занимает... Я когда продумывал возможные варианты, пришел к выводу что на регдоле постоянно "висят" силы поддержания равновесия, при изменении состояния конечности (угла сгиба сустава) появляется стремление вернуться в прежнее состояние - т.е. увеличивается сила, стремящаяся, к примеру, разогнуть колено... Ну, как-то так...

falcon 04.07.2009 23:59

Ответ: Просто интересно
 
заставить его держать равновесие.. это ппц :(
он просто отказывается стоять...
если удасться заставить рагдолл стоять не фейково... (всмысле.. я вот заставлял его стоять прикладывая силу mg в обратную сторону... фактически заставляя раг парить.. ну эт был 1 из способов xD )
а по человечески.. то потом надо заставить его ходить (допустим переставлять конечности на "следы"...но и тело должно двигаться соответсвующе)
но потом учить его садиться, вставить, ползать, кувыркаться... слишком много может сложиться нестандартных ситуаций.. а итог - все всеравно запланировано -_-
да вообще невозможно запланировать все возможные вариации...
соответственно там какие то иные методы.. заставляющие рагик двигаться по ситуации...
где то я читал что у них есть нечто вроде привычек... оборачиваться за спину если к ней прикладывается сила.. стремление за чето зациппица если он падает ну и так далее...

проще было бы с эмулировать именно человеческую (физически) походку.
ведь когда мы идем не к ноге прикладывается сила а мышцы прикладывают силу.. в определенной последовательности.. возможно эта последовательность не настолько сложна что бы её можно было эмулировать реал тайм?...
в этой демке кстати говориться о мышечной системе...

ABTOMAT 05.07.2009 00:42

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

tormoz 05.07.2009 00:58

Ответ: Просто интересно
 
http://www.myvi.ru/ru/videodetail.as...2c 760c6c91ba

ABTOMAT 05.07.2009 01:04

Ответ: Просто интересно
 
Цитата:

Сообщение от tormoz (Сообщение 109953)

Во-во, этот робот как раз то и сделал: его пихнули, он стал опрокидываться и выставил лапу в сторону падения!

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

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

falcon 05.07.2009 01:10

Ответ: Просто интересно
 
ваще в шоке... это ж ппц!
не... тут чет все не спроста... кто-то дочего-то допедрил и отказывается делиться... уже давно пытался выявить че тут и как.. пока безуспешно...
но имхо соль эйфории таки в эмуляции человеческой физиологии...
пусть не всей.. а лишь частично.
может походка человека - нечто вроде костной анимации... тупо "запомнили куда двигать кости если ввели moveDoll"
а вот реакция на события - тайна сдесь великая есть

Tadeus 05.07.2009 01:42

Ответ: Просто интересно
 
видео с собакой уже выкладывали

moka 05.07.2009 06:44

Ответ: Просто интересно
 
Насчёт динамичных разрушений - над этим сейчас работает нвидия, стобы имплеминтировать в PhysX, только свою какую-то..

falcon 05.07.2009 14:53

Ответ: Просто интересно
 
насчет физикса да ... видел динамические разрушения на ютубе..
здорово :)
эйфорию так и не раскурил :(

Taugeshtu 05.07.2009 16:39

Ответ: Просто интересно
 
Эйфорию надо долго курить по системе "touch->response", т.е. надо научить комп обрабатывать сгибы суставов (для упрощения - 2локтя + 2 плеча + 1 шея + 2 позвонка + 2 бедра + 2 колена = 11 суставов, не так много информации) для стремления приведения тела в начальное положение (стоя)
В принципе, отдаленно напоминающее эйфорию можно попробовать раскурить в одиночку за пару-тройку месяцев...

Ах, да, применять в качестве "ответа" силу нужно к джоинту, а не к, допустим, стопе - так, на всякий...

Mr_F_ 05.07.2009 19:34

Ответ: Просто интересно
 
идея интересная сделать своё миниподобие эйфории) если что я рад присоединиться и помочь.

Taugeshtu 05.07.2009 20:03

Ответ: Просто интересно
 
xDD а работу делить по конечностям?)))

falcon 05.07.2009 20:14

Ответ: Просто интересно
 
логику работы надо вкурить а потом уже думать о реализации :)))
пока что ваще не прикидываю как можно так грамотно заставить болванчиков себя вести...
падают, руки вперед выталкивают, катяться кубарем- складываются в позу эмбриона... это просто невероятно...
как и при каких условиях какие действия они выполняют...
допустим у нас есть 2-3 начальных положения.
возьмем 1ое - стоя. (допустим мы таки научули регдолл стоять)
вот он споткнулся и распластался на животе...
какие бы произвел движения человек? (фатически лежит он сейчас так же как и стоит.. только в другой плоскости)
он бы подогнул руки под грудь, отжался, вставая на четвереньки, выгнул бы тело прямо вставая с кален (в основном опираясь рукой на одно из колен... )

согласись не самое простое телодвижение?... а веть мы всего лишь поднялись с земли...
а скажем подтягивания?... вот висит человек.. к какому состоянию он должен стремиться вернуться?
полюбому тут все дело в центрах тяжести и эмуляция МЫШЕЧНО системы..
попробуй сделать так (даже на физиксе на блице)
подвесь регдол на перекладину, и заставь подтянуться.
что есть подтягивание? сгибание рук.
если просто приложить силу к части тела.. то наш персанаж просто "подлетит"... не дело.. надо сложить руки, закинуть ногу (допустим висим над обрывом) перед этим ВОЗМОЖНО раскачаться вбок.. закинуть ногу... дальше произвести серию телодвижений описать которые я не в силах, и встать на ноги... нефигово так согласись? :)

ABTOMAT 05.07.2009 20:28

Ответ: Просто интересно
 
Цитата:

подвесь регдол на перекладину, и заставь подтянуться.
что есть подтягивание? сгибание рук.
Ну это уже несложно: применяем мотор на джойнты локтей и всё

NitE 05.07.2009 20:35

Ответ: Просто интересно
 
ты видил gta 4 ? там постоянно в кадре по 10-30 человек, скажешь у всех эмуляция мышечной системы ?

Mr_F_ 05.07.2009 20:58

Ответ: Просто интересно
 
угу, но оптимизировано же всё)
недаром гта4 нереал сильно использует проц.

jimon 05.07.2009 21:02

Ответ: Просто интересно
 
думаю в гта4 изначально все движутся с помощью анимаций и только когда нужно врубают куклу

NitE 05.07.2009 21:11

Ответ: Просто интересно
 
у них там какаято смесь анимаций и симуляций, как минимум у главного перса всегда симуляция

Mr_F_ 05.07.2009 21:12

Ответ: Просто интересно
 
Цитата:

движутся с помощью анимаций и только когда нужно врубают куклу
ну ясное дело

...или вы думали полностью эйфорией ВСЕ движения мутить?

Taugeshtu 05.07.2009 21:16

Ответ: Просто интересно
 
ага, а игрок им не управляет) все на симуляции))

Хм... А как идея самодельную "мини-эйфорию" "рендерить" в анимацию, и подключать реальную симуляцию только при воздействии на человечишку?

tormoz 05.07.2009 22:18

Ответ: Просто интересно
 
Я думаю, что сначала нужно снять на фильм все основные движения (от ходьбы и бега, до реакций на потерю равновесия), классифицировать их, разложить на фазы.
выйдет примерно тысяча-две движений у каждого из которых от 2 до 10 фаз.
На регдол вешаются основные скелетные мышцы (виртуально) - моторы на джоинты, с ограничителями поворота и коофициентами силы

Далее массив с сопостовлением движение-фаза-группа сил приложеных к мыщцам

И наконец самое сложное - программный автомат который будет реализовывать все эти поведения, получая информацию от положения каждой кости (тысячи и тысячи условий)

Одному дома такое не осилить.

Данил 05.07.2009 23:18

Ответ: Просто интересно
 
А представьте оба этих эффекта в играх? что стоит за стеной деревяннойвраг, ты тупо из дробовика в щепки разбиваешь стену, одна пулька задевает руку врага, тот ахриневает, прикрывает рукой кровь, нервно убегает , ты еще раз стреляешь, попадаешь в бедро и ногу, он поскальзывается, падает, пытается встать...

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

ABTOMAT 06.07.2009 00:10

Ответ: Просто интересно
 
Цитата:

А представьте оба этих эффекта в играх?
Star Wars - force unleashed
Цитата:

Сейчас, заметил, все направление в развитии в физику уже идет, а не в графику...
Сначала 2Д достигло совершенства - придумали 3Д. Достигло "потолка" 3Д - стали развивать физику. Того и гляди придумают ещё что-нибудь. Кстати, я считаю, Euphoria -подобные технологии - это уже отдельная от физики песня. ВСкорее всего, за риал таймовой генерацией движений - будущее. Просто щас процы слишком слабы чтобы абсолютно всё так просчитывать. Но вспомним физику - раньше (10 лет назад) разве что пара кубиков обфизичивались, теперь куда ни плюнь - всё физическое.

Данил 06.07.2009 02:37

Ответ: Просто интересно
 
Кстати, вспомните , каким новшеством был рэгдолл)

Так же там еще куча видях такого рода:
http://www.youtube.com/watch?v=yn1KQ...eature=related
http://www.youtube.com/watch?v=Y2JIe...eature=related

Mr_F_ 06.07.2009 03:43

Ответ: Просто интересно
 
Цитата:

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

falcon 06.07.2009 04:31

Ответ: Просто интересно
 
согласен с mr_F ... как раз в том то и дело что если мы ищем условия то получается почему б не сделать кучу анимок и не подставить во все эти условия... тут чето похитрее...
например.. мы переносим вес с ноги наногу при ходьбе... когда мы отжимаемся от пола.. мы как бы тоже манипулируем центром тяжести..
ваще я как смотрю... мы по идеи ваще нифига не знаем даже как ведем себя в тех или иных ситуациях... а в этом и кроется суть такой технологии..

вот любой извас в стал на лед... как надо двигать нагами что бы удержать равновесие?..в какую сторону? почему?...
все эти тысячи условий... может и не тыщи их.. если знать что как и прикаких услвоиях делает человек

tormoz 06.07.2009 19:55

Ответ: Просто интересно
 
В корне не согласен
какая нафиг куча анимок ?
вот например:

толкнули, упал, поднимаюсь, в этот момент опять толкнули (с какой стороны ? )
количество анимок будет бесконечным.
а программа отработает ЛЮБОЕ воздействие

falcon 06.07.2009 23:04

Ответ: Просто интересно
 
tormoz возможно я не вкурил таки что ты имел ввиду в 24ом посте...
единственное что я понял - создать нечто вроде набора "физ" анимаций.
кучу физ анимаций. типа...
если лежим
если лежим на животе
задействовать группу движений по подьему с живота:
фазы:
1)пододвинуть подсебя руки (в каком бы положении не находилис)
2) отжаться..
3) бла бла бла
4) последняя фаза
закончить группу движений "встать из положения лежа" (выполнив случайную группу движений из класса "оправиться")
end if
end if


выглядит интересн... но кажеться не возможным...
просто даже если примерно прикинуть сколько разных условий придется проверять.... скоолько переборов... и это только на 1ого то персонажа... а если их шутк 20?... приправить слабеньким ИИ и всо! )))
фпс 0....
а в том же SWTFU прикручено еще и ДММ и Хавка и вообще наполнение нехилое... и нету тормазов. наводит на мысли о каком то фейке в системе...))

falcon 07.07.2009 02:21

Ответ: Просто интересно
 
xDDDDDDDDDDDDDDDDDDD
в общем зацепила меня фраза "тысячи и тысячи условий"...
думаю над праверить как к ним блиц отнесется.)

ничего сложного
Код:

file%=WriteFile("cod.txt")
WriteLine file,"time#=millisecs()"
For i=1 To 100000
WriteLine file,"if a="+Rand(1,2000)+" then a="+Rand(1,2000)
Next
WriteLine file,"print millisecs()-time"
WriteLine file,"waitkey()"
include "cod.txt"

100к строк кода )))
результат - время выполнения ))))
короче... сгенирировал код...
открываю файлик... копипист в иде блица...
в общем вердикт - блиц загнулся еще до компиляции :) :) :)
сижу 5 минут ...блиц "не отвечает"...
(10 тысяч строк вставлялось значительно быстрее... выполнялось 7 милисекунд -_-)
ща еще разобью файлик... и инклюдами их!!инклюадми!
(Добавлено)
ну вот.. инклюдом все работает.. компилица долго но задержка аж 10 мс!!(какая великая разница 10к и 100к строк кода!))
но если все условия ВЫПОЛНЯЮТСЯ:
Код:

file=WriteFile("cod.txt")
WriteLine file,"time#=millisecs()"
For i=1 To 10000
WriteLine file,"a="+i
WriteLine file,"if a="+i+" Then b=b+a"
Next
WriteLine file,"print millisecs()-time"
WriteLine file,"waitkey()"
CloseFile file
Include  "cod.txt"

то при 10 000 верных условий задержка 23 мс.. гыыы))))
беднняжко блиц)))

(з.ы. я понимаю... тут помимо условий еще и присванивания и ваще все проверить можно было создав условие в цикле.. но это ж было бы не интересно ! XD )

tormoz 07.07.2009 05:42

Ответ: Просто интересно
 
Дебильный тест
Ты измеряещ скорость запаси-чтения в файл и работы со строками
это ВСЕ языки делают крайне медленно.


Никто такие вещи не делает строками, тем более с записью в файл
Код:

x#=0
y#=10
Repeat
time=MilliSecs()
For i=1 To 100000

 If i<50
    x=x+1
    y=y*5
 Else
    x=x-1
    y=y/5
 EndIf

Next
time=MilliSecs()-time

UpdateWorld
RenderWorld

Text 100,100,time
Flip
Until KeyHit(1)
End

1 мс

FDsagizi 07.07.2009 09:47

Ответ: Просто интересно
 
Есть определенный набор конечностей. Руки, Ноги, Голова.

Чтобы человек стоял ровно, нужно манипулировать Двумя ногами, Двумя руками, туловищем – голову в расчет не берем.

Настраивать ноги по отдельности особого смысла нету, т.е. у нас есть руки, ноги, туловище – того три элемента.

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

Юзал эндорфин, там чувакам достаточно трудно устать. И в основном они работают по такому принципу, Анимация -> Упал, Привстал -> Анимация.

Что больше всего понравилось, это переход от анимации, к физике- т.е. физика когда симулируется, она опирается на ключи анимации.

К примеру как он встает, он переворачивается на живот, и потом опираясь на стандартную анимацию, встает…

Тут все относительно не просто. Ходя думается мне, что если посидеть несколько месяцев, можно что-то приблизительно похожие навоять…

IGR 07.07.2009 12:18

Ответ: Просто интересно
 
Цитата:

Сообщение от tormoz (Сообщение 109953)

ничего так собачка... нечто похожее на "Танцы со свездами" !! :)

3dr1aN 07.07.2009 13:16

Ответ: Просто интересно
 
наверно боГ дал им сорцы

falcon 07.07.2009 14:42

Ответ: Просто интересно
 
tormoz ты уж так всерьез воспринял ))))
всё я понимаю ))))
просто прикольнулся... этж не тест... :)
так просто...


Часовой пояс GMT +4, время: 03:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot