ক্যানোনিকাল ভিউ ভলিউমের উদ্দেশ্য কী?


15

আমি বর্তমানে ওপেনজিএল শিখছি এবং এই প্রশ্নের উত্তর খুঁজে পাচ্ছি না।

প্রজেকশন ম্যাট্রিক্সটি ভিউ স্পেসে প্রয়োগ করার পরে দেখার স্থানটি "নরমালাইজড" করা হয় যাতে সমস্ত পয়েন্ট [-1, 1] এর মধ্যে থাকে। এটিকে সাধারণত "ক্যানোনিকাল ভিউ ভলিউম" বা "নর্মালাইজড ডিভাইস স্থানাঙ্ক" হিসাবে উল্লেখ করা হয়।

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

এই পদক্ষেপের উদ্দেশ্য কী?

উত্তর:


7

সর্বাধিক গুরুত্বপূর্ণ এটি আপনার পয়েন্টগুলি (শীর্ষগুলি) 3 ডি ওয়ার্ল্ড স্পেস থেকে 2 ডি স্ক্রিন স্পেসে রূপান্তর করে।

এর অর্থ হ'ল এই ম্যাট্রিক্স এক্স এবং ওয়াই কোর্ডার সাথে ভার্টেক্সটি গুণিত হওয়ার পরে পর্দায় অবস্থান রয়েছে ([-1, 1] এর মধ্যে) এবং জেডটি গভীরতা। জেড গভীরতা-বাফার জন্য ব্যবহৃত হয় এবং বিমানের কাছাকাছি থাকা আপনার ক্যামেরা থেকে ভার্টেক্স (বা খণ্ড) কত দূরে রয়েছে তা সনাক্ত করে।

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

পিক্সেল দিক অনুপাতও রাখে, তাই পিক্সেল স্কোয়ার হতে পারে। এটা সহজ। এটি কেবল ক্যামেরার হতাশার মতো করে তোলে: আরও প্রশস্ত স্ক্রিন -> আরও উল্লম্ব শিয়ার এবং তদ্বিপরীত।

সহজ উত্তর:
এটি আপনার ক্যামেরা হতাশাকে সংজ্ঞায়িত করে এবং এটি ভাল:

  • আপনার কাছাকাছি থাকা বস্তুগুলি আপনার থেকে দূরে থাকা বস্তুর চেয়ে আরও বড় দেখায়।
  • পিক্সেল দিক অনুপাত রাখুন - প্রত্যেকে স্কোয়ার পিক্সেলটি পছন্দ করে? :)

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

অভিক্ষেপ ম্যাট্রিক্স ক্যামেরা frustum সংজ্ঞায়িত করে। তবে এটি [-1,1] থাকার ব্যয়টিকে খাঁটি দেখার পরিমাণ হিসাবে ব্যাখ্যা করে না। পরিবর্তে [-100,100] নেই কেন?
বোবোবোবো

1
কারণ 1 হ'ল 100 এর চেয়ে "বেশি সাধারণ সংখ্যা": ডি (0 আরও সাধারণ, তবে কিউব 0x0x0 খুব আকর্ষণীয় নয় ...)
ইভান ককির

5

এই উত্তরটি সত্যের অনেক পরে, তবে যেহেতু আমি গুগলে এটি পেয়েছি সম্ভবত এটি এখনও কাউকে সহায়তা করবে। আমি কেবল জেসনডি এবং নোটাবিন যা বলছিলাম তা স্পষ্ট করে বলতে চাই: ক্লিপিংয়ের গণনা করা অনেক সহজ (আপনি কী দেখবেন এবং কোনটি আপনাকে দেখতে হবে না কারণ আপনি কীভাবে দেখছেন, এটি কতটা দূরে, ect) ।)। জিনিসগুলি আপনার ভিউ হতাশার সীমানায় প্লেনগুলি ছেদ করে কিনা তা পরীক্ষা করে দেখার পরিবর্তে আপনি কেবলমাত্র x, y, z এর সাথে xMax, xMin, yMax, ect এর সাথে তুলনা করুন। , যেহেতু আপনার কাছে কেবল ঘনক্ষেত্র রয়েছে। আপনি যদি কিছু দেখানোর অংশীদারি রাখতে চান তবে এটি কিছুটা জটিল but

