সত্তা প্রতি একক প্রকারের একটি উপাদান না ভেঙে আমি কীভাবে প্রতি সত্তায় একাধিক মেস ব্যবহার করতে পারি?


11

আমরা কেবল শ্রেণিবদ্ধ ভিত্তিক গেম ইঞ্জিন থেকে কোনও উপাদান ভিত্তিক গেম ইঞ্জিনে স্যুইচ করছি। আমার সমস্যাটি হ'ল আমি যখন এমন কোনও মডেল লোড করি যেখানে জালগুলির একটি শ্রেণিবিন্যাস থাকে এবং আমি যেভাবে বুঝতে পারি যে কোনও উপাদান ভিত্তিক সিস্টেমে কোনও সত্তায় একই ধরণের একাধিক উপাদান থাকতে পারে না তবে প্রতিটিটির জন্য আমার একটি "জাল কম্পোনেন্ট" প্রয়োজন I একটি মডেল জাল। তাহলে আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি।

এই সাইটে তারা একটি কম্পোনেন্ট ভিত্তিক গেম ইঞ্জিন প্রয়োগ করেছে: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/


আমি মনে করি এটি খুব স্থানীয়ভাবে তৈরি।
jcora

4
আমি এটি একটি সাধারণ প্রশ্ন মনে করি। একটি গেম অবজেক্টে একই উপাদানটির একাধিক উদাহরণ থাকতে পারে?
ম্যাথিয়াস হালজল

হ্যাঁ, যদি এমনটি জিজ্ঞাসা করা হত তবে এটি হতে পারত । আমার কাছে মনে হচ্ছে যেন সে খুব নির্দিষ্ট সমস্যার উত্তর খুঁজছিল।
jcora

4
"... উপাদান ভিত্তিক সিস্টেমের সত্তায় একই ধরণের একাধিক উপাদান থাকতে পারে না ..." - কেন নয়?
ডেন

আমি মনে করি না এটি খুব স্থানীয়ভাবে তৈরি হয়েছে। উদাহরণস্বরূপ ইউই 3-তে SkeletalMeshActorকেবল একটি রয়েছে SkeletalMeshComponent। এটি একটি সাধারণ সমস্যা যা বিভিন্নভাবে সমাধান করা যেতে পারে।
সাম হোচেভার

উত্তর:


13

আপনার পজিশনের উপাদানটির "পিতা বা মাতা / শিশুদের" যুক্তি থাকতে পারে, যেখানে কোনও পজিশনের সাথে কোনও সত্তার পিতামাতাকে থাকতে পারে এবং তাদের অবস্থানটি তাদের পিতামাতার সাথে সম্পর্কিত। একই সত্তায় বেশ কয়েকটি জাল রাখার পরিবর্তে আপনি একাধিক সত্তা তৈরি করতে পারেন, প্রতিটি নিজের নিজস্ব জাল দিয়ে এবং এগুলি একসাথে লিঙ্ক করতে পারেন। এমনকি আপনি বাচ্চাদের সত্তা তাদের পিতামাতার ইভেন্টগুলি শুনতে (বা সত্তাগুলির মধ্যে যোগাযোগের জন্য আপনার কাছে যে কোনও সিস্টেম রয়েছে) শুনতে এবং সে অনুযায়ী প্রতিক্রিয়া জানাতে পারেন।


সুতরাং আমার কাছে সত্তার একটি শ্রেণিবিন্যাস রয়েছে এবং এই সত্তাগুলির সংমিশ্রণ রয়েছে এবং টগিটারের সাথে সংযুক্ত রয়েছে। এটি এখনও কি কোনও উপাদান ভিত্তিক গেম ইঞ্জিন =)
ম্যাথিয়াস হালজল

@ ম্যাথিয়াসহলজল এটি কি প্রশ্ন? এই ধরণের শ্রেণিবিন্যাস ওওপিতে সমস্যাযুক্ত শ্রেণিবিন্যাসের মতো নয়। এটি কেবল একটি গ্রাফিকাল শ্রেণিবিন্যাস, শিশুরা সত্তা তাদের পিতামাতার কাছ থেকে কার্যকারিতা অর্জন করবে না এবং আপনাকে সমস্যা দেবে না, এটি সাধারণত যেভাবেই করা হয় (রেন্ডার করার জন্য স্টাফের গাছ থাকা)। আপনি নিজের সমস্যার জন্য আসকারন উত্তর নিয়ে যেতে পারেন, মেশের একটি তালিকা থাকাতে, আমি দেখতে পাচ্ছি না যে এটি কীভাবে সমস্যাযুক্ত। আপনার প্রশ্ন আমি বুঝতে পারছি না?
লুক বি।

