The Elder Scrolls & Fallout 3 Modding

на главную страницу сайта

Форум Oblivion, Skyrim & Fallout 3/4 Modding

Объявление

У нас есть свой сервер Дискорда. Заходите, пообщаемся.
Господа, те кто пользуются фотохостингом http://uploads.ru/ для размещения изображений. Рекомендую воспользоваться для упрощения загрузки вот этой программой.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. (New Vegas Edition) » Движение объекта с коллизией


Движение объекта с коллизией

Сообщений 1 страница 25 из 25

1

Многие писали что это не возможно, но оказались не правы. K.A.I.N. написал от нашего имени для всех, кто захочет то же поучаствовать в этом интересном деле.

Итак, поразмыслив я решил немного оформить тему и написать больше информации о движении объектов с коллизией.

;===============================================================================
Итак, вопрос в том как двигать объект с коллизией? Ответ простой, нужен скрипт и коллизия с возможностью взаимодействия с игровой физикой (возможностью движения).

История:

Свернутый текст

Привет всем!

E pur si muove «И всё-таки она вертится!»
1633 год - Галилео Галилей

КОМПАНИЯ GRAF and KAIN48 ПРЕДСТАВЛЯЕТ ДВИЖЕНИЕ ОБЪЕКТА С КОЛЛИЗИЕЙ!

Ты помнишь, как всё начиналось, Всё было впервые и вновь… (Машина Времени)

Мне понадобился скрипт движения объекта с одного места до другого, и я обратился к GRAF за помощью.
Он помимо самого скрипта сделал для меня готовую сцену, взяв для объекта движения мотоцикл, который я потом мог заменить - на свой объект. И в описании добавил:
- Тебя ждёт большой сюрприз!
Я скачал esp, подключил и запустил игру. Включил выключатель, мотоцикл двинулся в заданном скриптом направлении, к точке остановки – отмеченной маркером. Я хоть и мало понимаю в скриптах, но видел, что в нём нет отключения "поддёргивания" и включения коллизии (enable, disable).
И уже было хотел возвращаться на сайт к Graf , что бы написать, что это не то что нужно.
Но решил походить в игре.
Поэтому направился на то место, где стоял мотоцикл до начала движения и удивился, не обнаружив там не видимого препятствия в виде оставшейся на месте коллизии.
Загрузил сохранение, запустил движение и отправился к мотоциклу, решив пройти через него насквозь. Но не тут то было! Мотоцикл двигался с коллизией.
Я «кинулся» к нему на сайт в тему, где мы обсуждали этот скрипт и написал: Ты заметил! Коллизия движется вместе с объектом!
- Ага!
Ответил GRAF .
- Выше почитай! Ты пропустил мои замечания, я его из-за этого и взял, что он имеет синию коллизию.
Я почитал.
Оказалось, что Graf заметил разницу в цвете коллизий: красный, синий , зелёный, белый и тп. Почти все цвета радуги.
Возник вопрос: - «А зачем ?»
В ходе небольшого обсуждения, которого мы определили разницу во взаимодействии персонажа со объектами из категорий статика, оружие, посуда и тп. То есть с такими, на которые персонаж мог воздействовать сдвигая их с места.
Это вы все прекрасно знаете и это ни для кого не новость.

Получалось так, что объект не имея «мировой модели» GO, как в случае с бронёй двигался с коллизией, не имея на себе скриптов «поддёргивания», или включения отключения коллизии.

- Пороем!
Спросил я.
- Пороем!
Ответил Graf

ПОЛТОРА ЗЕМЛЕКОПА ИЛИ «КАЗНИТЬ НЕЛЬЗЯ – ПОМИЛОВАТЬ»

Делая параллельно - занесли в игру два своих новых объекта, он через Blender, а я через MAX с нужными настройками niftools
Дальше я пошёл по простому пути – просто заменил (Copy –Paste) нужное в модели мотоцикла (motorcycle01.nif.)
http://savepic.net/2745055m.jpg
и получил плиту, которая движется с коллизией. В игре на неё можно было запрыгнуть и двигаться вместе с ней.
http://savepic.net/2736863m.jpg
1. Но только нужно было постоянно двигаться со скорость движения плиты.
В случае остановки, персонаж падал, когда плита уезжала из под ног.
2. Плита двигалась, реагируя на встречные препятствия – ящики, столбы и тп. То есть двигаясь по прямой, опускала или поднимала нос, начинала вращение вокруг своей оси и тп.
Получалось, что коллизия, сталкиваясь с коллизией не останавливалась, а проходила через другую коллизию, но всё таки не совсем без сопротивления и взаимодействия.
Тут то же интересно - при изменении настроек плита могла двигаться строго по прямой, не меняя направления после столкновений.
3. И обнаружилось, что если стрелять по плите, после взрыва она становилась горевшим мотоциклом.

Понятно, что превращение плиты в мотоцикл после выстрела и взрыва и движение коллизии, было задано, какими то настройками модели.
Нужно было понять какими!
Решили разделиться – Graf продолжает «Рыть» в nifskope, сравнивая и меняя значения, а я пытаюсь найти нужное в интернете, переводить .
Вот тут и выяснилось, что землекоп из меня плохой! Так скажем половина землекопа.
Найти ничего не удалось, кроме того, что у всех на виду в виде интерактивной помощи
NIF File Format Documentation
Расшифровку или описание всех имеющихся флагов найти не удалось.
Перевод , на наш взгляд, нужного из:
Collision Response
Motion System
Deactivator Type
SolverDeactivation
Quality Type
Почти ничего не дал! Всё таки тексты в описании в основном состоят из спец названий и терминов.
Как в прочем, почти ничего не дало изменение типов в этих пунктах. Разница в поведении объекта при движении почти не заметна. Да и нудное это дело, менять значение и смотреть за поведением объекта в игре!
*Так что тут, скорее всего придётся разбираться длительное время.
Но удалось проверить основные типы коллизии, а именно то как персонаж взаимодействует с ними.
Выяснилось следующее:

