oin3D VS2010
Qt 5.3.1構(gòu)建方便的三維圖形開發(fā)環(huán)境
【1】請使用baidu或者google搜索并下載各個軟件包:
VS 2010
Qt 5.3.1
Qt Addin 1.2.3
Coin3D 3.1.3
【2】安裝軟件包
安裝順序:VS2010 》 Qt 5.3.1 》 QtAddin 1.2.3 》 Coin3D 3.1.3
除Vs2010外,其他軟件最好統(tǒng)一安裝到自定義的路徑中,便于后面學(xué)習(xí)或者開發(fā)時的操作,如統(tǒng)一安裝到C:\Develop\Qt531、C:\Develop\QtAddin123、C:\Develop\Coin3D313等。
【3】配置Qt開發(fā)環(huán)境
安裝軟件包后,打開 VS2010 后,單擊 Qt5 > Launch Designer
時,如果提示沒有設(shè)置Qt版本,則可以依次操作 Qt5 > Qt Options > Qt Versions >
Add > 單擊 Path 后的
【4】配置Coin3D開發(fā)環(huán)境
由于在VS2010中的環(huán)境配置只對當(dāng)前工程有效,而我們的Coin3D則需要在每個工程中進(jìn)行配置。
按照以下操作來使VS2010能夠?qū)崿F(xiàn)“一次性配置”:
首先,任意創(chuàng)建一個任意類型的工程項目,如名字為adadad。用鼠標(biāo)點擊vs工作區(qū)
1、執(zhí)行菜單欄“視圖—屬性管理器”;
2、點擊adadad項目名字前的三角符號,雙擊Debug |
Win32下的“Microsoft.Cpp.Win32.user“,在彈出的配置框中配置所需環(huán)境;
3、這個設(shè)置是對所有工程有效的。你可以打開其他的工程或者新建新的工程,可以看到都繼承了此配置。
然后,我們在當(dāng)前這個工程中配置Coin3D的開發(fā)環(huán)境(這里的配置同樣會直接在我們后面創(chuàng)建的開發(fā)工程中應(yīng)用到):
視圖 》 屬性管理器 》 單擊 adadad 項目名字前的三角符號 》 Debug | Win32 》
雙擊
Microsoft.Cpp.Win32.user 》
VC++目錄
》包含目錄 》 添加
》庫目錄 》 添加
C/C++ 》預(yù)處理器 》定義》添加
SOQT_DLL;COIN_DLL;SOWIN_DLL
代碼生成 》運行庫 》 多線程調(diào)試 DLL
(/MDd)
鏈接器 》輸入 》添加
coin3d.lib;soqt1d.lib;sowin1d.lib;
最后,點擊 確定
退出對話框(為了確保上述值的正確性,請再次打開這個對話框核對下,尤其是要確保上述安裝路徑務(wù)必要與你自己的真實安裝路徑一致)。
提示:注意上述路徑中英文分號 ; 的用法!!
【5】測試開發(fā)環(huán)境
新建一個工程項目,或者清空當(dāng)前工程項目中的main.cpp文件,然后直接粘貼以下代碼——
#include
#include
#include
#include
#include
#include
int main(int
argc, char *argv[])
{
QWidget *myW
= SoQt::init("");
SoQtExaminerViewer *viewer = new
SoQtExaminerViewer(myW);
SoSeparator
*root = new SoSeparator;
SoCone *cone
= new SoCone;
root->ref();
root->addChild(cone);
viewer->setSceneGraph(root);
viewer->show();
SoQt::mainLoop();
delete
viewer;
}
按下F5運行工程,此時應(yīng)該會提示
將 C:\Develop\Coin3D313\bin 目錄下的coin3.dll,coin3d.dll,simage1.dll,simage1d.dll,simvoleon2.dll,simvoleon2d.dll,soqt1.dll,soqt1d.dll,sowin1.dll,sowin1d.dll拷貝到自己的工程目錄下,再次點擊就可以運行了。
暫時還不清楚如何通過設(shè)置項目屬性的方法來自動包含這些文件包,很奇怪,而不是復(fù)制到工程當(dāng)中來。
解決這個問題的麻煩通知我一下,謝謝。
運行效果:
修改以下代碼:
SoSeparator *pTriSep = new SoSeparator;
r->addChild(pTriSep);
SoTranslation *ts = new SoTranslation;
ts->translation.setValue(3.50f,4.60f,3.60f);
pTriSep->addChild(ts);
SoMaterialBinding *tmb = new SoMaterialBinding;
tmb->value = SoMaterialBinding::PER_VERTEX;
pTriSep->addChild(tmb);
//設(shè)置三角形顏色
const float triColors[][3] = {
{ 1.0f, 0.0f, 0.0f}, { 0.0f,1.0f,0.0f}, { 0.0f,0.0f,1.0f},
{ 1.0f, 0.0f, 0.0f}, { 0.0f,0.0f,1.0f}, { 0.0f,1.0f,0.0f},
{ 1.0f, 0.0f, 0.0f}, { 0.0f,1.0f,0.0f}, { 0.0f,0.0f,1.0f},
{ 1.0f,0.0f,0.0f}, { 0.0f,0.0f,1.0f},{ 0.0f,1.0f,0.0f}
};
SoMaterial *tmat = new SoMaterial;
tmat->diffuseColor.setValues(0, 12, triColors);
pTriSep->addChild(tmat);
// 畫三角形
float tVer[][3] = {
{0.0f, 0.0f, 0.0f}, //vertex 1
{0.0f, 1.0f, 0.0f}, //vertex 2
{1.0f, 0.0f, 0.0f}, //vertex 3
{1.5f, 1.0f, 0.0f}
};
SoCoordinate3 *tco = new SoCoordinate3;
tco->point.setValues(0, 12, tVer);
pTriSep->addChild(tco);
SoFaceSet *pFaceSet = new SoFaceSet;
pTriSep->addChild(pFaceSet);
v->viewAll();
效果應(yīng)該是這樣的
這里有相關(guān)商業(yè)公司最新的改版書:
http://oivdoc90./node/15927
|
|