3DCG

Python3で「OpenGL」を学ぶ 「PyOpenGL」NeHe Lesson5

三角形と四角形を、三角錐と立方体にする

描画関数の三角形、四角形を作成していたところを、更新して奥行きのある立体を用意して回します。

# メインの描画関数
def DrawGLScene():
    # 省略

    # 三角錐
    glBegin(GL_TRIANGLES);
    glColor3f(1.0,0.0,0.0);            # 赤
    glVertex3f( 0.0, 1.0, 0.0);        # 上 (前面)
    glColor3f(0.0,1.0,0.0);            # 緑
    glVertex3f(-1.0,-1.0, 1.0);        # 左下 (前面)
    glColor3f(0.0,0.0,1.0);            # 青
    glVertex3f( 1.0,-1.0, 1.0);        # 右下 (前面)

    glColor3f(1.0,0.0,0.0);            # 赤
    glVertex3f( 0.0, 1.0, 0.0);        # 上 (右面)
    glColor3f(0.0,0.0,1.0);            # 青
    glVertex3f( 1.0,-1.0, 1.0);        # 左下 (右面)
    glColor3f(0.0,1.0,0.0);            # 緑
    glVertex3f( 1.0,-1.0, -1.0);        # 右下 (右面)

    glColor3f(1.0,0.0,0.0);            # 赤
    glVertex3f( 0.0, 1.0, 0.0);        # 上 (背面)
    glColor3f(0.0,1.0,0.0);            # 緑
    glVertex3f( 1.0,-1.0, -1.0);        # 左下 (背面)
    glColor3f(0.0,0.0,1.0);            # 青
    glVertex3f(-1.0,-1.0, -1.0);        # 右下 (背面)
        
        
    glColor3f(1.0,0.0,0.0);            # 赤
    glVertex3f( 0.0, 1.0, 0.0);        # 上 (左面)
    glColor3f(0.0,0.0,1.0);            # 青
    glVertex3f(-1.0,-1.0,-1.0);        # 左下 (左面)
    glColor3f(0.0,1.0,0.0);            # 緑
    glVertex3f(-1.0,-1.0, 1.0);        # 右下 (左面)
    glEnd();    


    # 省略


    # 立方体
    glBegin(GL_QUADS);
    glColor3f(0.0,1.0,0.0);            # 緑
    glVertex3f( 1.0, 1.0,-1.0);        # 右上 (上面)
    glVertex3f(-1.0, 1.0,-1.0);        # 左上 (上面)
    glVertex3f(-1.0, 1.0, 1.0);        # 左下 (上面)
    glVertex3f( 1.0, 1.0, 1.0);        # 右下 (上面)

    glColor3f(1.0,0.5,0.0);            # オレンジ
    glVertex3f( 1.0,-1.0, 1.0);        # 右上 (底面)
    glVertex3f(-1.0,-1.0, 1.0);        # 左上 (底面)
    glVertex3f(-1.0,-1.0,-1.0);        # 左下 (底面)
    glVertex3f( 1.0,-1.0,-1.0);        # 右下 (底面)

    glColor3f(1.0,0.0,0.0);            # 赤
    glVertex3f( 1.0, 1.0, 1.0);        # 右上 (前面)
    glVertex3f(-1.0, 1.0, 1.0);        # 左上 (前面)
    glVertex3f(-1.0,-1.0, 1.0);        # 左下 (前面)
    glVertex3f( 1.0,-1.0, 1.0);        # 右下 (前面)

    glColor3f(1.0,1.0,0.0);            # 黄
    glVertex3f( 1.0,-1.0,-1.0);        # 左下 (背面)
    glVertex3f(-1.0,-1.0,-1.0);        # 右下 (背面)
    glVertex3f(-1.0, 1.0,-1.0);        # 右上 (背面)
    glVertex3f( 1.0, 1.0,-1.0);        # 左上 (背面)

    glColor3f(0.0,0.0,1.0);            # 青
    glVertex3f(-1.0, 1.0, 1.0);        # 右上 (左面)
    glVertex3f(-1.0, 1.0,-1.0);        # 左上 (左面)
    glVertex3f(-1.0,-1.0,-1.0);        # 左下 (左面)
    glVertex3f(-1.0,-1.0, 1.0);        # 右下 (左面)

    glColor3f(1.0,0.0,1.0);            # 紫
    glVertex3f( 1.0, 1.0,-1.0);        # 右上 (右面)
    glVertex3f( 1.0, 1.0, 1.0);        # 左上 (右面)
    glVertex3f( 1.0,-1.0, 1.0);        # 左下 (右面)
    glVertex3f( 1.0,-1.0,-1.0);        # 右下 (右面)
    glEnd();

    # 省略

実行結果