-1 নিশ্চিত যে এটি সত্যিই যাওয়ার উপায় কিনা Not আপনার যা দরকার তা যদি মেসের হায়ারার্কি পরিচালনা করে এমন একটি উপাদান হয় তবে মেসের ModelComponentহায়ারার্কি রয়েছে এমন একটি কেন রাখছেন না? কেবলমাত্র তার জন্য কোনও সত্ত্বাকে বিভক্ত করা সমস্যার সমস্যার সমাধান মনে হচ্ছে। আসাকেরন এবং বাইট 56 এর উত্তর দেখুন।
লরেন্ট কুইভিডু

@ লরেন্টকৌভিদৌ আমি দেখছি না কেন একাধিক সত্তা ব্যবহার করা ভুল হবে, এটি আমার পক্ষে ভাল সমাধান বলে মনে হচ্ছে। আমি কেবল জালগুলির তালিকা থাকার আলাদা বিকল্প দিতে চেয়েছি, যদিও আমি সম্মত যে জালগুলির একটি তালিকাও একটি ভাল সমাধান হতে পারে।
লুক বি।

@LukeB। কারণ এই জালটির গোষ্ঠীটি সামগ্রিকভাবে একটি সত্তার সাথে সম্পর্কিত হতে পারে, উপাদানগুলি যেমন এই উদাহরণস্বরূপ এআই, শব্দ, পদার্থবিজ্ঞানের উপর নির্ভর করে ... এটি করার মাধ্যমে আপনি একটি দৃশ্যের গ্রাফ এবং তার সমস্ত কিরক দিয়ে শেষ করবেন।
লরেন্ট কুইভিডু

8

আপনার জাল কম্পোনেন্টে মেসের একটি তালিকা থাকতে পারে। আপনি কীভাবে আপনার ইঞ্জিন বাস্তবায়ন করছেন তা আমি নিশ্চিত নই, তবে একটি সিস্টেম সহজেই সমস্ত জঞ্জালগুলির উপরে পুনরাবৃত্তি করতে পারে এবং সেগুলি আঁকতে পারে।


1
একটি জাল ট্রান্সফর্ম,
ফিজিক

1
সুতরাং একটি জাল একটি সত্তা? নাকি সবকিছুই একটি উপাদান? আমি এটি যেভাবে দেখছি, রূপান্তর, পদার্থবিজ্ঞান এবং গ্রাফিকটি জালটিতে নয় সত্তার উপাদান হওয়া উচিত, একটি জাল কেবল শীর্ষে অবস্থানের বর্ণনা।
লুক বি।

1
হ্যাঁ এটি একটি উপাদান হওয়া উচিত তবে উপাদানগুলির উপাদান থাকতে পারে না তাই এটির পক্ষে মডেলের শ্রেণিবিন্যাস কার্যকর করা।
ম্যাথিয়াস হালজল

1
আমি বিশ্বাস করি যে আরও ভাল উত্তর পেতে আপনার ইঞ্জিন কীভাবে তৈরি করতে চান তার আরও তথ্য সরবরাহ করা উচিত। সত্তা উপাদান উপাদানগুলি বিভিন্ন উপায়ে প্রয়োগ করা যেতে পারে, সে সম্পর্কে আরও তথ্যের জন্য কাইলোটনের এই উত্তরটি পরীক্ষা করুন check
আসকারন

4

আমি জাল বস্তুর একটি তালিকা দিয়ে আমার জাল উপাদান তৈরি করব। প্রতিটি জাল বস্তুর একটি অফসেটের সাথে জাল তথ্য থাকে। অঙ্কন করার সময়, অঙ্কন সিস্টেম অবস্থান উপাদান থেকে অবস্থান নেয়, তারপরে প্রতিটি জাল পজিশনে + অফসেটে জাল উপাদানটিতে আঁকবে।

আপনার জাল উপাদানটির ভিতরে আপনি একাধিক মেস রাখতে পারেন, যখন এখনও সত্তা প্রতি একক জাল উপাদান দিয়ে বলছেন।


1

টিএলডিআর: তৈরি করে উপাদানটি দিয়ে শুরু করতে একাধিক মেশকে নিয়ে গঠিত।