অন্যান্য উত্তরে আমি দু'টি জিনিস বিভ্রান্তিকর দেখতে পেয়েছি:

- আপনি হতাশার দিকের দিকগুলি সরিয়ে দিচ্ছেন না, আপনি একজাতীয় ম্যাট্রিক্স ট্রান্সফর্মেশনগুলি ব্যবহার করে এটি একটি ঘনক্ষেত্রের দিকে সাজিয়ে তোলেন।

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

আরও বিশদ: এটি যে ইউনিট ঘনককে রূপান্তর করা হচ্ছে তা অগত্যা নয়, আমাদের সর্বোচ্চ-মিনিটের গণনাগুলি কার্যকর করার জন্য এটি একটি আয়তক্ষেত্রাকার বাক্স হতে হবে। প্রকৃতপক্ষে ক্লাসে আমরা এমন একটি বাক্স ব্যবহার করতাম যেখানে ক্যামেরাটি z-axis এর নীচে থাকে, z 0 থেকে 1, x 0-1 থেকে 1 এবং y -1 থেকে 1 তে যায় general সাধারণভাবে গণিত 1, 0, এবং -1 হ'ল গণনা সহজ করার জন্য ভাল সংখ্যা, আমি ধরে নিই যে আমরা -100 থেকে 100 বা কিছুতে যাই না।

টিএলডিআর: এটি ক্লিপিংকে আরও সহজ করে তোলে।

সম্পাদনা: বোবোবোবো এর সংক্ষেপে আছে। সমস্ত কিছুই ত্রিভুজ, সাধারণত: ডি।

সূত্র: বিশ্ববিদ্যালয়ের গ্রাফিক্সের ক্লাস নেওয়া


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

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


1

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


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

এটির দিক অনুপাতটি জানা দরকার নেই? আমি যা বুঝি তা থেকে এটি এক্স এবং ওয়াইয়ের জন্য স্কেলিংয়ের কারণগুলি সংরক্ষণ করে যাতে চিত্রটির পরে সঠিক দিক অনুপাত থাকে।
ব্রেডজিস

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

3
আমাকে বলতে হবে যে আমি সত্যই এই কথোপকথনটি উপভোগ করি। আপনি ঠিক হতে কাছাকাছি। আরও গভীরে যেতে দেয়। প্রোজম্যাট দ্বারা মাল্টিপ্লাফিকেশন শীর্ষে কোনও চিত্র নেই। ফলাফলটি গভীরতার সাথে সবেমাত্র 2 ডি পয়েন্টের সাথে সেট করা আছে। রাস্তায়িতকরণ শুরু হওয়ার চেয়ে এটি চিত্র তৈরি করে। (যদি সিপিইউতে এটি ত্রিভুজ ভার্টের মধ্যে লাইন আঁকত এবং এটি পূরণ করে (এবং এটি যাই হোক না কেন শেড করুন ... জিপিইউতে এটি পিক্সেল / টুকরা শেডারের ঠিক আগে সঞ্চালিত হয়))। এবং অ্যাসপেক্ট রেশিও পয়েন্টগুলি রাখে যা 1-এর চেয়ে বড় বা -1 এর চেয়ে ছোট মানগুলিতে "স্কেলড" হওয়া উচিত এবং সেগুলি প্রদর্শিত হবে না।
নোটবেইন

2
আহা! আমি এখানে সমস্যাটি দেখতে পাচ্ছি। তিনি বলেছিলেন "এটিকে সাধারণত" ক্যানোনিকাল ভিউ ভলিউম "বা" নরমালাইজড ডিভাইস কোঅর্ডিনেটস "হিসাবে উল্লেখ করা হয়।" আমি উত্তর দিচ্ছিলাম যেন সে সাধারণ ডিভাইস স্থানাঙ্ক সম্পর্কে জিজ্ঞাসা করছে, তবে তিনি আসলে সেগুলি সম্পর্কে মোটেই জিজ্ঞাসা করছেন না। এগুলি আসলে দুটি সম্পূর্ণ ভিন্ন জিনিস এবং সে কারণেই আমরা এখানে মতবিরোধে রয়েছি। সম্ভবত এটি পরিষ্কার করা উচিত যাতে লোকেরা আমার মতো ভুল করে না।
চিউই গম্বল

