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

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>
            欧美色播在线播放| 午夜国产精品视频| 麻豆freexxxx性91精品| 一区二区三区四区精品| 欧美日韩亚洲一区二区三区在线| 一本色道久久综合亚洲91| 亚洲一区二区久久| 国内精品久久久久国产盗摄免费观看完整版| 亚洲一线二线三线久久久| 久久影院午夜片一区| 欧美不卡一卡二卡免费版| 影视先锋久久| 亚洲国产91| 国产亚洲欧美日韩日本| 亚洲精品乱码久久久久久久久| 欧美成人一区二区在线| 亚洲永久视频| 亚洲精品在线观看视频| 午夜精品美女久久久久av福利| 精品动漫3d一区二区三区免费版 | 亚洲乱码国产乱码精品精| 久久久久久久一区| 中文在线资源观看网站视频免费不卡| 欧美日韩免费观看一区=区三区| 久久午夜视频| 亚洲免费电影在线| 欧美视频四区| 亚洲专区一二三| 午夜欧美精品久久久久久久| 黄网动漫久久久| 在线免费精品视频| 欧美激情视频给我| 久久天天综合| 久久久久se| 久久久久久夜| 亚洲久久一区| 在线成人免费观看| 欧美在线播放一区| 欧美激情视频给我| 亚洲国产老妈| 久久精品女人天堂| 在线视频亚洲一区| 国产一区久久久| 性欧美精品高清| 亚洲国产你懂的| 午夜精品久久久99热福利| 国产女人aaa级久久久级| 香蕉久久一区二区不卡无毒影院| 欧美在线视频不卡| 亚洲精品社区| 很黄很黄激情成人| 国产精品系列在线播放| 欧美特黄a级高清免费大片a级| 久久精品视频播放| 日韩视频免费在线观看| 欧美色一级片| 欧美另类视频在线| 国产精品福利在线观看| 欧美三级黄美女| 欧美日韩大片| 亚洲视频精选在线| 亚洲午夜精品福利| 在线午夜精品| 午夜精品久久久久久| 欧美激情一区二区三区| 欧美a一区二区| 欧美一区二区免费观在线| 欧美成人精品在线观看| 欧美一区二区三区在| 中日韩男男gay无套| 亚洲欧美视频一区二区三区| 久久九九精品99国产精品| 午夜精品成人在线| 亚洲一区二区三区中文字幕 | 亚洲中无吗在线| 久久久午夜视频| 欧美美女喷水视频| 亚洲视频日本| 欧美亚洲一区二区三区| 久久久99久久精品女同性| 亚洲男人的天堂在线观看| 欧美亚洲三区| 久久精品国产一区二区三| 亚洲电影下载| aa级大片欧美| 久久免费视频一区| 国产嫩草一区二区三区在线观看| 国产一区二区精品久久91| 亚洲国产日本| 亚洲一级电影| 久久精品二区三区| 国产精品―色哟哟| 性欧美办公室18xxxxhd| 亚洲美女啪啪| 久久全国免费视频| 久久精品视频一| 国产欧美日韩精品一区| 在线中文字幕一区| 欧美在线国产| 91久久久久久久久久久久久| 亚洲美女福利视频网站| 亚洲综合国产激情另类一区| 亚洲精选大片| 在线成人激情| 久久爱www久久做| 亚洲久久一区二区| 久久精品一区二区三区不卡| 国产精品网曝门| 亚洲一区国产| 欧美午夜精品理论片a级按摩| 亚洲欧美日韩精品综合在线观看 | 在线观看一区欧美| 欧美成人精品1314www| 欧美丰满少妇xxxbbb| 亚洲素人一区二区| 极品少妇一区二区| 久久在线视频在线| 国产精品永久在线| 夜夜爽夜夜爽精品视频| 99视频在线精品国自产拍免费观看 | 亚洲精品麻豆| 在线精品视频一区二区三四| 久久精品卡一| 国产精品theporn| 欧美激情中文不卡| 国产精品亚洲人在线观看| 性欧美videos另类喷潮| 亚洲国产精品一区制服丝袜| 噜噜爱69成人精品| 亚洲大胆美女视频| 鲁大师成人一区二区三区| 亚洲欧美日韩国产成人| 欧美一区二区三区在线观看视频| 亚洲一区二区三区三| 欧美国产激情| 亚洲精品美女在线观看| 国产欧美一区二区三区国产幕精品| 一区二区三区久久网| 鲁大师成人一区二区三区| 亚洲午夜精品一区二区| 久热精品在线| 亚洲日本理论电影| 亚洲男女自偷自拍图片另类| 日韩一级免费| 欧美日韩一区二区精品| 夜色激情一区二区| 在线观看一区视频| 国产一区亚洲一区| 久久www成人_看片免费不卡| 欧美一级播放| 99国产精品国产精品毛片| 黑人一区二区| 欧美激情精品久久久久久蜜臀| 欧美成人精品在线视频| 亚洲午夜精品网| 在线观看欧美日本| 欧美国产视频在线观看| 香蕉久久久久久久av网站 | 欧美成人久久| 亚洲精品少妇网址| 欧美电影免费观看高清| 亚洲精品网址在线观看| 国产亚洲精品aa| 欧美视频在线观看免费| 欧美在线观看www| 一本久久综合亚洲鲁鲁五月天| 久久青青草综合| 亚洲专区国产精品| 国产精品国产三级国产aⅴ9色| 久久av在线看| 亚洲欧美日韩国产成人| 欧美国产第一页| 欧美粗暴jizz性欧美20| 99国产精品私拍| 一区二区三区日韩精品| 在线观看日韩www视频免费| 欧美日本国产一区| 久久精品国产免费| 午夜天堂精品久久久久| 欧美猛交免费看| 欧美日韩亚洲高清一区二区| 亚洲欧洲午夜| 亚洲图片在线观看| 国产一区激情| 欧美日韩中文字幕在线视频| 亚洲欧美日韩精品综合在线观看| 欧美影视一区| 亚洲国产精品一区二区尤物区| 欧美激情精品| 久久国产日韩欧美| 亚洲福利视频一区| 欧美一区免费| 最新亚洲激情| 国产九九精品视频| 久久影视三级福利片| 亚洲精品欧美| 欧美sm视频| 亚洲高清自拍| 国产日韩精品一区二区三区| 欧美fxxxxxx另类|