При типе коллизии OL_STATIC (красная)коллизия остаётся на месте, персонаж не взаимодействует с объектом, проходя или проваливаясь в него.
При типе коллизии OL_PROPS (синяя) коллизия движется с объектом, но персонаж медленно проваливается сквозь неё, если не будет двигаться, или подпрыгивать.
При типе коллизии OL_CLUTTER (синяя) коллизия движется вместе с объектом, персонаж движется вместе с коллизией, стоя на месте, или двигаясь в пределах объекта (при движении по Z)
Или передвигаясь по объекту (при движении по Y,X)- стоять нельзя, объект уезжает из под ног.
При типе коллизии OL_TRANSPARENT (белая) коллизия движется вместе с объектом, персонаж движется вместе с коллизией вверх, но должен двигаться при движении по горизонтали. При этом если прыгать на плите, она начинает поворачиваться меняя своё положение, в зависимости от того в каком месте персонаж воздействует на плиту. (так скажем небольшой отклик)
OL_TREES (красная) – тут интересно! Персонаж толкает объект вместе с коллизией– сдвигая с места, не проваливаясь в него. (так скажем большой отклик)
Это основные типы взаимодействия. А это картинки!
http://savepic.net/2718416m.jpg
http://savepic.net/2716368m.jpg
http://savepic.net/2706128m.jpg
Хотели сделать ролик, да потом решили – зачем, кто захочет проверить поставит esp и сам всё увидит.

Теперь про стрельбу и замена объекта после взрыва.

Как я написал выше в случае с плитой, которая была «сделана» заменой nif мотоцикла, она взрывалась и становилась горевшим мотоциклом (меняла модель)
А вторая плита (лифт) сделанная из телефона на выстрелы, никак не реагировала.
Получается что одна модель плиты Platform.nif из папки Data нашего мода, заменяя nif мотоцикла и телефона – в игре ведёт себя по разному.
Почему!?
Первоначальная версия, что на это влияют флаги из нодов модели отпала.
Наверное, мы что то важное пропустили, или не заметили. Поэтому тоже надо думать и экспериментировать.

===========
Ответ оказался прост. Мы просто изменили оригинальный мотоцикл, и его настройки взрыва сохранились вместе с новым объектом (в id).
Подсказку дал Spalny_Vagon
Мувебле-статика. Add destruction data, какжется так эта вкладка называется. Там задаются: прочность объекта; стадии разрушения; скорость разрушения; будут ли взрывы, а если будут, то сколько и какие; какие детали будут разлетаться и на что в конечном итоге будет заменена первоначальная модель. Т.е. там можно указать, что радиоприемник после разрушения будет заменен, например, на пылесос. Очевидно, что плита в свое время была сделана из взрывающегося мотоцикла. Разрушать можно как с помощью оружия, так и скриптом (команда DamageObject). Посмотрите, как устроены взрывающиеся машины, короче говоря.

Я МОГУ ЛИШЬ УКАЗАТЬ ДВЕРЬ. ТЫ САМ ДОЛЖЕН ВЫЙТИ НА...(Матрица)

Как использовать!
Хоть как.
Строите новые уровни с движущими объектами, по которым игрок должен передвигать к цели.
Стройте лифты и подъёмники, «летающие» станции и дирижабли, спускаемые капсулы и тп.
(Пример – поднимающаяся вверх кабина с иллюминаторами, в которые игрок видит удаляющуюся землю, свободно перемещаясь внутри.)
Даже если учитывать минус, что при горизонтальном движении объекта игрок вынужден «подрабатывать» ногами, что бы не упасть с объекта. Всё равно можно делать интересные моменты.
Не говоря уж про движение вверх или вниз, когда всё работает полностью. Игрок может стоять, двигаться, стрелять и тп.
http://savepic.net/2699985m.jpg
Неписи то же могут стоять и стрелять, могут передвигаться в пределах объекта и падать вниз.
Понятно, что пакеты AI скорее всего будут работать не все. Sand Box скорее всего точно не будет – сетки navmesh нет. Хотя кто его знает как игра отслеживает расстояние до сетки и есть ли ограничения по высоте – возможно, что непись двигаясь на высоте 10 метров от земли, будет точно так же двигаться по объекту, как если бы был на поверхности. (Надо пробовать).
В общем пробуйте - вот esp http://narod.ru/disk/46125629001.bf8219 … n.zip.html
В нём две плиты и скрипт движения (движение безконечное) по X в одном случае и по Z в другом

Пишите если натолкнётесь, на что-нибудь интересное.

Пока.

Итак вот тестовый скрипт:

Float YAchsePosition ;делаем для установки траэктории
Float YAchse  ;делаем для установки скорости по траэктории

Begin GameMode
Set YAchsePosition to GetPos Y ;устанавливаем траэкторию по Y
Set YAchse to YachsePosition -2 ;устанавливаем движение по трактории минус Y, со скорость две координаты в секунду
SetPos Y YAchse ;устанавливаем движение Y с установленой скоростью (-2)
End

Скрипт можно вешать на активатор, триггер, и т.д.

И теперь главное о коллизии. Какая же коллизия движется а какая нет?
Вот такие настройки обычно делаю я, при движущемся объекте:
http://savepic.su/2310753m.jpg
Ниже написано как создать коллизию, но если она есть у объекта, её не нужно заново делать и старую удалять. Просто поменяйте настройки.

У вас может возникнуть вопрос "А как создать коллизию?", у нас есть ответ "Как создать коллизию в nifskop."

Преобразование объекта в коллизию с помощью nifskop.
Так как мне написали, что моё видео пособие не как не туториал, я решил немного исправить это. Итак:
Collision – это “столкновение” способность объектов ударятся друг о друга.

Расшифровки слов, которые я буду использовать в этом гайде:
ПКМ – правая  клавиша мыши
ЛКМ – левая клавиша мыши
Корпус – это-то из чего состоит коллизия.

