Чт, 28 Мар 2024
Механоиды 3
Приветствую Вас Гость | RSS
Главная страница | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум "Механоиды 3" » Рабочий раздел. » Баланс, БД » Физика.
Физика.
smt005Дата: Ср, 02 Сен 2009, 21:28 | Сообщение # 41
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
PA3UJIb, ну дык как тебе моя демка? Или не интересно ?
 
smt005Дата: Ср, 02 Сен 2009, 21:29 | Сообщение # 42
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Yandersen, вот что в этой демке.
Прикрепления: PhysX03.avi (871.2 Kb)
 
YandersenДата: Чт, 03 Сен 2009, 02:37 | Сообщение # 43
1 Поколение
Группа: Доверенные
Сообщений: 196
Замечания: 0%
Статус: Offline
Щщщикарно! wacko Когда уже М3 будут?! cry

[Беженец со Скаев]
 
PA3UJIbДата: Чт, 03 Сен 2009, 16:41 | Сообщение # 44
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Quote (smt005)
ну дык как тебе моя демка? Или не интересно

Интересно, конечно. Не всегда из-за работы могу, но все же.
Нашел прикольный глюк, если "сделать паузу" и нажать несколько раз вперед, то после отжатия паузы глайд выстреливает ну Очень быстро )))) Цепи аж рвуться.

Шаман, запусти этот экзешник и выложи лог, я там залогировал шаги более-менее, надо посмотреть где именно у тебя рвется. И еще, неужели никакого эксцепшена не вылетает? Должно же хоть что-то быть.

Прикрепления: basePhysX_wild.exe (76.0 Kb)
 
smt005Дата: Чт, 03 Сен 2009, 19:58 | Сообщение # 45
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (PA3UJIb)
Нашел прикольный глюк
Ооо, уже первые тесты. smile
Это происходит из-за того что останавливается симуляция а вызов силы нет, они суммируются.

Добавлено (03 Сен 2009, 19:58)
---------------------------------------------

Quote (Yandersen)
Когда уже М3 будут?!

М3 никагда biggrin cool а что то похожее не скоро...................
Надо сделать нормальный антиграв, графику хорошую и много ещё чего.
 
YandersenДата: Пт, 04 Сен 2009, 01:50 | Сообщение # 46
1 Поколение
Группа: Доверенные
Сообщений: 196
Замечания: 0%
Статус: Offline
Quote (PA3UJIb)
Шаман, запусти этот экзешник и выложи лог
Прикрепления: 4370705.log (17.2 Kb)


[Беженец со Скаев]
 
Frozen_LightДата: Ср, 09 Сен 2009, 01:06 | Сообщение # 47
4 Поколение
Группа: Доверенные
Сообщений: 194
Замечания: 0%
Статус: Offline
Типа, мысль)
Почему бы в роли антигравирующего не использовать невидимый, физически прозрачный для всех объектов кроме ландшафта объект со свойствами "мягкого", упруго деформируемого тела, размещаемого под днищем глайдера? Это реализуемо ведь?


Я полон оптимизма. Человечество преодолело законы морали, почему бы ему не преодолеть законы физики?
 
smt005Дата: Ср, 09 Сен 2009, 07:36 | Сообщение # 48
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Я наверно так и сделаю, сейчас физ. модель глайдер это сфера, пытался сделать антиграв используя силы, но не получилось, глайдер всё время движется (вверх, вниз).
 
Frozen_LightДата: Пн, 14 Сен 2009, 11:44 | Сообщение # 49
4 Поколение
Группа: Доверенные
Сообщений: 194
Замечания: 0%
Статус: Offline
Есть прогресс?

Я полон оптимизма. Человечество преодолело законы морали, почему бы ему не преодолеть законы физики?
 
smt005Дата: Пн, 14 Сен 2009, 19:51 | Сообщение # 50
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (Frozen_Light)
Есть прогресс?

В чём именно ?

