Для работы с 3D-персонажами существует несколько специальных методов и свойств. Полный список функций можно посмотреть в разделе Сценарии. А сейчас мы сделаем краткий обзор наиболее используемых методов.
Загрузка 3D-персонажа осуществляется с помощью метода Game.LoadActor3D() или Scene.LoadActor3D(). Они работают точно так же, как и метод LoadActor(). Эти методы создают новый объект, который предоставляет набор методов и свойств подобных тем, что есть у 2D-персонажей. Помимо метода TurnTo(), который поворачивает персонажа в одном из восьми направлений, 3D-персонажи также поддерживают метод TurnToAngle(), который используется для поворота на любой угол.
Анимация 3D-персонажей существенно отличается от 2D. Вместо большого количества файлов, все анимации хранятся в файле модели персонажа, а также перечислены в файле его описания. Метод PlayAnim() в качестве аргумента принимает название анимации, которая должна быть воспроизведена. Вдобавок к этому допустимо воспроизведение нескольких анимаций одновременно. Каждая анимация затрагивает только некоторые из костей, таким образом, Вы можете комбинировать несколько анимаций в одну; например, во время ходьбы персонаж может совершать движения руками. Используйте метод PlayAnimChannel() для достижения этого эффекта. Вам доступно 10 независимых анимационных каналов, пронумерованных с 0 до 9. Канал 0 зарезервирован для стандартных анимаций, таких как ходьба, разговор и бездействие (персонаж стоит на месте).
WME распознаёт стандартные анимации по названиям, это значит, что в файле описания персонажа должны быть заданы анимации walk (ходьба), idle (бездействие) и talk (разговор). Вы можете перезадать эти названия с помощью свойств WalkAnimName, IdleAnimName и TalkAnimName. Что это даёт? Например, если Вы хотите временно изменить ходьбу на бег, установите свойству WalkAnimName значение run (бег) и персонаж будет использовать анимацию бега для ходьбы (анимация с таким названием должна существовать, т. е. быть подготовлена Вами).
Также можно подгружать новые анимации во время игры. Для этого существует метод MergeAnims(), который подгружает анимации из дополнительного X-файла. Если Вам нужно определить дополнительные свойства анимации (задать циклическую анимацию или генерировать события), Вам следует создать файл описания для этой X-модели. Например, Вы хотите подгрузить анимацию броска (throw), которая хранится в файле trinity_throw.x. Чтобы задать свойства этой анимации, создайте файл trinity_throw.anim в той же директории, что и указанный X-файл. Этот файл описания может содержать одну и более секций ANIMATION, которые используют точно такой же синтаксис, что и файл описания персонажа. WME автоматически найдёт файл trinity_throw.anim, когда загрузит модель trinity_throw.x.
Чтобы освободить память, отведённую под анимацию, которая больше не используется, вызовите метод UnloadAnim().
WME позволяет присоединять к персонажу дополнительные 3D-модели. Это может служить для различных целей, например, персонаж держит в руке предмет или на его голову надета шляпа и т.д. Прикрепления создаются с помощью метода AddAttachment(), а удаляются с помощью RemoveAttachment(). Чтобы запросить существующую присоединённую модель, нужно вызвать метод GetAttachment(). Он возвратит объект, который предоставляет свой собственный набор методов и свойств.
Помимо основного управления мышью, WME также предоставляет набор методов для непосредственного управления 3D-персонажем с клавиатуры. А именно, DirectWalk(), DirectWalkBack(), DirectWalkStop(), DirectTurnLeft(), DirectTurnRight() и DirectTurnStop(). Проект WME 3D demo содержит сценарии (scripts), демонстрирующие использование этих методов (scripts\direct_control.script).
Помимо этих доступны и другие методы, подробнее см. в справочнике по функциям.
Вы можете менять текстуры модели прямо в игровом процессе с помощью метода SetTexture(). Для этого Вам нужно указать название материала, к которому Вы привяжете текстуру. По умолчанию, названием материала является имя файла текстуры без расширения. Например, если файл текстуры называется путь_до_файла\some_texture.png, Вы можете ссылаться на материал по имени some_texture.
Новая текстура может быть либо статичным изображением, либо WME-спрайтом, т. е.
Вы можете задавать анимированные текстуры. Только помните, что из спрайта импортируются лишь изображения
и временные задержки между кадрами, все остальные свойства спрайтов игнорируются.
You can also modify the appearance of the actors. There is set of methods working with "meshes". A mesh is part of the model; usually the model is separated into multiple meshes based on different materials. You can hide or show individual parts of the model using the HideMesh() and ShowMesh() methods.
You can also load a new mesh from a separate file. This is useful if you want - for example - make the actors hold an item in their hands. A new mesh can be loaded using the AddMesh() method. This method accepts filename of another MS3D file, the name of the mesh and the name of the bone you want this new mesh attach to. This way you can for example attach a hat model to character's head, or insert some object into his hand. The new mesh is "glued" to the given bone and inherits all its movements and rotations.
Last of the methods dealing with individual meshes is RemoveMesh(). It permanently removes one mesh from the model.