1

আমি লক্ষ করেছি যে একটি উত্তর ইতিমধ্যে গ্রহণ করা হয়েছে, তবে ভিউ হতাশাকে ইউনিট কিউবে রূপান্তরিত করতে ক্লিপিংয়ের জন্য এটি সাধারণত কার্যকর।


সত্য, আমি এ সম্পর্কে আরও পরিষ্কার হওয়ার জন্য আমার উত্তরটি সামান্য সম্পাদনা করেছি।
নোটবেইন

উপায় দ্বারা একটি ইউনিট ঘনক্ষেত্র 1 পাশের ঘনক্ষেত্র তাই নামটি অনুপযুক্ত। পরিবর্তে এটিকে ক্যানোনিকাল দেখার ভলিউম বলা উচিত।
ব্যবহারকারী 18490

1

আমি এটা ভাবছি। কয়েকটি বিষয় বিবেচনা করতে হবে।

প্রথম, হ্যাঁ, পৃথিবীর সমস্ত কিছুই সেই ইউনিট কিউবে রূপান্তরিত হয় [-1,1] উত্সকে কেন্দ্র করে। কিছু যদি সেই ইউনিট কিউবে না থাকে তবে এটি প্রদর্শিত হবে না।

এটি সম্পর্কে দুর্দান্ত জিনিসটি এখন আপনি খুব সহজেই ত্রিভুজগুলি মুছতে পারেন। (যদি ত্রিভুজের সমস্ত 3 টি উল্লম্ব থাকে x > 1বা x < -1তারপরে সেই ত্রিভুজটি শেষ করা যায়)।


0

আমি স্ক্র্যাচাপিক্সেল এ প্রেক্ষিত প্রোটেকশন ম্যাট্রিক্সের পাঠটি পরীক্ষা করার পরামর্শ দেব

http://www.scratchapixel.com/lessons/3d-basic-rendering/perspective-and-orthographic-projection-matrix/build-basic-perspective-projection-matrix

এটি পরিষ্কারভাবে ব্যাখ্যা করেছে যে কেন একটি ইউনিট কিউবে ভিউ হতাশার স্থানকে ছেঁকে ফেলা হবে। কেন? মূলত কারণ ক্যানভাসে 3 ডি পয়েন্টগুলি প্রজেক্ট করার প্রক্রিয়াটি তাদের এনডিসি স্পেসে রূপান্তর করার জন্য জড়িত যা এটি এমন একটি স্থান যা স্ক্রিনের পয়েন্টগুলিকে [-1,1] পরিসীমাতে পুনরায় সরিয়ে দেওয়া হয় (স্ক্রিনটি বর্গক্ষেত্র ধরে ধরে)। এখন আমরা [0,1] (বা কখনও কখনও [-1,1]) পরিসরের জেড-কোঅর্ডিনেট পয়েন্টটি পুনরায় তৈরি করি সুতরাং শেষ পর্যন্ত আপনি কিউব দিয়ে শেষ করেন। আসল বিষয়টি হ'ল পয়েন্টগুলি যখন কোন কিউবে থাকে তখন যখন তাদের ভিউ হতাশায় সংজ্ঞায়িত করা হয় তখন এটি প্রক্রিয়া করা আরও সহজ (যা একটি অদ্ভুত স্থান, একটি কাটা পিরামিড)। আর একটি কারণ হ'ল এটি বিভিন্ন ধরণের প্রজেক্টিভ ট্রান্সফর্মেশন আনতে পারে যা আপনি সিজি-তে একই জায়গাতে কল্পনা করতে পারেন (ইউনিট কিউব ট্যাটি)। সুতরাং আপনি উদাহরণস্বরূপ কোনও দৃষ্টিকোণ বা অর্থোগ্রাফিক প্রজেকশন ব্যবহার করেন তা নির্বিশেষে,

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

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