গেম ইঞ্জিনগুলি কোয়াড ব্যবহারের পরিবর্তে মডেলগুলিকে ত্রিভুজগুলিতে রূপান্তর করে কেন?


47

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

যে কেউ জানতে পারে যে কেন গেম ইঞ্জিনগুলি মডেলগুলি চার দিকের বহুভুজ হিসাবে রেখে যাওয়ার তুলনায় ত্রিভুজগুলিতে রূপান্তর করে? এছাড়াও এটি করার উপকারিতা এবং কনস (যদি থাকে) কী কী?


1
কিছুটা সম্পর্কিত, এনভিডিয়া এনভি 1 ত্রিভুজ / বহুভুজগুলির পরিবর্তে চতুষ্কোণ টেক্সচার ম্যাপিং ব্যবহার করেছে (যা কোয়াড ব্যবহার করে)। এটি খুব হিট হয়নি, কমপক্ষে বলতে গেলে। En.wikedia.org/wiki/NV1 দেখুন ।
ম্যাককে

5
@ ম্যাক: চতুষ্কোণ যেমন "চতুষ্কোণ সমীকরণ", চতুর্ভুজ "চতুর্ভুজ" এর মতো নয়। এটি কোয়াড নয় বরং 9 টি পয়েন্ট দ্বারা সংজ্ঞায়িত একটি চতুর্ভুজ বক্র ব্যবহার করে। stason.org/TULARC/pc/3d-ographicics-cards-faq/…

9
আপনার প্রশ্নের জন্য +1 কিন্তু আপনার অধ্যাপকের কাছে একটি বড় -1। এটি বেসিক স্টাফ যা তাঁর জানা উচিত পাশাপাশি তিনি নিজের হাতের পিছনের অংশটিও জানেন এবং এমন একটি চিহ্ন যা তিনি গত 15-অদ্ভুত বছরগুলিতে বিকাশগুলির সাথে কিছুটা যোগাযোগ থেকে দূরে রয়েছেন।
ম্যাক্সিমাস মিনিমাস

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

উত্তর:


56

নীচের লাইনটি ত্রিভুজ রাস্টারাইজেশন যা কম্পিউটারগুলি কীভাবে স্ক্রিনে বস্তুগুলি সরবরাহ করে। যদিও অন্যেরা এটি আমার চেয়ে আরও বেশি প্রকারে বলেছেন:

কম্পিউটারের স্ক্রিনে আমরা দেখতে পাই এমন সমস্ত 3 ডি অবজেক্টগুলি আসলে ছোট্ট জ্যামিতিক বস্তু দ্বারা তৈরি হয় যা প্রায়শই আদিম বলা হয়। চতুর্ভুজ, ত্রিভুজ, এন-গনস ইত্যাদি আদিমতার উদাহরণ। আমরা মূলত একটি মূল কারণে ত্রিভুজগুলিতে মনোনিবেশ করব: প্রতিটি বস্তুকে ত্রিভুজগুলিতে বিভক্ত করা যেতে পারে তবে ত্রিভুজগুলি ত্রিভুজ ছাড়া অন্য কিছুতে বিভক্ত করা যায় না। এর কারণে, ত্রিভুজগুলি অঙ্কন করা উচ্চতর ক্রমের বহুভুজ আঁকার চেয়ে অনেক সহজ; কম জিনিস মোকাবেলা করতে। এই কারণেই এই ত্রিভুজগুলি কম্পিউটার গ্রাফিকগুলিতে খুব বেশি ব্যবহৃত হয়।

জোর আমার। সূত্র: http://www.devmaster.net/articles/software-rendering/part3.php


2
অসাধারণ! আপনি এটি সম্পর্কে চিন্তা করলে এটি অনেক অর্থবোধ করে। উত্তরের জন্য ধন্যবাদ!
অনুদান

1
ওপেনজিএল ইএস-তে, এপিআই সরল করার প্রচেষ্টার অংশ হিসাবে, কোয়াডস এবং বহুভুজ এমনকি সমর্থিত নয়। সুতরাং ত্রিভুজগুলি ব্যবহারের ব্যবহারিক কারণ হ'ল আপনার অন্য কোনও পছন্দ নেই। তবে ES এর মতো স্ট্রিমলাইনযুক্ত এপিআই অন্যান্য আদিম প্রকারগুলি এড়ানোর কারণ এটি এবং অন্যান্য উত্তরে বর্ণিত কারণগুলির কারণ।
Suboptimus

