NPC

28 июля 2015 11:45
Добрый день.

В каком состоянии находится модуль npc_ai? В документации описано всего три метода. Два из них enable_enimation и disable_animation, если я всё правильно понял, запускают npc и останавливают соответственно. а вот на третий метод npc_ai(graph) консоль ругается мол нет такого метода.

Следующий код подтвердил это, сказав однако, что есть метод new_event_track

var npc_ai = require('npc_ai');
console.log(npc_ai);


Окей, уговорил, так и быть буду использовать его. Но по-прежнему возникает несколько вопросов. Модель персонажа выглядит следующим образом

-character_collider:куб, на котором выставлена галочка character, actor и динамический тип физики
–metarig: арматура. на ней анимация персонажа
–Soldier:геометрия персонажа со всякими материалами, текстурами и модификатором armature

что куда указывать?


                        var path = [
				[0,0,0],
				[10,0,0],
				[20,0,0],
				[30,0,0],
				[30,0,10],
				[30,0,20],
				[30,0,30],
			];

			npc_ai.new_event_track({
					path:path, 
					delay:5, 
					actions:что сюда и в каком виде?,
					obj:что сюда? , 
					rig:rig, // Арматура?
					collider:character_collider,//Верно?   
					empty:что это?,
					speed:3, 
					rot_speed:1.5, 
					random:false, 
					type:npc_ai.NT_WALKING
				});
			
			npc_ai.enable_animation();

свойство obj. :в документациинаписано Animated object ID.. В модели анимация на арматуре. указывать арматуру? Тогда зачем свойство rig? и что должно быть в empty?

Управлять персонажем ручками получается, он шевелится и анимация проигрывается. Но максимум, чего у меня получилось добиться при использовании нпц, так это дрыганья на месте. Неправильно указал path? и в каком виде должен быть массив actions?

Спасибо
Гале подарили мяч, Гале подарили торт, Галю поздравляют все - Галя сделала аборт
28 июля 2015 18:05
npc_ai - это модуль, который действительно ещё не доведен до ума. На данный момент его у нас использует только ферма. Поэтому он лежит в аддонах, а не вместе со всеми внешними модулями. Даже документация на него как оказалось устаревшая (поправил).
Тем не менее, при должной настройке он вполне рабочий
Вы сделали практически всё, как хочет от вас модуль. Нужно обратить внимание, что для всех перемещений он использует именно коллайдер. Поэтому к нему так или иначе должны быть припаренчены объекты рига и персонажа.

actions:что сюда и в каком виде?,
Это объект, со следующими ключами: 1) idle 2) move 3)move_start 4) run. В качестве свойств они принимают массивы c названиями action-ов. Можно указывать не все ключи, а только нужные вам, например
{idle: ["aaa", "bbb"], run: ["ccc"]}

obj:что сюда? ,
Это меш персонажа, который натянут на риг. Он используется только для оптимизации. Когда он на расстоянии, превышающем расстояние отрисовки, все расчеты останавливаются.

И ещё один самый важный момент. Ходячие NPC должны знать, по чему им ходить. Для этого на материале статического меша должен висеть Collision ID: "TERRAIN". Для плавающих на воде должен быть ID: "WATER". Но в принципе, можно сделать всех летучими.

В будущем весь этот функционал перекочует в интерфейс блендера и всё станет значительно проще)
29 июля 2015 08:22
Спасибо, начала проигрываться анимация, но человечек по-прежнему шагает/дрыгается на месте . Влияет ли на это тот факт, что человечек был подгружен на сцену динамически? Просто создаётся впечатление, что человечек и рад бы переместиться, но ему что-то мешает. Выглядит это вот так

ПЫ.СЫ. Документация кажется не поправилась
Гале подарили мяч, Гале подарили торт, Галю поздравляют все - Галя сделала аборт
29 июля 2015 10:19
Есть подозрение, что физический объект имеет тип Dynamic или Rigid Body. То есть он одновременно пытается управляться интеллектом и симулировать на себе физику. Полагаю, если вы включите тип Static, он начнет себя нормально вести.

P.S. Документацию мы заливаем вместе с релизами, поэтому изменений на сайте пока нет.
29 июля 2015 10:42
Уиииииии! Заработало!!! Спасибо! С меня пиво
Гале подарили мяч, Гале подарили торт, Галю поздравляют все - Галя сделала аборт
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.