Преобразование в коллизию:
Что бы из вашего блока NiTriStrips сделать коллизию, нужно для начала открыть две модели, свою и на примере возьмём telephone01, теперь копируем NiTriStrips своей модели, ПКМ на NiTriStrips -> Block -> Copy Branch:
http://savepic.su/1746801m.jpg

Откроем вторую модель телефона и удалим модель:
http://savepic.su/1733502m.jpg
Нажимаем на блок модели телефона NiTriStrips и нажимаем ПКМ -> Block -> Remove Branch (Ctrl+Del).

Теперь вставим в модель телефона свою модель:
http://savepic.su/1709936m.jpg
ПКМ  на BSFadeNode -> Block -> Paste Branch.

Теперь копируем NiTriStripsData своей модели, ПКМ на NiTriStripsData -> Block -> Copy:
http://savepic.su/1718143m.jpg

Далее удалим старую коллизию:
http://savepic.su/1722227m.jpg
ПКМ на bhkConvexVerticesShape –> Block -> Remove. После этого вы заметите, что появились белые линии по краям модели. Обратите внимание на белый контур, вокруг вашей модели это означает, что мы успешно удалили старую коллизию.

Чтобы создать новый блок данных коллизии выполните следующие действия:
ПКМ на BSFadeNode -> Block -> Insert:
http://savepic.su/1733495m.jpg

Далее появится такое окно:
http://savepic.su/1713015m.jpg
Выберите Havok -> bhkNiTriStripsShape чтобы создать новый блок коллизии.

Далее появится bhkNiTriStripsShape который мы будем использовать для столкновения мешей. Далее нужно сделать выбор материала коллизии, это важно, так как коллизия модели реагирует на повреждения от оружия и другие события, которые изменяют поверхность (например, пулевые отверстия выглядят по-разному в камне металле или стекле):
http://savepic.su/1705846m.jpg

Далее в Num Strips Data поставим 1, и ниже в Strips Data жмём ПКМ -> Array -> Update:
http://savepic.su/1737357m.jpg

После этого нажимаем на “+”,  во вкладке Strips Data жмём в выпадающем блоке ПКМ -> Block -> Paste:
http://savepic.su/1742476m.jpg

Теперь нам нужно вставить в данные, которые мы скопировали в нашей модели:
http://savepic.su/1721984m.jpg
ПКМ на bhkNiTriStripsShape –> Havok -> Pack Strips. Это позволит реорганизовать новый объект Havok, и переименовать его.

И последние шаги, ПКМ на bhkPackedNiTriStripsShape -> Block -> Copy Branch (Ctrl+C):
http://savepic.su/1731200m.jpg

Открываем bhkCollisionObject и ЛКМ на bhkRigidBody. Теперь ПКМ на ShapeBlock Details смотрите скрин) -> Block -> Paste Branch (Ctrl+V).
http://savepic.su/1754755m.jpg

Далее удаляем не нужный блок bhkPackedNiTriStripsShare:
http://savepic.su/1729155m.jpg
ПКМ на bhkPackedNiTriStripsShare -> Block -> Remove Branch (Ctrl+Del).

Теперь сохраним модель File -> Save As… Пишем имя, и указываем путь сохранения файла.
Все коллизия для модели готова теперь можете смотреть модель в игре.

Дополнение:
KAIN и Wulf сказали мне:

Для тех у кого нет 3D редактора, как выход из положения - такой способ создания коллизии вполне подойдёт. Но чайник это чайник - на нём полигонов немного, а если модель сложная, то прирост объёма к весу модели при таком способе - от коллизии 25-30 процентов, плюс, как правильно сказал Wulf "Не надо без нужды издеваться над Gamebryo иму итак плохо! Он может и упасть"

Для этого, можно делать “облегчённую” коллизию объекту. Жмём на блоке модели NiTriStrips:
http://savepic.su/1753734m.jpg

ПКМ на NiTriStrips -> Havok -> Create Convex Shape и в выпадающем окне (Перевод: введите максимальные округления, использованные по величине, значения будут даваться менее точные, но более лучшей):
http://savepic.su/1747609m.jpg

Далее появится выпадающее окно, в котором написано “создал корпус с * вершин, * нормалей”:
http://savepic.su/1712793m.jpg

Теперь у нашей модели есть коллизия:
http://savepic.su/1717912m.jpg

Надеюсь, суть передать смог. Спасибо Miaximus с форума Bethesda, за его способ преобразования модели в коллизию. Я лишь перевёл и дополнил то, что посчитал нужным.

Дополнение (о движении объекта с коллизией):
Если вы делали коллизию по этому способу (гайду), и собираетесь двигать объект с коллизией в роли лифта вместе с объектами или гг, тогда вам нужно поставить такие настройки коллизии:
http://i049.radikal.ru/1204/4f/e0cf641ee8d0t.jpg
С такими настройками, коллизия двигает даже гг (тестил такие настройки коллизии в роли лифта), все работает нормально. Но увы гг может провалиться через коллизию.

И расскажем о типах коллизий:
При типе коллизии OL_STATIC (красная)коллизия остаётся на месте, персонаж не взаимодействует с объектом, проходя или проваливаясь в него.

При типе коллизии OL_PROPS (синяя) коллизия движется с объектом, но персонаж медленно проваливается сквозь неё, если не будет двигаться, или подпрыгивать.

При типе коллизии OL_CLUTTER (синяя) коллизия движется вместе с объектом, персонаж движется вместе с коллизией, стоя на месте, или двигаясь в пределах объекта (при движении по Z), но тоже проваливается.

Или передвигаясь по объекту (при движении по Y,X)- стоять нельзя, объект уезжает из под ног.

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

OL_TREES (красная) – тут интересно! Персонаж толкает объект вместе с коллизией– сдвигая с места, не проваливаясь в него. (так скажем большой отклик).

Это основные типы взаимодействия. А это картинки!
http://savepic.net/2718416m.jpg
http://savepic.net/2716368m.jpg
http://savepic.net/2706128m.jpg

