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

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>
            欧美日韩免费观看中文| 一区二区三区日韩精品视频| 91久久黄色| **欧美日韩vr在线| 在线视频国产日韩| 亚洲狠狠丁香婷婷综合久久久| 亚洲激情一区| 亚洲午夜精品福利| 午夜在线一区二区| 久久久久.com| 亚洲电影第三页| 艳女tv在线观看国产一区| 亚洲一区二区在线观看视频| 久久精品国产99| 欧美高清在线观看| 国产嫩草影院久久久久 | 亚洲欧洲精品一区二区| 亚洲视频一区在线观看| 久久久噜噜噜久久人人看| 欧美成人日韩| 国产精品啊啊啊| 亚洲第一福利在线观看| 亚洲系列中文字幕| 欧美11—12娇小xxxx| 一区二区三区国产在线观看| 久久久久久自在自线| 欧美日韩国产在线播放| 国产一区二区久久| 亚洲视频在线观看网站| 久久深夜福利免费观看| 日韩午夜免费| 久久久999精品| 国产精品美女主播在线观看纯欲| 怡红院av一区二区三区| 亚洲欧美在线免费| 亚洲美女毛片| 欧美激情偷拍| 99精品国产热久久91蜜凸| 久久精品二区亚洲w码| 欧美成人精品一区二区| 亚洲制服少妇| 欧美久久综合| 原创国产精品91| 久久久7777| 亚洲一区国产视频| 欧美午夜影院| 亚洲久久视频| 欧美成熟视频| 久久久久久久综合色一本| 国产精品网站在线观看| 欧美大片免费久久精品三p| 国产美女精品免费电影| 一区二区三区视频在线| 亚洲第一久久影院| 久久中文久久字幕| 在线日韩中文字幕| 美女露胸一区二区三区| 欧美在线精品免播放器视频| 国产伪娘ts一区| 久久久精品国产99久久精品芒果| 西瓜成人精品人成网站| 国产亚洲综合性久久久影院| 欧美中在线观看| 久久国产黑丝| 亚洲国产欧美日韩精品| 亚洲国产精品久久久久婷婷老年 | 久久精品国产亚洲精品| 韩国自拍一区| 玖玖在线精品| 女女同性女同一区二区三区91| 在线观看国产日韩| 亚洲国产欧美一区二区三区丁香婷| 欧美激情二区三区| 亚洲色图综合久久| 亚洲在线视频观看| 一区二区三区在线观看视频| 亚洲国产精品久久人人爱蜜臀| 你懂的视频欧美| 亚洲午夜在线| 久久九九国产| 一本到12不卡视频在线dvd| av成人免费在线观看| 国产农村妇女精品一二区| 另类欧美日韩国产在线| 欧美成人免费在线观看| 午夜精品视频在线| 久久青草久久| 中文一区二区在线观看| 欧美一区二区三区免费看| 亚洲激情视频在线播放| 在线视频亚洲欧美| 国产一区二区日韩| 亚洲日韩视频| 好吊色欧美一区二区三区视频| 亚洲国产精品久久人人爱蜜臀| 国产精品羞羞答答| 91久久精品久久国产性色也91| 国产精品女同互慰在线看| 欧美成人精品激情在线观看| 国产精品日本精品| 亚洲国产三级| 影音国产精品| 午夜精品久久久久久久白皮肤 | 亚洲精品中文字| 国产情侣久久| 91久久精品一区二区三区| 国内久久婷婷综合| 亚洲综合99| 女人香蕉久久**毛片精品| 久久精品夜色噜噜亚洲aⅴ| 欧美深夜影院| 欧美在线看片| 亚洲欧美国产视频| 亚洲精品久久久久中文字幕欢迎你| 宅男精品视频| 夜夜嗨网站十八久久| 老司机久久99久久精品播放免费| 午夜免费在线观看精品视频| 欧美日韩美女在线| 亚洲国产高清在线| 精品动漫3d一区二区三区| 亚洲一区二区三区涩| 一区二区三区福利| 欧美激情一区二区三区高清视频| 麻豆av福利av久久av| 激情久久婷婷| 久久久久久久综合| 久久久精品日韩| 国产视频观看一区| 99精品欧美一区| 中文av字幕一区| 欧美日韩喷水| 国产精品99久久不卡二区| 亚洲综合色在线| 欧美吻胸吃奶大尺度电影| 99国产成+人+综合+亚洲欧美| 一区二区三区蜜桃网| 欧美视频在线不卡| 夜夜嗨av一区二区三区网站四季av| 99精品热视频只有精品10| 欧美精品在线看| 亚洲精品欧美在线| 亚洲社区在线观看| 国产精品热久久久久夜色精品三区 | 国产精品99久久久久久人| 欧美视频在线观看视频极品| 一本色道久久99精品综合| 亚洲欧美一区二区原创| 国产欧美精品| 欧美在线黄色| 欧美激情一区二区三区成人| 一区二区冒白浆视频| 国产精品扒开腿做爽爽爽软件| 亚洲午夜精品久久| 久久久噜噜噜久噜久久| 在线播放国产一区中文字幕剧情欧美| 久久久久久久999| 亚洲欧洲三级| 欧美在线一区二区三区| 有码中文亚洲精品| 欧美区一区二区三区| 亚洲性人人天天夜夜摸| 麻豆国产va免费精品高清在线| 亚洲精品乱码| 国产精品一区二区久久国产| 久久亚洲国产精品一区二区| 9l国产精品久久久久麻豆| 久久婷婷一区| 亚洲影视中文字幕| 亚洲丁香婷深爱综合| 欧美亚州一区二区三区| 久久久久一区二区三区| 一区二区三区欧美视频| 伊人久久亚洲影院| 欧美精品在线视频观看| 亚洲欧美日韩成人| 亚洲精品1区| 久久久久久有精品国产| 一区二区av在线| 韩日视频一区| 欧美色欧美亚洲另类二区| 久久精品国产亚洲aⅴ| 夜夜嗨av一区二区三区网站四季av| 久久在线免费观看| 亚洲综合视频在线| 亚洲欧洲三级| 精品96久久久久久中文字幕无| 国产精品你懂的在线| 欧美日韩美女在线| 欧美激情一区二区三区成人| 久久精品一区二区三区四区| 亚洲一区制服诱惑| 艳女tv在线观看国产一区| 欧美激情一区二区三级高清视频| 久久精品国产96久久久香蕉| 亚洲女ⅴideoshd黑人| 在线一区二区三区四区五区| 亚洲国产综合在线| 在线成人小视频| 国产亚洲美州欧州综合国|