3D ভিউয়ার: 4 টি ধাপ
3D ভিউয়ার: 4 টি ধাপ
Anonim
3D ভিউয়ার
3D ভিউয়ার

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

ধাপ 1: তত্ত্ব

তত্ত্বটি
তত্ত্বটি

এই 3 ডি ভিউয়ারের তত্ত্ব বোঝার জন্য, আপনি আপনার পারিপার্শ্বিক অবস্থা যেভাবে দেখেন তা সহজেই পরীক্ষা করে দেখতে পারেন (এটি আলোর একমাত্র উল্লেখযোগ্য উৎস হতে সাহায্য করে)। লক্ষ্য করুন:

  1. আপনার থেকে অনেক দূরে থাকা বস্তু আপনার দৃষ্টি ক্ষেত্রের একটি ছোট অংশ গ্রহণ করে।
  2. যেসব বস্তু আলোর উৎস থেকে অনেক দূরে থাকে তারা গা dark় রঙের হয়।
  3. যেহেতু পৃষ্ঠগুলি আলোর উত্সের সমান্তরাল (কম লম্ব) হয়ে যায়, সেগুলি গা dark় রঙে প্রদর্শিত হয়।

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

লাইনগুলি প্রোগ্রামের দৃষ্টিভঙ্গির মৌলিক একক, এবং সেগুলি প্রতিটি ডিসপ্লেতে একটি পিক্সেলের সাথে ম্যাপ করা হয়। যখন একটি রেখা কোন বস্তুকে ছেদ করে, তখন তার সংশ্লিষ্ট পিক্সেলটি আলোর উৎস থেকে তার দূরত্ব এবং আলোর উৎস থেকে এর কোণের উপর ভিত্তি করে রঙিন হয়।

ধাপ 2: বাস্তবায়ন তত্ত্ব

বাস্তবায়ন তত্ত্ব
বাস্তবায়ন তত্ত্ব

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

প্রোগ্রামটি গোলকীয় স্থানাঙ্ক ব্যবহার করে, যার উৎপত্তিস্থলের দৃষ্টিভঙ্গির কেন্দ্রবিন্দু রয়েছে। এটি লাইনগুলিকে সহজেই উৎপন্ন করতে সক্ষম করে (প্রতিটি একটি অনন্য থিটা: অনুভূমিক কোণ এবং phi: উল্লম্ব কোণ), এবং গণনার ভিত্তি প্রদান করে। একই থিটাযুক্ত লাইনগুলি একই সারিতে পিক্সেলগুলিতে ম্যাপ করা হয়। পিক্সেলের প্রতিটি সারিতে সংশ্লিষ্ট কোণের ফিস বৃদ্ধি পায়।

গণিতকে সহজ করার জন্য, 3D মানচিত্রটি একটি সাধারণ পরিবর্তনশীল (সাধারণ x, y, অথবা z) সহ প্লেন দ্বারা গঠিত, অন্য দুটি অ-সাধারণ ভেরিয়েবল একটি পরিসরের মধ্যে সীমাবদ্ধ, প্রতিটি সমতলের সংজ্ঞা সম্পন্ন করে।

মাউস দিয়ে ঘুরে দেখার জন্য, গোলাকার এবং xyz কোঅর্ডিনেট সিস্টেমের মধ্যে রূপান্তরের সময় একটি উল্লম্ব এবং অনুভূমিক ঘূর্ণনে প্রোগ্রামের সমীকরণ ফ্যাক্টর। এটি দৃষ্টি রেখার "স্পাইক বল" সেটের উপর একটি ঘূর্ণনকে পূর্বাভাসের প্রভাব ফেলে।

ধাপ 3: গণিত

নিম্নোক্ত সমীকরণগুলি প্রোগ্রামটিকে কোন বস্তুকে ছেদ করে এবং প্রতিটি ছেদ সম্পর্কে তথ্য নির্ধারণ করতে সক্ষম করে। আমি এই সমীকরণগুলি মৌলিক গোলাকার সমন্বয় সমীকরণ এবং 2D ঘূর্ণন সমীকরণ থেকে প্রাপ্ত করেছি:

r = দূরত্ব, t = থেটা (অনুভূমিক কোণ), p = phi (উল্লম্ব কোণ), A = Y অক্ষ (ঘূর্ণন ঘূর্ণন), B = Z অক্ষ সম্পর্কে ঘূর্ণন (অনুভূমিক ঘূর্ণন)

Kx = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*cos (B) -sin (p)*sin (t)*sin (B)

Ky = (sin (p)*cos (t)*cos (A)+cos (p)*sin (A))*sin (B)+sin (p)*sin (t)*cos (B)

Kz = -sin (p)*cos (t)*sin (A)+cos (p)*cos (A)

x = r*Kx

y = r*কি

z = r*Kz

r^2 = x^2+y^2+z^2

আলো = Klight/r*(Kx বা Ky বা Kz)

p = arccos ((x*sin (A)*cos (B)+y*sin (A)*sin (B)+z*cos (A))/r)

t = arccos ((x*cos (B)+y*sin (B) -p*sin (A)*cos (p))/(r*cos (A)*sin (p)))

ধাপ 4: প্রোগ্রাম

কার্যক্রম
কার্যক্রম

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

প্রস্তাবিত: