पर मैट्रिक्स ट्रांसफॉर्मेशन लागू करें मेरे पास एक मॉडल मैट्रिक्स है कि मैं अपनी दुनिया में जाल की स्थिति के लिए ट्रैक रख रहा हूं। glRotate()
और glTranslate()
पर प्रत्येक कॉल के साथ मेरे पास modelMatrix.rotate()
और modelMatrix.translate()
पर एक उचित कॉल है जो ठीक से काम कर रहा है।बाउंडिंगबॉक्स
अब मुझे अपने प्रत्येक मॉडल से जुड़े बाउंडिंग बॉक्स को अपडेट करने की आवश्यकता है। मैं libGDX ढांचे में काम कर रहा हूं और BoundingBox
वर्ग found here में, एक विधि mul()
है जो मुझे बाध्यकारी बॉक्स में मैट्रिक्स लागू करने की अनुमति देनी चाहिए लेकिन मान सही ढंग से अपडेट नहीं किए जा रहे हैं और मुझे लगता है कि यह वही तरीका हो सकता है इसे लागू करने की कोशिश कर रहा है। कोई विचार?
gl.glPushMatrix();
// Set the model matrix to the identity matrix
modelMatrix.idt();
// Update the orbit value of this model
orbit = (orbit + ORBIT_SPEED * delta) % 360;
gl.glRotatef(orbit, 1.0f, 1.0f, 0);
// Update the model matrix rotation
modelMatrix.rotate(1.0f, 1.0f, 0, orbit);
// Move the model to it's specified radius
gl.glTranslatef(0, 0, -ORBIT_DISTANCE);
// Update the model matrix translation
modelMatrix.translate(0, 0, -ORBIT_DISTANCE);
// Update the bounding box
boundingBox.mul(modelMatrix);
if (GameState.DEBUG)
{
renderBoundingBox(gl, delta);
}
// Bind the texture and draw
texture.bind();
mesh.render(GL10.GL_TRIANGLES);
gl.glPopMatrix();
बस यह सुनिश्चित करने के लिए, क्या आप अपना बाउंडिंग बॉक्स खींचने से पहले एक पहचान लोड कर रहे हैं? –
नहीं, मेरे पास मॉडल और बाउंडिंग बॉक्स खींचने के बाद तक 'glLoadIdentity()' तक कोई कॉल नहीं है। – DRiFTy
मुझे लगता है कि आपको चाहिए। क्योंकि आप अपने बीबी को 2 बार बदल रहे हैं। रेंडरबैब के अंदर एक पुश/पॉप करें। प्रक्षेपण रखें। यदि आप परीक्षणों का परीक्षण करना चाहते हैं तो पहचान लोड न करें और mul() को कॉल न करें। इस तरह आप टी मॉडल के रूप में उसी मॉडल के साथ टी बीबी ड्राइंग करेंगे। कार्य करना चाहिए। –