Minecraft animasyonları oyuna kodlanmış mı? [kapalı]


12

Animasyon sisteminin minecraft'ta nasıl çalıştığını bilmek istiyorum. Tüm çetelerin oyuna sabit kodlandığını hissediyorum. Çentik gerçekten orada oturup tüm animasyon kemikleri için matrisleri el ile mi oluşturdu?

Oyunları eğlence için yeniden yaratmayı seviyorum, bu yüzden bunu nasıl yaptığını bilmek istiyorum. Ayrıca, eğer onları gerçekten kodlarsa ... daha iyi bir yol var mı?


2
neden sabit kodlu animasyonları olabileceğini düşünüyorsunuz?
Ali1S232

Bu soru sadece Notch tarafından cevaplandırılıyor gibi görünüyor.
MichaelHouse

9
Daha da önemlisi, neden Minecraft'ın bunu nasıl yaptığına önem veriyorsunuz? Aynı şeyi başka bir şekilde nasıl yapacağınız hakkında bir fikriniz var mı?
Tetrad

1
minecraftforum.net/topic/361430-181smp-smart-moving Bu modun yapımcısı sizin için bir cevap verebilir, ancak animasyon daha önce baktığım minecraft kodunun bir alanı değildir.
James

1
Daha önce MCP kodunu inceledim ve animasyonları sabit kodlu gördüğümü hatırladığımdan% 99 eminim. Artık kontrol etmek için minecraft (hatta Eclipse) yok.
BlueRaja - Dany Pflughoeft

Yanıtlar:


18

Diğerlerinin söylediği gibi, evet modeller ve animasyonlar sabit kodlanmıştır. Bunun nasıl yapıldığını görmek istiyorsanız Minecraft Coder Pack wiki'sine gidin.

Paket, mod oluşturucuların Minecraft sınıflarını derlemesine, değiştirmesine ve yeniden derlemesine yardımcı olmak için oluşturuldu. Talimatlar paketle birlikte gelen benioku dosyalarında bulunur. Paket, oyunu ve sunucuyu yeniden derlemek, yeniden derlemek ve yeniden düzenlemek için komut dosyaları içerir.

Bakmak isteyeceğiniz sınıflar şunlardır: ModelBase, ModelBiped ve ModelRenderer.

ModelBiped, insansı animasyonları yapan aşağıdaki işlevleri içerir:

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;
    ...
}

Kol salınımları sadece kosinüs işlevleridir. Sağ kol, karşıt yönlerde sallanmalarını sağlamak için PI tarafından dengelenir.

kol salıncak grafiği

Umarım sorunuzu cevaplar =)


Minecraft'ı gerçekten nasıl değiştireceğiniz hakkında daha fazla bilgi edinmek istiyorsanız, bu soruya göz atın:

Minecraft'a nasıl özel bir mafya ekleyebilirim?


Abla! Öklid dönüşü :(.
Jonathan Dickinson

8

Minecraft'taki modeller kodlanmıştır. Blok hiyerarşisi kavramı yoktur (sadece bir blok listesi). Bu, animasyonların ya prosedürel olarak (çok temel bir şekilde) yapıldığı ya da enterpolasyonlu sabit kodlanmış değerlerin yapıldığı anlamına gelir.

Modne için Minecraft model kodunu içe / dışa aktarmaya izin veren Techne veya FMCModeler gibi Minecraft modelleri için birkaç editör var, ancak muhtemelen her model için farklı işlendiği için animasyonları desteklemiyorlar.

İşte FMCModeler ile oluşturulan hızlı bir örnek:

//variables init:
public ModelRenderer box;

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

//render:
box.render(f5);

Bunu yapmanın daha iyi bir yolu, bazı blok hiyerarşisi kavramlarıyla tam bir blok tabanlı modelleyici oluşturmaktır, böylece modelleri anahtar kareler ve enterpolasyon ile canlandırabilirsiniz.

Şu anda bunu yapan çok oyunculu bir oyun oluşturma aracı yapıyorum (diğer şeylerin yanı sıra, http://craftstud.io/ ). Zaten karmaşık statik dokulu modeller oluşturmaya izin veriyor ve daha fazlası yolda.

İşte CraftStudio ile oluşturulmuş karmaşık bir model Gördüğünüz gibi, bloklar sağdaki bir ağaçta düzenlenmiştir: http://i.stack.imgur.com/FRQeV.png

Her blok, aşağıdaki verilerle ağ üzerinde diske / ağa serileştirilir:

  • Benzersiz Kimlik
  • Üst düğüm kimliği
  • Pozisyon (torunları etkiler)
  • Ölçek (torunları etkiler)
  • Açı (torunları etkiler)
  • Pivot noktasından ofset
  • Blok boyutu
  • Blok doku ofseti (tekstüre için UV koordinatları ofseti)

Animasyon adlarını bir haritayı anahtar olarak ve anahtar karelerin listesini değer olarak saklayarak animasyon desteği eklemeyi planlıyorum. Her ana kare, bir blok ve canlandırılacak bir değerle ilişkilendirilir. Ana kareler arasında değerler enterpole edilmelidir (ya konum için doğrusal olarak ya da açılar için küresel olarak lerp ve slerp'i arayın).


0

Minecraft blok modelleri aslında 1.8'den beri oyuna sabit kodlanmamıştır ve kaynak paketleri kullanılarak düzenlenebilir. JSON modelleme sisteminin anlaşılması oldukça kolaydır ve / models / block'da modeller bulunmaktadır. Daha sonra JSON modellerini nasıl yorumladığını görmek için koda bakabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.