青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

        本文將介紹如何從Obj文件格式中創建3D對象,我們使用的是Nate Millerobj格式加載類。

This would be very useful to create large Virtual Reality applications as we could make use of the readily available 3D model files or make use of modeling tools to create these models and load them instead of creating them programatically. The .obj format is a very simple and popular format and files of other types such 3D Studio (.3ds) can be exported to this format or converted using tools such as 3D Exploration. This .obj loading code cannot read textures, it can only also read .mtl files in addition to the .obj file and thus make use of material data too.

1, Nate Millerobj文件加載類,其完整源代碼可以從http://www.pobox.com/~ndr處下載。

Glm頭文件

2, 在第17篇的基礎上,CCY457OpenGLView類中加入下述變量,用來表示不同物體類型

    GLuint m_MonitorList; //顯示器
    GLuint m_ChairList; //椅子
    GLuint m_PotList; //花瓶
    GLuint m_ComputerList; //計算機
    int m_nObjectNo;

2, InitializeOpenGL函數中加入對LoadModelsFromFiles的調用

3, 繪制函數修改如下:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數
    
//Position Camera
    gluLookAt(m_PosX,m_PosY,m_PosZ,m_DirX,m_DirY,m_DirZ,0.0f,1.0f,0.0f);
    
//Draw the Scene
    
//Draw the floor
    
// Draw the ground, we do manual shading to a darker green
    
// in the background to give the illusion of depth
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, m_Texture[
3]);
    glBegin(GL_POLYGON);
    glColor3ub(
0,255,0);
    glTexCoord2f(
0.0f0.0f);
    glVertex3f(
-2.0f0.0f0.0f);
    glTexCoord2f(
1.0f0.0f);
    glVertex3f(
2.0f,0.0f0.0f);
    glColor3ub(
0,100,0);    
    glTexCoord2f(
1.0f1.0f);
    glVertex3f(
2.0f0.0f-2.0f);
    glTexCoord2f(
0.0f1.0f);
    glVertex3f(
-2.0f,0.0f-2.0f);
    glEnd();
    glDisable(GL_TEXTURE_2D);
    
//Draw the Cube
    
// Save the matrix state and do the rotations
    glPushMatrix();
    glTranslatef(
-1.0f,0.6f,-1.0f);
    
// Draw jet at new orientation, put light in correct position
    
// before rotating the jet
    glRotatef(m_xRot,1.0f,0.0f,0.0f);
    glRotatef(m_yRot,
0.0f,1.0f,0.0f);
    DrawCube(FALSE);
    
// Restore original matrix state
    glPopMatrix();    
    
// Get ready to draw the shadow and the ground
    
// First disable lighting and save the projection state
    glDisable(GL_DEPTH_TEST);
    glDisable(GL_LIGHTING);
    glPushMatrix();
    
// Multiply by shadow projection matrix
    glMultMatrixf((GLfloat *)m_ShadowMat);
    glTranslatef(
-1.0f,0.6f,-1.0f);
    glRotatef(m_xRot,
1.0f,0.0f,0.0f);
    glRotatef(m_yRot,
0.0f,1.0f,0.0f);
    
// Pass true to indicate drawing shadow
    DrawCube(TRUE);    
    
// Restore the projection to normal
    glPopMatrix();
    
// Restore lighting state variables
    glEnable(GL_DEPTH_TEST);
    
// Draw the light source
    glPushMatrix();
    glTranslatef(
1.5f,1.5f,-1.0f);
    glColor3ub(
255,255,0);
    glutSolidSphere(
0.01f,10,10);
    glPopMatrix();
    glEnable(GL_LIGHTING);
}
void CCY457OpenGLView::DrawCube (BOOL bShadow)
{
    
// Set material color, note we only have to set to black
    
// for the shadow once
    if(!bShadow)
    {
        
switch (m_nObjectNo)
        {
        
case 0: glCallList(m_ChairList);
            
break;
        
case 1: glCallList(m_PotList);
            
break;
        
case 2: glCallList(m_ComputerList);
            
break;
        
case 3: glCallList(m_MonitorList);
            
break;
        
case 4: DrawCubeTex();
            
break;
        }
    }
    
else
    {
        glColor3ub(
0,0,0);
        
switch (m_nObjectNo)
        {
        
case 0: glCallList(m_ChairList);
            
break;
        
case 1: glCallList(m_PotList);
            
break;
        
case 2: glCallList(m_ComputerList);
            
break;
        
case 3: glCallList(m_MonitorList);
            
break;
        
case 4: DrawCubeNoTex();
            
break;    
        }
    }
}

