Автор Тема: переделываем AI  (Прочитано 7719 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн elvis

  • Мастер Теней
  • Сообщений: 2587
переделываем AI
« : 22 Июля 2014 22:39:49 »
Люди, у кого есть опыт в этой сфере? У Зонтика точно есть, но он пока не доступен.
Bin формат через стандартные конверторы в 3DS переходит с потерями, но благо в архивах игры есть исходники персонажей в E. Ок, перегнал, открыл  - вижу такую картину:

Означает ли это, что я теперь могу удалить модель по центру и поместить туда свою - соблюдая конечно условие,чтоб области суставов совпадали с теми мелкими кубиками? И если да - как потом перегонять модель в Bin? Стандартными конверторами 3DS->E->bin или промежуточный Е не обязателен и можно юзать плагин Нёмыча?
Я к чему - и Зонтику и Соулу не помешают новые АИ. Есть вполне кошерные и открыто доступные Low-poly из тех же пиратов.

Да и я бы кой-че крясивое намутил...

Лонг, модели персонажей конечно. Дальше мне не сунуться - я не программист.
« Последнее редактирование: 22 Июля 2014 22:50:28 от elvis »
Элвис не умер! Он просто улетел на свою планету....

Оффлайн LongShad

  • Тень
  • Сообщений: 6290
  • Длиннотень
переделываем AI
« Ответ #1 : 22 Июля 2014 22:46:08 »
Я не понял. Речь про искусственный интеллект или модельки персонажей?

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #2 : 22 Июля 2014 22:52:23 »
Означает ли это, что я теперь могу удалить модель по центру и поместить туда свою - соблюдая конечно условие,чтоб области суставов совпадали с теми мелкими кубиками?
Да.
Один нюанс: нужно подстраивать модель под скелет (раздвинуть руки пошире), но не наоборот. Связано это с тем, что исходная поза для анимации именно такая (руки в стороны). Если, наоборот, начать подстраивать кубики под модель, то в результате анимации на выходе может получиться что-то непредсказуемое (например, руки уйдут внутрь туловища).

Стандартными конверторами 3DS->E->bin или промежуточный Е не обязателен и можно юзать плагин Нёмыча?
Плагин Нёмыча, если не ошибаюсь, работает только со статичными моделями. Тут нужен MeshBld.exe (после N3ds2e.exe).

Оффлайн elvis

  • Мастер Теней
  • Сообщений: 2587
переделываем AI
« Ответ #3 : 22 Июля 2014 23:02:39 »
Цитировать
Один нюанс: нужно подстраивать модель под скелет (раздвинуть руки пошире), но не наоборот. Связано это с тем, что исходная поза для анимации именно такая (руки в стороны). Если, наоборот, начать подстраивать кубики под модель, то в результате анимации на выходе может получиться что-то непредсказуемое (например, руки уйдут внутрь туловища).

Спасибо! Это должно было быть моим вторым вопросом. Значит эти мелкие кубики и квадратные грани что пересекают суставы трогать нельзя? Блин, жаль...
Цитировать
Тут нужен MeshBld.exe (после N3ds2e.exe)
Это так понимаю еще один конвертор? Ок... т.е. гоним в Е, потом через MeshBld.exe в bin.
Элвис не умер! Он просто улетел на свою планету....

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
переделываем AI
« Ответ #4 : 22 Июля 2014 23:06:47 »
можно юзать плагин Нёмыча?
Однозначно нет. Это другой формат, хотя и расширение файла у него то же самое.

Люди, у кого есть опыт в этой сфере?
Опыта нет, но есть некоторое смутное представление о формате и возможностях скелетной анимации в движке:
  • Конфигурации костей прописаны в движке жёстко и в файле задаются типом существа (буррик, хумон, хумон с мечом, паук и т. д.)
  • На вершину может влиять максимум две кости, причём вторая должна быть дочкой первой.
  • Артикулированы персонажи крайне скудно, а добавить суставов не представляется возможным.
Вот эти перегородки у модельки на самом деле отмечают границы раскраски вершин для развесовки по костям. Там ещё, насколько я понимаю, наркоманские соглашения по именованию этих перегородок, как и при подготовке статичных моделек.

Оффлайн LongShad

  • Тень
  • Сообщений: 6290
  • Длиннотень
переделываем AI
« Ответ #5 : 22 Июля 2014 23:08:20 »
Блин, что за тупизм? Переименуйте тему в "переделываем модельки персонажей", нечего обманывать людей.

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
переделываем AI
« Ответ #6 : 22 Июля 2014 23:12:58 »
LongShad
Да тут традиция такая, ворошных неписей называть аями. Мне тоже это всегда было странно.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #7 : 22 Июля 2014 23:21:42 »
Спасибо! Это должно было быть моим вторым вопросом. Значит эти мелкие кубики и квадратные грани что пересекают суставы трогать нельзя? Блин, жаль...
Я думаю, что в каких-то небольших пределах можно.
Кстати, мое заключение умозрительно, а не основано на опыте. Просто представил, что будет, если руки, опущенные под 45 градусов, в процессе анимации повернутся на 80-90 градусов навстречу туловищу, чтобы просто принять естественное положение. Логика подсказывает, что они уйдут внутрь туловища. На практике не проверял, но думаю, что будет именно так.

Это так понимаю еще один конвертор? Ок... т.е. гоним в Е, потом через MeshBld.exe в bin.
Да, это конвертер анимированных моделей из E в bin.
Причем еще нужны два файла - .map и .mjo (для человеческого скелета это BIPED.map и BIPEDNW.mjo - оба есть в оригинальном архиве mesh.crf). Полностью процесс конверсии из 3ds в bin выглядит так:
N3ds2e model.3ds
MeshBld model.e model.bin BIPED.map -mBIPEDNW.mjo
где model - имя твоей модели.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #8 : 22 Июля 2014 23:28:32 »
Конфигурации костей прописаны в движке жёстко и в файле задаются типом существа (буррик, хумон, хумон с мечом, паук и т. д.)
А ты смотрел те самые файлы .map и .mjo? Похоже, что в них как раз описан скелет. В .map прописаны кости с индексами, а в .mjo - то, как эти кости соединяются. Или скелеты прописаны еще где-то в движке, а эти файлы несут просто некую вспомогательную функцию (например, для работы MeshBld.exe)?


Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
переделываем AI
« Ответ #9 : 22 Июля 2014 23:32:17 »
Chuzhoi
Насколько я понимаю, топология скелета в движке, а в файлах конкретная геометрия исходной позы.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #10 : 23 Июля 2014 00:05:19 »
А по-моему, там как раз топология, а не поза.

BIPED.map:

ltoe  0
rtoe  1
lankle  2
rankle  3
lknee  4
rknee  5
lhip  6
rhip  7
butt  8
neck  9
lshldr 10
rshldr  11
lelbow 12
relbow 13
lwrist 14
rwrist 15
lfinger 16
rfinger 17
abdomen 18
head 19
toe 0


BIPEDNW.MJO:

NUM_TORSOS 2
NUM_LIMBS  5
TORSO
   root 8
   parent -1
   fixed 6 7 18
TORSO
   root 18
   parent 0
   fixed 9 10 11
LIMB
   torso 0
   segments 6 4 2 0
LIMB
   torso 0
   segments 7 5 3 1
LIMB
   torso 1
   segments 10 12 14 16
LIMB
   torso 1
   segments 11 13 15 17
LIMB
   torso 1
   segments 9 19

Оффлайн elvis

  • Мастер Теней
  • Сообщений: 2587
переделываем AI
« Ответ #11 : 23 Июля 2014 00:30:15 »
Спасибо!
Итак, моя рабочая папка для перегонки из 3DS в bin должна иметь следующее содержимое, а в bat-файле прописаны эти строчки.

Я все правильно сделал?
А эти  BIPED.map и BIPEDNW.mjo - они относятся ко всем людям вообще, и вооруженным и безоружным?
Элвис не умер! Он просто улетел на свою планету....

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
переделываем AI
« Ответ #12 : 23 Июля 2014 00:35:47 »
Chuzhoi
Ну а в движке примерно вот что:

// Joints
#define LTOE      0
#define RTOE      1
#define LANKLE    2
#define RANKLE    3
#define LKNEE     4
#define RKNEE     5
#define LHIP      6
#define RHIP      7
#define BUTT      8
#define NECK      9
#define LSHLDR   10
#define RSHLDR   11
#define LELBOW   12
#define RELBOW   13
#define LWRIST   14
#define RWRIST   15
#define LFINGER  16
#define RFINGER  17
#define ABDOMEN  18
#define HEAD     19
#define LSHLDRIN 20
#define RSHLDRIN 21
#define LWEAP    22
#define RWEAP    23

// mapping from joint id to exposed joint enum
static int g_aHumJointMap[] =
{
   -1,
   19,
   9,
   18,
   8,
   10,
   11,
   12,
   13,
   14,
   15,
   16,
   17,
   6,
   7,
   4,
   5,
   2,
   3,
   0,
   1,
   -1,
};               

// array of mappings from jointIDs -> parent jointIDs
static int g_aHumJointParents[] =
{
   LANKLE,   //    LTOE   
   RANKLE,   //    RTOE   
   LKNEE,    //    LANKLE 
   RKNEE,    //    RANKLE 
   LHIP,     //    LKNEE   
   RHIP,     //    RKNEE
   BUTT,     //    LHIP   
   BUTT,     //    RHIP   
   BUTT,     //    BUTT   
   ABDOMEN,  //    NECK   
   ABDOMEN,  //    LSHLDR 
   ABDOMEN,  //    RSHLDR 
   LSHLDR,   //    LELBOW 
   RSHLDR,   //    RELBOW 
   LELBOW,   //    LWRIST 
   RELBOW,   //    RWRIST 
   LWRIST,   //    LFINGER
   RWRIST,   //    RFINGER
   BUTT,     //    ABDOMEN
   NECK,     //    HEAD
};               
Как видишь, содержимое файлов мапится именно на это безобразие. А поза действительно не в них. Тогда она в .bin-файле.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #13 : 23 Июля 2014 00:41:37 »
elvis
Вроде все правильно.
В процессе конверсии появятся файлы .bin и .cal, которые нужно положить в папку mesh игры.

Из map- и mjo-файлов, которые есть в mesh.crf, к людям могут относиться только они. То есть, похоже, нет разницы между скелетом вооруженного человека и безоружного. Если я правильно помню (надо проверять), у человека с мечом последний кубик в правой руке находится не на кончиках пальцев, а на конце меча. Но топология вроде та же. Но, еще раз повторюсь, надо загрузить вооруженного человека и проверить.

Онлайн Chuzhoi

  • Тень
  • Сообщений: 9279
переделываем AI
« Ответ #14 : 23 Июля 2014 00:47:48 »
nemyax, ясно.