Если ты про антиграв, то он будет делаться не скоро, сейчасдругое делаю.

 
RazumДата: Пн, 14 Сен 2009, 22:00 | Сообщение # 51
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
глайдер всё время движется (вверх, вниз)

Добавить коэффициенты сопротивления, чтоб колебания гасили, пробовал?


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Пн, 14 Сен 2009, 22:10 | Сообщение # 52
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (Razum)
Добавить коэффициенты сопротивления, чтоб колебания гасили, пробовал?

Как?...

Добавлено (14 Сен 2009, 22:10)
---------------------------------------------
В этом PhysX, не понятно в чём измеряются сила и растояние.

 
RazumДата: Вт, 15 Сен 2009, 17:32 | Сообщение # 53
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
Как?...

Эээ... Я думал, ты формулы движения сам задаешь...


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Вт, 15 Сен 2009, 17:50 | Сообщение # 54
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Там не понятно в чём измеряется сила.

Напиши пример формулу, может я не понимаю о каких формулах ты говориш.

 
RazumДата: Ср, 16 Сен 2009, 17:28 | Сообщение # 55
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Если честно, я не могу ничего конкретного сказать, так как не видел той системы, на которой ты монстрячишь свои изделия.

Кстати, а как происходит там вообще расчет?


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Ср, 16 Сен 2009, 17:54 | Сообщение # 56
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
В PhysX нет формул, там используются такие понятия.
- "дельта" времени (период времени между кадрами)
- сила (непонятно в чём измеряется)
- вектор силы.
- растояние (как и сила не имеет меры)
- плотность и вес (аналогично силе и растоянию)
 
RazumДата: Ср, 16 Сен 2009, 19:41 | Сообщение # 57
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
растояние (как и сила не имеет меры)

Ну, я думаю, измеряется в каких-нето общепринятых еденицах, например, в еденицах СИ. Однако, это существенной роли не играет, имхо.
А силу-то ты формулой задаешь, или как? Гравитация по дефолту действует, или как?

