2つの3Dキューブを異なる軸でどのように回転させるかを調べようとしています。私は2つの立方体を作成することができますが、両方の立方体を同じ方向に回転させることはできますが、異なる方向に回転しようとすると、2つの回転を混合して両方の立方体の回転軸を新しくするようです。また、私はPythonとObject Oriented Programmingについては初めてです。 ありがとうクラスとpyopenglを使用して異なる軸で2つのワイヤフレームキューブを回転する方法
ここは私のコードです。 glRotatef
よう
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
import time
class cubeClass:
def __init__(self):
self.rotation = [0,0,0,0]
self.verticies =[
(1, -1, -1),
(1, 1, -1),
(-1, 1, -1),
(-1, -1, -1),
(1, -1, 1),
(1, 1, 1),
(-1, -1, 1),
(-1, 1, 1)
]
self.edges = (
(0,1),
(0,3),
(0,4),
(2,1),
(2,3),
(2,7),
(6,3),
(6,4),
(6,7),
(5,1),
(5,4),
(5,7)
)
def cube(self):
glBegin(GL_LINES)
for self.edge in self.edges:
for self.vertex in self.edge:
glVertex3fv(self.verticies[self.vertex])
glEnd()
glRotatef(self.rotation[0],self.rotation[1],
self.rotation[2],self.rotation[3])
print(self.rotation)
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
cube1 = cubeClass()
cube1.rotation= [1,1,0,0]
cube2 = cubeClass()
cube2.rotation = [1,0,1,0]
glTranslatef(0.0,0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
cube1.cube()
cube2.cube()
pygame.display.flip()
pygame.time.wait(10)
#time.sleep(.04)
main()
@ Rabbid76ありがとうございました!これはまさに私が探していたglPushMatrix()とglPopMatrix()の情報と使用法です。 – Hats
ようこそ。質問に対する回答が完全にあなたの問題を解決した場合は、回答を受け入れる必要があります(回答の左側にあるチェックマーク)。 – Rabbid76