Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Статьи
        Анимация
            3dsMax и Скелетная Анимацая

3dsMax и Скелетная Анимацая

Опубликованно: 14.08.2015, 18:38
Последняя редакция, AdiDOS: 07.05.2017 9:24

В данном уроке я хочу описать порядок экспорта анимации и настройку плагина OgreMax , если вы пропустили статью установки плагина то советую почитать.

Первое с чего нужно начать это подготовка анимации объекта с 3dsMax, ну поехали заходим на вкладку Create>>Geometry и добавляем цилиндр ,  на вкладке  Create>>System и кнопка Bones создаем  скелет примерно как на картинке ниже.

1

Далее перемещаем все узлы нашего скелета и в центр цилиндра и выделяем наш цилиндр после этого переходим на вкладку Modify и из списка модификаторов выбираем Skin , если выделить модификатор Skin то в правом углу появятся параметры после чего нажимаем кнопку Add выделяем все кости в появившемся списке  , и нажимаем Select .

2

Ну собственно процесс анимации я описывать не буду если кто не знает как анимировать  то в интернете есть куча уроков на эту тему.

3

Переходим к настройке Экспорта.

3

Выделяем наш цилиндр и переходим OgreMax>>Object Settings в появившемся меню нам главное добавить анимацию нажимаем кнопку Add.

4

Первое что нужно указать это имя анимации , в моем случае это anim1 ну а далее по картинке ниже.

7

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

Нажимаем OgreMax>>Export>>Selected Objects , указываем расширение и путь , ну и немного кода.

package test;

import com.jme3.animation.AnimChannel;
import com.jme3.animation.AnimControl;
import com.jme3.animation.LoopMode;
import com.jme3.animation.Skeleton;
import com.jme3.app.SimpleApplication;
import com.jme3.asset.plugins.FileLocator;
import com.jme3.light.DirectionalLight;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node;
import com.jme3.scene.Geometry;
import com.jme3.scene.Mesh.Mode;
import com.jme3.scene.Spatial;
import com.jme3.scene.debug.SkeletonDebugger;
import com.jme3.util.SkyFactory;

public class OgreXmlAnimationModel extends SimpleApplication{

 public static void main(String[] args) {
 new OgreXmlAnimationModel().start();

 }

 @Override
 public void simpleInitApp() {
   flyCam.setMoveSpeed(100);

   assetManager.registerLocator("E:/Temp/", FileLocator.class); //Регестрируем путь к папке
   Spatial player = assetManager.loadModel("testAnim.mesh.xml"); //Подгружаем модель
   AnimControl control = (AnimControl) player.getControl(AnimControl.class);

 //-----------------Скелетная анимация-------------------------------
   Skeleton skel = control.getSkeleton();
   SkeletonDebugger skeletonDebug = new SkeletonDebugger("skeleton", skel);
   Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");//Материал для скелета
   mat.setColor("Color", ColorRGBA.Red);//Цвет скелкета
   mat.getAdditionalRenderState().setDepthTest(false);//Отключаем тест глубины
   skeletonDebug.setMaterial(mat);
   ((Node) player).attachChild(skeletonDebug);
   ((Geometry)(((Node) player).getChild(0))).getMesh().setMode(Mode.LineStrip); //Режим отображения линиями
 //...................................................................
   AnimChannel channel = control.createChannel();

   channel.setLoopMode(LoopMode.Cycle); //Циклическая анимация
   channel.setAnim("anim1"); //Установка имени анимации и старт
   rootNode.attachChild(player); //Добавляем на сцену

 //Получаем список анимаций
   for (int i = 0; i < control.getAnimationNames().size(); i++) {
     System.out.println(control.getAnimationNames().toArray()[i]);
   }

   createSkyBox();
   createLight();

 }

 // Обьемное освещение
   private void createLight() {
   DirectionalLight sun = new DirectionalLight();
   sun.setColor(ColorRGBA.White);
   sun.setDirection(new Vector3f(-1.5f,-1.5f,-1.5f).normalizeLocal());
   rootNode.addLight(sun);
 }
 // Небо
 private void createSkyBox() {
   rootNode.attachChild(SkyFactory.createSky(assetManager, "Textures/Sky/Bright/BrightSky.dds", false));
 }
}

8

Я думаю все ясно спасибо за внимание!!!

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.