4, 加載Obj文件的具體實現代碼:

//Load all the Models from the Files of type .obj
void CCY457OpenGLView::LoadModelsFromFiles()
{
    GLfloat scalefactor 
= 0.0;
    
//Load Computer from file
    GLMmodel *object1;
    object1 
= glmReadOBJ("models/computer.obj");
    
if(!scalefactor) 
    {
        scalefactor 
= glmUnitize(object1);
    } 
    
else 
    {
        glmScale(object1, scalefactor);
    }
    glmScale(object1, 
2.5);    
    
/* build a display list */
    m_ComputerList 
= glmList(object1, GLM_SMOOTH);
    
/* nuke it, we don't need it anymore */
    glmDelete(object1);    
    
//Load Chair From File
    GLMmodel *object2;
    scalefactor 
= 0.0;
    object2 
= glmReadOBJ("models/chair04.obj");
    
if(!scalefactor) 
    {
        scalefactor 
= glmUnitize(object2);
    } 
    
else 
    {
        glmScale(object2, scalefactor);
    }
    glmScale(object2, 
5.0);    
    
/* build a display list */
    m_ChairList 
= glmList(object2, GLM_SMOOTH);
    
/* nuke it, we don't need it anymore */
    glmDelete(object2);    
    
//Load Monitor from file
    GLMmodel *object5;
    scalefactor 
= 0.0;
    object5 
= glmReadOBJ("models/samsung.obj");
    
if(!scalefactor) 
    {
        scalefactor 
= glmUnitize(object5);
    } 
    
else 
    {
        glmScale(object5, scalefactor);
    }
    glmScale(object5, 
0.5);    
    
/* build a display list */
    m_MonitorList 
= glmList(object5, GLM_SMOOTH);
    
/* nuke it, we don't need it anymore */
    glmDelete(object5);    
    
//Load Phone Object from file
    GLMmodel *object6;
    scalefactor 
= 0.0;
    object6 
= glmReadOBJ("models/plant2.obj");
    
if(!scalefactor) 
    {
        scalefactor 
= glmUnitize(object6);
    } 
    
else 
    {
        glmScale(object6, scalefactor);
    }
    glmScale(object6, 
0.5);    
    
/* build a display list */
    m_PotList 
= glmList(object6, GLM_SMOOTH);
    
/* nuke it, we don't need it anymore */
    glmDelete(object6);        
}

 

作者:洞庭散人

