मैं तुम्हें मैट्रिक्स के संचालन के लिए GLM लाइब्रेरी का उपयोग देखा है, तो GLM कोड से lookAt कार्यान्वयन इस तरह दिखता है:
mat4x4 lookAt(vec3 const & eye, vec3 const & center, vec3 const & up)
{
vec3 f = normalize(center - eye);
vec3 u = normalize(up);
vec3 s = normalize(cross(f, u));
u = cross(s, f);
mat4x4 Result(1);
Result[0][0] = s.x;
Result[1][0] = s.y;
Result[2][0] = s.z;
Result[0][1] = u.x;
Result[1][1] = u.y;
Result[2][1] = u.z;
Result[0][2] =-f.x;
Result[1][2] =-f.y;
Result[2][2] =-f.z;
Result[3][0] =-dot(s, eye);
Result[3][1] =-dot(u, eye);
Result[3][2] = dot(f, eye);
return Result;
}
आप पहली बार वैक्टर आप का उपयोग करेगा सामान्य (एफ वह दिशा है जिसे आप देखते हैं, u ऊपर और एस सही वेक्टर है)। तो सुनिश्चित करें कि वेक्टर अप दिशा और सही वैक्टर आप अपने पार उत्पाद के रूप में यह पुनर्गणना, क्योंकि जब आप एक ऊपर वेक्टर देना क्या आप वाकई इसकी सीधा आंखों के लिए नहीं कर सकते करने के लिए खड़ा है बनाने के लिए -center वेक्टर (देखें दिशा), वे सिर्फ एक विमान बनाते हैं जो आपको दाएं वेक्टर देता है।
मैट्रिक्स इनका निर्माण किया गया है। अधिक जानकारी के लिए यह कैसे काम करता है http://www.songho.ca/opengl/gl_transform.html पृष्ठ की जांच करता है। संक्षेप में: यह एक मैट्रिक्स है जो आपको एक नई समन्वय प्रणाली बनाता है, इसलिए coloumns axises हैं। फिर अंतिम coloumn पर अनुवाद मैट्रिक्स लागू किया जाता है।
(पहचान मैट्रिक्स को देखो:
AXIS TRANSFORM
x y z transl.
1, 0, 0, 0
0, 1, 0, 0,
0, 0, 1, 0
0, 0, 0, 1
यह आपको कोई अनुवाद के साथ समन्वय प्रणाली मानक देता है।)
तो फिर तुम प्रक्षेपण और मॉडल matrixes (पी * वी * मी) के साथ इस गुणा , आदेश महत्वपूर्ण है। जब आप अपना कार्यान्वयन लिखते हैं तो सुनिश्चित करें कि आप ओपनग्लू के कारण कॉलमैन प्रमुख मैट्रिक्स का उपयोग करते हैं, या उन्हें ट्रांसफर करते हैं।
मुझे उम्मीद है कि यह मदद करता है।