Как использовать!
Хоть как.
Строите новые уровни с движущими объектами, по которым игрок должен передвигать к цели.
Стройте лифты и подъёмники, «летающие» станции и дирижабли, спускаемые капсулы и тп.
(Пример – поднимающаяся вверх кабина с иллюминаторами, в которые игрок видит удаляющуюся землю, свободно перемещаясь внутри.)

Не говоря уж про движение вверх или вниз, когда всё работает полностью. Игрок может стоять, двигаться, стрелять и тп.
http://savepic.net/2699985m.jpg
Неписи то же могут стоять и стрелять, могут передвигаться в пределах объекта и падать вниз.
Понятно, что пакеты AI скорее всего будут работать не все. Sand Box скорее всего точно не будет – сетки navmesh нет.

В общем пробуйте - вот esp http://narod.ru/disk/46125629001.bf8219 … n.zip.html
В нём две плиты и скрипт движения (движение безконечное) по X в одном случае, и по Z в другом.

Так же мы сделали тест плагин с рабочим лифтом. Лифт возле Гоморры, кому интересно вот ссылка. Переместиться к Гоморре можно набрав в консоли coc TheStripWorldNew.

Ранее спрашивали о движении по диагонали, да возможно. Нужно двигать объект по двум координатам, например Z и Y. Вот скрипт:

Short State

Float YPos
Float YAchse

Float ZPos
Float ZAchse

Begin OnActivate
if State == 0
;    disableplayercontrols 1 1 0 1 0 1 ; если требуется
  Set State to 1
endif
End

Begin GameMode
if (State == 1)
  Set ZPos to objectRef.GetPos Z
  Set ZAchse to ZPos +2
  objectRef.SetPos Z ZAchse
endif

if (State == 1)
  Set YPos to objectRef.GetPos Y
  Set YAchse to YPos +2
  objectRef.SetPos Y YAchse
endif

if (State == 1) && (Marker01Ref.getdistance, objectRef <= 10)
  Set State to 2
endif
End

Объяснение к скрипту:
Если гг активировал объект, objectRef начинает движение по диагонали, если нашему объекту "ObjectRef" осталось до маркера "Marker01Ref" меньше или равно 10 единиц дистанции, тогда движение "ObjectRef" прекращается.

Надеюсь мы вам помогли делать ваши моды ещё лучше, эффектней и оригинальнее.
С вами были KAIN48 и GRAF.
Удачи, и пока!

Отредактировано Graf (2012-08-24 21:09:47)

+1

2

Привет всем!

E pur si muove «И всё-таки она вертится!»
1633 год - Галилео Галилей

КОМПАНИЯ GRAF and KAIN48 ПРЕДСТАВЛЯЕТ ДВИЖЕНИЕ ОБЪЕКТА С КОЛЛИЗИЕЙ!

Ты помнишь, как всё начиналось, Всё было впервые и вновь… (Машина Времени)

Мне понадобился скрипт движения объекта с одного места до другого, и я обратился к GRAF за помощью.
Он помимо самого скрипта сделал для меня готовую сцену, взяв для объекта движения мотоцикл, который я потом мог заменить - на свой объект. И в описании добавил:
- Тебя ждёт большой сюрприз!
Я скачал esp, подключил и запустил игру. Включил выключатель, мотоцикл двинулся в заданном скриптом направлении, к точке остановки – отмеченной маркером. Я хоть и мало понимаю в скриптах, но видел, что в нём нет отключения "поддёргивания" и включения коллизии (enable, disable).
И уже было хотел возвращаться на сайт к Graf , что бы написать, что это не то что нужно.
Но решил походить в игре.
Поэтому направился на то место, где стоял мотоцикл до начала движения и удивился, не обнаружив там не видимого препятствия в виде оставшейся на месте коллизии.
Загрузил сохранение, запустил движение и отправился к мотоциклу, решив пройти через него насквозь. Но не тут то было! Мотоцикл двигался с коллизией.
Я «кинулся» к нему на сайт в тему, где мы обсуждали этот скрипт и написал: Ты заметил! Коллизия движется вместе с объектом!
- Ага!
Ответил GRAF .
- Выше почитай! Ты пропустил мои замечания, я его из-за этого и взял, что он имеет синию коллизию.
Я почитал.
Оказалось, что Graf заметил разницу в цвете коллизий: красный, синий , зелёный, белый и тп. Почти все цвета радуги.
Возник вопрос: - «А зачем ?»
В ходе небольшого обсуждения, которого мы определили разницу во взаимодействии персонажа со объектами из категорий статика, оружие, посуда и тп. То есть с такими, на которые персонаж мог воздействовать сдвигая их с места.
Это вы все прекрасно знаете и это ни для кого не новость.

Получалось так, что объект не имея «мировой модели» GO, как в случае с бронёй двигался с коллизией, не имея на себе скриптов «поддёргивания», или включения отключения коллизии.

- Пороем!
Спросил я.
- Пороем!
Ответил Graf

ПОЛТОРА ЗЕМЛЕКОПА ИЛИ «КАЗНИТЬ НЕЛЬЗЯ – ПОМИЛОВАТЬ»

Делая параллельно - занесли в игру два своих новых объекта, он через Blender, а я через MAX с нужными настройками niftools
Дальше я пошёл по простому пути – просто заменил (Copy –Paste) нужное в модели мотоцикла (motorcycle01.nif.)
http://savepic.net/2745055m.jpg
и получил плиту, которая движется с коллизией. В игре на неё можно было запрыгнуть и двигаться вместе с ней.
http://savepic.net/2736863m.jpg
1. Но только нужно было постоянно двигаться со скорость движения плиты.
В случае остановки, персонаж падал, когда плита уезжала из под ног.
2. Плита двигалась, реагируя на встречные препятствия – ящики, столбы и тп. То есть двигаясь по прямой, опускала или поднимала нос, начинала вращение вокруг своей оси и тп.
Получалось, что коллизия, сталкиваясь с коллизией не останавливалась, а проходила через другую коллизию, но всё таки не совсем без сопротивления и взаимодействия.
Тут то же интересно - при изменении настроек плита могла двигаться строго по прямой, не меняя направления после столкновений.
3. И обнаружилось, что если стрелять по плите, после взрыва она становилась горевшим мотоциклом.

