我这里的OBJ格式不是c++代码产生的中间文件,而是那个g什么wave公司的OBJ格式,格式很简单,作用就是拿来存储3D模型的一些基本信息。以前在VS2005下能很轻松读取,这次换QT了,幸好QT公司对客户很用心和负责,在其QtLab下发现了不错的类和代码。加以运用,成功导入OBJ~
切入正题。
首先这个类会需要引用该文件point3d.h,其内容如下:
#ifndef POINT3D_H
#define POINT3D_H
#include “math.h”
#include <qglobal.h>
struct Point3d
{
float x, y, z;
Point3d()
: x(0)
, y(0)
, z(0)
{
}
Point3d(float x_, float y_, float z_)
: x(x_)
, y(y_)
, z(z_)
{
}
Point3d operator+(const Point3d &p) const
{
return Point3d(*this) += p;
}
Point3d operator-(const Point3d &p) const
{
return Point3d(*this) -= p;
}
Point3d operator*(float f) const
{
return Point3d(*this) *= f;
}
Point3d &operator+=(const Point3d &p)
{
x += p.x;
y += p.y;
z += p.z;
return *this;
}
Point3d &operator-=(const Point3d &p)
{
x -= p.x;
y -= p.y;
z -= p.z;
return *this;
}
bool operator==(const Point3d &p)
{
if((x==p.x)&&(y==p.y)&&(z==p.z))
return true;
return false;
}
Point3d &operator*=(float f)
{
x *= f;
y *= f;