क्या Minecraft एनिमेशन गेम में हार्डकोड किए गए हैं? [बन्द है]


12

मैं यह जानना चाहूंगा कि मिनीक्राफ्ट में एनीमेशन सिस्टम कैसे काम करता है। मुझे लग रहा है कि सभी मॉब गेम में हार्डकोडेड हैं। क्या वास्तव में वहाँ बैठकर हाथ से सभी एनीमेशन हड्डियों के लिए मैट्रिस नहीं बनाया गया था?

मुझे मनोरंजन के लिए खेल को फिर से बनाना पसंद है, इसलिए मैं जानना चाहूंगा कि उसने यह कैसे किया। इसके अलावा, अगर वह वास्तव में उन्हें हार्डकोड करता है ... तो क्या बेहतर तरीका है?


2
आपको क्यों लगता है कि उसके पास हार्डकोडेड एनिमेशन हो सकते हैं?
अली

ऐसा लगता है कि यह प्रश्न केवल Notch द्वारा उत्तर देने योग्य है।
MichaelHouse

9
इस बिंदु पर अधिक, आप इसकी परवाह क्यों करते हैं कि Minecraft ने यह कैसे किया? क्या आपको इस बात का अंदाजा है कि इसी चीज को किसी और तरीके से कैसे पूरा किया जाए?
टेट्राद

1
minecraftforum.net/topic/361430-181smp-smart-moving इस मॉड के निर्माता के पास आपके लिए एक उत्तर हो सकता है, लेकिन एनीमेशन उस मिनीक्राफ्ट कोड का एक क्षेत्र नहीं है जिसे मैंने पहले देखा है।
जेम्स

1
मैंने पहले MCP कोड के माध्यम से देखा है, और मुझे 99% यकीन है कि मुझे एनिमेशन को हार्ड-कोडेड देखकर याद है। हालाँकि, अब जाँच के लिए मेरे पास मिनेक्राफ्ट (या एक्लिप्स) भी नहीं है।
ब्लूराजा - डैनी पफ्लुगुफ़ेक्ट

जवाबों:


18

जैसा कि दूसरों ने कहा है, हां मॉडल के साथ-साथ एनिमेशन भी हार्ड-कोडेड हैं। यदि आप यह देखना चाहते हैं कि यह कैसे किया गया, तो Minecraft Coder Pack विकि पर जाएँ।

पैकेज को Minecraft वर्गों को विघटित करने, बदलने और पुन: व्यवस्थित करने के लिए आधुनिक रचनाकारों की सहायता के लिए बनाया गया था। निर्देश रेडीम फाइलों में शामिल हैं जो पैकेज के साथ आते हैं। पैकेज में स्क्रिप्ट को डिकम्पाइल, रेम्पिकाइल और गेम और सर्वर को रीबॉफसेट करना शामिल है।

जिन वर्गों को आप देखना चाहते हैं, वे हैं: मॉडलबेस, मॉडलबीपेड और मॉडलरेंडर।

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/ ) करता है। यह पहले से ही जटिल स्थिर बनावट वाले मॉडल बनाने की अनुमति देता है और अधिक रास्ते में है।

यहां एक जटिल मॉडल है जिसे क्राफ्टस्टडियो के साथ बनाया गया है जैसा कि आप देख सकते हैं, ब्लॉक दाईं ओर एक पेड़ में व्यवस्थित हैं: http://i.stack.imgur.com/FRQeV.png

प्रत्येक ब्लॉक को डिस्क / नेटवर्क पर निम्नलिखित डेटा के साथ क्रमबद्ध किया जाता है:

  • एक अलग पहचान
  • जनक नोड आईडी
  • स्थिति (वंशजों को प्रभावित करती है)
  • स्केल (वंशजों को प्रभावित करता है)
  • कोण (वंशजों को प्रभावित करता है)
  • धुरी बिंदु से ऑफसेट
  • ब्लॉक का आकार
  • ब्लॉक टेक्सचर ऑफसेट (यूवी टेक्सचरिंग के लिए ऑफसेट कोऑर्डिनेट करता है)

मैं कुंजी के रूप में एनीमेशन नामों के साथ एक मानचित्र संग्रहीत करके एनीमेशन समर्थन जोड़ने पर योजना बनाता हूं और मूल्य के रूप में keyframes की एक सूची। प्रत्येक कीफ़्रेम को एक ब्लॉक और चेतन के लिए एक मूल्य के साथ जोड़ा जाएगा। कीफ़्रेम के बीच, मानों को प्रक्षेपित किया जाना चाहिए (या तो स्थिति के लिए रैखिक या कोणों के लिए गोलाकार रूप से, लार्प और स्लेर्प की खोज करें)।


0

Minecraft ब्लॉक मॉडल वास्तव में 1.8 के रूप में गेम में हार्डकोड नहीं किया गया है और संसाधन पैक का उपयोग करके संपादित किया जा सकता है। JSON मॉडलिंग सिस्टम समझने में काफी आसान है और मॉडल / मॉडल / ब्लॉक में मौजूद हैं। फिर आप यह देखने के लिए कोड देख सकते हैं कि यह JSON मॉडल की व्याख्या कैसे करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.