Понятно, что превращение плиты в мотоцикл после выстрела и взрыва и движение коллизии, было задано, какими то настройками модели.
Нужно было понять какими!
Решили разделиться – Graf продолжает «Рыть» в nifskope, сравнивая и меняя значения, а я пытаюсь найти нужное в интернете, переводить .
Вот тут и выяснилось, что землекоп из меня плохой! Так скажем половина землекопа.
Найти ничего не удалось, кроме того, что у всех на виду в виде интерактивной помощи
NIF File Format Documentation
Расшифровку или описание всех имеющихся флагов найти не удалось.
Перевод , на наш взгляд, нужного из:
Collision Response
Motion System
Deactivator Type
SolverDeactivation
Quality Type
Почти ничего не дал! Всё таки тексты в описании в основном состоят из спец названий и терминов.
Как в прочем, почти ничего не дало изменение типов в этих пунктах. Разница в поведении объекта при движении почти не заметна. Да и нудное это дело, менять значение и смотреть за поведением объекта в игре!
*Так что тут, скорее всего придётся разбираться длительное время.
Но удалось проверить основные типы коллизии, а именно то как персонаж взаимодействует с ними.
Выяснилось следующее:

При типе коллизии OL_STATIC (красная)коллизия остаётся на месте, персонаж не взаимодействует с объектом, проходя или проваливаясь в него.
При типе коллизии OL_PROPS (синяя) коллизия движется с объектом, но персонаж медленно проваливается сквозь неё, если не будет двигаться, или подпрыгивать.
При типе коллизии OL_CLUTTER (синяя) коллизия движется вместе с объектом, персонаж движется вместе с коллизией, стоя на месте, или двигаясь в пределах объекта (при движении по Z)
Или передвигаясь по объекту (при движении по Y,X)- стоять нельзя, объект уезжает из под ног.
При типе коллизии OL_TRANSPARENT (белая) коллизия движется вместе с объектом, персонаж движется вместе с коллизией вверх, но должен двигаться при движении по горизонтали. При этом если прыгать на плите, она начинает поворачиваться меняя своё положение, в зависимости от того в каком месте персонаж воздействует на плиту. (так скажем небольшой отклик)
OL_TREES (красная) – тут интересно! Персонаж толкает объект вместе с коллизией– сдвигая с места, не проваливаясь в него. (так скажем большой отклик)
Это основные типы взаимодействия. А это картинки!
http://savepic.net/2718416m.jpg
http://savepic.net/2716368m.jpg
http://savepic.net/2706128m.jpg
Хотели сделать ролик, да потом решили – зачем, кто захочет проверить поставит esp и сам всё увидит.

Теперь про стрельбу и замена объекта после взрыва.

Как я написал выше в случае с плитой, которая была «сделана» заменой nif мотоцикла, она взрывалась и становилась горевшим мотоциклом (меняла модель)
А вторая плита (лифт) сделанная из телефона на выстрелы, никак не реагировала.
Получается что одна модель плиты Platform.nif из папки Data нашего мода, заменяя nif мотоцикла и телефона – в игре ведёт себя по разному.
Почему!?
Первоначальная версия, что на это влияют флаги из нодов модели отпала.
Наверное, мы что то важное пропустили, или не заметили. Поэтому тоже надо думать и экспериментировать.

===========
Ответ оказался прост. Мы просто изменили оригинальный мотоцикл, и его настройки взрыва сохранились вместе с новым объектом (в id).
Подсказку дал Spalny_Vagon
Мувебле-статика. Add destruction data, какжется так эта вкладка называется. Там задаются: прочность объекта; стадии разрушения; скорость разрушения; будут ли взрывы, а если будут, то сколько и какие; какие детали будут разлетаться и на что в конечном итоге будет заменена первоначальная модель. Т.е. там можно указать, что радиоприемник после разрушения будет заменен, например, на пылесос. Очевидно, что плита в свое время была сделана из взрывающегося мотоцикла. Разрушать можно как с помощью оружия, так и скриптом (команда DamageObject). Посмотрите, как устроены взрывающиеся машины, короче говоря.

Я МОГУ ЛИШЬ УКАЗАТЬ ДВЕРЬ. ТЫ САМ ДОЛЖЕН ВЫЙТИ НА...(Матрица)

Как использовать!
Хоть как.
Строите новые уровни с движущими объектами, по которым игрок должен передвигать к цели.
Стройте лифты и подъёмники, «летающие» станции и дирижабли, спускаемые капсулы и тп.
(Пример – поднимающаяся вверх кабина с иллюминаторами, в которые игрок видит удаляющуюся землю, свободно перемещаясь внутри.)
Даже если учитывать минус, что при горизонтальном движении объекта игрок вынужден «подрабатывать» ногами, что бы не упасть с объекта. Всё равно можно делать интересные моменты.
Не говоря уж про движение вверх или вниз, когда всё работает полностью. Игрок может стоять, двигаться, стрелять и тп.
http://savepic.net/2699985m.jpg
Неписи то же могут стоять и стрелять, могут передвигаться в пределах объекта и падать вниз.
Понятно, что пакеты AI скорее всего будут работать не все. Sand Box скорее всего точно не будет – сетки navmesh нет. Хотя кто его знает как игра отслеживает расстояние до сетки и есть ли ограничения по высоте – возможно, что непись двигаясь на высоте 10 метров от земли, будет точно так же двигаться по объекту, как если бы был на поверхности. (Надо пробовать).
В общем пробуйте - вот esp http://narod.ru/disk/46125629001.bf8219 … n.zip.html
В нём две плиты и скрипт движения (движение безконечное) по X в одном случае и по Z в другом

Пишите если натолкнётесь, на что-нибудь интересное.

Пока.

Отредактировано Graf (2012-04-18 23:42:02)

