3ds模型 流動的雲

2021-08-15 14:31:37 字數 2200 閱讀 8793

在「pudn.com

opengl

sky」中找來sky.h 和sky.cpp 這個叫天空球,或叫天空穹,頂的**

把它加到我們的場景中,為了匹配我們的程式,部分**需要修改.

修改後的sky.h:

// sky.h:  csky 類介面. 

// //

#if !defined(afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_)

#define afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_

#include#include#include#if _msc_ver > 1000

#pragma once

#endif // _msc_ver > 1000

class csky ;

#endif // !defined(afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_)

修改後的sky.cpp:

// sky.cpp: csky類的實現。  

//

//

#include "sky.h"

//

// 建造/銷毀

//

csky::csky()

csky::~csky()

void csky::initsky(float skyx,float skyy,float skyz,float skyr,unsigned int texture)

void csky::showsky()

float csky::getskyr()

float csky::getskyx()

float csky::getskyy()

float csky::getskyz()

我們的主cpp也稍修改:

//49 天空頂 + 場景漫遊 + + 

#include //1,主程式:

#include#include#include#include "motionmodel.h"

#include "camera.h"

#include "sky.h"

//#include "skybox.h"

/** 定義光源的屬性值 */

glfloat lightambient = ; /**< 環境光引數 */

glfloat lightdiffuse = ; /**< 漫射光引數 */

glfloat lightspecular = ; /**< 鏡面光引數 */

glfloat lightposition = ; /**< 光源位置 */

camera m_camera;

//cskybox m_skybox;

csky m_sky;

int buildtexture(char *szpathname, gluint &texid);

void init(void)

void display(void)

void changesize(int width, int height)

void motion(int x, int y)

void keyboard(unsigned char key, int x, int y)

glutpostredisplay();

printf("key::%d\n", key);

}void spindisplay()

int main(int argc, char** argv)

效果圖:

天空紋理圖:

3ds模型 光照開關選單

由於顯示效果不理想,現在來試試開啟 和關閉光照效果有什麼區別。加上選單 glutcreatemenu menuproc 選單 glutaddmenuentry 開啟光照 1 glutaddmenuentry 關閉光照 2 glutattachmenu glut right button 關連到右鍵 ...

匯入3ds模型的注意事項

今年年初的時候參加了imagine cup,發現那時候留下來的小模型真是好用。哪兒都能用,都不用重新做了 這次的動畫大作業我也打算把它們拿出來show一下,不用白不用。關於opengl匯入模型,雖說理論上來講什麼格式的模型都ok,只要你知道它們的儲存結構。但實際上現在用的最多最常見的還是匯入3ds格...

3DS檔案的結構

本文 於 zwqxin 其實按我最近的理解,3ds檔案格式,對資料的組織跟記憶體很相像。它分成很多的 chunk 塊 按順序排列。每個chunk都包含著一些資訊,比如頂點啊材質啊燈光啊等等,相應地,就被稱為頂點chunk材質chunk燈光chunk等等,每個chunk都有其功用。每個chunk有其i...