Dünyadaki kafesin konumunu izlemek için kullandığım bir model matrisi var. Her bir çağrı glRotate()
ve glTranslate()
ile düzgün bir şekilde çalışıyor gibi görünen modelMatrix.rotate()
ve modelMatrix.translate()
için uygun bir çağrı var.Matris Dönüşümlerini BoundingBox'a Uygula
Şimdi, modellerimin her biriyle ilişkilendirilmiş sınırlayıcı kutuyu güncellemem gerekiyor. LibGDX çerçevesinde çalışıyorum ve BoundingBox
sınıfında found here, mul()
bir sınırlama kutusuna bir matris uygulamasına izin vermeme izin veren bir yöntem var, ancak değerler doğru şekilde güncellenmiyor ve bence bu şekilde olabilir. uygulamak için çalışıyor. Herhangi bir fikir?
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();
Sadece emin olmak için, sınırlayıcı kutunuzu çizmeden önce bir kimlik mi yüklüyorsunuz? –
Hayır, modelleri ve sınırlayıcı kutuyu çizene kadar "glLoadIdentity()" çağrısına sahip değilim. – DRiFTy
Sanırım yapmalısın. Çünkü bb'nizi 2 kez dönüştürüyorsunuz. renderbb içinde bir itme/pop yapmak. projeksiyonu koru. Eğer test etmek istiyorsanız, dönüşümler kimliği yüklemez ve mul() 'ı çağırma. Böylelikle te modeli ile aynı dönüşüme sahip olursunuz. Çalışmalı. –