ধারণাটি
মূলত, একটি দৃশ্যের গ্রাফ দ্বি-নির্দেশিত অ্যাসাইক্লিক গ্রাফ ছাড়া আর কিছুই নয় যা স্থানিক সম্পর্কের স্তরক্রমিক-কাঠামোগত সেট উপস্থাপন করে।
উল্লিখিত হিসাবে বন্য মধ্যে ইঞ্জিনগুলি অন্যান্য গুডিকে দৃশ্যের গ্রাফে অন্তর্ভুক্ত করে। আপনি দেখতে পাচ্ছেন যে মাংস বা গরু সম্ভবত আপনার ইঞ্জিন এবং গ্রন্থাগারগুলির সাথে আপনার অভিজ্ঞতার উপর নির্ভর করে।
এটি হালকা ওজনের রাখা
আমি আপনার দৃশ্যের গ্রাফ নোড (যা এর অন্তরে স্থানিক / টোগোগ্রাফিক কাঠামোর পরিবর্তে টপোলজিকাল) এর ইউনিটি 3 ডি স্টাইলের পক্ষে আছি এবং স্থানগত পরামিতি এবং কার্যকারিতা অন্তর্ভুক্ত। আমার ইঞ্জিনে, আমার নোডগুলি ইউনিটি 3 ডি এর চেয়েও হালকা ওজনযুক্ত, যেখানে তারা সুপারক্লাস / প্রয়োগকৃত ইন্টারফেসগুলি থেকে প্রচুর পরিমাণে নিরঙ্কুশ জাঙ্ক সদস্যের অধিকারী: আমার যা আছে তা এখানে - আপনি যতটা হালকা পেতে পারেন তা সম্পর্কে:
- পিতা বা মাতা / শিশু পয়েন্টার সদস্য।
- প্রাক রূপান্তর স্থানিক প্যারামিটার সদস্য: জাইজ পজিশন, পিচ, ইয়াও এবং রোল।
- একটি রূপান্তর ম্যাট্রিক্স; একটি শ্রেণিবদ্ধ চেইনে ম্যাট্রিকগুলি খুব দ্রুত এবং সহজেই গাছের উপরে / নিচে চলাচল করে খুব দ্রুত এবং সহজেই বহুগুণে বাড়তে পারে, আপনাকে দৃশ্যের গ্রাফের মূল বৈশিষ্ট্য হায়ারারিকাল স্থানিক রূপান্তর দেয়;
- একটি
updateLocal()
পদ্ধতি যা শুধুমাত্র এই নোডের রূপান্তর ম্যাট্রিক্স আপডেট করে
- একটি
updateAll()
পদ্ধতি যা এটি আপডেট করে এবং সমস্ত বংশধর নোডের ট্রান্সফর্ম ম্যাট্রিক্স
... আমি আমার নোড ক্লাসে সমীকরণের-গতি যুক্তি এবং এইভাবে বেগ / ত্বরণ সদস্য (লিনিয়ার এবং কৌণিক) অন্তর্ভুক্ত করি। আপনি এটি পূর্বেই রাখতে পারেন, এবং আপনি যদি চান তবে এটি আপনার প্রধান নিয়ামকটিতে পরিচালনা করতে পারেন। তবে এটি হ'ল - খুব হালকা ওজনের। মনে রাখবেন, হাজার হাজার সত্তায় আপনি এগুলি পেতে পারেন। আপনার পরামর্শ অনুসারে, এটি হালকা রাখুন।
হায়ারারচি নির্মাণ
আপনি কোন দৃশ্যের গ্রাফের সাথে অন্যান্য দৃশ্যের গ্রাফগুলি উল্লেখ করে যা বলছেন ... আমি পাঞ্চলাইনের জন্য অপেক্ষা করছি? অবশ্যই তারা। এটাই তাদের মূল ব্যবহার। আপনি অন্য কোনও নোডে যে কোনও নোড যুক্ত করতে পারেন, এবং রূপান্তরগুলি স্বয়ংক্রিয়ভাবে নতুন ট্রান্সফর্মের স্থানীয় স্থানের মধ্যে দেখা উচিত। আপনি যা করছেন সবই একটি পয়েন্টার পরিবর্তন করছে, আপনি চারদিকে ডেটা অনুলিপি করছেন এমনটি হয় না! একটি পয়েন্টার পরিবর্তন করে, আপনি তারপরে একটি গভীর দৃশ্যের গ্রাফ পাবেন। প্রক্সি ব্যবহার করে যদি সমস্ত উপায়ে বিষয়গুলিকে আরও দক্ষ করে তোলা হয় তবে আমি এর প্রয়োজন কখনই দেখিনি।
রেন্ডার সম্পর্কিত যুক্তি এড়িয়ে চলুন
আপনি নিজের দৃশ্যের গ্রাফ নোড ক্লাসটি লেখার সাথে সাথে রেন্ডারিং সম্পর্কে ভুলে যান বা আপনি নিজের জন্য জিনিসগুলিকে বিভ্রান্ত করবেন। সমস্ত কিছুই আপনার কাছে একটি ডেটা মডেল রয়েছে - এটি দৃশ্য গ্রাফটি হোক বা না-ই হোক না কেন এবং কিছু রেন্ডারার সেই ডেটা মডেলটি খতিয়ে দেখবে এবং সেই অনুযায়ী পৃথিবীতে অবজেক্টগুলি রেন্ডার করতে চলেছে, এটি 1, 2 এ থাকুক না কেন , 3 বা 7 মাত্রা। আমি যে বক্তব্যটি করছি তা হ'ল: আপনার দৃশ্যের গ্রাফকে রেন্ডার যুক্তি দিয়ে দূষিত করবেন না। একটি দৃশ্যের গ্রাফটি টপোলজি এবং টপোলোগ্রাফি সম্পর্কিত - যেমন সংযোগ এবং স্থানিক বৈশিষ্ট্য। এগুলি সিমুলেশনের সত্যিকারের অবস্থা এবং এমনকি রেন্ডারিংয়ের অভাবে এমনকি বিদ্যমান (যা প্রথম ব্যক্তির দর্শন থেকে কোনও পরিসংখ্যানের গ্রাফে কোনও পাঠ্য বিবরণে সূর্যের নীচে কোনও রূপ নিতে পারে)। নোডগুলি রেন্ডারিং-সম্পর্কিত অবজেক্টগুলিকে নির্দেশ করে না - তবে বিপরীতটি সত্য হতে পারে। এটিও বিবেচনা করুন: আপনার পুরো গাছের প্রতিটি দৃশ্যের গ্রাফ নোডটি পুনর্বারযোগ্য হবে না। অনেকগুলি কেবল পাত্রে হবে। সুতরাং কেন এমনকি পয়েন্টার-থেকে-রেন্ডার-অবজেক্টের জন্য মেমরি বরাদ্দ করা হয়? এমনকি কোনও পয়েন্টার সদস্য যা কখনও ব্যবহৃত হয় না, এখনও স্মৃতি গ্রহণ করছে। সুতরাং নির্দেশকের দিকটি বিপরীত করুন: রেন্ডার-সম্পর্কিত উদাহরণটি ডেটা মডেলটিকে উল্লেখ করে (যা আপনার দৃশ্যের গ্রাফ নোড হতে পারে, বা অন্তর্ভুক্ত থাকতে পারে), উল্টো নয়। এবং যদি আপনি নিজের নিয়ন্ত্রকের তালিকার মধ্য দিয়ে চলে যাওয়ার কোনও সহজ উপায় চান তবে এখনও সম্পর্কিত ভিউটিতে অ্যাক্সেস পান, তবে একটি অভিধান / হ্যাশ টেবিল ব্যবহার করুন, যা ও (1) পড়ার অ্যাক্সেসের সময়কে কাছে পৌঁছে দেয়। এইভাবে কোনও দূষণ নেই, এবং আপনার সিমুলেশন যুক্তিতে কোনও রেন্ডারাররা কী রয়েছে তা বিবেচনা করে না, যা আপনার দিনগুলি এবং রাতের কোডিং করে তোলে which সুতরাং কেন এমনকি পয়েন্টার-থেকে-রেন্ডার-অবজেক্টের জন্য মেমরি বরাদ্দ করা হয়? এমনকি কোনও পয়েন্টার সদস্য যা কখনও ব্যবহৃত হয় না, এখনও স্মৃতি গ্রহণ করছে। সুতরাং নির্দেশকের দিকটি বিপরীত করুন: রেন্ডার-সম্পর্কিত উদাহরণটি ডেটা মডেলটিকে উল্লেখ করে (যা আপনার দৃশ্যের গ্রাফ নোড হতে পারে, বা অন্তর্ভুক্ত থাকতে পারে), বিপরীতে নয়। এবং যদি আপনি নিজের নিয়ন্ত্রকের তালিকার মধ্য দিয়ে চলে যাওয়ার কোনও সহজ উপায় চান তবে এখনও সম্পর্কিত ভিউটিতে অ্যাক্সেস পান, তবে একটি অভিধান / হ্যাশ টেবিল ব্যবহার করুন, যা ও (1) পড়ার অ্যাক্সেসের সময়কে কাছে পৌঁছে দেয়। এইভাবে কোনও দূষণ নেই, এবং আপনার সিমুলেশন যুক্তিতে কোনও রেন্ডারাররা কী রয়েছে তা বিবেচনা করে না, যা আপনার দিনগুলি এবং রাতের কোডিং করে তোলে which সুতরাং কেন এমনকি পয়েন্টার-থেকে-রেন্ডার-অবজেক্টের জন্য মেমরি বরাদ্দ করা হয়? এমনকি কোনও পয়েন্টার সদস্য যা কখনও ব্যবহৃত হয় না, এখনও স্মৃতি গ্রহণ করছে। সুতরাং নির্দেশকের দিকটি বিপরীত করুন: রেন্ডার-সম্পর্কিত উদাহরণটি ডেটা মডেলটিকে উল্লেখ করে (যা আপনার দৃশ্যের গ্রাফ নোড হতে পারে, বা অন্তর্ভুক্ত থাকতে পারে), বিপরীতে নয়। এবং যদি আপনি নিজের নিয়ন্ত্রকের তালিকার মধ্য দিয়ে চলে যাওয়ার কোনও সহজ উপায় চান তবে এখনও সম্পর্কিত ভিউটিতে অ্যাক্সেস পান, তবে একটি অভিধান / হ্যাশ টেবিল ব্যবহার করুন, যা ও (1) পড়ার অ্যাক্সেসের সময়কে কাছে পৌঁছে দেয়। এইভাবে কোনও দূষণ নেই, এবং আপনার সিমুলেশন যুক্তিতে কোনও রেন্ডারাররা কী রয়েছে তা বিবেচনা করে না, যা আপনার দিনগুলি এবং রাতের কোডিং করে তোলে which এবং যদি আপনি নিজের নিয়ন্ত্রকের তালিকার মধ্য দিয়ে চলে যাওয়ার কোনও সহজ উপায় চান তবে এখনও সম্পর্কিত ভিউটিতে অ্যাক্সেস পান, তবে একটি অভিধান / হ্যাশ টেবিল ব্যবহার করুন, যা ও (1) পড়ার অ্যাক্সেসের সময়কে কাছে পৌঁছে দেয়। এইভাবে কোনও দূষণ নেই, এবং আপনার সিমুলেশন যুক্তিতে কোনও রেন্ডারাররা কী রয়েছে তা বিবেচনা করে না, যা আপনার দিনগুলি এবং রাতের কোডিং করে তোলে which এবং যদি আপনি নিজের নিয়ন্ত্রকের তালিকার মধ্য দিয়ে চলে যাওয়ার কোনও সহজ উপায় চান তবে এখনও সম্পর্কিত ভিউটিতে অ্যাক্সেস পান, তবে একটি অভিধান / হ্যাশ টেবিল ব্যবহার করুন, যা ও (1) পড়ার অ্যাক্সেসের সময়কে কাছে পৌঁছে দেয়। এইভাবে কোনও দূষণ নেই, এবং আপনার সিমুলেশন যুক্তিতে কোনও রেন্ডারাররা কী রয়েছে তা বিবেচনা করে না, যা আপনার দিনগুলি এবং রাতের কোডিং করে তোলে whichবিশ্বের সহজ।
কুলিং হিসাবে, উপরের দিকে ফিরে দেখুন। এরিয়া অফ-ইন্টারেস্ট কুলিং একটি সিমুলেশন লজিক ধারণা। এটি হল, আপনি এই (সাধারণত বাক্সযুক্ত, বিজ্ঞপ্তি বা গোলাকৃতির) ক্ষেত্রের বাইরে বিশ্ব প্রক্রিয়া করেন না। রেন্ডারিংয়ের আগে এটি প্রধান নিয়ামক / গেম লুপে স্থান নেয়। অন্যদিকে, হতাশাগ্রহণ সম্পূর্ণরূপে রেন্ডার-সম্পর্কিত। সুতরাং এখনই culling সম্পর্কে ভুলবেন না। দৃশ্যের গ্রাফগুলির সাথে এর কোনও সম্পর্ক নেই এবং এটিতে মনোনিবেশ করার মাধ্যমে আপনি কী অর্জন করার চেষ্টা করছেন তার আসল উদ্দেশ্যটিকে অস্পষ্ট করবেন।
একটি চূড়ান্ত নোট ...
এখানে অন্তর্ভুক্ত রেন্ডারিং সম্পর্কিত সমস্ত বিবরণ প্রদত্ত আপনি একটি ফ্ল্যাশ (বিশেষত এএস 3) ব্যাকগ্রাউন্ড থেকে আসছেন এমন দৃ strong় অনুভূতিটি পেয়েছি। হ্যাঁ, ফ্ল্যাশ স্টেজ / ডিসপ্লেওবজেক্ট দৃষ্টান্তে দৃশ্যের অংশ হিসাবে সমস্ত রেন্ডার যুক্তি অন্তর্ভুক্ত। তবে ফ্ল্যাশ প্রচুর অনুমান করে যা আপনি প্রয়োজনীয়ভাবে তৈরি করতে চান না। পুরোপুরি গেম ইঞ্জিনের জন্য, পারফরম্যান্স, সুবিধার্থে এবং উপযুক্ত জটিল তদন্তের মাধ্যমে কোড জটিলতা নিয়ন্ত্রণের কারণে, দুটি মিশ্রিত না করাই ভাল ।