জিএলএসএলে বিশেষ আপেক্ষিকতার শেডার


11

আমি একটি জিএলএসএল শেডার বাস্তবায়নের চেষ্টা করছি যা বিশেষ আপেক্ষিকতা লরেন্টজ ট্রান্সফর্মেশন বুঝতে সাহায্য করে।

আসুন দুটি অক্ষ-সংলগ্ন নিবিড় পর্যবেক্ষক Oএবং O'। পর্যবেক্ষক গতিবেগ সহ O'গতি আর্ট পর্যবেক্ষক Oহয় v=(v_x,0,0)

O'স্থানাঙ্কের ক্ষেত্রে বর্ণিত হলে , একটি ইভেন্ট P' = (x',y',z',ct')স্থানাঙ্কগুলিকে রূপান্তরিত করে(x,y,z,ct)= L (x',y',z',ct')

যেখানে এল হল 4x4 ম্যাট্রিক্স যার নাম লোরেন্টজ ট্রান্সফর্মেশন যা আমাদের পি এর ইভেন্ট পি'র স্থানাঙ্কগুলি লেখতে সহায়তা করে O

(বিশদগুলির জন্য দেখুন http://en.wikedia.org/wiki/Lorentz_transformation#Boost_in_t__x- দিকনির্দেশ )

আমি একটি প্রথম প্রাথমিক ভার্টেক্স শেডার লিখেছি যা লোরেন্তজ রূপান্তরটি প্রয়োগ করে প্রতিটি প্রান্তে বেগ পেয়েছে, তবে আমি সঠিকভাবে কাজ করার রূপান্তরটি পেতে পারি না।

vec3 beta= vec3(0.5,0.0,0.0);
float b2 = (beta.x*beta.x + beta.y*beta.y + beta.z*beta.z )+1E-12; 
float g=1.0/(sqrt(abs(1.0-b2))+1E-12); // Lorentz factor (boost)
float q=(g-1.0)/b2;

//http://en.wikipedia.org/wiki/Lorentz_transformation#Matrix_forms
vec3 tmpVertex = (gl_ModelViewMatrix*gl_Vertex).xyz;
float w = gl_Vertex.w;

mat4  lorentzTransformation =
        mat4(
            1.0+beta.x*beta.x*q ,   beta.x*beta.y*q ,   beta.x*beta.z*q , beta.x*g ,
            beta.y*beta.x*q , 1.0+beta.y*beta.y*q ,   beta.y*beta.z*q , beta.y*g ,
            beta.z*beta.x*q ,   beta.z*beta.y*q , 1.0+beta.z*beta.z*q , beta.z*g ,
            beta.x*g , beta.y*g , beta.z*g , g
            );
vec4 vertex2 = (lorentzTransformation)*vec4(tmpVertex,1.0);


gl_Position = gl_ProjectionMatrix*(vec4(vertex2.xyz,1.0) );

এই শেডারটি প্রতিটি ভার্টেক্সে প্রযোজ্য এবং অ-রৈখিক লরেন্টজ রূপান্তর সম্পাদন করা উচিত, তবে এটি যে রূপান্তরটি সম্পাদন করে তা আমি প্রত্যাশা করা থেকে স্পষ্টভাবে পৃথক (এই ক্ষেত্রে এক্স-অক্ষের উপর একটি দৈর্ঘ্য-সংকোচন)।

কেউ ইতিমধ্যে 3 ডি ভিডিওগ্যামের জন্য বিশেষ আপেক্ষিকতা শেডারে কাজ করেছেন?


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

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

আপনি কি আসলে ক্যামেরাটি সরিয়ে নিয়েছেন? স্পেসটাইম
ট্র্যাভেল

এছাড়াও গতি 0.5 c / s কিছুটা ছোট, 0.9 এর চেয়ে বড় কিছু ব্যবহার করার চেষ্টা করুন, উদাহরণটি 0.93 c / s ব্যবহার করে এবং সেই গতি দিয়ে ক্যামেরাটি সরিয়ে
ফেলুন

কোন আমি অনুমান পর্যবেক্ষক O(0,0,0) রয়েছে নিচে z- অক্ষ খুঁজছেন যখন পর্যবেক্ষক O'গতি wrt হয় Oবেগ সঙ্গে v_xএবং অবজেক্টের জন্য বর্ণনা O'বাকি আছে। আমি জানি যে এই ভার্টেক্স শেডারে রূপান্তরটি কেবলমাত্র शिरোখণ্ডের জন্য প্রয়োগ করা হয় যাতে লাইনের বিকৃতি হারিয়ে যায় তবে আমি কেবল এটি বুঝতে এবং প্রথমে এটি তৈরি করতে চাই। দেখে মনে হচ্ছে যে গেমটি বহুবচন ইতিমধ্যে এই ধরণের রূপান্তর করেছে, তবে আমি যে শেডারটি পেয়েছি তাতে আকর্ষণীয় কিছুই হয় না, কারণ আমি একই ফলাফল পেয়েছি! bit.ly/MueQqo
লাইনলো

উত্তর:


4

লরেন্টজ সংকোচন বাস্তবায়নের জন্য, আপনার সেরা বেটটি সম্ভবত গতির দিক বরাবর 1 / গামা দ্বারা স্পষ্টভাবে বস্তুর স্কেল করা।

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

লরেন্টজ সংকোচনের স্থান-সময়ের চিত্র g

এটি বাস্তবের জন্য গণনা করার জন্য, আপনাকে পর্যালোচনা করার রেফারেন্স ফ্রেমে সময়ের বর্তমান মুহুর্তের 3 ডি হাইপারপ্লেনের সাহায্যে ভার্টেক্সের বিশ্ব-রেখা ছেদ করে কার্যকরভাবে 4 ডি-তে রেট্রেস করতে হবে। আমি বিশ্বাস করি এটি করার ফলাফলটি কেবল 1 / গামা দ্বারা স্কেলিংয়ের সমান।

(অতিরিক্ত creditণের জন্য, এই বিষয়টি বিবেচনা করুন যে কোনও পর্যবেক্ষক সময় মতো একটি মুহুর্তে পুরো বস্তুটি দেখতে পাবেন না: তারা এটি হালকা রশ্মি ব্যবহার করে দেখতে পাবেন So সুতরাং আপনাকে বিশ্বব্যাপীটি ছেদ করা দরকার পর্যবেক্ষকের অতীত হালকা শঙ্কু সহ ভার্টেক্স This এটি আসলে ফলাফলগুলিকে উল্লেখযোগ্যভাবে পরিবর্তন করে: আপনার কাছ থেকে দূরে সরে যাওয়া কোনও বস্তু সংক্ষিপ্ত দেখাবে, তবে আপনার দিকে অগ্রসর হওয়া কোনও বস্তু দীর্ঘায়িত প্রদর্শিত হবে এবং কোনও বস্তু চলমান উপকূলকে ঘোরানো হবে - দেখুন পেনরোজ-টেরেল রোটেশন আরো বেশী.)


ঠিক আছে, তবে আমি যদি সিমুলেশনের ভিতরে সময় পরিবর্তন করি? আমি শ্যাডারের বাইরে থেকে যাওয়ার জন্য অভিন্ন ফ্লোট হিসাবে সময়কে বিবেচনা করি, এটি কি সময়কে সঠিকভাবে সঠিকভাবে বিকৃত করা উচিত?
লাইনলো

যদি সময় প্রতিটি ফ্রেমের জন্য ধ্রুবক হয়, তবে আপনি 4 ডি বিশ্বের একটি 3 ডি টাইম-স্লাইস নিচ্ছেন, তাই হ্যাঁ, আমি উপরে যা বলেছিলাম তা ধরে রাখে।
নাথান রিড

আমি যদি লরেঞ্জের রূপান্তর থেকে আলাদাভাবে আপেক্ষিকতা অবলম্বন করতে পারি তবে তাও আমি বুঝতে পারি না।
লাইনলো

@ লাইনলো যদি আপনি বিভাজনের বিষয়ে চিন্তা করেন তবে মনে হচ্ছে আপনার শেষ অনুচ্ছেদে বর্ণিত এটির আরও পরিশীলিত সংস্করণটি আপনার দরকার - এটি পর্যবেক্ষকের অতীতের আলো শঙ্কু দ্বারা শীর্ষবিন্দুর বিশ্ব-রেখাটি ছেদ করুন এবং ছেদটি ছেদ বিন্দুতে স্থানান্তর করুন স্থানিক অবস্থান এটি ভার্টেক্স শ্যাডারে করণীয় হওয়া উচিত, আমি মনে করি। লোরেন্টজ রূপান্তর কেবল শীর্ষবিন্দুর ওয়ার্ল্ডলাইন স্থাপনে জড়িত। আরও মনে রাখবেন যে যদি বস্তুটি ত্বরান্বিত হয়, ঘোরানো ইত্যাদি then
নাথান রিড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.