+3

3

Преобразование объекта в коллизию с помощью nifskop.
Так как мне написали, что моё видео пособие не как не туториал, я решил немного исправить это. Итак:
Collision – это “столкновение” способность объектов ударятся друг о друга.

Расшифровки слов, которые я буду использовать в этом гайде:
ПКМ – правая  клавиша мыши
ЛКМ – левая клавиша мыши
Корпус – это-то из чего состоит коллизия.

Преобразование в коллизию:
Что бы из вашего блока NiTriStrips сделать коллизию, нужно для начала открыть две модели, свою и на примере возьмём telephone01, теперь копируем NiTriStrips своей модели, ПКМ на NiTriStrips -> Block -> Copy Branch:
http://savepic.su/1746801m.jpg

Откроем вторую модель телефона и удалим модель:
http://savepic.su/1733502m.jpg
Нажимаем на блок модели телефона NiTriStrips и нажимаем ПКМ -> Block -> Remove Branch (Ctrl+Del).

Теперь вставим в модель телефона свою модель:
http://savepic.su/1709936m.jpg
ПКМ  на BSFadeNode -> Block -> Paste Branch.

Теперь копируем NiTriStripsData своей модели, ПКМ на NiTriStripsData -> Block -> Copy:
http://savepic.su/1718143m.jpg

Далее удалим старую коллизию:
http://savepic.su/1722227m.jpg
ПКМ на bhkConvexVerticesShape –> Block -> Remove. После этого вы заметите, что появились белые линии по краям модели. Обратите внимание на белый контур, вокруг вашей модели это означает, что мы успешно удалили старую коллизию.

Чтобы создать новый блок данных коллизии выполните следующие действия:
ПКМ на BSFadeNode -> Block -> Insert:
http://savepic.su/1733495m.jpg

Далее появится такое окно:
http://savepic.su/1713015m.jpg
Выберите Havok -> bhkNiTriStripsShape чтобы создать новый блок коллизии.

Далее появится bhkNiTriStripsShape который мы будем использовать для столкновения мешей. Далее нужно сделать выбор материала коллизии, это важно, так как коллизия модели реагирует на повреждения от оружия и другие события, которые изменяют поверхность (например, пулевые отверстия выглядят по-разному в камне металле или стекле):
http://savepic.su/1705846m.jpg

Далее в Num Strips Data поставим 1, и ниже в Strips Data жмём ПКМ -> Array -> Update:
http://savepic.su/1737357m.jpg

После этого нажимаем на “+”,  во вкладке Strips Data жмём в выпадающем блоке ПКМ -> Block -> Paste:
http://savepic.su/1742476m.jpg

Теперь нам нужно вставить в данные, которые мы скопировали в нашей модели:
http://savepic.su/1721984m.jpg
ПКМ на bhkNiTriStripsShape –> Havok -> Pack Strips. Это позволит реорганизовать новый объект Havok, и переименовать его.

И последние шаги, ПКМ на bhkPackedNiTriStripsShape -> Block -> Copy Branch (Ctrl+C):
http://savepic.su/1731200m.jpg

Открываем bhkCollisionObject и ЛКМ на bhkRigidBody. Теперь ПКМ на ShapeBlock Details смотрите скрин) -> Block -> Paste Branch (Ctrl+V).
http://savepic.su/1754755m.jpg

Далее удаляем не нужный блок bhkPackedNiTriStripsShare:
http://savepic.su/1729155m.jpg
ПКМ на bhkPackedNiTriStripsShare -> Block -> Remove Branch (Ctrl+Del).

Теперь сохраним модель File -> Save As… Пишем имя, и указываем путь сохранения файла.
Все коллизия для модели готова теперь можете смотреть модель в игре.

Дополнение:
KAIN и Wulf сказали мне:

Для тех у кого нет 3D редактора, как выход из положения - такой способ создания коллизии вполне подойдёт. Но чайник это чайник - на нём полигонов немного, а если модель сложная, то прирост объёма к весу модели при таком способе - от коллизии 25-30 процентов, плюс, как правильно сказал Wulf "Не надо без нужды издеваться над Gamebryo иму итак плохо! Он может и упасть"

Для этого, можно делать “облегчённую” коллизию объекту. Жмём на блоке модели NiTriStrips:
http://savepic.su/1753734m.jpg

ПКМ на NiTriStrips -> Havok -> Create Convex Shape и в выпадающем окне (Перевод: введите максимальные округления, использованные по величине, значения будут даваться менее точные, но более лучшей):
http://savepic.su/1747609m.jpg

Далее появится выпадающее окно, в котором написано “создал корпус с * вершин, * нормалей”:
http://savepic.su/1712793m.jpg

Теперь у нашей модели есть коллизия:
http://savepic.su/1717912m.jpg

Надеюсь, суть передать смог. Спасибо Miaximus с форума Bethesda, за его способ преобразования модели в коллизию. Я лишь перевёл и дополнил то, что посчитал нужным.

Дополнение (о движении объекта с коллизией):
Если вы делали коллизию по этому способу (гайду), и собираетесь двигать объект с коллизией в роли лифта вместе с объектами или гг, тогда вам нужно поставить такие настройки коллизии:
http://i049.radikal.ru/1204/4f/e0cf641ee8d0t.jpg
С такими настройками, коллизия двигает даже гг (тестил такие настройки коллизии в роли лифта), все работает нормально. Но увы гг может провалиться через коллизию.

Отредактировано Graf (2012-04-20 17:57:42)

+2

4

Молодцы! Теперь бы это скомпоновать в один файл, оформить и выложить на сайте.

0

5

Wulf написал(а):

Молодцы! Теперь бы это скомпоновать в один файл, оформить и выложить на сайте.

Да нужно бы, не как до меня не доходило долгое время то, что все нужно объяснять тчательней. Как картотеку доведём до ума, так сразу займёмся оформлением, для того, чтобы выложить на сайт.

0

6

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

Лифт возле Гоморры, кому интересно вот ссылка. Конешно это выпускать с самим гайдом (уроком) мы не будем, так как это демо бето версия 0.000001  :D Но если все будет работать и у тебя Каин, тогда сделаем все как полагается.

Отредактировано Graf (2012-04-20 13:59:29)

+1

7

Graf привет!

А как ды ГГ двигал - отключал управление, как в поезде, или он всё таки может двигаться во время подъёма.
Ну вообщем то я сам посмотрю! Скачаю и гляну.
Пока.

0

8

Graf а вот такой вариант попробуй обдумать и реализовать.
Как я понял проблема, когда движение плиты из бесконечного, становиться конечным. Персонаж начинает проваливаться.
А теперь смотри. Есть лифт у которого бесконечное движение вверх.
И есть такой же лифт - красная статика OL_STATIC который стоит на нужном месте выхода (на последнем этаже). Он отключен (disable)
Лифт с бесконечным движением везёт игрока вверх, игрок двигается (управляется), как только достигает уровня (совмещается с невидимым) - ты его дисаблешь, а статику енаблешь. Игрок оказывается на сто процентной статике и переходит внутрь здания.
Что скажешь?

0

9

K.A.I.N. написал(а):

А как ды ГГ двигал - отключал управление, как в поезде, или он всё таки может двигаться во время подъёма.

Нет, я нечего не отключал, просто помог коллизии поднимать гг. Он может спрыгнуть с лифта, может остаться в нём и спуститься вниз. Я просто двигал гг вместе с лифтом, и предусмотрел то, что гг спрыгнет, сделав проверку на то, как далеко гг от земли, если гг близко от земли, тогда гг больше не поднимается вместе с лифтом. Короче посмотришь сам. Я правда изменил скрипт, когда гг вниз едет, и не проверив скинул но думаю все норм.

0

10

K.A.I.N. написал(а):

Что скажешь?

Вот что:

K.A.I.N. написал(а):

Как я понял проблема, когда движение плиты из бесконечного, становиться конечным. Персонаж начинает проваливаться.

Испытал, пробовал поставить просто бесконечное движение, все равно гг проваливается.

K.A.I.N. написал(а):

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

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

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

Graf написал(а):

Испытал, пробовал поставить просто бесконечное движение, все равно гг проваливается.

0

11

Так маркер быстрого путешествия добавь! А то я дальше Гудспринс не хожу! У меня все проверки там происходят. Как вышел от дока, так из посёлка и не вышел!

0

12

Graf написал(а):

Испытал, пробовал поставить просто бесконечное движение, все равно гг проваливается.

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

0

13

K.A.I.N.
Набери в консоли coc TheStripWorldNew. Там увидишь с права от Гоморры.

0

14

K.A.I.N. написал(а):

Значит в настройках лифта у тебя что то не так как у плиты.

Я пробовал твою плиту двигать бесконечно...

0

15

Graf пешком шёл! Но дошёл и налифте покатался и вверх и вниз, даже на крышу хотел залезть, да там коллизии нет! На самой Gamore.
Что я скажу молодец!
Мы конечно с тобой не искали специально и вполне может случиться так, что такое уже кто то придумал. Ведь не одни мы с тобой такие везучие и натолкнулись на разницу в коллизиях!
Но одно точно, что это мы сделали сами. Вернее я так - маленько помогал!
Так что была бы такая возможность я тебе все достижения с того сайта в профиль добавил и репутации 100000 миллион!
Первый лифт на Пустоши Мохаве!
А что дальше будет, когда народ поймёт, что это такое и как это можно использовать в своих модах.
Конечно возможно я опять желаемое выдаю за действительное. Но так хочется, что бы это было так. Ведь сколько приключений можно делать всем будет.
Молодец!
***
Не 100000 много - зазнаешься! 10000 нормально!

0

16

K.A.I.N.
Спасибо. А вниз нормально приехал? Так как я уголь ушёл кидать, и не проверял, просто отправил файл и пару сообщений. Осталось теперь все это взять и совместить с нашей темой о движении коллизии с объектом, и выбрать самое главное и возможно выложить на сайты.

Отредактировано Graf (2012-04-20 15:57:00)

0

17

Graf написал(а):

Collision Response
Motion System
Deactivator Type
SolverDeactivation
Quality Type

Из-за Motion System объект вращается с коллизией, если поставить Box с использованием коллизии OL_ANIM_STATIC. С этими функциями можно эксперементировать, они отвечают за то, как коллизия будет себя вести с объектом. Может улетать при столкновении, может отминать жизни если врезаться, в общем изменение Коллизии и этих четырёх параметров самые основные в поведении коллизии.

0

18

Graf я видел про это.

Graf написал(а):

Box с использованием коллизии OL_ANIM_STATIC.

Graf написал(а):

Collision Response
Motion System
Deactivator Type
SolverDeactivation
Quality Type

Думаю торопиться не надо. Сам видишь, на всё это нет ответов, нужно хотя бы по одному различию выявить, как ты это сделал с Motion System.
Мол вот это известно, а дальше вы уж сами, или с нами, если придёте на этот форум. ( ну что бы делились информацией, если кто то будет пробовать выяснить глубже).
В ALL_STATIC - ещё порядка 5 не испытанных коллизий осталось, скорее всего то же самое, просто я не записывал, когда пробовал и теперь придётся заново все перепроверить - как они ведут себя при движении и при воздействии ГГ.
Я пока не могу тебе помогать, надо обещанное одному человеку сделать - Одежду Йорвета из Ведьмака из игры извлечь и в Обливион вставить.
Извлечь то извлёк 3D риппером, но всю перекрученную. Сейчас раскручиваю в Max!
В Картотеке писать только могу, картинки не грузятся - скорость покончалась. Как они мне написали через два дня восстановят.
Я только после Картотеки смогу тебе помогать - надо 70 ответов сделать (остатки донести - там скрипты в основном остались), пока не трогаю, нужно сначала написать Базовый ответ - КАК НАПИСАТЬ И ДОБАВИТЬ СКРИПТ. Что бы потом в каждом примере не повторять одно и то же, а просто давать ссылку на Базовый ответ - описание процесса смотреть там то.
Если надоело ковыряться в коллизии - отложи. Куда оно денется. Поделай что то другое - считается, что лучший отдых, это смена работы!
Шутка!

0

19

K.A.I.N.
Да что там испытывать то коллизии? Например у OL_PROPS движется коллизия, но если поменять некоторые настройки, больше двигаться не будет. Я это к тому, что лучше написать те варианты которые работают, чем те варианты которые можно пробовать и смотреть на одно и тоже. Я же уже многое менял в настройках, и коллизии тоже, но результат всегда почти один и тот же. Всего около 10 поведений коллизии с объектом, больше нету, вернее поведение в остальных будет так же повторяться.

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

Отредактировано Graf (2012-04-20 19:21:34)

0

20

Graf привет!

Graf написал(а):

Всего около 10 поведений коллизии с объектом, больше нету, вернее поведение в остальных будет так же повторяться.

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

1. Так вот и желательно добавить описание всех OL_ (понятно  что не полное, хотя бы как движется, как воздействует на персонажа, как персонаж воздействует на объект) Хотя бы эти три показателя опробовать у всех типов. Записать.
Если повторяется, так и писать - аналогично такой то.

2. Пороцесс создания простой модели в Max, Blender , коротко, с упором на создание коллизии и её настроек.

3. Настройка в NifScope - что и где менять (это есть у тебя в уроке) но картинки надо переделать - нужен простой объект (плита) такой же как будет экспортироваться из 3D редактора. Что бы во всей статье  было одинаково.

4. Сделать новые скрины для описания создания коллизии - текст взять из твоей статьи , но переделать картинки, как у тебя сейчас это хорошо, для форума, когда есть превью - для текстового документа - плохо.
Нужны скрины только описываемых мест - зачем делать снимок всего NifScope если описывается окно Главного меню File-Load (это я к примеру)
***
Да и много чего ещё, поэтому давай не торопиться и будем помнить о мультике, где говориться " Лучше день потерять, а потом за час долететь!" Так кто то, кого то учил летать!

0

21

K.A.I.N. написал(а):

1. Так вот и желательно добавить описание всех OL_ (понятно  что не полное, хотя бы как движется, как воздействует на персонажа, как персонаж воздействует на объект) Хотя бы эти три показателя опробовать у всех типов. Записать.
Если повторяется, так и писать - аналогично такой то.

Ну тогда с одной настройкой этих функций:
Motion System
Deactivator Type
SolverDeactivation
Quality Type

K.A.I.N. написал(а):

2. Пороцесс создания простой модели в Max, Blender , коротко, с упором на создание коллизии и её настроек.

Так ещё и писать о создании коллизии в 3д редакторе?

K.A.I.N. написал(а):

3. Настройка в NifScope - что и где менять (это есть у тебя в уроке) но картинки надо переделать - нужен простой объект (плита) такой же как будет экспортироваться из 3D редактора. Что бы во всей статье  было одинаково.

Я эту подель делал для лифта, он экспортировался с Blender. Не знаю, переделывать картинки это очень большая трата времени.

K.A.I.N. написал(а):

Нужны скрины только описываемых мест - зачем делать снимок всего NifScope если описывается окно Главного меню File-Load (это я к примеру)

Просто всякие тугодогоняемые люди, потом пишут мне, а почему у тебя так а у меня во весь экран? Ну я вот и кинул такие картинки.

K.A.I.N. написал(а):

Да и много чего ещё, поэтому давай не торопиться и будем помнить о мультике, где говориться " Лучше день потерять, а потом за час долететь!" Так кто то, кого то учил летать!

У меня осталось 3 дня интернета, не знаю когда продлю.

0

22

K.A.I.N.
Я буду проверять все виды коллизии с такими настройками:
http://savepic.su/1778081.jpg
Так как у меня с такими настройками лучше всего двигались объекты. Это сообщение лишь для того, чтобы ты написал как поведёт себя коллизия с другими настройками этих четырёх функций. Ок?

Отредактировано Graf (2012-04-21 15:19:52)

0

23

Вот нашёл инфу:
Mass (Масса)
Делает объект тяжелее или легче, большое число = тяжелым. Будет влиять, насколько хорошо объект летит по воздуху, и, как легко его можно отбрасывать.

Linear Damping (Линейный Демпфирование)
Большее число будет заставить объект двигаться по воздуху медленно горизонтально. (например, из стороны в сторону).

Angular Damping (Угловое демпфирования)
То же, что линейный (Linear Damping), но с углами. (например, бросить его в воздух).

Restitution (Реституция)
Как упругий. Значения в течении примерно 3-видимому, не влияют на него. (т.е. 10000000 не упругей чем 10)

Layer (Слой)
Какой вид физики это (оружие, беспорядок, и т.д.)
Если вы идете в bhkListShape (родительским для bhkCollisionObject), вы можете изменить материал. Это позволит изменить звуки которые играют, когда вы нажмете на оружие, или бросите его на что-то, или толкнёте его.

==========
Возможно не все верно перевёл - http://cs.elderscrolls.com/index.php/Bl … _Collision (Advanced NifSkope Physics)

0

24

Оформлено в первом сообщении :)

Отредактировано Graf (2012-08-24 01:19:05)

0

25

Привет всем! Очень полезная статья, но ... при применении DisablePlayerControls игрок прекращает подниматься-опускаться вместе с объектом. Выход следующий - применить в скрипте вместо DisablePlayerControls команду player.SetRestrained 1. Проверено в моде с рабочим названием "Mars", который выйдет в 2015 году.
Что касается типов коллизий, замучился их менять o.O , пришлось использовать настойки из вашего test_elevator.esp
Большое спасибо авторам!

0


Вы здесь » Форум Oblivion, Skyrim & Fallout 3/4 Modding » G.E.C.K. (New Vegas Edition) » Движение объекта с коллизией