5
+1 কারণ এমন একটি উত্তর যা যখন কেউ আমার বুকমার্কগুলিতে আমাকে একই জিনিস জিজ্ঞাসা করে আমি নিরাপদে রেফারেন্স হিসাবে ব্যবহার করতে পারি। কেবলমাত্র এটিই বলুন, আমি সবসময়ই ভেবেছি যে ত্রিভুজগুলি ছোট ছোট আদিম কারণ হ'ল কারণ ফ্লোট পয়েন্ট পাটিগণিতের যথার্থতার সাথে ট্রিসই একমাত্র নিরাপদ বহুভুজ যা আপনি সব ক্ষেত্রেই পরিকল্পনাকারী হওয়ার গ্যারান্টি দিতে পারেন, কোয়াড সহ আপনি গ্যারান্টি দিতে পারবেন না সারাক্ষণ প্ল্যানার থাকুন। মডেলিং সফ্টওয়্যার সম্ভবত মডেলারের সুবিধার্থে অবজেক্টগুলিকে কোয়াড বা এন-গনস হিসাবে দেখায় তবে দুটি বা ততোধিক ত্রিভুজ হিসাবে বিভাজন বহুভুজকে রূপান্তর / রেন্ডার প্রয়োগ করে।
হেটোরু হানসৌ

56

ত্রিভুজগুলির অনেকগুলি বৈশিষ্ট্য রয়েছে যা এগুলিকে আঁকতে সহজ করে এবং তাই দ্রুত।

চারটি বা তার বেশি পয়েন্ট একই প্লেনে নাও থাকতে পারে তবে তিনটি পয়েন্ট সর্বদা থাকে (অবক্ষয়জনিত ক্ষেত্রে উপেক্ষা করে)। এটিতে আকর্ষণীয় সম্পত্তি রয়েছে যে স্কেলারের মানগুলি ত্রিভুজের পৃষ্ঠের তুলনায় রৈখিকভাবে পরিবর্তিত হয়। ত্রিভুজটি যখন স্ক্রিনে প্রজেক্ট করা হয় তখনও স্কেলারের মানগুলি x '/ z এবং y' / z এর ক্ষেত্রে রৈখিকভাবে পৃথক হয়।

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

tl; dr: ত্রিভুজগুলি সবচেয়ে সহজ আদিম, তাই ত্রিভুজগুলির সাথে সম্পর্কিত আলগোরিদিমগুলি ভারীভাবে অনুকূলিত করা যায়।


11
+1 টি। আমি মনে করি যে ত্রিভুজটি সর্বদা পরিকল্পনাকারী হওয়াই মূল কারণগুলির মধ্যে একটি। নন-প্ল্যানার বহুভুজ জিনিসগুলিকে আরও জটিল করে তোলে।
বাম্মজ্যাক

2
+1 টি। আমি মনে করি ত্রিভুজগুলি একমাত্র বহুভুজ হওয়ায় আপনি প্ল্যানার হওয়ার গ্যারান্টি দিতে পারবেন এপিস এবং হার্ডওয়্যার তৈরির মূল প্রযুক্তিগত কারণ যা ত্রিভুজগুলির প্রয়োজন। মডেলিং সফ্টওয়্যার সম্ভবত মডেলারের সুবিধার্থে কোয়াড হিসাবে মেস দেখায়।
হেটোরু হ্যানসু

1
আমি ব্যবহার করি একটি দুর্দান্ত নন-পরিকল্পনাকারী উপমা ... একটি তিন পায়ের স্টুল মাটিতে কেবল একভাবে দাঁড়াতে পারে, এর পা ত্রিভুজের কোণার মতো। তবে একটি চতুষ্পদ মল দুটি উপায়ে মাটিতে দাঁড়িয়ে থাকতে পারে এবং এক পা থেকে অন্য পায়ে কাঁপতে থাকলে এক পা থেকে অন্য পায়ে কাঁপতে পারে।
ক্রিসি

আমি আগ্রহী; কীভাবে সম্ভব যে একটি ত্রিভুজ সবসময় একই সমতলে পয়েন্ট করে? আপনি আসলে কীভাবে একটি গোলক আঁকবেন? কমপক্ষে একটি বিন্দুটির একটি আলাদা বিমানে অনুবাদ করতে হবে, অন্যথায় আপনি একটি সমতল পৃষ্ঠ পাবেন।
rataplan

@ নিউবাইজ তিনটি ভার্টেক্স সবসময়ই একটি একক বিমানের সংজ্ঞা দেয়। একটি গোলক বিভিন্ন ত্রিভুজ দ্বারা গঠিত; গোলকের পৃষ্ঠের প্যাচকে প্রতিনিধিত্ব করে দুটি সংলগ্ন ত্রিভুজ দুটি অংশকে ভাগ করে, তবে তারা একই বিমানে নেই। এই চিত্রটি জিনিসগুলিকে আরও পরিষ্কার করতে পারে: cse.csusb.edu/tongyu/courses/cs420/images/icos.jpg
ggambett