出處:http://phinecos.cnblogs.com/    

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/07/1328957.html
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品亚洲| 在线视频精品一区| 欧美在线视频免费| 午夜精品久久久99热福利| 国产精品视频内| 久久精品国产第一区二区三区最新章节 | 欧美午夜精品久久久久久久 | 国产精品视频网站| 久久尤物视频| 免费成人黄色| 亚洲欧美在线免费观看| 欧美一区三区二区在线观看| 在线观看视频日韩| 99国产精品久久久久久久久久| 国产精品九九| 欧美成人一品| 国产精品高潮呻吟久久| 久久久亚洲国产美女国产盗摄| 免费影视亚洲| 香蕉久久夜色精品| 欧美 日韩 国产一区二区在线视频 | 欧美激情四色 | 久久久综合精品| 欧美黑人国产人伦爽爽爽| 亚洲欧美日韩国产综合| 久久嫩草精品久久久精品一| 欧美a级一区| 久久久91精品国产一区二区三区 | 开心色5月久久精品| 欧美激情第1页| 久久国内精品视频| 欧美日韩精品| 欧美69视频| 国产农村妇女精品一二区| 亚洲激情在线播放| 国产精品入口尤物| 亚洲精品一区二区三| 激情视频一区二区三区| 国产精品99久久久久久www| 狠狠久久亚洲欧美专区| 99一区二区| 日韩午夜在线观看视频| 久久国产精品久久久久久久久久| 亚洲三级色网| 狼人社综合社区| 久久精品国产成人| 国产日产欧产精品推荐色| 日韩视频精品在线| 亚洲精品一二三区| 欧美成人综合在线| 欧美国产在线电影| 亚洲高清中文字幕| 久久久久久久久久久一区| 久久精品国产亚洲一区二区| 国产精品日韩在线| 亚洲小说春色综合另类电影| 亚洲天堂视频在线观看| 欧美精品一区二区高清在线观看| 男女精品网站| 亚洲激情网站免费观看| 麻豆成人在线观看| 欧美黄色小视频| 91久久午夜| 欧美另类极品videosbest最新版本| 欧美高清视频一二三区| 最新亚洲激情| 欧美精选一区| 亚洲小少妇裸体bbw| 欧美在线不卡视频| 一区二区在线观看视频| 久久嫩草精品久久久精品| 欧美jjzz| 99ri日韩精品视频| 欧美日韩中文字幕精品| 亚洲午夜精品福利| 久久久欧美一区二区| 在线免费观看一区二区三区| 蜜乳av另类精品一区二区| 亚洲韩国日本中文字幕| 9人人澡人人爽人人精品| 国产精品成av人在线视午夜片| 亚洲一区二区影院| 老妇喷水一区二区三区| 日韩视频免费在线| 国产精品v一区二区三区| 亚洲欧美影音先锋| 欧美韩日一区二区| 亚洲欧美激情一区二区| 国产一区二区三区久久久久久久久| 久久青草欧美一区二区三区| 亚洲主播在线| 在线播放中文字幕一区| 久久精品国内一区二区三区| 亚洲欧洲视频| 性欧美xxxx视频在线观看| 激情视频亚洲| 国产精品成人在线| 久久一本综合频道| 亚洲少妇最新在线视频| 欧美大成色www永久网站婷| 一区二区三区你懂的| 国产一区二区三区直播精品电影| 免费观看成人www动漫视频| 一区二区av在线| 免费成人你懂的| 亚洲欧美综合v| 亚洲激情中文1区| 国产亚洲欧美另类中文| 欧美日韩国产免费| 久久午夜精品一区二区| 亚洲一区二区精品在线观看| 亚洲高清视频在线| 久久久精品免费视频| 在线亚洲精品| 亚洲韩国日本中文字幕| 国产一区二区三区四区在线观看| 欧美精品18videos性欧美| 久久综合九色综合网站| 性欧美xxxx大乳国产app| 一本一本久久a久久精品牛牛影视| 欧美成人激情视频免费观看| 久久精品91久久香蕉加勒比| 亚洲综合色婷婷| 99视频日韩| 亚洲国产欧美一区二区三区久久| 国产欧美一区二区三区在线老狼| 欧美日韩亚洲一区二区三区| 久久天堂成人| 久久嫩草精品久久久精品| 久久福利影视| 欧美在线亚洲在线| 欧美一区二区久久久| 亚洲一区中文字幕在线观看| 99视频在线精品国自产拍免费观看| 亚洲电影在线免费观看| 欧美国产日韩一区二区在线观看| 久久综合九色综合欧美就去吻 | 国产一区91精品张津瑜| 国产精品久久亚洲7777| 国产精品美女一区二区| 国产精品国产精品| 国产精品久久久久aaaa九色| 国产精品久久久久久久app| 欧美色欧美亚洲高清在线视频| 欧美日韩国产一区二区三区| 欧美精品一区二区三区很污很色的| 欧美岛国在线观看| 欧美日本在线视频| 欧美日韩免费观看一区三区| 国产精品v亚洲精品v日韩精品| 国产精品magnet| 国产欧美日韩视频| 韩日欧美一区二区| 最新亚洲视频| 亚洲一区黄色| 久久精品国语| 欧美国产日韩一二三区| 亚洲精品一区二区三区蜜桃久 | 欧美国产日韩在线观看| 亚洲日本一区二区| 一区二区欧美激情| 欧美在线观看一区二区| 裸体女人亚洲精品一区| 欧美日本国产一区| 国产亚洲一区在线| 亚洲精品美女久久7777777| 在线视频欧美日韩| 久久久在线视频| 亚洲国产一区在线| 亚洲素人在线| 久久久久久97三级| 欧美日韩亚洲一区二区三区四区| 国产美女精品在线| 亚洲国产一区二区三区在线播| 99亚洲一区二区| 久久久综合精品| 日韩视频在线你懂得| 欧美一区不卡| 欧美区一区二| 影音先锋中文字幕一区| 中文在线资源观看网站视频免费不卡| 欧美一区二区大片| 亚洲成人在线视频播放| 亚洲另类视频| 久久精品国产99国产精品澳门| 欧美精品免费在线观看| 狠狠色丁香久久综合频道| 日韩视频免费| 免费在线亚洲欧美| 香蕉成人伊视频在线观看| 欧美激情一区二区三区在线| 韩国v欧美v日本v亚洲v| 亚洲综合欧美| 亚洲国产综合91精品麻豆| 久久久国产精品亚洲一区 | 亚洲精品你懂的| 久久全球大尺度高清视频| 99视频一区二区| 欧美精品一区二区三区蜜桃 | 亚洲欧洲精品一区二区三区不卡|