переделываем AI

Автор elvis, 22 июля 2014 22:39:49

« назад - далее »

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

elvis

Люди, у кого есть опыт в этой сфере? У Зонтика точно есть, но он пока не доступен.
Bin формат через стандартные конверторы в 3DS переходит с потерями, но благо в архивах игры есть исходники персонажей в E. Ок, перегнал, открыл  - вижу такую картину:

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

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

Лонг, модели персонажей конечно. Дальше мне не сунуться - я не программист.
1826 дней..  в прошлом.

LongShad

Я не понял. Речь про искусственный интеллект или модельки персонажей?

Chuzhoi

Цитата: elvis от 22 июля 2014 22:39:49
Означает ли это, что я теперь могу удалить модель по центру и поместить туда свою - соблюдая конечно условие,чтоб области суставов совпадали с теми мелкими кубиками?
Да.
Один нюанс: нужно подстраивать модель под скелет (раздвинуть руки пошире), но не наоборот. Связано это с тем, что исходная поза для анимации именно такая (руки в стороны). Если, наоборот, начать подстраивать кубики под модель, то в результате анимации на выходе может получиться что-то непредсказуемое (например, руки уйдут внутрь туловища).

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

elvis

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

nemyax

Цитата: elvis от 22 июля 2014 22:39:49
можно юзать плагин Нёмыча?
Однозначно нет. Это другой формат, хотя и расширение файла у него то же самое.

Цитата: elvis от 22 июля 2014 22:39:49
Люди, у кого есть опыт в этой сфере?
Опыта нет, но есть некоторое смутное представление о формате и возможностях скелетной анимации в движке:

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

LongShad

Блин, что за тупизм? Переименуйте тему в "переделываем модельки персонажей", нечего обманывать людей.

nemyax

LongShad
Да тут традиция такая, ворошных неписей называть аями. Мне тоже это всегда было странно.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

Цитата: elvis от 22 июля 2014 23:02:39
Спасибо! Это должно было быть моим вторым вопросом. Значит эти мелкие кубики и квадратные грани что пересекают суставы трогать нельзя? Блин, жаль...
Я думаю, что в каких-то небольших пределах можно.
Кстати, мое заключение умозрительно, а не основано на опыте. Просто представил, что будет, если руки, опущенные под 45 градусов, в процессе анимации повернутся на 80-90 градусов навстречу туловищу, чтобы просто принять естественное положение. Логика подсказывает, что они уйдут внутрь туловища. На практике не проверял, но думаю, что будет именно так.

Цитата: elvis от 22 июля 2014 23:02:39
Это так понимаю еще один конвертор? Ок... т.е. гоним в Е, потом через 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

Цитата: nemyax от 22 июля 2014 23:06:47
Конфигурации костей прописаны в движке жёстко и в файле задаются типом существа (буррик, хумон, хумон с мечом, паук и т. д.)
А ты смотрел те самые файлы .map и .mjo? Похоже, что в них как раз описан скелет. В .map прописаны кости с индексами, а в .mjo - то, как эти кости соединяются. Или скелеты прописаны еще где-то в движке, а эти файлы несут просто некую вспомогательную функцию (например, для работы MeshBld.exe)?


nemyax

Chuzhoi
Насколько я понимаю, топология скелета в движке, а в файлах конкретная геометрия исходной позы.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

Chuzhoi

А по-моему, там как раз топология, а не поза.

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

Спасибо!
Итак, моя рабочая папка для перегонки из 3DS в bin должна иметь следующее содержимое, а в bat-файле прописаны эти строчки.

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

nemyax

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

elvis
Вроде все правильно.
В процессе конверсии появятся файлы .bin и .cal, которые нужно положить в папку mesh игры.

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

Chuzhoi