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

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久久国产综合精品| 久久视频在线视频| 亚洲精品人人| 亚洲视频在线观看网站| 国产精品视频yy9099| 久久琪琪电影院| 蜜臀av一级做a爰片久久| 99re这里只有精品6| 一区二区三区视频观看| 国产一二精品视频| 亚洲福利视频在线| 欧美午夜激情在线| 久久免费午夜影院| 欧美成熟视频| 欧美有码在线视频| 美女免费视频一区| 午夜视频在线观看一区二区| 久久精品一二三区| 一本大道久久精品懂色aⅴ| 亚洲一区二区三区高清不卡| 亚洲成人自拍视频| 99热精品在线| 在线视频国产日韩| 亚洲视频在线观看一区| 亚洲大胆美女视频| 亚洲一区二区三区免费观看 | 亚洲最新合集| 性欧美激情精品| 亚洲毛片一区二区| 亚欧成人在线| 亚洲天堂黄色| 欧美1区3d| 久久精品视频va| 欧美日韩亚洲一区二区三区在线观看| 欧美一级视频一区二区| 欧美激情中文字幕一区二区| 久久免费视频在线| 国产精品免费网站在线观看| 亚洲国产成人在线播放| 国模大胆一区二区三区| 99re6这里只有精品| 亚洲人成网在线播放| 久久精品视频在线看| 亚洲在线播放电影| 欧美日韩三区| 亚洲激情视频在线播放| **网站欧美大片在线观看| 亚洲欧美在线播放| 亚洲专区欧美专区| 欧美日本在线一区| 91久久国产综合久久91精品网站 | 欧美bbbxxxxx| 理论片一区二区在线| 国产日韩欧美在线| 亚洲欧美国产视频| 午夜精品视频在线观看一区二区| 欧美精品一卡二卡| 亚洲国产精品成人一区二区| 亚洲国产欧洲综合997久久| 久久久999精品| 久久天天躁狠狠躁夜夜爽蜜月 | 久久综合狠狠综合久久综合88| 久久国产日韩欧美| 国产午夜久久久久| 性色av一区二区三区| 久久精品99久久香蕉国产色戒| 国产欧美一区二区三区另类精品| 亚洲主播在线| 久久久7777| 激情视频一区二区| 久久午夜电影网| 亚洲国产福利在线| 妖精成人www高清在线观看| 模特精品裸拍一区| 亚洲经典一区| 亚洲一区三区视频在线观看 | 久久精品国产久精国产爱| 久久久久国产精品一区三寸| 黄页网站一区| 欧美黄污视频| 制服丝袜激情欧洲亚洲| 久久久久国色av免费看影院 | 欧美日韩另类一区| 一区二区三区日韩| 久久久久久一区| 91久久国产综合久久91精品网站| 欧美精品电影在线| 亚洲天堂久久| 美日韩精品视频| 99精品视频网| 国产一区二区三区久久久久久久久| 久久综合中文字幕| 99精品免费视频| 久久综合九色九九| 亚洲最新中文字幕| 红桃视频国产一区| 欧美日韩欧美一区二区| 欧美一级网站| 日韩午夜电影av| 噜噜噜在线观看免费视频日韩| 99re热这里只有精品视频| 国产嫩草影院久久久久| 欧美不卡一区| 欧美专区在线播放| 亚洲乱码久久| 男男成人高潮片免费网站| 亚洲天堂成人| 91久久线看在观草草青青| 国产伦精品一区二区三区在线观看 | 亚洲美女中出| 国产在线播精品第三| 欧美色123| 免费在线观看一区二区| 性久久久久久久久久久久| 亚洲人体一区| 欧美激情四色 | 亚洲日韩视频| 国内精品久久久久久久影视蜜臀 | 噜噜噜91成人网| 亚洲欧美日韩专区| 99v久久综合狠狠综合久久| 免费毛片一区二区三区久久久| 欧美一区久久| 亚洲制服少妇| 亚洲一区影音先锋| 日韩亚洲欧美高清| 亚洲韩国青草视频| 激情视频一区| 国语精品中文字幕| 国产日韩欧美中文| 国产美女一区| 国产精品一区三区| 国产精品日产欧美久久久久| 欧美日韩黄色大片| 欧美另类99xxxxx| 欧美精品日韩三级| 欧美好骚综合网| 欧美激情一区三区| 欧美大片在线看免费观看| 免费短视频成人日韩| 理论片一区二区在线| 欧美成人精品1314www| 免费观看不卡av| 蜜臀av一级做a爰片久久 | 午夜国产欧美理论在线播放 | 欧美刺激性大交免费视频 | 亚洲区在线播放| 亚洲美女视频在线观看| 亚洲精品一区在线| 999在线观看精品免费不卡网站| 亚洲人成高清| 亚洲午夜一区二区| 西西人体一区二区| 久久亚洲二区| 亚洲激情精品| 亚洲在线播放| 久久久久看片| 欧美精品aa| 国产精品一区二区久激情瑜伽| 国产精品视频一二三| 国产亚洲精品久久飘花 | 国产精品人人做人人爽人人添| 国产精品永久| 在线日韩成人| 亚洲无线视频| 久久偷看各类wc女厕嘘嘘偷窃| 欧美激情一区二区三区在线 | 久久综合一区二区三区| 亚洲国产日本| 亚洲综合国产激情另类一区| 久久免费视频网站| 欧美日韩一区二区三区免费看 | 国产精品自拍一区| 亚洲电影在线| 亚洲欧美激情在线视频| 开心色5月久久精品| 亚洲精品视频啊美女在线直播| 亚洲一区国产视频| 欧美96在线丨欧| 国产情侣久久| 日韩一级在线观看| 久久裸体视频| 在线亚洲欧美| 欧美激情精品久久久久久久变态| 国产女主播一区二区三区| 亚洲国产日韩欧美| 欧美一乱一性一交一视频| 亚洲电影下载| 久久久久九九九| 国产精品一二三视频| 一区二区91| 亚洲国产精品一区二区www| 亚洲欧洲99久久|