3 ডি অবজেক্টের ট্রান্সফর্মগুলি পরিচালনা করার জন্য অনুবাদ, স্কেল, রোটেশন গিজমোস কীভাবে প্রয়োগ করবেন?


11

আমি একটি বেসিক 3 ডি সম্পাদক বিকাশ প্রক্রিয়াধীন। এটি একটি 3 ডি ওয়ার্ল্ড রেন্ডারিংয়ের জন্য ওপেনজিএল ব্যবহার করে। এই মুহুর্তে আমার দৃশ্যটি বিভিন্ন মাপের কয়েকটি কয়েকটি বাক্স এবং আমি এমন পর্যায়ে আছি যেখানে আমি প্রতিটি বাক্স নির্বাচন করতে সক্ষম হতে চাই এবং তারপরে যেকোন রূপান্তর অর্জনের জন্য এটি সরানো / স্কেল / আবর্তন করতে চাই।

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

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


1
সাধারণত আপনি মাউসের অবস্থানের সাথে বিশ্বে র‌্যাস্ট কাস্ট করে দেখবেন যে আপনি কোনও গিজমোতে আঘাত করেছেন কিনা। আপনি গিজমোটিকে স্ক্রিন স্পেস ডু সংঘর্ষ সনাক্তকরণে রূপান্তর করতে পারেন। সাধারণত আপনি কেবল রে থেকে লাইনের অংশের ধরণের জিনিস করেন distance আবর্তন সাধারণত ভার্চুয়াল ট্র্যাক বল হিসাবে করা হয়। গেম প্রোগ্রামিং রত্নগুলিতে মেলাক্স দেখুন 1.. অনুবাদটি বেশ ডট পণ্য এবং এটি স্কেলও is
রেন্ডিগল

উত্তর:


9

ই-অনে আমার সময়ে এক পর্যায়ে আমি ভ্যু প্রোডাক্ট লাইনের গিজমগুলি বজায় রেখেছি ।
আমি আপনাকে বলতে পারি, এটি আপনাকে একাধিক দিন, পুরো সময় নেবে।
আপনি যদি কোনও লাইব্রেরি বা অতি চতুর উপায় না পান তবে ক্লাসিক উপায়টি হ'ল উইন্ডোতে মাউসের সমন্বয় পেতে যখন আপনি ক্লিক করেন, যদি ভিউপোর্টের সাথে এটি সম্পর্কিত কোনও স্থানাঙ্ক হয়, আপনি কেবল এক্স এবং y প্রস্থ এবং উচ্চতা দ্বারা বিভক্ত করতে পারেন, আপনি [0,1] পরিসীমাতে একটি ভেক্টর (ফ্লোট 2 ডি) পান। এক্স এবং y উভয়ের জন্য [-0.5, 0.5] বিস্তারে যাওয়ার জন্য এটিতে বিয়োগ করুন (0.5,0.5)।
তারপরে, আপনি x এবং y কে কেবল রে এবং x হিসাবে ব্যবহার করে এই স্থানাঙ্ক থেকে একটি রশ্মি তৈরি করেন এবং আপনি z কে কেন্দ্রিক দূরত্বে সেট করেছেন। কখনও কখনও দিক অনুপাত এই অপারেশন মধ্যে গাধা একটি ব্যথা হয়। কিছুটা মলিনতা এবং পরীক্ষার ত্রুটি আপনাকে স্থির করে তুলবে।
তারপরে, আপনাকে আপনার গিজমোস উপাদানগুলির সাথে ছেদটি পরীক্ষা করতে হবে, হয় আপনি জাল তৈরি করেছেন যা ব্লেন্ডার বা অন্যান্য ডিসিসি তৈরি করেছেন, বা জাল অংশ যা একে অপরের মধ্যে স্পষ্ট করে বলতে পারে ... কেবল সেই জাল অংশটি একটি রশ্মি হিসাবে ব্যবহার করুন / ত্রিভুজ ছেদ কোয়েরি।
বা আপনার যদি এটি থাকে তবে রে / সিলিন্ডার, রে / গোলক আপনার গিজমোর চেহারা এবং অংশগুলি অনুযায়ী /
আপনার আন্তঃসংযোগের রুটিনগুলি থাকতে হবে যা তারা সংঘর্ষে আদিমকে ট্রান্সফর্মেশন ম্যাট্রিক্স প্রয়োগ করতে সক্ষম । অত্যন্ত গুরুত্বপূর্ণ কারণ আপনার গিজমোটি যে পদক্ষেপে এটি স্থানান্তরিত করে তার সাথে অনুবাদ করবে, এটি ঘোরবে এবং এটি ক্যামেরায় দূরত্বের বিপরীতটি দিয়ে স্কেল করবে, যাতে এটি স্ক্রিনে একটি নির্দিষ্ট প্রজেক্টযুক্ত আকার রাখে।
তারপরে আপনার ইন্টারঅ্যাকশন অংশটি রয়েছে, সবচেয়ে সহজ হ'ল পয়েন্টটির ডেল্টাটি যখন মাউসটি প্রথম "মাউস ডাউন" ইভেন্টে ছিল এবং বর্তমান "মাউস মুভ" পজিশনটি খাঁটি 2 ডি-তে রয়েছে এবং এই ব-দ্বীপটিকে বর্তমান অক্ষ অক্ষর হিসাবে ব্যবহার করবে বিশ্বজগতে, kআপনি অভিজ্ঞতার সাথে সিদ্ধান্ত নিয়ে এমন কিছু দ্বারা গুণিত । আপনার অভ্যন্তরীণ ইউনিটগুলি বনাম পিক্সেল বনাম জুমের বর্তমান স্কেলের বিপরীতে
The চূড়ান্ত পদক্ষেপটি হ'ল ম্যানিপুলেটেড অবজেক্টে গিজমোর ম্যাট্রিক্স প্রয়োগ করা যাতে এটি অনুসরণ করে।