8

তিনটি পয়েন্ট (একটি ত্রিভুজ) সর্বদা একটি সমতল বিমান নির্ধারণ করে। অন্য কথায়, যে কোনও তিনটি পয়েন্ট দেওয়া, আপনি সর্বদা একটি সমতল বিমান তৈরি করতে পারেন যা তিনটি পয়েন্টকেই কাটাতে পারে। তবে সর্বদা চারটি পয়েন্টের ক্ষেত্রে একই হয় না। আপনার প্লেনে চারটি পয়েন্ট থাকতে পারে তবে আপনার চারটি পয়েন্টও থাকতে পারে যা বিমানে নয়।


2
প্রকৃতপক্ষে 4 টি এলোমেলো পয়েন্ট প্লেনে না থাকার সম্ভাবনা বেশি তাই আপনাকে যাইহোক ট্রাইঙ্গুলেট করতে হবে।
ChrisF

এটি কেবল সত্য যদি পয়েন্টগুলি কাকতালীয় না হয়।
notlets

1
এমনকি যদি পয়েন্টগুলি কাকতালীয় হয় তবে সেগুলি অসীম সংখ্যক প্লেনের উপর কোপলনার হয়।
ডিভে

কোপলনার হওয়ার কারণে "সবসময় একটি সমতল বিমানের সংজ্ঞা দেওয়া হয় না "
সাম হোচেভার

6

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

একটি ত্রিভুজ হল ভার্টগুলি সাজানোর এবং সমতল পৃষ্ঠের গ্যারান্টি দেওয়ার একমাত্র উপায়। আপনার যখন কোয়াড থাকে, আপনি ভার্টগুলি এমনভাবে সাজিয়ে রাখতে পারেন যাতে এটি বাঁকানো উচিত। তবে এটি ইতিমধ্যে ত্রিভুজ দ্বারা তৈরি এবং এটি সেই ত্রিভুজগুলি যা বাঁককে অনুমতি দেয়।


3

একটি ত্রিভুজ হল সহজতম আদিম যা বিচ্ছিন্নভাবে বর্ণনা করা যেতে পারে কারণ এর তিনটি পয়েন্ট রয়েছে যার চেয়ে কম 3 ডি-তে কোনও পৃষ্ঠকে বর্ণনা করে না describe

যেহেতু একটি ত্রিভুজটি বিচ্ছিন্নভাবে বিবেচনা করা যেতে পারে, তাই কোড বা সিলিকন এমন একটি টুকরো তৈরি করা সম্ভব যা কেবলমাত্র একটি একক ত্রিভুজ উপস্থাপন করতে সক্ষম, যা পুনরাবৃত্তির শক্তির মাধ্যমে যে কোনও পৃষ্ঠকে আদৌ রেন্ডার করতে পারে।

অতএব, প্রথম কম্পিউটার সিস্টেম যা "যে কোনও তলকে কোনওভাবেই" রেন্ডারিংয়ে সাফল্য পেয়েছিল স্বাভাবিকভাবেই অনেকগুলি ত্রিভুজকে স্বতন্ত্রভাবে রেন্ডার করে so

যদি কেউ ত্রিভুজ এবং কোয়াডকে "আদিম" হিসাবে বিবেচনা করে (যেমন কোনও প্রসঙ্গ ছাড়াই জ্যামিতির সম্পূর্ণ বিচ্ছিন্ন বিট) ত্রিভুজটি তত বেশি আদিম, এবং তাই এটি "জয়ের" দিকে ঝুঁকবে।

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

এই কারণেই ১৯s০ এর দশকে, সিনেমাগুলি "কোয়াড" গ্রহণ করেছিল, এটি একটি ভুল ধারণা রয়েছে কারণ এটি 3 ডি স্পেসে 2 ডি গ্রিডকে বোঝায়, বিচ্ছিন্ন চতুর্ভুজ নয় not

ইন্টারেক্টিভ বিনোদনের রাজ্যে ত্রিভুজ থেকে "কোয়াডস" এ একই পরিবর্তন এখনও ঘটেনি, তবে সম্ভবত এটি ঘটবে, খুব শীঘ্রই এবং একই কারণে চলচ্চিত্রের ব্যবসায় এটি ঘটেছে।


2

