পদ্ধতিগত জ্যামিতি জেনারেশন


10

আমি সম্প্রতি ওএস এক্স-এর জন্য সিনকিট অনুসন্ধান করেছি এবং লক্ষ্য করেছি যে জ্যামিতিক আকার তৈরির জন্য বেশ কয়েকটি ফ্যাক্টরি পদ্ধতি রয়েছে যেমন:

বক্স, ক্যাপসুল, শঙ্কু, সিলিন্ডার, প্লেন, পিরামিড, গোলক, টরাস এবং টিউব।

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

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

আমি তত্ত্বটি বুঝতে পারি তবে পছন্দসই প্রভাব অর্জনের জন্য জ্যামিতির মুখগুলি উপ-বিভাজন শুরু করার জ্ঞানের অভাব রয়েছে।

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

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

মন্তব্যের ভিত্তিতে সম্পাদনা করুন

আমার স্পষ্ট করা উচিত ছিল যে আমি জানি যে কীভাবে বেসিক শেপগুলির জন্য শীর্ষগুলি তৈরি করতে হয়, এর বেশিরভাগটি সম্ভবত সাধারণ লুপগুলি দ্বারা অর্জন করা যেতে পারে। আমি যেটা বুঝতে পারছি না তা হ'ল উত্সের উত্পন্ন অ্যারে থেকে কীভাবে মুখ তৈরি করা যায়। আপাতদৃষ্টিতে আনুভূমিকভাবে বিন্যাসিত বিন্যাস থেকে আমি কীভাবে একটি ত্রিভুজ স্ট্রিপ বা ত্রিভুজ তৈরি করব?

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

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

চূড়ান্ত দিকটি টেক্সচার প্রয়োগ করা হবে। আবার, এটি এমন কিছু নয় যা আমি প্রয়োগ করেছি তবে তা পড়েছি এবং প্রয়োজনীয়তা সম্পর্কে সচেতন।

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


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

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

ঠিক আছে, বিশদ জন্য ধন্যবাদ। আপনি পরিষ্কার করতে আপনার প্রশ্নটি সম্পাদনা করতে চাইতে পারেন। উত্তর!
jrsala

উত্তর:


11

প্রান্তিক আকারের বাক্স, শঙ্কু এবং আপনি যে সমস্ত উদ্ধৃতি দিয়েছিলেন সেগুলি তৈরি করার উপায় হ'ল এগুলি তৈরি করা একই সাথে আপনি উল্লম্বগুলি তৈরি করেন। প্রকৃতপক্ষে, আপনার লজিকাল উপায়ে এমন শীর্ষগুলি তৈরি করা উচিত যা প্রান্তগুলি এবং মুখগুলি অনুসারে গণনা করা সহজ করে।

অ্যালগরিদম রয়েছে যেগুলি স্থানের মধ্যে পয়েন্টগুলির একটি সেট ইনপুট হিসাবে গ্রহণ করে এবং এটির উপরে তথাকথিত " পয়েন্ট সেট ত্রিভুজ্যয়ন " গণনা করে তবে পয়েন্ট সেট ত্রিভুজির সমস্যা এনপি-সম্পূর্ণ , যাতে প্রান্তগুলি এবং মুখগুলি তৈরি করা দ্রুত হয় আপনি যেমন কেবল শিখুন গণনা করুন এবং একটি অ্যালগরিদম কাজ করতে দিন। কেবল আপনাকে জানাতে এই সমাধানটি বিদ্যমান।

এই অদক্ষ সমাধান ব্যতীত, আমি মনে করি আপনি কেবল প্রতি-কেস ভিত্তিতে আদিমদের সাথে চিকিত্সা করতে পারেন, যেমন অনুসরণ করা উদাহরণগুলির মতো।

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

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

শঙ্কু

এন + ২ টি শীর্ষ, 3n প্রান্ত এবং 2n মুখযুক্ত শঙ্কুটির জন্য :

  1. দুটি পৃথক শীর্ষ কোণ তৈরি করুন।
  2. প্রথম দুটি শীর্ষে অবস্থিত বিভাজনের মধ্যবর্তী স্তরের একটি উলম্ব অংশের মধ্যে অবস্থিত, একটি শীর্ষ কোণের (বেস ভার্টেক্স) চারপাশে একটি বৃত্ত তৈরি করুন। আশা করি আপনি ট্রিগনোমেট্রি ব্যবহার করে একটি বৃত্ত তৈরি করতে পারবেন, তাই না? এটি ইতিমধ্যে শঙ্কুটির উল্লম্ব সমস্ত। এটি সমস্ত প্রান্তের এক তৃতীয়াংশও রয়েছে ( বৃত্তে n প্রান্ত রয়েছে এবং মোট 3n রয়েছে)।
  3. করুন এন বেস প্রান্তবিন্দু থেকে প্রান্ত এন বৃত্তে ছেদচিহ্ন। আপনি এটির মতো অর্ধেক মুখগুলি তৈরি করতে পারেন (এটি n মুখগুলি)।
  4. টিপটি শীর্ষে থেকে বৃত্তের n শীর্ষে অবস্থিত এন প্রান্তগুলি তৈরি করুন । আপনি এটির মতো অন্যান্য অর্ধেক মুখগুলি তৈরি করতে পারেন (এটি n মুখগুলি)।