আমি আপনাকে বলছি এটি বাস্তবায়নের জন্য জাহান্নামের বেশ যাত্রা, এবং যদি আপনি আপনার ফ্রি সময়টিতে এটি এক সপ্তাহেরও বেশি সময় ধরে রাখেন। আপনি ক্ষেত্রটি পুরোপুরি আবিষ্কার করলে একাধিক সপ্তাহ। যদি আপনার সপ্তাহের শেষগুলি অন্যান্য ক্রিয়াকলাপে ব্যস্ত থাকে তবে এক মাসেরও বেশি :)

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


1
উত্তর দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ। এটা আসলে সহায়ক। আমি জানতাম যখন আমি স্পষ্টত সহজ কাজটি দেখে অভিভূত বোধ করি তখন আমি পাগল নই। আমি এর অসুবিধাকে কম মূল্যায়ন করি এবং কয়েকদিন ধরে একই সমস্যার জন্য আটকে থাকি Next ধন্যবাদ
গ্রিমশো

0

ম্যানিপুলেটর-অনুবাদকের জন্য আমি অনুসরণ করুন অ্যালগরিদম:

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

এই পদ্ধতিটি আমরা 3 অক্ষের জন্য করি, সুতরাং আমরা সমস্ত অক্ষের দূরত্ব খুঁজে পাই। সর্বনিম্ন দূরত্বটি সন্ধান করুন। সুতরাং আমরা খুঁজে পেলাম যে অক্ষটি দিয়ে মাউস ছেদ করছে।

2) যখন মাউস সরানো। আমরা জানি কী অক্ষ দ্বারা বস্তুটি চলাচল করে (1 থেকে)। আমরা বিমানের সাথে রশ্মির বিশ্ব স্থান ছেদটি পাই (যেমনটি 1)। অতিরিক্তভাবে আমরা রেখার ছেদ বিন্দুটি প্রজেক্টটি অবজেক্টটির সাথে সরানো করি। চূড়ান্ত ম্যানিপুলেটর অবস্থান = ছেদ + ডেল্টা।

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