বক্ররে স্ট্রোক প্রয়োগ করার সময় কীভাবে স্ব-ছেদ এড়ানো যায়?


11

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

ওয়্যারফ্রেম: http://twitpic.com/2zplw1/full
পূরণ: http://twitpic.com/2zpmnt/full

যেমন আপনি দেখতে পাচ্ছেন, দ্বিতীয় বাঁকের উপরের অংশটি নিজেরকে ছেদ করে, যা কুৎসিত শিল্পীকরণের কারণ হয়। সেই স্ব-ছেদটি সৃষ্টি না করে কোনও স্ট্রোক রেখাচিত্রের জন্য কি কোনও ভাল অ্যালগরিদম / পদ্ধতি আছে?

সম্পাদনা : আরও চরম উদাহরণ, এবং আমি কী অর্জন করতে চাই তার একটি উপহাস:

ওয়্যারফ্রেম: http://twitpic.com/2ztwzi/ful
পূরণ: http://twitpic.com/2ztwkt/f
আদর্শ আদর্শ ফলাফল (মক আপ): http://twitpic.com/2ztxa8/full


বাহ, আমি শিরোনামটি লেখার সময় এর অর্থটি বুঝতে পারি নি। :)
ThatsGobbles

উত্তর:


3

আপনি যদি এটিকে জিপিইউ এবং যে কোনও আধুনিক 3 ডি এপিআই (যেমন। ওপেনজিএল / ডি 3 ডি) দিয়ে রেন্ডার করছেন তবে আমার কাছে দেখে মনে হচ্ছে আপনি গভীরতা পরীক্ষার মাধ্যমে এ থেকে মুক্তি পেতে পারেন। যদি আপনি আপনার বাইরের ভার্টগুলি z = FAR হিসাবে এবং আপনার অভ্যন্তরের ভার্টগুলি z = কাছাকাছি হিসাবে নির্ধারণ করেন তবে গভীরতা পরীক্ষার মাধ্যমে ওভারল্যাপটি প্রদর্শন হতে বাধা দেওয়া উচিত। ওপেনজিএল সহ:


  // don't forget to clear depth buffer to 1.0f at beginning of frame.
  glClearDepth(1.0f);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  // enable depth testing.
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);

// draw the Spline2D for each segment in spline for each vert in segment if (vert is an outer vert), set vert.z = 1.0, otherwise set vert.z=0.0

ক্যাভেট এমম্পর: আপনার যদি ট্রান্সলুসেন্ট স্ট্রোক প্রয়োজন হয় তবে এটি কাজ করবে না।


1
দুর্দান্ত উত্তর, ঠিক আমি যা ভাবছিলাম তা তবে, আপনি যদি একটি পাসে জবফারটি লেখার অনুমতি দেন, তবে দ্বিতীয়টিতে রঙ করার অনুমতি দিলে আপনি এটি ট্রান্সলুসেন্ট স্ট্রোকের জন্য কাজ না করা সম্পর্কে ভুল wrong
রিচার্ড ফ্যাবিয়ান

ধন্যবাদ, আমার স্ট্রোকগুলি সত্যই অস্বচ্ছ, সুতরাং এটি খুব সহজ এবং আশ্চর্যজনকভাবে কাজ করেছে!
ThatsGobbles

1

"ফিক্স" আপনি ফলাফল ফলাফলের মতো দেখতে চান তার উপর নির্ভর করতে চলেছে। সমস্যাটি এখানে যথেষ্ট পরিমাণে সংজ্ঞায়িত হয়নি: এর মতো দেখতে কী বোঝায়?

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

আপনি কি এটি ভাঁজ করতে চান? প্রান্ত দিয়ে ওভারল্যাপ? এটি ওভারল্যাপ না হওয়া পর্যন্ত টানুন?


ভাল কথা, আমি আজকের পরে একটি তীক্ষ্ণ বাঁকানো বক্ররেখা এবং ইলাস্ট্রেটর বা ইনস্কেপে একটি "আদর্শ" বক্ররেখা করব ip
ThatsGobbles

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