1) দুটি শীর্ষ 2) এবং একটি বৃত্ত
3) এবং মুখ
4) এবং মুখ
শেষ ফলাফল:ফলাফল

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

সিলিন্ডার এবং টিউব: দু'বার একই কাজ করছেন না এবং কোয়াড

আবার, টিউবটির জন্য এটি একটি শীর্ষবিন্দু এবং একটি বৃত্ত দিয়ে শুরু হয় যা সিলিন্ডারের শীর্ষ বা নীচের ডিস্কের কেন্দ্র হবে:

  1. একটি শীর্ষবিন্দু তৈরি করুন।
  2. শীর্ষবিন্দুর চারদিকে একটি বৃত্ত তৈরি করুন। বৃত্তের ক্রমাগত শীর্ষে এবং কেন্দ্রের শীর্ষবিন্দু এবং প্রতিটি বৃত্তের শীর্ষাংশের মধ্যে প্রান্তগুলি যুক্ত করুন (যদি আপনি প্রান্তগুলি চান)। কেন্দ্রের শীর্ষবিন্দু দিয়ে তৈরি প্রতিটি শীর্ষে এবং বৃত্তে দুটি ধারাবাহিক শীর্ষে অবস্থিত faces
  3. এগুলি সদৃশ করুন, সুনির্দিষ্ট সিলিন্ডারের দৈর্ঘ্য অনুসারে আপনি সুনির্দিষ্ট ঘাঁটিটির উপর ভিত্তি করে লম্বালম্বী করে অনুলিপিটি অনুবাদ করুন।
  4. উপরে এবং নীচে লিঙ্ক করুন।

শীর্ষ এবং নীচে লিঙ্ক করার জন্য, আপনাকে অবশ্যই একে অপরের সম্মুখের মুখোমুখি জোড় জোড়া জোড়ের মধ্যে কোয়াড তৈরি করতে হবে। সুতরাং সামনে চিন্তা করুন এবং কেন নিজেকে চার্জ বিভাজক দুটি ত্রিভুজাকার মুখ করে এমন একটি ফাংশন না?

সম্পন্ন. লক্ষ্য করুন যে এবার আমরা একই স্ট্রাকচারটি (বৃত্ত + কেন্দ্র) শর্টকাট নিতে একটি সিলিন্ডারে দু'বার প্রদর্শিত হয় তা ব্যবহার করি। শঙ্কু যেখানে এটি প্রয়োজনীয় ছিল তার বিপরীতে আমাদের হাতে সমস্ত শীর্ষে, প্রান্ত এবং মুখগুলি তৈরি করতে হবে না ।

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

আপনার তৈরি করা সরলকরণের জন্য আপনার তৈরি বস্তুর জ্যামিতিক বৈশিষ্ট্যগুলি সর্বদা ব্যবহার করতে হবে । যথা, তাদের প্রতিসাম্য এবং আক্রমণকারী

একটি সিলিন্ডারের জন্য, কেবল ভিত্তি শীর্ষটি তৈরি করবেন না, কেবল বৃত্ত তৈরি করুন, সদৃশ করুন, অনুলিপিটি অনুবাদ করুন, কোয়াড তৈরি করুন, সম্পন্ন করুন।

গোলক এবং ক্যাপসুল: জটিলতা যুক্ত করা, এখনও একই কাজ দু'বার নয়

ক্যাপসুল তৈরি করতে, আমরা একটি ইউভি গোলক তৈরি করতে চাই, এটি দুটি অংশে বিভক্ত করতে পারি, প্রথমার্ধটি অনুবাদ করি এবং তারপরে দুটিটিকে ক্যাপসুলের পাশ দিয়ে সংযুক্ত করি।

আবার গোলকের কেবলমাত্র একটি অষ্টম (!!) তৈরি করা সম্ভব, তারপরে এটি সদৃশ করুন এবং এটিকে বিপরীত করুন, এবং তারপরে 4 টি ধাপে একটি পূর্ণ গোলক পাওয়ার জন্য ডুপ্লিকেট করুন এবং ফলাফলটিকে অন্য বিপরীতে বাদ দিয়ে বিপরীত করুন (অষ্টম তৈরি করুন) , সদৃশ এবং তিনবার বিপরীত)। ওভারকিল হতে পারে, তবে বৃত্তের ক্ষেত্রে এর চেয়ে কম।

