gpt4 book ai didi

java - 如何将相机设置在立方体内?

转载 作者:行者123 更新时间:2023-12-01 17:23:40 25 4
gpt4 key购买 nike

我有一个立方体,每个侧锁都有不同的颜色 -

public void display(GLAutoDrawable drawable) {

final GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);




///// SET CAMERA /////
setCamera(gl, glu, 100);




// /////// Cube - start ///////////

// cube

// ----- Render the Color Cube -----
gl.glLoadIdentity(); // reset the current model-view matrix
gl.glTranslatef(0f, 0.0f, -7.0f); // translate right and into the
// screen
gl.glRotatef(angleCube, 1.0f, 1.0f, 1.0f); // rotate about the x, y and
// z-axes

gl.glBegin(GL.GL_QUADS); // of the color cube

// Top-face
gl.glColor3f(0.0f, 1.0f, 0.0f); // green
gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);

// Bottom-face
gl.glColor3f(1.0f, 0.5f, 0.0f); // orange
gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);

// Front-face
gl.glColor3f(1.0f, 0.0f, 0.0f); // red
gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);

// Back-face
gl.glColor3f(1.0f, 1.0f, 0.0f); // yellow
gl.glVertex3f(1.0f, -1.0f, -1.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, -1.0f);

// Left-face
gl.glColor3f(0.0f, 0.0f, 1.0f); // blue
gl.glVertex3f(-1.0f, 1.0f, 1.0f);
gl.glVertex3f(-1.0f, 1.0f, -1.0f);
gl.glVertex3f(-1.0f, -1.0f, -1.0f);
gl.glVertex3f(-1.0f, -1.0f, 1.0f);

// Right-face
gl.glColor3f(1.0f, 0.0f, 1.0f); // violet
gl.glVertex3f(1.0f, 1.0f, -1.0f);
gl.glVertex3f(1.0f, 1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, 1.0f);
gl.glVertex3f(1.0f, -1.0f, -1.0f);

gl.glEnd(); // of the color cube

// /////// Cube - end //////////



}

private void setCamera(GL gl, GLU glu, float distance) {
// Change to projection matrix.
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();

// Perspective.
float widthHeightRatio = (float) getWidth() / (float) getHeight();
glu.gluPerspective(1, widthHeightRatio, 1, 1000);
glu.gluLookAt(0,0, 150, 0, 0, 0, 0, 1, 0);

// Change back to model view matrix.
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}

在这种状态下 - 我得到的数字是 -

enter image description here

表示位于立方体前面的摄像机。

由于我尝试在立方体内设置相机,因此我将 glu.gluLookAt 中的 z 轴值更改为 - glu.gluLookAt(0,0, 50, 0, 0 , 0, 0, 1, 0); 并且知道我得到的是 -

enter image description here

如果我更改为 - glu.gluLookAt(0,0, 0, 0, 0, 0, 0, 1, 0); 我会得到整个屏幕黑色。

所以,为了将相机设置在立方体内,我必须更改 - 意味着异常(exception)的图形在右、左、上和下将具有不同的颜色。

最佳答案

glu.gluLookAt(0, 0, 0, 0, 0, 0, 0, 1, 0) 似乎无效。尝试将其设置为glu.gluLookAt(0, 0, 0, 0, 0, -1, 0, 1, 0)

编辑:

  1. 删除glTranslatef


  2. glu.gluPerspective(100, widthHeightRatio, 0.5, 1000);
    glu.gluLookAt(0, 0, 0.0, 0.0, 0, -1.0, 0, 1, 0);

关于java - 如何将相机设置在立方体内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16660808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com