আমি আসকারন / বাইট 56 / লরেন্টের সাথে একমত যে জাল / উপাদানগুলির জোড়গুলির মধ্যে এবং নিজেই সত্তার মধ্যে অন্য স্তরের ইন্ডিয়ারেশন প্রয়োজন। গ্রাফিক্স কম্পোনেন্টটিকে শীর্ষে এবং উপকরণ হিসাবে দেখার পরিবর্তে এটিকে চূড়ান্ত রাস্টারটিতে পিক্সেলগুলির একটি ব্লব হিসাবে ভাবেন - এটি কীভাবে / তারা পায় সেখানে একটি বাস্তবায়ন বিশদ এবং এর চেয়ে বেশি কিছুই নেই।

আমি আমার প্রকল্পের জন্য এটি সম্পর্কে অনেক কিছু ভেবেছিলাম এবং আমি মনে করি যে সর্বোত্তম সমাধানটি গ্রাফিক্স কম্পোনেন্টকে প্রচলিত 'মডেল' অবজেক্টের কার্যকারিতা অনেকটা অন্তর্ভুক্ত করে অনেক উচ্চ স্তরের উপাদান তৈরি করে - কারণ এই কার্যকারিতাটি alচ্ছিক নয়! এই বহুভুজগুলি কেবলমাত্র বাফার ডেটা এবং শেডারের চেয়ে অনেক বেশি রেন্ডার করার জন্য যেমন:

  • আপনি উল্লেখ করেছেন যে অবস্থান
  • স্কিনিং / অ্যানিমেশন ডেটা
  • বর্তমান পাস (যেমন দুটি পাসের আলফা ব্যবহার করা হয়)
  • ছায়া castালাইয়ের তথ্য (যদি আপনি এটি করছেন)
  • তথ্য কিভাবে এবং কখন উপাদান আপডেট করার জন্য
  • কার্যকারিতা Culling

এবং কৌণিক সিস্টেম, বিলবোর্ড ইত্যাদির কথা বিবেচনা না করে কেবল 3 ডি সম্পত্তির জন্য কাজ করে তবে এটি সমস্তই কেবল গ্রাফিক্স / রেন্ডারিং কোডের জন্য প্রাসঙ্গিক - এটি পদার্থবিজ্ঞান, শব্দ বা স্ক্রিপ্টিংকে প্রভাবিত করে না, সুতরাং এটি বোঝা যায় যে এটি বসতে হবে গ্রাফিক্স / রেন্ডারিং উপাদান।

আমি এখানে দিয়ে শেষ করেছি:

Model : Entity, IHasGraphicsComponent, IHasSkeleton, IHasAnimationStore     //This is the 'game object' - it is passed to the GraphicsController
    ModelComponent : GraphicsComponent                      //This is the actual graphics component, used by the GraphicsController in the context of the game object.
        ModelComponentPart : GraphicsComponent              //This is also a graphics component
            Mesh                                        //These are implementation details
            Material
        ModelComponentPart : GraphicsComponent
            Mesh
            Material
    Skeleton
    Animations

এই:

  • মডেল এমন কোনও গেম সম্পদ যা গ্রাফিক্স উপাদান রয়েছে has

  • মডেল কম্পোনেন্টটি theতিহ্যবাহী মডেলের সাথে সাদৃশ্যপূর্ণ এবং আসলে 3 ডি সম্পত্তির জন্য। গ্রাফিক্স কম্পোনেন্ট নিয়ন্ত্রক (আপনি যদি মডেল-ভিউ-কন্ট্রোলার প্যাটার্ন ব্যবহার করেন) এটি কোন ধরণের গ্রাফিক্সের সম্পদ তা নির্ধারণ এবং সঠিকভাবে আঁকার জন্য দায়ী (নোট করুন মডেলকম্পোনেন্ট গ্রাফিক্স কম্পোনেন্টের একটি সাবক্লাস)।

সরলতার জন্য এবং পিছনের দিকের সামঞ্জস্যের জন্য খনিতে বেশ কয়েকটি আপসও ছিল, যেমন প্রতিটি গ্রাফিকস কম্পোনেন্টও একটি সত্তা, এবং সত্ত্বা অবস্থানের অবস্থানের তথ্য সরাসরি সঞ্চয় করে তাই এটি কেবল এক জায়গায় গণনা করা হয়, তবে ধারণাটি একই: গ্রাফিকস কম্পোনেন্টটি হ্যান্ডেলগুলি কী তাই আইটেমটি আঁকতে প্রয়োজনীয় - যা প্রয়োজন তা সমস্ত - মডেলারের কাছ থেকে আসে তা নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.