QT也能輕松開發(fā)3D了,不多說,讓我們開始吧


準備工作
- 下載安裝Qt5.10.1(http://download.qt.io/official_releases/qt/5.10/5.10.1/qt-opensource-windows-x86-5.10.1.exe)
- 下載安裝Qt3dStudio(http://download.qt.io/official_releases/qt3dstudio/1.1/qt-3dstudio-opensource-windows-x86-1.1.0.exe)
配置環(huán)境
備忘錄官網(wǎng)地址:https://doc.qt.io/archives/qt3dstudio/
要用Qt 5.10.1 和 MSVC2015_64bit (win)開發(fā), Qt 3d Studio輔助,所以要把Qt 3d Studio的一些文件拷貝到Qt 5.10.1下
拷貝dll文件夾,Copy <Qt 3D Studio installation directory>\Tools\Qt3DStudio\qml\QtStudio3D under <Qt installation directory>\5.10.1<compiler>\qml (e.g. C:\Qt\5.10.1\msvc2015_64\qml).
我的路徑供參考:
D:\Qt\qt3dstudio-1.1.0\Tools\Qt3DStudio\qml\QtStudio3D ——》E:\Qt\Qt5.10.1\5.10.1\msvc2015_64\qml
- 拷貝頭文件夾
Copy <Qt 3D Studio installation directory>\Tools\Qt3DStudio\include\QtStudio3D under <Qt installation directory>\5.10.1<compiler>\include (e.g. C:\Qt\5.10.1\msvc2015_64\include).
我的路徑供參考:
D:\Qt\qt3dstudio-1.1.0\Tools\Qt3DStudio\include\QtStudio3D ——》E:\Qt\Qt5.10.1\5.10.1\msvc2015_64\include
- 拷貝pri
Copy qt_lib_studio3d.pri and qt_lib_studio3d_private.pri from <Qt 3D Studio installation directory>\Tools\Qt3DStudio\mkspecs\modules to <Qt installation directory>\5.10.1<compiler>\mkspecs\modules (e.g. C:\Qt\5.10.1\msvc2015_64\mkspecs\modules).
我的路徑供參考:
D:\Qt\qt3dstudio-1.1.0\Tools\Qt3DStudio\mkspecs\modules的 qt_lib_studio3d.pri and qt_lib_studio3d_private.pri ——》E:\Qt\Qt5.10.1\5.10.1\msvc2015_64\mkspecs\modules
- 新建項目,配置環(huán)境變量,其實qt里的環(huán)境變量可以不設(shè)置,但是系統(tǒng)環(huán)境變量必須設(shè)置


- 配置項目pri
LIBS += -LD:\Qt\qt3dstudio-1.1.0\Tools\Qt3DStudio\lib Qt5Studio3D$$qtPlatformTargetSuffix()
qt項目-main.cpp
int main(int argc, char *argv[])
{
qputenv("QML_DISABLE_DISK_CACHE", "true");
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQuickView viewer;
viewer.setSource(QUrl("qrc:/main.qml"));
viewer.setTitle(QStringLiteral("Qt 3D Studio Demo"));
viewer.setResizeMode(QQuickView::SizeRootObjectToView);
viewer.setWidth(800);
viewer.setHeight(600);
viewer.setColor(QColor("black"));
viewer.show();
return app.exec();
}
qt 3d stuido
類似unity的編輯器,下側(cè)是時間軸,右側(cè)是項目表和屬性表
詳細信息請參考官網(wǎng)手冊(http://doc.qt.io/qt3dstudio/getting-started.html)
- 關(guān)鍵點:DataInput,這個是qt和studio交互的橋梁


qt 資源文件
- stuido生成的是uia文件,導(dǎo)入到qt項目中

main.qml
- Studio3D 就是3d視圖
- ViewerSettings 就是視口設(shè)置
- Presentation演示文稿就加載了uia文件
- SceneElement就是當前場景
- torus_Knot01對應(yīng)我們的環(huán)節(jié)模型
- torus_Knot01_Default對應(yīng)我們的環(huán)節(jié)模型的材質(zhì)
Item {
id: mainview
focus: true
property bool isStarted: false
onIsStartedChanged: {
torus_Knot01.setAttribute("scale.x", isStarted?2:1)
torus_Knot01.setAttribute("scale.y", isStarted?2:1)
torus_Knot01.setAttribute("scale.z", isStarted?2:1)
torus_Knot01_Default.setAttribute("emissivepower", isStarted?100:0)
}
Studio3D {
id: studio3D
width: parent.width
height: parent.height
anchors.verticalCenter: parent.verticalCenter
ViewerSettings {
scaleMode: ViewerSettings.ScaleModeFill
}
Presentation {
id: cluster
source: "qrc:/presentation/presentation.uia"
SceneElement {
id: scene
elementPath: "Scene"
}
Element{
id: torus_Knot01
elementPath: "Scene.Layer.Torus_Knot01"
}
Element{
id: torus_Knot01_Default
elementPath: "Scene.Layer.Torus_Knot01.Default"
}
DataInput {
name: "newDataInput"
value: isStarted ? "萌夢論壇 開始變身" : "萌夢論壇 停止變身"
}
}
}
MouseArea{
anchors.fill: parent
onClicked: isStarted = !isStarted
}
}
- 當我們點擊屏幕后,DataInput 控制文字發(fā)生改變,
- 同時我們主動調(diào)用setAttribute設(shè)置相關(guān)屬性
源代碼下載
總結(jié)
有了這個框架,我們可以很直觀很快速的開發(fā)3d程序