0

私はopenglとglmを初めて使用します。現在、クラスプロジェクトを行っています。次のように、2台のオブジェクトカーをアップロードします。

void CARMODEL:: drawmodel_box()
{
    glPushMatrix();
    glTranslatef(carx,cary ,carz);
    if (!pmodel1){
        pmodel1 = glmReadOBJ("Car.obj");
    }

    glmDraw(pmodel1, GLM_SMOOTH | GLM_TEXTURE | GLM_MATERIAL);
    glPopMatrix();
}

void OpponentCarModel::drawopponentmodel()
{
    glPushMatrix();
    srand(time(NULL));
    opcarx=rand() % 7-3+(double)rand()/(RAND_MAX+1)*(1-0)+0;

    glTranslatef(opcarx,0,-20);

    if (!pmodel2){
        pmodel2 = glmReadOBJ("car.obj");
    }

    glmDraw(pmodel2, GLM_SMOOTH | GLM_TEXTURE | GLM_MATERIAL);
    glPopMatrix();
}

さて、これまではすべてうまくいきました。衝突検出の部分に行きました。ここで2台の車の間でそれを行う方法がわかりません。座標や頂点がわからないので、plzが役立ちます。

4

1 に答える 1

1

glTranslatef()そうですが、前に呼び出してモデルを配置するため、モデルがマトリックスのどこに配置されているかを正確に知ることができますglmDraw()これで、モデルのx、y、z座標がわかったので、単純な衝突のチェックを開始できます。

ただし、より現実的で複雑な衝突検出を探している場合は、頂点情報、法線、テクスチャ座標など、モデルを画面に描画するために必要なすべてのものが格納されているためglm.h、構造の定義を開いて確認する必要があります。GLMmodel

/* GLMmodel: Structure that defines a model.
 */
typedef struct _GLMmodel {
  char*    pathname;            /* path to this model */
  char*    mtllibname;          /* name of the material library */

  GLuint   numvertices;         /* number of vertices in model */
  GLfloat* vertices;            /* array of vertices  */

  GLuint   numnormals;          /* number of normals in model */
  GLfloat* normals;             /* array of normals */

  GLuint   numtexcoords;        /* number of texcoords in model */
  GLfloat* texcoords;           /* array of texture coordinates */

  GLuint   numfacetnorms;       /* number of facetnorms in model */
  GLfloat* facetnorms;          /* array of facetnorms */

  GLuint       numtriangles;    /* number of triangles in model */
  GLMtriangle* triangles;       /* array of triangles */

  GLuint       nummaterials;    /* number of materials in model */
  GLMmaterial* materials;       /* array of materials */

  GLuint       numgroups;       /* number of groups in model */
  GLMgroup*    groups;          /* linked list of groups */

  GLfloat position[3];          /* position of the model */

} GLMmodel;
于 2013-02-17T14:48:34.550 に答える