একটি সাধারণ UV গোলক:
গোলক

আমরা আসলে এর অর্ধেক অংশ তৈরি করি (উদাহরণস্বরূপ), সেই অর্ধেকটিকে নকল করুন, অনুলিপিটি উল্টো দিকে ঘুরিয়ে ক্যাপসুলের দৈর্ঘ্য দ্বারা অনুবাদ করুন:
অর্ধেক

আমরা উপরের এবং নীচের অর্ধেক লিঙ্ক:
ক্যাপসুল

আসল (কিছুটা) কঠোর পরিশ্রম সেই ত্রিকোণমিতি থেকে আসে যা একটি গোলক তৈরি করে। কোনও UV গোলকের অন্তর্ভুক্ত সমস্ত উল্লম্বের সেটটি ফর্মের সমস্ত পয়েন্টের সেট হিসাবে বর্ণনা করা যেতে পারে:

পয়েন্ট

যেখানে আর গোলকের ব্যাসার্ধ এবং নির্দিষ্ট ধনাত্মক এমনকি পূর্ণসংখ্যক এন এর জন্য আমাদের ধ্রুবক থাকে

θ = × π / এন ,

এবং এন সঙ্গে পূর্ণসংখ্যা থেকে নানারকম 0 থেকে 2n-1 এবং এন থেকে নানারকম -n / 2 থেকে Ctrl + N / 2

একটি গোলকের অর্ধ-গোলক বা একটি Eigth করতে, আপনাকে কে এবং এন দ্বারা নেওয়া মানগুলির সেটকে সীমাবদ্ধ করতে হবে ।

যদি কে সত্যিকারের সংখ্যা হয় এবং কেবল পূর্ণসংখ্যার সংখ্যা না হয় তবে আপনি কেবল একটি পুরো গোলক পাবেন, কেবল তার পৃষ্ঠের শীর্ষাংশগুলিই নয়। সুতরাং আমরা এখানে যা করেছি তা হ'ল আদিম পৃষ্ঠের সমীকরণকে ছড়িয়ে দেওয়া

ভয়ঙ্কর টরাস : এটি আমরা যা দেখেছি তার পরেও সহজ!

আবার আরও ত্রিকোণমিতি, আরও শীর্ষ, আরও কোয়াড, আরও প্রতিসামগ্রী, আরও আক্রমণাত্মক ... আরও জ্যামিতি! টর্সের পৃষ্ঠের সমীকরণটি সন্ধান করুন, "এটিকে রাস্টারাইজ করুন" সঠিকভাবে, টরাসের (স্পষ্ট) প্রতিসাম্য ব্যবহার করে সমস্যাটিকে সহজ করুন এবং শেষ পর্যন্ত, আপনি যে সংশ্লেষটির সুনির্দিষ্ট সংজ্ঞায়িত করেছেন সেটির মধ্য দিয়ে লুপ করুন এবং প্রান্তগুলি এবং মুখগুলি আপনার হিসাবে তৈরি করুন যাওয়া!

দেখা? সম্পূর্ণ সোজা।


কি দারুন. যেমন একটি বিস্তারিত প্রতিক্রিয়া এবং অনেক উদাহরণের জন্য দয়া করে ধন্যবাদ। আমি কেবল গোলকের অর্ধেক উত্পাদন এবং প্রতিসম উপাদানগুলিকে আয়না দেওয়ার বিষয়টি বিবেচনা করি নি। আমি সহজেই বুঝতে পারি এবং আশা করি সহজেই অনুশীলন করতে পারি এমনভাবে এটি লেখার জন্য সময় দেওয়ার জন্য অনেক ধন্যবাদ।
ক্যাপ্টেনরেডমফ 23'13

আপনাকে স্বাগতম! আমি দুঃখিত আমি যদিও এখানে কোন কোড ছিল।
jrsala

পদ্ধতির রূপরেখা আমার যা প্রয়োজন তা আরও ছিল। আমি সেখান থেকে কমপক্ষে কোনও কর্ম পরিকল্পনা নিয়ে কাজ শুরু করতে পারি:] আমি মনে করি না যে আপনার কাছে চ্যাম্পার্ড প্রান্তযুক্ত বাক্স / কিউবে কোনও তথ্য আছে? docs.autodesk.com/3DSMAX/15/ENU/3ds-Max-Help/images/…
ক্যাপ্টেনরেডমফ

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