하나의 개체를 X 축에서 회전하려고하는데 이해가 안됩니다. 당신이 회전을 구현하는 방법을 참조 코드의 덩어리에서PyOpenGL에서 object3D를 회전하는 방법은 무엇입니까?
class Object3D():
implements(IRenderizable)
def __init__(self, parameters={}):
self.parameters = parameters
self.ID= Engine().addObject3D()
self.parent = None
self.childrens =[]
self.position = (parameters.get('POSITION') is None) is True and Vector4() or parameters.get('POSITION')
self.rotation = (parameters.get('ROTATION') is None) is True and Quaternion() or parameters.get('ROTATION')
self.direction = Vector4()
self.scale = Vector3(1,1,1)
self.matrix = Matrix4()
self.matrixLocal = Matrix4()
self.matrixWorld = Matrix4()
self.matrixRotationWorld = Matrix4()
self.up = Vector3(0,1,0)
self.parameters =parameters
self.rotationAngle= 10.
self.currentMatrix = None
self.initCurrentMatrix()
def initCurrentMatrix(self):
glPushMatrix()
glLoadIdentity()
self.currentMatrix = glGetDoublev(GL_MODELVIEW_MATRIX)
glPopMatrix()
return
def setID(self, Id):
self.ID = Id
def moveTo(self, x,y,z):
v=Vector4(x,y,z)
#self.position.addSelf(self.rotation.rotateVector(v) )
self.position.addSelf(v)
glPushMatrix()
glLoadIdentity()
glTranslatef(float(self.position.x),float(self.position.y),float(self.position.z))
self.currentMatrix = glGetDoublev(GL_MODELVIEW_MATRIX)
glPopMatrix()
return self
def render(self):
pass
:
나는 그것의 클래스 개체 3D가
def rotateX(self, angle=2):
glPushMatrix()
glRotated(angle, 0,1,0)
glPopMatrix()
return self
Vector4가, Vector3, 사원 수, Matrix4 내 자신이다 수업.
이게 내 실수 야? 그리고 어떻게 회전 시키는가?
그럼 PyOpenGL없이 회전하는 방법은 무엇입니까? –
3D 그래픽 변환에서 4x4 행렬로 표시됩니다. 회전은 그러한 행렬로 표현 될 수 있습니다. 각 객체에는 세계에서의 위치를 설명하는 변형 행렬이 있습니다. 해당 행렬에 대한 변경 사항은 해당 변경 사항을 설명하는 행렬을 곱하여 나타납니다. 오브젝트를 그릴 때 먼저 컴포지션의 뷰 변형 (카메라 정렬) 및 오브젝트의 변환 행렬을 계산하여이를 정점 셰이더의 유니폼으로 전달합니다. 투영 행렬 (카메라 렌즈의 일종)과 함께 이것은 전체 변형을 정의합니다 – datenwolf