Значит, короче, нужно выяснить вектор движения, и добавить векторно к результирующей силе (которая вызывает колебания) некую константную силу(трения). Главное, чтобы эта сила всегда действовала в сторону, обратную скорости движения.


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Ср, 16 Сен 2009, 20:44 | Сообщение # 58
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (Razum)
в еденицах СИ. Однако, это существенной роли не играет, имхо.
Фиг знает, формула F=m*a, где a = g - силе тяжести, не работает.
Quote (Razum)
А силу-то ты формулой задаешь, или как?
Значение и вектор. Причём чем длиньше вектор, тем сильнее сила.
Quote (Razum)
Гравитация по дефолту действует, или как?
гравитация устанавливается вектором (0.0, 0.0, -9.8), а какое значение силы неизвестно. Пытался вывести опытно, но погрушность большая, пока вообще забил на антиграв.
В мануале не нашёл ничего по этому поводу, может не заметил т.к. мануал к Физиксу только на английском.
Quote (Razum)
результирующей силе (которая вызывает колебания
Колебания вызываются из-за того что я применяю силу торможения.
Пример, высота глайдера меньше чем требуется, тогда придаётся сила ВВЕРХ, существенная сила, для того чтобы глайдер быстро поднялся. Когда глайдер поднимается до некой точки, сила не применяется, но по инерции глайдер движется вверх, для гашения инерции придаётся сила ВНИЗ.
Такая, простая логика применения сил не сработала.
Надо попробовать так, когда глайдер ниже уровня, придать силу-импульс глайдеру (в расчёте импульса надо иметь в виду что это будет сила в некий промежуток времени - FPS). После применения силы("импульс" вверх), придавать силу вниз, которая будет изменяться нелинейно, и к моменту когда глайдер будет на нужной высоте, сила и скорость должны быть нулю.
 
RazumДата: Ср, 16 Сен 2009, 21:49 | Сообщение # 59
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
Фиг знает, формула F=m*a, где a = g - силе тяжести, не работает.

То-есть вообще не работает, или неожиданным образом работает?
Quote (smt005)
Значение и вектор. Причём чем длиньше вектор, тем сильнее сила.

Что-то я не понял. А зачем значение тогда? Можно было бы либо определять силу единичным(или другой фиксированной длинны) вектором и значением, ака модулем, либо же только вектором. Может, это взаимосвязанные (в том смысле, что если задал вектор - значение само посчиталось) вещи?
Quote (smt005)
гравитация устанавливается вектором (0.0, 0.0, -9.8), а какое значение силы неизвестно.

Судя по константе сила рассчитывается по всем известной формуле, а вектор обозначает ускорение, сообщаемое объектам. Судя, опять же, по константе, оно указано в метрах в секунду. Может, и прочее, что ты принял за силы - это вовсе не силы, а сообщаемые объектам ускорения? И, типа, поправку на массу надо самому делать?

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


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Ср, 16 Сен 2009, 23:49 | Сообщение # 60
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (Razum)
То-есть вообще не работает, или неожиданным образом работает?

Сила очень маленькая.
Quote (Razum)
Что-то я не понял. А зачем значение тогда?
Получается, есть два способа управления силой. Установить неменяющийся вектор и менять только силу(одно значение), или неменяющуюся силу и изменять вектор(три значения)
. Выбор за програмистом. А можно оба значения одновременно.
Quote (Razum)
Судя, опять же, по константе, оно указано в метрах в секунду.
Да, но какая сила у этого вектора, мне неизвестна.
Quote (Razum)
надо проверять в каждый момент времени
Не проблема.
Quote (Razum)
если сила константная
Неконстантная, можно менять в любое время.
Quote (Razum)
Может, и прочее, что ты принял за силы - это вовсе не силы, а сообщаемые объектам ускорения? И, типа, поправку на массу надо самому делать?

Вот так задаётся и применяется сила.
NxVec3 forceVec = ObjectsGlader[i].gForceStrength * ObjectsGlader[i].gForceVec * SceenPhysX.gDeltaTime;
Вектор (3 значения) = Сила(одно значение) * Вектор (3 значения) * Период времени(одно значение)

ObjectsGlader[i].Actor->addForce(forceVec); // применение сыли

 
RazumДата: Сб, 19 Сен 2009, 00:09 | Сообщение # 61
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
Сила очень маленькая.

Попробуй в качестве gForceStrength задавать массу объекта, на который нужно подействовать, а в качестве gForceVec - ускорение... Интересно, что выйдет?

Добавлено (19 Сен 2009, 00:09)
---------------------------------------------
Ну чего? Попробовал?


Я говорю то, и только то, что я хочу сказать.
 
PA3UJIbДата: Сб, 19 Сен 2009, 13:49 | Сообщение # 62
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Я ща пользую такую модель сил, колебаний почти нет, мучает только управление.
Прикрепления: 1574511.png (5.1 Kb)
 
smt005Дата: Сб, 19 Сен 2009, 17:00 | Сообщение # 63
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
PA3UJIb, ты код покажи а не картинки.
Razum, попробовал сделать как ты говориш, НЕработает.
 
RazumДата: Сб, 19 Сен 2009, 20:00 | Сообщение # 64
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
Quote (smt005)
НЕработает.

Ну а чего получается?


Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Сб, 19 Сен 2009, 21:44 | Сообщение # 65
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (Razum)
Ну а чего получается?

Получается сила которая не может поднять объект.
Чтобы силы было достаточно, её надо увеличить больше чем в 100 раз. Ещё есть одна проблема, она скорее всего связана с погрешностью счётчика. После запуска сцены, объект толкается(движется) вверх а через некоторое время падает. В одно время я подобрал значение силы при котором объект был почти как в невесомости, а через некоторое время (пол дня + перезагрузка компа) эта же сила толкала объект вверх постоянно.
Возможно нужно учитывать какието настройки PhysX.

Добавлено (19 Сен 2009, 21:44)
---------------------------------------------
Но в SDK PhysX есть пример подобия антиграва.
http://smt005.my1.ru/news/antigrav_sredstvami_physx/2009-09-19-5

 
PA3UJIbДата: Чт, 24 Сен 2009, 15:06 | Сообщение # 66
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Вариант из демки "OnewayInteractions" еще только начал разбирать.
А пока выкладываю свое художество на тему антиграва.
 
PA3UJIbДата: Чт, 24 Сен 2009, 18:45 | Сообщение # 67
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
файл рас

Добавлено (24 Сен 2009, 16:22)
---------------------------------------------
файл 2

Добавлено (24 Сен 2009, 18:45)
---------------------------------------------
кароч так
http://slil.ru/28012500
http://slil.ru/28012862

Прикрепления: demo576.wmv (911.8 Kb)
 
RazumДата: Чт, 24 Сен 2009, 19:42 | Сообщение # 68
Second Admin
Группа: Доверенные
Сообщений: 439
Замечания: 0%
Статус: Offline
А что это глайдер как-то дергано двигается, хотя камера вроде плавно...

Я говорю то, и только то, что я хочу сказать.
 
smt005Дата: Чт, 24 Сен 2009, 20:14 | Сообщение # 69
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
PA3UJIb, код давай.
 
PA3UJIbДата: Пт, 25 Сен 2009, 13:46 | Сообщение # 70
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Quote (Razum)
что это глайдер как-то дергано двигается, хотя камера вроде плавно...

Дело в слишком малом времени расчета в PhysX. Сегодня поправил это дело.
Quote (smt005)
код давай.

Ыть smile
Хотел дать, но ... Ну не взял я с работы свой код. Опять он там остался... sad
Да и косячный это код, надо уже разобраться с демой, я все никак не могу дойти - сегодня, например, базу портировал в двиг. Пока не получается сделать прозрачность фермы (решетка там двойная) такой же, как в игре.
 
smt005Дата: Пт, 25 Сен 2009, 14:32 | Сообщение # 71
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Кстате, ты разбирался с ContactReport ?
Ты же вроде програмист, посмотри пожуйста в SDK как регестрировать столкновения актёров.
Я две недели времени потритил но так и не допёр как работает репорт контакта актёров.
 
PA3UJIbДата: Пт, 25 Сен 2009, 16:46 | Сообщение # 72
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Нет, не разбирался. Скажи куда смотреть?
 
smt005Дата: Сб, 26 Сен 2009, 11:36 | Сообщение # 73
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
SDK -> Guide -> ColisionDetection - > ContactRepotr, и Treggers.

Примеры "Lesson303_Contact_Report" и "Lesson304_Trigger_Report".

Добавлено (25 Сен 2009, 16:56)
---------------------------------------------
Разобрался только с группами.

Добавлено (26 Сен 2009, 11:36)
---------------------------------------------
PA3UJIb, как ты импортировал базу в движок?
По частям или сделал одну модель с одной текстурой?

 
PA3UJIbДата: Сб, 26 Сен 2009, 21:50 | Сообщение # 74
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
По частям дергал из игры, потом сгруппировал модели в редактор и портировал в движок. Текстуры по отдельности на каждый элемент группы.
 
smt005Дата: Сб, 26 Сен 2009, 23:44 | Сообщение # 75
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
PA3UJIb, как дела с ContactRepotr.
 
PA3UJIbДата: Вт, 29 Сен 2009, 19:18 | Сообщение # 76
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Хм, для чего тебе сейчас ContactReport я не знаю.
Обычно его пользуют для проигрывания звуков от столкновений. Хотя там есть несколько полезных вещичек.

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

Чтобы заюзать ContactReport надо определить производный класс от базового NxUserContactReport (надо, потому как этот базовый класс является виртуальным, и реализации его создавать нельзя). В этом классе все одна единственная public функция onContactNotify(
<указатель на пару столкнувшихся тел типа NxContactPair>,
<константа типа NxU32 означающая что-то навроде какие столкновения обрабатывать>). <--это я так список параметров описал smile

В функции этой можно взять пару и всю информацию обо всех точках контакта получить. Делается это как раз с помощью NxContactStreamIterator. Загрузка итератора делается с помощью строки
NxContactStreamIterator i(pair.stream);
Итератор на самом деле что-то вроде счетчика. В каждый конкретный момент он содержит указатель на одну пару (столкнувшихся тел, насколько я понимаю). Чтобы выудить инфу, надо использовать методы итератора (специфичные именно для данного итератора, а не итератора вообще [он похоже и итератором-то зовется только от некоторого сходства с итераторами в стандарте С++]). Это goNextPair() - можно ли перейти к следующей паре; goNextPatch() - можно ли перейти к следующей группе контактов, у которых нормаль в одну сторону направлена; и goNextPoint() - собстна, можно ли перейти к следующей точке контакта (их может быть от 0 [тела не столкнулись] до много-много-много [вряд ли их бесконечное число, а точное я не знаю]). Саму точку брать - getPoint().
От этой точки уже можно получить вектор нормали силы взаимодействия, вектор силы трения и вектор penetration (не уверен с переводом, по-моему это проникновение).

Короче, что тебе надо от ContactReport, то ты и можешь получить. Конечно, кофе оно не сварит, но кое-что все же умеет happy

Это все в примере Lesson303, там как раз написано (PhysX СДК с полными исходниками поставляется).

 
smt005Дата: Вт, 29 Сен 2009, 20:24 | Сообщение # 77
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
Quote (PA3UJIb)
Обычно его пользуют для проигрывания звуков от столкновений....................

Это всё что ты написал, я знаю, но как этим воспорльзоваться НЕзнаю!
Особенно я не могу понять как работать с pair.
Quote (PA3UJIb)
Это все в примере Lesson303, там как раз написано

Я пытался разобраться с кодом, но ничего не получилось, может что-то упустил. отобразить контакт с помощью "дебагера" у меня получилось.
Если ты понял, то сделай простейший примерчик.

Quote (PA3UJIb)
Хм, для чего тебе сейчас ContactReport я не знаю
Хм, ты не первый это пишиш.
Я хочу сделать снаряды оружия с помощью актёров или флюидов(если можно).
Если такой способ не подходит, то как можно сделать? Я не представляю.
 
PA3UJIbДата: Ср, 30 Сен 2009, 03:57 | Сообщение # 78
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Quote (smt005)
всё что ты написал, я знаю

Ну вот, а я думал, что-то новое сообщил.
Quote (smt005)
Я хочу сделать снаряды оружия с помощью актёров или флюидов(если можно)

Флюидами если только пульки - как для них использовать ContactReport я не знаю.
 
smt005Дата: Ср, 30 Сен 2009, 17:01 | Сообщение # 79
Admin
Группа: Администраторы
Сообщений: 936
Статус: Offline
ДЫк как определить существования контакта и координаты на объектах?
Выход вижу только в ContactReport.

Quote (PA3UJIb)
Ну вот, а я думал, что-то новое сообщил.
Но у меня не получается с этим работать!
 
PA3UJIbДата: Чт, 22 Окт 2009, 03:52 | Сообщение # 80
1 Поколение
Группа: Основной состав
Сообщений: 105
Замечания: 0%
Статус: Offline
Quote (smt005)
как определить существования контакта и координаты на объектах?

Вот, теперь мне ясно что тебе требуется. Буду думать.

Добавлено (22 Окт 2009, 03:52)
---------------------------------------------
Критично посмотрел на движение глайдера в моей демке - думаю, может сделать не одну, а две физ.модели. Одна (более точная) будет отвечать за взаимодействия с другими глайдами и оружием, а другая (простая, шаровидная, как у smt005) только за взаимодействие с окружающим миром.

 
Форум "Механоиды 3" » Рабочий раздел. » Баланс, БД » Физика.
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:


Хостинг от uCoz