Чи жорсткі коди анімації Minecraft в грі? [зачинено]


12

Мені хотілося б знати, як працює система анімації в minecraft. У мене виникає відчуття, що всі мафії жорстко вводяться в гру. Чи справді сидів там, і вручну створював матриці для всіх анімаційних кісток?

Мені подобається відтворювати ігри для розваги, тому хотілося б знати, як він це зробив. Крім того, якщо він справді робить їх жорстким кодом ... чи є кращий спосіб?


2
чому ви думаєте, чому він може мати жорсткі анімації?
Ali1S232

Схоже, на це питання відповідає лише Notch.
MichaelHouse

9
Більш суттєво, чому ви хвилюєтесь, як це зробив Minecraft? Чи маєте ви уявлення про те, як зробити те ж саме іншим способом?
Тетрад

1
minecraftforum.net/topic/361430-181smp-smart-moving Виробник цього мода може відповісти вам, але анімація - це не область коду Minecraft, яку я переглядав раніше.
Джеймс

1
Я раніше переглядав код MCP, і я на 99% впевнений, що пам’ятаю, що бачив анімації з жорстким кодом. Я більше не маю Minecraft (або навіть Eclipse), щоб перевірити.
BlueRaja - Danny Pflughoeft

Відповіді:


18

Як говорили інші, так, моделі, а також анімації жорстко кодуються. Якщо ви хочете побачити, як це робиться, перейдіть на вікі Minecraft Coder Pack .

Пакет створений, щоб допомогти творцям мод декомпілювати, змінювати та перекомпілювати класи Minecraft. Інструкції містяться у файлах readme, які постачаються з пакетом. Пакет містить скрипти для декомпіляції, перекомпіляції та повторного придушення гри та сервера.

Класи, які ви хочете подивитися, це: ModelBase, ModelBiped та ModelRenderer.

ModelBiped містить такі функції, які виконують анімацію гуманоїдів:

public void render(Entity entity, float time, float f1, ...)
{
    setRotationAngles(time, f1, ...);
    ...
}

public void setRotationAngles(float time, float f1, ...)
{
    ...
    bipedRightArm.rotateAngleX = MathHelper.cos(time * 0.6662F + 3.141593F) * 2.0F * f1 * 0.5F;
    bipedLeftArm.rotateAngleX = MathHelper.cos(time * 0.6662F) * 2.0F * f1 * 0.5F;
    ...
}

Розгойдування руки - це просто косинусні функції. Права рука зміщена ПІ, щоб змусити їх розгойдуватися в протилежних напрямках.

графік гойдалки руки

Я сподіваюся, що відповість на ваше запитання =)


Якщо ви хочете отримати більше інформації про те, як насправді модифікувати Minecraft, перегляньте це питання:

Як додати користувацький моб до Minecraft?


Сіс! Евклідова ротація :(.
Джонатан Дікінсон

8

Моделі Minecraft жорстко закодовані. Не існує поняття ієрархії блоків (лише список блоків). Це означає, що анімації або виконуються процедурно (дуже принципово), або жорстко закодовані значення з інтерполяцією.

Існує кілька редакторів таких моделей Minecraft, як Techne або FMCModeler, які дозволяють імпортувати / експортувати код Minecraft для моделей, але вони не підтримують анімацію, оскільки це, ймовірно, по-різному обробляється для кожної моделі.

Ось короткий зразок, створений за допомогою FMCModeler:

//variables init:
public ModelRenderer box;

//constructor:
box = new ModelRenderer(0, 0);
box.addBox(0F, 0F, 0F, 16, 16, 16);

//render:
box.render(f5);

Кращий спосіб зробити це - побудувати повний блок-модельєр з деякими поняттями ієрархії блоків, щоб ви могли анімувати моделі за допомогою ключових кадрів та інтерполяції.

Наразі я створюю багатокористувацький інструмент побудови ігор, який робить саме це (серед іншого, http://craftstud.io/ ). Це вже дозволяє будувати складні статичні текстуровані моделі та ще багато чого на шляху.

Ось складна модель, побудована за допомогою CraftStudio Як ви бачите, блоки розташовані в дереві праворуч: http://i.stack.imgur.com/FRQeV.png

Кожен блок серіалізується на диск / по мережі з такими даними:

  • Унікальний ідентифікатор
  • Ідентифікатор батьківського вузла
  • Посада (впливає на нащадків)
  • Шкала (впливає на нащадків)
  • Кут (впливає на нащадків)
  • Зсув від точки зсуву
  • Розмір блоку
  • Блок зміщення текстури (зміщення УФ координат для текстурування)

Планую додати підтримку анімації, зберігаючи карту з іменами анімації як ключовими та списком ключових кадрів як значення. Кожен ключовий кадр буде асоційований з блоком і значенням для анімації. Між ключовими кадрами значення повинні бути інтерпольовані (або лінійно для позиції, або сферично для кутів, пошук lerp та slerp).


0

Моделі блоків Minecraft насправді не кодуються в грі станом на 1,8 і їх можна редагувати за допомогою пакетів ресурсів. Систему моделювання JSON досить легко зрозуміти, а моделі існують в / models / block. Потім ви можете подивитися на код, щоб побачити, як він інтерпретує моделі JSON.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.