QT也能輕鬆開發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)
配置環境
-
備忘錄官網地址:https://doc.qt.io/archives/qt3dstudio/
-
要用Qt 5.10.1 和 MSVC2015_64bit (win)開發, Qt 3d Studio輔助,所以要把Qt 3d Studio的一些文件拷貝到Qt 5.10.1下
-
拷貝dll文件夾,Copy <Qt 3D Studio installation directory>\Tools\Qt3DStudio\qml\QtStudio3D under \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 \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 \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
- 新建項目,配置環境變量,其實qt裏的環境變量可以不設置,但是系統環境變量必須設置
- 配置項目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的編輯器,下側是時間軸,右側是項目表和屬性表
詳細信息請參考官網手冊(http://doc.qt.io/qt3dstudio/getting-started.html)
- 關鍵點:DataInput,這個是qt和studio交互的橋樑
qt 資源文件
- stuido生成的是uia文件,導入到qt項目中
main.qml
- Studio3D 就是3d視圖
- ViewerSettings 就是視口設置
- Presentation演示文稿就加載了uia文件
- SceneElement就是當前場景
- torus_Knot01對應我們的環節模型
- torus_Knot01_Default對應我們的環節模型的材質
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 控制文字發生改變,
- 同時我們主動調用setAttribute設置相關屬性
源代碼下載
總結
有了這個框架,我們可以很直觀很快速的開發3d程序