একটি ত্রিভুজ বনাম একটি এন পার্শ্বযুক্ত বহুভুজ জন্য বনাম 'এন - 2' উপায় ত্রিভুজ প্রস্তুত করার একমাত্র উপায় আছে। সুতরাং, ত্রিভুজগুলি একটি পলিহেড্রাল আকৃতি সংজ্ঞায়িত করার জন্য চূড়ান্ততম দ্বিধাহীন উপায়। এছাড়াও, যেমন অন্যান্য পোস্টারগুলি ইঙ্গিত করেছে, ত্রিভুজকে ত্বরান্বিত করার প্রচুর উপায় রয়েছে (কোয়াড বা তার চেয়ে বেশি) রাস্টারাইজেশন (ধ্রুবক জেড আমার পছন্দসই একটি)। এছাড়াও, রে-স্বেচ্ছাসেবী বহুভুজন ছেদ পরীক্ষার চেয়ে রে-ত্রিভুজ ছেদ পরীক্ষাগুলি অপ্টিমাইজ করা সহজ। প্রকৃতপক্ষে, এন-পার্শ্বযুক্ত বহুভুজগুলিতে অনেকগুলি ক্রিয়াকলাপ হস্তান্তরিত ত্রিভুজযুক্ত প্রতিনিধিত্ব লাভ করে benefit এটি এমন নয় যে এন-পার্শ্বযুক্ত বহুভুজ উপস্থাপনাগুলি 'খারাপ' - এগুলি খুব দরকারী তবে শেষ পর্যন্ত আপনি অনেকগুলি জাল ক্রিয়াকলাপগুলির জন্য ত্রিভুজগুলির সাথে কাজ করতে চাইছেন।


2

যতক্ষণ ত্রিভুজটি তিনটি নন-কোলাইনার উল্লম্ব দ্বারা সংজ্ঞায়িত করা হয় (পড়ুন: কোণগুলির কোনওটি হুবহু পাই নয়), তারপরে কোণগুলি একটি অনন্য সমতলকে সংজ্ঞায়িত করে।

একটি চতুর্ভুজ অবশ্যই চারটি উল্লম্ব দ্বারা সংজ্ঞায়িত করা হয়। এই অনুভূমিকদের পক্ষে নন-ক্যাপ্ল্যানার হওয়া পুরোপুরি সম্ভব। সেক্ষেত্রে আপনার কোয়াডটি দুটি ত্রিভুজ হবে যা কোয়াডের সাথে একটি তির্যক দ্বারা বিভক্ত। এটি দুটি প্লেন, পৃষ্ঠের নরমালগুলির দুটি সেট ইত্যাদি

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

আপনি কোয়াড দিয়ে কাজ করার জন্য অবশ্যই একটি ইঞ্জিন লিখতে পারতেন, তবে আপনি প্রায় প্রতিটি ক্ষেত্রেই সামনের অক্ষরটিকে উপেক্ষা করে দেখতে পেলেন, যখন আপনি (ঘন ঘন) চতুর্ভুজকে সংজ্ঞায়িত করে অন্য তিনটির সাথে এটি কপলনার নিশ্চিত করতে হবে except এবং, কোপলনার নয় এমন ক্ষেত্রে সবচেয়ে যুক্তিসঙ্গত সমাধান হ'ল কোয়াডকে দুটি ত্রিভুজগুলিতে ভাগ করা। সুতরাং, কেন না কেন এটি দিয়ে শুরু?

কোয়াড দিয়ে কাজ করার পৃথিবীতে কী হবে?

যদি আপনি কোয়াড চান তবে দুটি ত্রিভুজ এক সাথে রাখুন।


2

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

বাকি সমস্যাটি প্রতিনিধিত্বমূলক দক্ষতার একটি। - আপনি সহজেই 2 টি ত্রিভুজ সহ একটি চতুষ্পদ প্রতিনিধিত্ব করতে পারেন, এবং কোনও ত্রিভুজ স্ট্রিপ ব্যবহার না করে (কোনও ত্রিভুজের জন্য 3 ভার্ট, তারপর দ্বিতীয় ত্রিভুজটির জন্য একটি অতিরিক্ত প্রস্থ) ব্যবহার করুন তবে কোনও অতিরিক্ত বিনা ছাড়াই। অন্যদিকে, আপনি যদি চতুষ্কোণ দিয়ে ত্রিভুজটি চেষ্টা করে প্রতিনিধিত্ব করেন তবে আপনাকে 4 টি শীর্ষবিন্দু ব্যবহার করতে হবে এবং একটি ডিজেনরেটেড থাকা দরকার যা অন্যটির সাথে সমান। দক্ষতার দিক থেকে এটি আদর্শ নয়।

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