如何读取3DS模型库呢?
下面我教大家一个快速简单的方法,一会就能把一切事情都搞定!!哈哈哈
3DS可以导成显示列表直接显示,因此我们的思路是:将3DS导成显示列表,并把他们稍稍封装以下,即可!!
第一步:用Explore3D软件,读入3DS。赞这个3D软件!
第二步:用Explore3D软件,进行保存,选择 cpp ,把3DS文件导成vc的cpp。
第三步:处理cpp文件。
增加一个头文件,并封装 Gen3DObjectList()和你想要的函数文件
下面的例子就是把一个风门模型导成了一个h和cpp。
在一些外部函数前增加static,使得该函数为局部函数。
第四步:把。h和。cpp加入VC程序,调用。
一切OK!
快速,准确,完成3DS读取,不超过5分钟!
class CWindGateModelLibrary : public CObject
{
public:
CWindGateModelLibrary()
{
m_ListBase = 0;
m_strModelName = "tree";
}
CWindGateModelLibrary()
{
}
BOOL Gen3DObjectList( GLint lid);
int m_ListBase;
CString m_strModelName;
};
/*
This file was produced by 3D Exploration Plugin: CPP Export filter.
3D Exploration
Copyright (c) 1999-2000 X Dimension Software
WWW http://www.xdsoft.com/explorer/
eMail info@xdsoft.com
*/
#include <windows.h>
#include "stdafx.h"
#inlcude "3DSWindGateModelLibary.h"
struct sample_MATERIAL{
GLfloat ambient[3];
GLfloat diffuse[3];
GLfloat specular[3];
GLfloat emission[3];
GLfloat alpha;
GLfloat phExp;
int texture;
};
static sample_MATERIAL materials [2] = {
{{0.996078f,0.937255f,0.27451f}, {0.996078f,0.937255f,0.27451f}, {0.0f,0.0f,0.0f}, {0.0f,0.0f,0.0f}, 1.0f,4.0f,-1}, //02 - Default
{{0.254902f,0.658824f,0.890196f}, {0.254902f,0.658824f,0.890196f}, {0.0f,0.0f,0.0f}, {0.0f,0.0f,0.0f}, 1.0f,4.0f,-1} //01 - Default
};
// 70 Verticies
// 0 Texture Coordinates
// 134 Normals
// 136 Triangles
static BYTE face_indicies[136][9] = {
// Line01
{12,11,0 ,0,1,1 ,0,0,0}, {0,1,12 ,1,2,0 ,0,0,0}, {13,12,1 ,2,0,2 ,0,0,0},
{1,2,13 ,2,3,2 ,0,0,0}, {14,13,2 ,1,2,3 ,0,0,0}, {2,3,14 ,3,1,1 ,0,0,0},
{15,14,3 ,4,5,4 ,0,0,0}, {3,4,15 ,4,6,4 ,0,0,0}, {16,15,4 ,7,8,7 ,0,0,0},
{4,5,16 ,7,9,7 ,0,0,0}, {17,16,5 ,10,11,10 ,0,0,0}, {5,6,17 ,10,12,10 ,0,0,0},
{18,17,6 ,13,14,14 ,0,0,0}, {6,7,18 ,14,14,13 ,0,0,0}, {19,18,7 ,15,16,17 ,0,0,0},
{7,8,19 ,17,18,15 ,0,0,0}, {20,19,8 ,19,15,18 ,0,0,0}, {8,9,20 ,18,19,19 ,0,0,0},
{21,20,9 ,19,19,19 ,0,0,0}, {9,10,21 ,19,19,19 ,0,0,0}, {11,21,10 ,20,21,22 ,0,0,0},
{10,0,11 ,22,23,20 ,0,0,0}, {0,10,9 ,24,25,26 ,0,0,0}, {1,0,9 ,27,24,26 ,0,0,0},
{1,9,8 ,27,26,28 ,0,0,0}, {2,1,8 ,29,27,28 ,0,0,0}, {2,8,7 ,29,28,30 ,0,0,0},
{3,2,7 ,31,29,30 ,0,0,0}, {7,6,5 ,30,32,33 ,0,0,0}, {3,7,5 ,31,30,33 ,0,0,0},
{3,5,4 ,31,33,34 ,0,0,0}, {14,15,16 ,5,35,36 ,0,0,0}, {16,17,18 ,36,37,13 ,0,0,0},
{14,16,18 ,5,36,13 ,0,0,0}, {20,21,11 ,38,21,20 ,0,0,0}, {20,11,12 ,38,20,39 ,0,0,0},
{19,20,12 ,40,38,39 ,0,0,0}, {19,12,13 ,40,39,41 ,0,0,0}, {18,19,13 ,13,40,41 ,0,0,0},
{14,18,13 ,5,13,41 ,0,0,0}
// Rectangle0
, {27,26,22 ,19,19,19 ,0,0,0}, {22,23,27 ,19,19,19 ,0,0,0}, {28,27,23 ,42,42,42 ,0,0,0},
{23,24,28 ,42,42,42 ,0,0,0}, {29,28,24 ,43,43,43 ,0,0,0}, {24,25,29 ,43,43,43 ,0,0,0},
{26,29,25 ,44,44,44 ,0,0,0}, {25,22,26 ,44,44,44 ,0,0,0}, {35,34,30 ,45,45,45 ,0,0,0},
{30,31,35 ,45,45,45 ,0,0,0}, {36,35,31 ,44,44,44 ,0,0,0}, {31,32,36 ,44,44,44 ,0,0,0},
{37,36,32 ,1,1,1 ,0,0,0}, {32,33,37 ,1,1,1 ,0,0,0}, {34,37,33 ,42,42,42 ,0,0,0},
{33,30,34 ,42,42,42 ,0,0,0}, {32,24,23 ,46,47,48 ,0,0,0}, {33,32,23 ,49,46,48 ,0,0,0},
{33,23,22 ,49,48,50 ,0,0,0}, {24,32,31 ,47,46,51 ,0,0,0}, {24,31,30 ,47,51,52 ,0,0,0},
{25,24,30 ,53,47,52 ,0,0,0}, {22,25,30 ,50,53,52 ,0,0,0}, {33,22,30 ,49,50,52 ,0,0,0},
{35,36,28 ,54,55,56 ,0,0,0}, {34,35,28 ,57,54,56 ,0,0,0}, {34,28,29 ,57,56,58 ,0,0,0},
{34,29,26 ,57,58,59 ,0,0,0}, {37,34,26 ,60,57,59 ,0,0,0}, {37,26,27 ,60,59,61 ,0,0,0},
{27,28,36 ,61,56,55 ,0,0,0}, {37,27,36 ,60,61,55 ,0,0,0}
// Rectangle1
, {43,42,38 ,62,63,62 ,0,0,0}, {38,39,43 ,62,64,62 ,0,0,0}, {44,43,39 ,65,66,65 ,0,0,0},
{39,40,44 ,65,67,65 ,0,0,0}, {45,44,40 ,68,69,68 ,0,0,0}, {40,41,45 ,68,70,68 ,0,0,0},
{42,45,41 ,71,72,71 ,0,0,0}, {41,38,42 ,71,73,71 ,0,0,0}, {51,50,46 ,19,19,19 ,0,0,0},
{46,47,51 ,19,19,19 ,0,0,0}, {52,51,47 ,74,75,74 ,0,0,0}, {47,48,52 ,74,76,74 ,0,0,0},
{53,52,48 ,1,1,1 ,0,0,0}, {48,49,53 ,1,1,1 ,0,0,0}, {50,53,49 ,77,78,77 ,0,0,0},
{49,46,50 ,77,79,77 ,0,0,0}, {47,46,40 ,80,81,82 ,0,0,0}, {48,47,40 ,83,80,82 ,0,0,0},
{48,40,39 ,83,82,84 ,0,0,0}, {49,48,39 ,85,83,84 ,0,0,0}, {49,39,38 ,85,84,86 ,0,0,0},
{41,40,46 ,87,82,81 ,0,0,0}, {38,41,46 ,86,87,81 ,0,0,0}, {49,38,46 ,85,86,81 ,0,0,0},
{50,44,45 ,88,89,90 ,0,0,0}, {50,45,42 ,88,90,91 ,0,0,0}, {53,50,42 ,92,88,91 ,0,0,0},
{53,42,43 ,92,91,93 ,0,0,0}, {44,50,51 ,89,88,94 ,0,0,0}, {44,51,52 ,89,94,95 ,0,0,0},
{43,44,52 ,93,89,95 ,0,0,0}, {53,43,52 ,92,93,95 ,0,0,0}
// Rectangle2
, {59,58,54 ,96,97,96 ,0,0,0}, {54,55,59 ,96,98,96 ,0,0,0}, {60,59,55 ,99,100,99 ,0,0,0},
{55,56,60 ,99,101,99 ,0,0,0}, {61,60,56 ,102,103,102 ,0,0,0},
{56,57,61 ,102,104,102 ,0,0,0}, {58,61,57 ,105,106,105 ,0,0,0},
{57,54,58 ,105,107,105 ,0,0,0}, {67,66,62 ,108,109,108 ,0,0,0},
{62,63,67 ,108,110,108 ,0,0,0}, {68,67,63 ,111,111,111 ,0,0,0},
{63,64,68 ,111,111,111 ,0,0,0}, {69,68,64 ,112,113,112 ,0,0,0},
{64,65,69 ,112,114,112 ,0,0,0}, {66,69,65 ,115,116,115 ,0,0,0},
{65,62,66 ,115,117,115 ,0,0,0}, {63,62,56 ,118,119,120 ,0,0,0},
{64,63,56 ,121,118,120 ,0,0,0}, {64,56,55 ,121,120,122 ,0,0,0},
{65,64,55 ,123,121,122 ,0,0,0}, {65,55,54 ,123,122,124 ,0,0,0},
{57,56,62 ,125,120,119 ,0,0,0}, {54,57,62 ,124,125,119 ,0,0,0},
{65,54,62 ,123,124,119 ,0,0,0}, {66,60,61 ,126,127,128 ,0,0,0},
{66,61,58 ,126,128,129 ,0,0,0}, {69,66,58 ,130,126,129 ,0,0,0},
{69,58,59 ,130,129,131 ,0,0,0}, {60,66,67 ,127,126,132 ,0,0,0},
{60,67,68 ,127,132,133 ,0,0,0}, {59,60,68 ,131,127,133 ,0,0,0},
{69,59,68 ,130,131,133 ,0,0,0}
};
static GLfloat vertices [70][3] = {
{-0.225293f,0.277979f,-0.183419f},{-0.138717f,0.113512f,-0.183419f},{-0.0421206f,0.0423053f,-0.183419f},
{-0.0112158f,-0.0204768f,-0.183419f},{-0.0112158f,-0.0204768f,-0.245813f},{0.143558f,-0.178058f,-0.158574f},
{-0.0114239f,-0.0202333f,-0.0700791f},{-0.0114239f,-0.0202333f,-0.126231f},{-0.0435355f,0.0439607f,-0.126232f},
{-0.139344f,0.114245f,-0.126232f},{-0.225308f,0.277997f,-0.126232f},{-0.226938f,0.276573f,-0.183419f},
{-0.140362f,0.112105f,-0.183419f},{-0.0437658f,0.0408991f,-0.183419f},{-0.0128611f,-0.021883f,-0.183419f},
{-0.012861f,-0.021883f,-0.245813f},{0.141913f,-0.179464f,-0.158574f},{-0.0130692f,-0.0216395f,-0.0700791f},
{-0.0130692f,-0.0216395f,-0.126231f},{-0.0451807f,0.0425545f,-0.126232f},{-0.140989f,0.112838f,-0.126232f},
{-0.226954f,0.276591f,-0.126232f},{0.5f,0.0640717f,0.468408f},{-0.5f,0.0640717f,0.468408f},
{-0.5f,0.0640717f,-0.468408f},{0.5f,0.0640717f,-0.468408f},{0.5f,0.0409403f,0.468408f},
{-0.5f,0.0409403f,0.468408f},{-0.5f,0.0409403f,-0.468408f},{0.5f,0.0409403f,-0.468408f},
{0.469695f,0.0640717f,-0.466089f},{-0.470743f,0.0640717f,-0.466089f},{-0.470743f,0.0640717f,0.435383f},
{0.469695f,0.0640717f,0.435383f},{0.469695f,0.0409403f,-0.466089f},{-0.470743f,0.0409403f,-0.466089f},
{-0.470743f,0.0409403f,0.435383f},{0.469695f,0.0409403f,0.435383f},{-0.127612f,-0.268937f,0.435383f},
{-0.466122f,0.057899f,0.435383f},{-0.466122f,0.0578989f,-0.46736f},{-0.127612f,-0.268937f,-0.46736f},
{-0.136359f,-0.277997f,0.435383f},{-0.474869f,0.0488395f,0.435383f},{-0.474869f,0.0488394f,-0.46736f},
{-0.136359f,-0.277997f,-0.46736f},{-0.154521f,-0.242956f,-0.00611468f},{-0.439233f,0.0319378f,-0.00611468f},
{-0.439233f,0.0319378f,0.283742f},{-0.154521f,-0.242956f,0.283742f},{-0.163268f,-0.252015f,-0.00611468f},
{-0.44798f,0.0228783f,-0.00611468f},{-0.44798f,0.0228783f,0.283742f},{-0.163268f,-0.252015f,0.283742f},
{0.0367829f,0.236702f,0.435383f},{0.471554f,0.0567427f,0.435383f},{0.471554f,0.0567428f,-0.46736f},
{0.0367829f,0.236702f,-0.46736f},{0.0319667f,0.225067f,0.435383f},{0.466737f,0.045107f,0.435383f},
{0.466737f,0.0451071f,-0.46736f},{0.0319666f,0.225067f,-0.46736f},{0.0713444f,0.222397f,-0.00611468f},
{0.437019f,0.0710374f,-0.00611465f},{0.437019f,0.0710374f,0.283742f},{0.0713444f,0.222397f,0.283742f},
{0.0665282f,0.210761f,-0.00611468f},{0.432203f,0.0594017f,-0.00611465f},{0.432203f,0.0594017f,0.283742f},
{0.0665282f,0.210761f,0.283742f}
};
static GLfloat normals [134][3] = {
{5.21317e-08f,-6.0994e-08f,-1.0f},{0.0f,0.0f,-1.0f},{1.04264e-07f,-1.21987e-07f,-1.0f},
{5.21324e-08f,-6.09932e-08f,-1.0f},{-0.649733f,0.760162f,7.19645e-08f},{-0.93964f,-0.342165f,-0.000315183f},
{-0.649731f,0.760164f,-3.0581e-08f},{0.239171f,-0.279825f,-0.929782f},{0.239172f,-0.279824f,-0.929782f},
{0.23917f,-0.279826f,-0.929782f},{0.241837f,-0.282948f,0.928146f},{0.241838f,-0.282947f,0.928146f},
{0.241837f,-0.282948f,0.928146f},{-0.985783f,-0.168011f,-0.00221993f},{-0.649723f,0.760171f,-2.38066e-08f},
{-1.74951e-07f,2.0469e-07f,1.0f},{-2.62426e-07f,3.07036e-07f,1.0f},{-2.62427e-07f,3.07035e-07f,1.0f},
{-8.74759e-08f,1.02345e-07f,1.0f},{0.0f,0.0f,1.0f},{-0.982042f,0.188656f,-0.00148408f},
{-0.981991f,0.18893f,-0.000321712f},{-0.649729f,0.760166f,-0.000411694f},{-0.649728f,0.760167f,-0.000411774f},
{0.885147f,0.465308f,0.00190792f},{0.88541f,0.464811f,9.15354e-05f},{0.805601f,0.592459f,-1.3272e-05f},
{0.705858f,0.708347f,-0.002984f},{0.710614f,0.703581f,-0.00112699f},{0.815274f,0.579075f,0.000663707f},
{0.814754f,0.579801f,0.00257541f},{0.783527f,0.621358f,0.000336083f},{0.713503f,0.700653f,-2.19426e-08f},
{0.713466f,0.70069f,-0.000129081f},{0.713432f,0.700724f,-9.69568e-09f},{-0.713432f,-0.700724f,-1.97854e-07f},
{-0.713466f,-0.70069f,0.000128945f},{-0.713502f,-0.700653f,2.19426e-08f},{-0.805601f,-0.592458f,1.32933e-05f},
{-0.705858f,-0.708347f,0.00298398f},{-0.710614f,-0.703581f,0.001127f},{-0.815274f,-0.579075f,-0.000663797f},
{-1.0f,0.0f,0.0f},{0.0f,4.36915e-08f,-1.0f},{1.0f,0.0f,0.0f},
{0.0f,-3.8012e-08f,1.0f},{1.57144e-08f,1.0f,3.06232e-08f},{1.17858e-08f,1.0f,2.29674e-08f},
{1.69514e-08f,1.0f,1.50172e-08f},{-1.70068e-08f,1.0f,1.5606e-08f},{-1.58577e-08f,1.0f,3.06232e-08f},
{-1.85538e-09f,1.0f,2.3409e-08f},{-1.18933e-08f,1.0f,2.29674e-08f},{1.72363e-09f,1.0f,2.25258e-08f},
{1.39153e-09f,-1.0f,-1.75568e-08f},{1.04191e-07f,-1.0f,-1.3322e-07f},{7.81431e-08f,-1.0f,-2.00413e-08f},
{-7.83383e-08f,-1.0f,-2.00413e-08f},{-1.72363e-09f,-1.0f,-2.25258e-08f},{-1.04451e-07f,-1.0f,-1.3322e-07f},
{-1.03302e-07f,-1.0f,-2.24701e-07f},{1.03263e-07f,-1.0f,-2.28013e-07f},{-6.20773e-06f,-6.42946e-06f,1.0f},
{-6.20772e-06f,-6.42945e-06f,1.0f},{-6.20774e-06f,-6.42947e-06f,1.0f},{-0.719404f,0.694592f,-6.16613e-08f},
{-0.719406f,0.69459f,-3.51796e-08f},{-0.719403f,0.694593f,-8.81429e-08f},{1.50847e-08f,-5.09603e-08f,-1.0f},
{1.50847e-08f,-5.09603e-08f,-1.0f},{1.50846e-08f,-5.09604e-08f,-1.0f},{0.719401f,-0.694595f,5.97285e-08f},
{0.7194f,-0.694596f,3.20872e-08f},{0.719403f,-0.694593f,8.73697e-08f},{0.719402f,-0.694594f,4.00337e-08f},
{0.719402f,-0.694594f,1.26422e-08f},{0.719403f,-0.694593f,6.74251e-08f},{-0.719402f,0.694593f,-5.11709e-08f},
{-0.719404f,0.694592f,3.49167e-08f},{-0.719401f,0.694595f,-1.37258e-07f},{0.694592f,0.719404f,-2.1375e-07f},
{0.694595f,0.719401f,-2.04332e-07f},{0.694592f,0.719404f,-2.10171e-07f},{0.694591f,0.719405f,3.84327e-07f},
{0.694592f,0.719404f,7.42926e-07f},{0.694594f,0.719402f,7.42639e-07f},{0.694595f,0.719401f,3.19312e-07f},
{0.694595f,0.719401f,-2.28627e-07f},{-0.694595f,-0.719401f,1.93196e-07f},{-0.694592f,-0.719404f,1.83233e-07f},
{-0.694595f,-0.719401f,2.11147e-07f},{-0.694595f,-0.719401f,-2.5597e-07f},{-0.694594f,-0.719402f,-5.30506e-07f},
{-0.694592f,-0.719404f,-5.29599e-07f},{-0.694592f,-0.719404f,1.64936e-07f},{-0.694591f,-0.719404f,-2.3947e-07f},
{2.50828e-06f,6.21619e-06f,-1.0f},{1.59852e-06f,4.17462e-06f,-1.0f},{3.41804e-06f,8.25776e-06f,-1.0f},
{-0.923975f,0.382452f,2.90557e-08f},{-0.923975f,0.382452f,2.68206e-08f},{-0.923975f,0.382452f,3.12907e-08f},
{1.77412e-08f,-6.40185e-08f,1.0f},{1.77412e-08f,-6.40185e-08f,1.0f},{1.77412e-08f,-6.40184e-08f,1.0f},
{0.923975f,-0.382452f,-6.2199e-08f},{0.923976f,-0.382451f,-5.62388e-08f},{0.923975f,-0.382452f,-6.81592e-08f},
{6.56902e-08f,-2.71903e-08f,-1.0f},{6.56901e-08f,-2.71904e-08f,-1.0f},{6.56902e-08f,-2.71903e-08f,-1.0f},
{0.923976f,-0.382449f,-1.85624e-08f},{1.3138e-07f,-5.43806e-08f,1.0f},{1.3138e-07f,-5.43805e-08f,1.0f},
{1.3138e-07f,-5.43807e-08f,1.0f},{-0.923976f,0.382451f,4.83364e-08f},{-0.923976f,0.38245f,5.95478e-08f},
{-0.923976f,0.382451f,3.7125e-08f},{-0.382452f,-0.923975f,9.21204e-08f},{-0.382449f,-0.923977f,7.84498e-08f},
{-0.382452f,-0.923975f,8.90087e-08f},{-0.382453f,-0.923975f,-3.96554e-07f},{-0.382452f,-0.923975f,-7.20529e-07f},
{-0.382449f,-0.923976f,-7.25227e-07f},{-0.382448f,-0.923977f,-3.93149e-07f},{-0.382449f,-0.923977f,8.72022e-08f},
{0.382449f,0.923977f,-9.57685e-08f},{0.382452f,0.923975f,-9.95073e-08f},{0.382449f,0.923977f,-1.20405e-07f},
{0.382448f,0.923977f,3.70191e-07f},{0.382449f,0.923976f,6.83379e-07f},{0.382452f,0.923975f,6.78175e-07f},
{0.382452f,0.923975f,-8.89145e-08f},{0.382453f,0.923975f,3.64465e-07f}
};
GLfloat textures[1][2]={{0.0f,0.0f}};
/*Material indicies*/
/*{material index,face count}*/
static int material_ref [2][2] = {
{0,40},
{1,96}
};
void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
{
GLfloat d[4];
d[0]=f[0];
d[1]=f[1];
d[2]=f[2];
d[3]=alpha;
glMaterialfv (GL_FRONT_AND_BACK,mode,d);
}
/*
* SelectMaterial uses OpenGL commands to define facet colors.
*
* Returns:
* Nothing
*/
static void SelectMaterial(int i)
{
//
// Define the reflective properties of the 3D Object faces.
//
glEnd();
GLfloat alpha=materials[i].alpha;
MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
MyMaterial (GL_EMISSION, materials[i].emission,alpha);
glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
glBegin(GL_TRIANGLES);
};
GLint CWindGateModelLibrary::Gen3DObjectList()
{
int i;
int j;
GLint lid=glGenLists(1);
int mcount=0;
int mindex=0;
glNewList(lid, GL_COMPILE);
glBegin (GL_TRIANGLES);
for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
{
if(!mcount)
{
SelectMaterial(material_ref[mindex][0]);
mcount=material_ref[mindex][1];
mindex++;
}
mcount--;
for(j=0;j<3;j++)
{
int vi=face_indicies[i][j];
int ni=face_indicies[i][j+3];//Normal index
int ti=face_indicies[i][j+6];//Texture index
glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
glTexCoord2f(textures[ti][0],textures[ti][1]);
glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
}
}
glEnd ();
glEndList();
return lid;
};
下面我教大家一个快速简单的方法,一会就能把一切事情都搞定!!哈哈哈
3DS可以导成显示列表直接显示,因此我们的思路是:将3DS导成显示列表,并把他们稍稍封装以下,即可!!
第一步:用Explore3D软件,读入3DS。赞这个3D软件!
第二步:用Explore3D软件,进行保存,选择 cpp ,把3DS文件导成vc的cpp。
第三步:处理cpp文件。
增加一个头文件,并封装 Gen3DObjectList()和你想要的函数文件
下面的例子就是把一个风门模型导成了一个h和cpp。
在一些外部函数前增加static,使得该函数为局部函数。
第四步:把。h和。cpp加入VC程序,调用。
一切OK!
快速,准确,完成3DS读取,不超过5分钟!
class CWindGateModelLibrary : public CObject
{
public:
CWindGateModelLibrary()
{
m_ListBase = 0;
m_strModelName = "tree";
}
CWindGateModelLibrary()
{
}
BOOL Gen3DObjectList( GLint lid);
int m_ListBase;
CString m_strModelName;
};
/*
This file was produced by 3D Exploration Plugin: CPP Export filter.
3D Exploration
Copyright (c) 1999-2000 X Dimension Software
WWW http://www.xdsoft.com/explorer/
eMail info@xdsoft.com
*/
#include <windows.h>
#include "stdafx.h"
#inlcude "3DSWindGateModelLibary.h"
struct sample_MATERIAL{
GLfloat ambient[3];
GLfloat diffuse[3];
GLfloat specular[3];
GLfloat emission[3];
GLfloat alpha;
GLfloat phExp;
int texture;
};
static sample_MATERIAL materials [2] = {
{{0.996078f,0.937255f,0.27451f}, {0.996078f,0.937255f,0.27451f}, {0.0f,0.0f,0.0f}, {0.0f,0.0f,0.0f}, 1.0f,4.0f,-1}, //02 - Default
{{0.254902f,0.658824f,0.890196f}, {0.254902f,0.658824f,0.890196f}, {0.0f,0.0f,0.0f}, {0.0f,0.0f,0.0f}, 1.0f,4.0f,-1} //01 - Default
};
// 70 Verticies
// 0 Texture Coordinates
// 134 Normals
// 136 Triangles
static BYTE face_indicies[136][9] = {
// Line01
{12,11,0 ,0,1,1 ,0,0,0}, {0,1,12 ,1,2,0 ,0,0,0}, {13,12,1 ,2,0,2 ,0,0,0},
{1,2,13 ,2,3,2 ,0,0,0}, {14,13,2 ,1,2,3 ,0,0,0}, {2,3,14 ,3,1,1 ,0,0,0},
{15,14,3 ,4,5,4 ,0,0,0}, {3,4,15 ,4,6,4 ,0,0,0}, {16,15,4 ,7,8,7 ,0,0,0},
{4,5,16 ,7,9,7 ,0,0,0}, {17,16,5 ,10,11,10 ,0,0,0}, {5,6,17 ,10,12,10 ,0,0,0},
{18,17,6 ,13,14,14 ,0,0,0}, {6,7,18 ,14,14,13 ,0,0,0}, {19,18,7 ,15,16,17 ,0,0,0},
{7,8,19 ,17,18,15 ,0,0,0}, {20,19,8 ,19,15,18 ,0,0,0}, {8,9,20 ,18,19,19 ,0,0,0},
{21,20,9 ,19,19,19 ,0,0,0}, {9,10,21 ,19,19,19 ,0,0,0}, {11,21,10 ,20,21,22 ,0,0,0},
{10,0,11 ,22,23,20 ,0,0,0}, {0,10,9 ,24,25,26 ,0,0,0}, {1,0,9 ,27,24,26 ,0,0,0},
{1,9,8 ,27,26,28 ,0,0,0}, {2,1,8 ,29,27,28 ,0,0,0}, {2,8,7 ,29,28,30 ,0,0,0},
{3,2,7 ,31,29,30 ,0,0,0}, {7,6,5 ,30,32,33 ,0,0,0}, {3,7,5 ,31,30,33 ,0,0,0},
{3,5,4 ,31,33,34 ,0,0,0}, {14,15,16 ,5,35,36 ,0,0,0}, {16,17,18 ,36,37,13 ,0,0,0},
{14,16,18 ,5,36,13 ,0,0,0}, {20,21,11 ,38,21,20 ,0,0,0}, {20,11,12 ,38,20,39 ,0,0,0},
{19,20,12 ,40,38,39 ,0,0,0}, {19,12,13 ,40,39,41 ,0,0,0}, {18,19,13 ,13,40,41 ,0,0,0},
{14,18,13 ,5,13,41 ,0,0,0}
// Rectangle0
, {27,26,22 ,19,19,19 ,0,0,0}, {22,23,27 ,19,19,19 ,0,0,0}, {28,27,23 ,42,42,42 ,0,0,0},
{23,24,28 ,42,42,42 ,0,0,0}, {29,28,24 ,43,43,43 ,0,0,0}, {24,25,29 ,43,43,43 ,0,0,0},
{26,29,25 ,44,44,44 ,0,0,0}, {25,22,26 ,44,44,44 ,0,0,0}, {35,34,30 ,45,45,45 ,0,0,0},
{30,31,35 ,45,45,45 ,0,0,0}, {36,35,31 ,44,44,44 ,0,0,0}, {31,32,36 ,44,44,44 ,0,0,0},
{37,36,32 ,1,1,1 ,0,0,0}, {32,33,37 ,1,1,1 ,0,0,0}, {34,37,33 ,42,42,42 ,0,0,0},
{33,30,34 ,42,42,42 ,0,0,0}, {32,24,23 ,46,47,48 ,0,0,0}, {33,32,23 ,49,46,48 ,0,0,0},
{33,23,22 ,49,48,50 ,0,0,0}, {24,32,31 ,47,46,51 ,0,0,0}, {24,31,30 ,47,51,52 ,0,0,0},
{25,24,30 ,53,47,52 ,0,0,0}, {22,25,30 ,50,53,52 ,0,0,0}, {33,22,30 ,49,50,52 ,0,0,0},
{35,36,28 ,54,55,56 ,0,0,0}, {34,35,28 ,57,54,56 ,0,0,0}, {34,28,29 ,57,56,58 ,0,0,0},
{34,29,26 ,57,58,59 ,0,0,0}, {37,34,26 ,60,57,59 ,0,0,0}, {37,26,27 ,60,59,61 ,0,0,0},
{27,28,36 ,61,56,55 ,0,0,0}, {37,27,36 ,60,61,55 ,0,0,0}
// Rectangle1
, {43,42,38 ,62,63,62 ,0,0,0}, {38,39,43 ,62,64,62 ,0,0,0}, {44,43,39 ,65,66,65 ,0,0,0},
{39,40,44 ,65,67,65 ,0,0,0}, {45,44,40 ,68,69,68 ,0,0,0}, {40,41,45 ,68,70,68 ,0,0,0},
{42,45,41 ,71,72,71 ,0,0,0}, {41,38,42 ,71,73,71 ,0,0,0}, {51,50,46 ,19,19,19 ,0,0,0},
{46,47,51 ,19,19,19 ,0,0,0}, {52,51,47 ,74,75,74 ,0,0,0}, {47,48,52 ,74,76,74 ,0,0,0},
{53,52,48 ,1,1,1 ,0,0,0}, {48,49,53 ,1,1,1 ,0,0,0}, {50,53,49 ,77,78,77 ,0,0,0},
{49,46,50 ,77,79,77 ,0,0,0}, {47,46,40 ,80,81,82 ,0,0,0}, {48,47,40 ,83,80,82 ,0,0,0},
{48,40,39 ,83,82,84 ,0,0,0}, {49,48,39 ,85,83,84 ,0,0,0}, {49,39,38 ,85,84,86 ,0,0,0},
{41,40,46 ,87,82,81 ,0,0,0}, {38,41,46 ,86,87,81 ,0,0,0}, {49,38,46 ,85,86,81 ,0,0,0},
{50,44,45 ,88,89,90 ,0,0,0}, {50,45,42 ,88,90,91 ,0,0,0}, {53,50,42 ,92,88,91 ,0,0,0},
{53,42,43 ,92,91,93 ,0,0,0}, {44,50,51 ,89,88,94 ,0,0,0}, {44,51,52 ,89,94,95 ,0,0,0},
{43,44,52 ,93,89,95 ,0,0,0}, {53,43,52 ,92,93,95 ,0,0,0}
// Rectangle2
, {59,58,54 ,96,97,96 ,0,0,0}, {54,55,59 ,96,98,96 ,0,0,0}, {60,59,55 ,99,100,99 ,0,0,0},
{55,56,60 ,99,101,99 ,0,0,0}, {61,60,56 ,102,103,102 ,0,0,0},
{56,57,61 ,102,104,102 ,0,0,0}, {58,61,57 ,105,106,105 ,0,0,0},
{57,54,58 ,105,107,105 ,0,0,0}, {67,66,62 ,108,109,108 ,0,0,0},
{62,63,67 ,108,110,108 ,0,0,0}, {68,67,63 ,111,111,111 ,0,0,0},
{63,64,68 ,111,111,111 ,0,0,0}, {69,68,64 ,112,113,112 ,0,0,0},
{64,65,69 ,112,114,112 ,0,0,0}, {66,69,65 ,115,116,115 ,0,0,0},
{65,62,66 ,115,117,115 ,0,0,0}, {63,62,56 ,118,119,120 ,0,0,0},
{64,63,56 ,121,118,120 ,0,0,0}, {64,56,55 ,121,120,122 ,0,0,0},
{65,64,55 ,123,121,122 ,0,0,0}, {65,55,54 ,123,122,124 ,0,0,0},
{57,56,62 ,125,120,119 ,0,0,0}, {54,57,62 ,124,125,119 ,0,0,0},
{65,54,62 ,123,124,119 ,0,0,0}, {66,60,61 ,126,127,128 ,0,0,0},
{66,61,58 ,126,128,129 ,0,0,0}, {69,66,58 ,130,126,129 ,0,0,0},
{69,58,59 ,130,129,131 ,0,0,0}, {60,66,67 ,127,126,132 ,0,0,0},
{60,67,68 ,127,132,133 ,0,0,0}, {59,60,68 ,131,127,133 ,0,0,0},
{69,59,68 ,130,131,133 ,0,0,0}
};
static GLfloat vertices [70][3] = {
{-0.225293f,0.277979f,-0.183419f},{-0.138717f,0.113512f,-0.183419f},{-0.0421206f,0.0423053f,-0.183419f},
{-0.0112158f,-0.0204768f,-0.183419f},{-0.0112158f,-0.0204768f,-0.245813f},{0.143558f,-0.178058f,-0.158574f},
{-0.0114239f,-0.0202333f,-0.0700791f},{-0.0114239f,-0.0202333f,-0.126231f},{-0.0435355f,0.0439607f,-0.126232f},
{-0.139344f,0.114245f,-0.126232f},{-0.225308f,0.277997f,-0.126232f},{-0.226938f,0.276573f,-0.183419f},
{-0.140362f,0.112105f,-0.183419f},{-0.0437658f,0.0408991f,-0.183419f},{-0.0128611f,-0.021883f,-0.183419f},
{-0.012861f,-0.021883f,-0.245813f},{0.141913f,-0.179464f,-0.158574f},{-0.0130692f,-0.0216395f,-0.0700791f},
{-0.0130692f,-0.0216395f,-0.126231f},{-0.0451807f,0.0425545f,-0.126232f},{-0.140989f,0.112838f,-0.126232f},
{-0.226954f,0.276591f,-0.126232f},{0.5f,0.0640717f,0.468408f},{-0.5f,0.0640717f,0.468408f},
{-0.5f,0.0640717f,-0.468408f},{0.5f,0.0640717f,-0.468408f},{0.5f,0.0409403f,0.468408f},
{-0.5f,0.0409403f,0.468408f},{-0.5f,0.0409403f,-0.468408f},{0.5f,0.0409403f,-0.468408f},
{0.469695f,0.0640717f,-0.466089f},{-0.470743f,0.0640717f,-0.466089f},{-0.470743f,0.0640717f,0.435383f},
{0.469695f,0.0640717f,0.435383f},{0.469695f,0.0409403f,-0.466089f},{-0.470743f,0.0409403f,-0.466089f},
{-0.470743f,0.0409403f,0.435383f},{0.469695f,0.0409403f,0.435383f},{-0.127612f,-0.268937f,0.435383f},
{-0.466122f,0.057899f,0.435383f},{-0.466122f,0.0578989f,-0.46736f},{-0.127612f,-0.268937f,-0.46736f},
{-0.136359f,-0.277997f,0.435383f},{-0.474869f,0.0488395f,0.435383f},{-0.474869f,0.0488394f,-0.46736f},
{-0.136359f,-0.277997f,-0.46736f},{-0.154521f,-0.242956f,-0.00611468f},{-0.439233f,0.0319378f,-0.00611468f},
{-0.439233f,0.0319378f,0.283742f},{-0.154521f,-0.242956f,0.283742f},{-0.163268f,-0.252015f,-0.00611468f},
{-0.44798f,0.0228783f,-0.00611468f},{-0.44798f,0.0228783f,0.283742f},{-0.163268f,-0.252015f,0.283742f},
{0.0367829f,0.236702f,0.435383f},{0.471554f,0.0567427f,0.435383f},{0.471554f,0.0567428f,-0.46736f},
{0.0367829f,0.236702f,-0.46736f},{0.0319667f,0.225067f,0.435383f},{0.466737f,0.045107f,0.435383f},
{0.466737f,0.0451071f,-0.46736f},{0.0319666f,0.225067f,-0.46736f},{0.0713444f,0.222397f,-0.00611468f},
{0.437019f,0.0710374f,-0.00611465f},{0.437019f,0.0710374f,0.283742f},{0.0713444f,0.222397f,0.283742f},
{0.0665282f,0.210761f,-0.00611468f},{0.432203f,0.0594017f,-0.00611465f},{0.432203f,0.0594017f,0.283742f},
{0.0665282f,0.210761f,0.283742f}
};
static GLfloat normals [134][3] = {
{5.21317e-08f,-6.0994e-08f,-1.0f},{0.0f,0.0f,-1.0f},{1.04264e-07f,-1.21987e-07f,-1.0f},
{5.21324e-08f,-6.09932e-08f,-1.0f},{-0.649733f,0.760162f,7.19645e-08f},{-0.93964f,-0.342165f,-0.000315183f},
{-0.649731f,0.760164f,-3.0581e-08f},{0.239171f,-0.279825f,-0.929782f},{0.239172f,-0.279824f,-0.929782f},
{0.23917f,-0.279826f,-0.929782f},{0.241837f,-0.282948f,0.928146f},{0.241838f,-0.282947f,0.928146f},
{0.241837f,-0.282948f,0.928146f},{-0.985783f,-0.168011f,-0.00221993f},{-0.649723f,0.760171f,-2.38066e-08f},
{-1.74951e-07f,2.0469e-07f,1.0f},{-2.62426e-07f,3.07036e-07f,1.0f},{-2.62427e-07f,3.07035e-07f,1.0f},
{-8.74759e-08f,1.02345e-07f,1.0f},{0.0f,0.0f,1.0f},{-0.982042f,0.188656f,-0.00148408f},
{-0.981991f,0.18893f,-0.000321712f},{-0.649729f,0.760166f,-0.000411694f},{-0.649728f,0.760167f,-0.000411774f},
{0.885147f,0.465308f,0.00190792f},{0.88541f,0.464811f,9.15354e-05f},{0.805601f,0.592459f,-1.3272e-05f},
{0.705858f,0.708347f,-0.002984f},{0.710614f,0.703581f,-0.00112699f},{0.815274f,0.579075f,0.000663707f},
{0.814754f,0.579801f,0.00257541f},{0.783527f,0.621358f,0.000336083f},{0.713503f,0.700653f,-2.19426e-08f},
{0.713466f,0.70069f,-0.000129081f},{0.713432f,0.700724f,-9.69568e-09f},{-0.713432f,-0.700724f,-1.97854e-07f},
{-0.713466f,-0.70069f,0.000128945f},{-0.713502f,-0.700653f,2.19426e-08f},{-0.805601f,-0.592458f,1.32933e-05f},
{-0.705858f,-0.708347f,0.00298398f},{-0.710614f,-0.703581f,0.001127f},{-0.815274f,-0.579075f,-0.000663797f},
{-1.0f,0.0f,0.0f},{0.0f,4.36915e-08f,-1.0f},{1.0f,0.0f,0.0f},
{0.0f,-3.8012e-08f,1.0f},{1.57144e-08f,1.0f,3.06232e-08f},{1.17858e-08f,1.0f,2.29674e-08f},
{1.69514e-08f,1.0f,1.50172e-08f},{-1.70068e-08f,1.0f,1.5606e-08f},{-1.58577e-08f,1.0f,3.06232e-08f},
{-1.85538e-09f,1.0f,2.3409e-08f},{-1.18933e-08f,1.0f,2.29674e-08f},{1.72363e-09f,1.0f,2.25258e-08f},
{1.39153e-09f,-1.0f,-1.75568e-08f},{1.04191e-07f,-1.0f,-1.3322e-07f},{7.81431e-08f,-1.0f,-2.00413e-08f},
{-7.83383e-08f,-1.0f,-2.00413e-08f},{-1.72363e-09f,-1.0f,-2.25258e-08f},{-1.04451e-07f,-1.0f,-1.3322e-07f},
{-1.03302e-07f,-1.0f,-2.24701e-07f},{1.03263e-07f,-1.0f,-2.28013e-07f},{-6.20773e-06f,-6.42946e-06f,1.0f},
{-6.20772e-06f,-6.42945e-06f,1.0f},{-6.20774e-06f,-6.42947e-06f,1.0f},{-0.719404f,0.694592f,-6.16613e-08f},
{-0.719406f,0.69459f,-3.51796e-08f},{-0.719403f,0.694593f,-8.81429e-08f},{1.50847e-08f,-5.09603e-08f,-1.0f},
{1.50847e-08f,-5.09603e-08f,-1.0f},{1.50846e-08f,-5.09604e-08f,-1.0f},{0.719401f,-0.694595f,5.97285e-08f},
{0.7194f,-0.694596f,3.20872e-08f},{0.719403f,-0.694593f,8.73697e-08f},{0.719402f,-0.694594f,4.00337e-08f},
{0.719402f,-0.694594f,1.26422e-08f},{0.719403f,-0.694593f,6.74251e-08f},{-0.719402f,0.694593f,-5.11709e-08f},
{-0.719404f,0.694592f,3.49167e-08f},{-0.719401f,0.694595f,-1.37258e-07f},{0.694592f,0.719404f,-2.1375e-07f},
{0.694595f,0.719401f,-2.04332e-07f},{0.694592f,0.719404f,-2.10171e-07f},{0.694591f,0.719405f,3.84327e-07f},
{0.694592f,0.719404f,7.42926e-07f},{0.694594f,0.719402f,7.42639e-07f},{0.694595f,0.719401f,3.19312e-07f},
{0.694595f,0.719401f,-2.28627e-07f},{-0.694595f,-0.719401f,1.93196e-07f},{-0.694592f,-0.719404f,1.83233e-07f},
{-0.694595f,-0.719401f,2.11147e-07f},{-0.694595f,-0.719401f,-2.5597e-07f},{-0.694594f,-0.719402f,-5.30506e-07f},
{-0.694592f,-0.719404f,-5.29599e-07f},{-0.694592f,-0.719404f,1.64936e-07f},{-0.694591f,-0.719404f,-2.3947e-07f},
{2.50828e-06f,6.21619e-06f,-1.0f},{1.59852e-06f,4.17462e-06f,-1.0f},{3.41804e-06f,8.25776e-06f,-1.0f},
{-0.923975f,0.382452f,2.90557e-08f},{-0.923975f,0.382452f,2.68206e-08f},{-0.923975f,0.382452f,3.12907e-08f},
{1.77412e-08f,-6.40185e-08f,1.0f},{1.77412e-08f,-6.40185e-08f,1.0f},{1.77412e-08f,-6.40184e-08f,1.0f},
{0.923975f,-0.382452f,-6.2199e-08f},{0.923976f,-0.382451f,-5.62388e-08f},{0.923975f,-0.382452f,-6.81592e-08f},
{6.56902e-08f,-2.71903e-08f,-1.0f},{6.56901e-08f,-2.71904e-08f,-1.0f},{6.56902e-08f,-2.71903e-08f,-1.0f},
{0.923976f,-0.382449f,-1.85624e-08f},{1.3138e-07f,-5.43806e-08f,1.0f},{1.3138e-07f,-5.43805e-08f,1.0f},
{1.3138e-07f,-5.43807e-08f,1.0f},{-0.923976f,0.382451f,4.83364e-08f},{-0.923976f,0.38245f,5.95478e-08f},
{-0.923976f,0.382451f,3.7125e-08f},{-0.382452f,-0.923975f,9.21204e-08f},{-0.382449f,-0.923977f,7.84498e-08f},
{-0.382452f,-0.923975f,8.90087e-08f},{-0.382453f,-0.923975f,-3.96554e-07f},{-0.382452f,-0.923975f,-7.20529e-07f},
{-0.382449f,-0.923976f,-7.25227e-07f},{-0.382448f,-0.923977f,-3.93149e-07f},{-0.382449f,-0.923977f,8.72022e-08f},
{0.382449f,0.923977f,-9.57685e-08f},{0.382452f,0.923975f,-9.95073e-08f},{0.382449f,0.923977f,-1.20405e-07f},
{0.382448f,0.923977f,3.70191e-07f},{0.382449f,0.923976f,6.83379e-07f},{0.382452f,0.923975f,6.78175e-07f},
{0.382452f,0.923975f,-8.89145e-08f},{0.382453f,0.923975f,3.64465e-07f}
};
GLfloat textures[1][2]={{0.0f,0.0f}};
/*Material indicies*/
/*{material index,face count}*/
static int material_ref [2][2] = {
{0,40},
{1,96}
};
void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha)
{
GLfloat d[4];
d[0]=f[0];
d[1]=f[1];
d[2]=f[2];
d[3]=alpha;
glMaterialfv (GL_FRONT_AND_BACK,mode,d);
}
/*
* SelectMaterial uses OpenGL commands to define facet colors.
*
* Returns:
* Nothing
*/
static void SelectMaterial(int i)
{
//
// Define the reflective properties of the 3D Object faces.
//
glEnd();
GLfloat alpha=materials[i].alpha;
MyMaterial (GL_AMBIENT, materials[i].ambient,alpha);
MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha);
MyMaterial (GL_SPECULAR, materials[i].specular,alpha);
MyMaterial (GL_EMISSION, materials[i].emission,alpha);
glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp);
glBegin(GL_TRIANGLES);
};
GLint CWindGateModelLibrary::Gen3DObjectList()
{
int i;
int j;
GLint lid=glGenLists(1);
int mcount=0;
int mindex=0;
glNewList(lid, GL_COMPILE);
glBegin (GL_TRIANGLES);
for(i=0;i<sizeof(face_indicies)/sizeof(face_indicies[0]);i++)
{
if(!mcount)
{
SelectMaterial(material_ref[mindex][0]);
mcount=material_ref[mindex][1];
mindex++;
}
mcount--;
for(j=0;j<3;j++)
{
int vi=face_indicies[i][j];
int ni=face_indicies[i][j+3];//Normal index
int ti=face_indicies[i][j+6];//Texture index
glNormal3f (normals[ni][0],normals[ni][1],normals[ni][2]);
glTexCoord2f(textures[ti][0],textures[ti][1]);
glVertex3f (vertices[vi][0],vertices[vi][1],vertices[vi][2]);
}
}
glEnd ();
glEndList();
return lid;
};