当前位置: 首页 > news >正文

微网站appxz域名网站

微网站app,xz域名网站,wordpress登陆后可见页,server2003网站建设qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记 文章目录 qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记1.例程运行效果2.例程缩略图3.项目文件列表4.main.qml5.main.cpp6.CMakeLists.txt 1.例程运行效果 运行该项目需要自己准备一个模型文件 2.例程缩略图…qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记 文章目录 qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记1.例程运行效果2.例程缩略图3.项目文件列表4.main.qml5.main.cpp6.CMakeLists.txt 1.例程运行效果 运行该项目需要自己准备一个模型文件 2.例程缩略图 3.项目文件列表 runtimeloader/ ├── CMakeLists.txt ├── main.cpp ├── main.qml ├── qml.qrc └── runtimeloader.pro1 directory, 5 files4.main.qml // Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clauseimport QtQuick import QtQuick.Window import QtQuick.Controls import QtQuick.Layoutsimport Qt.labs.platform import QtCoreimport QtQuick3D import QtQuick3D.Helpers import QtQuick3D.AssetUtils// 创建一个窗口根节点设置窗口大小和显示状态 Window {id: windowRootvisible: truewidth: 1280height: 720property url importUrl; // 用于导入模型的URL//! [base scene] 基础场景View3D {id: view3Danchors.fill: parent // 填充父窗口environment: SceneEnvironment {id: envbackgroundMode: SceneEnvironment.SkyBox // 背景模式为天空盒lightProbe: Texture {textureData: ProceduralSkyTextureData{} // 使用程序化天空纹理}InfiniteGrid {visible: helper.gridEnabled // 是否显示网格gridInterval: helper.gridInterval // 网格间隔}}camera: helper.orbitControllerEnabled ? orbitCamera : wasdCamera // 根据控制器选择相机// 设置方向光源DirectionalLight {eulerRotation.x: -35eulerRotation.y: -90castsShadow: true // 启用阴影}Node {id: orbitCameraNodePerspectiveCamera {id: orbitCamera // 轨道相机}}// 第一人称相机WASD控制PerspectiveCamera {id: wasdCameraonPositionChanged: {// 更新相机的近远裁剪面let distance position.length()if (distance 1) {clipNear 0.01clipFar 100} else if (distance 100) {clipNear 0.1clipFar 1000} else {clipNear 1clipFar 10000}}}//! [base scene]// 重置视图的函数function resetView() {if (importNode.status RuntimeLoader.Success) {helper.resetController()}}//! [instancing] 实例化RandomInstancing {id: instancinginstanceCount: 30 // 设置实例数量position: InstanceRange {property alias boundsDiameter: helper.boundsDiameterfrom: Qt.vector3d(-3*boundsDiameter, -3*boundsDiameter, -3*boundsDiameter); // 位置范围to: Qt.vector3d(3*boundsDiameter, 3*boundsDiameter, 3*boundsDiameter)}color: InstanceRange { from: black; to: white } // 颜色范围}//! [instancing]QtObject {id: helperproperty real boundsDiameter: 0 // 场景边界的直径property vector3d boundsCenter // 场景中心property vector3d boundsSize // 场景大小property bool orbitControllerEnabled: true // 是否启用轨道控制器property bool gridEnabled: gridButton.checked // 是否启用网格property real cameraDistance: orbitControllerEnabled ? orbitCamera.z : wasdCamera.position.length() // 相机与中心的距离property real gridInterval: Math.pow(10, Math.round(Math.log10(cameraDistance)) - 1) // 网格间隔计算// 更新场景边界信息function updateBounds(bounds) {boundsSize Qt.vector3d(bounds.maximum.x - bounds.minimum.x,bounds.maximum.y - bounds.minimum.y,bounds.maximum.z - bounds.minimum.z)boundsDiameter Math.max(boundsSize.x, boundsSize.y, boundsSize.z)boundsCenter Qt.vector3d((bounds.maximum.x bounds.minimum.x) / 2,(bounds.maximum.y bounds.minimum.y) / 2,(bounds.maximum.z bounds.minimum.z) / 2 )wasdController.speed boundsDiameter / 1000.0 // 更新控制器速度wasdController.shiftSpeed 3 * wasdController.speedwasdCamera.clipNear boundsDiameter / 100wasdCamera.clipFar boundsDiameter * 10view3D.resetView() // 重置视图}// 重置控制器function resetController() {orbitCameraNode.eulerRotation Qt.vector3d(0, 0, 0)orbitCameraNode.position boundsCenterorbitCamera.position Qt.vector3d(0, 0, 2 * helper.boundsDiameter)orbitCamera.eulerRotation Qt.vector3d(0, 0, 0)orbitControllerEnabled true}// 切换控制器function switchController(useOrbitController) {if (useOrbitController) {let wasdOffset wasdCamera.position.minus(boundsCenter)let wasdDistance wasdOffset.length()let wasdDistanceInPlane Qt.vector3d(wasdOffset.x, 0, wasdOffset.z).length()let yAngle Math.atan2(wasdOffset.x, wasdOffset.z) * 180 / Math.PIlet xAngle -Math.atan2(wasdOffset.y, wasdDistanceInPlane) * 180 / Math.PIorbitCameraNode.position boundsCenterorbitCameraNode.eulerRotation Qt.vector3d(xAngle, yAngle, 0)orbitCamera.position Qt.vector3d(0, 0, wasdDistance)orbitCamera.eulerRotation Qt.vector3d(0, 0, 0)} else {wasdCamera.position orbitCamera.scenePositionwasdCamera.rotation orbitCamera.sceneRotationwasdController.focus true}orbitControllerEnabled useOrbitController}}//! [runtimeloader] 运行时加载器RuntimeLoader {id: importNodesource: windowRoot.importUrl // 导入模型的URLinstancing: instancingButton.checked ? instancing : null // 实例化开关onBoundsChanged: helper.updateBounds(bounds) // 更新场景边界}//! [runtimeloader]//! [bounds] 场景边界Model {parent: importNodesource: #Cube // 默认使用立方体模型materials: PrincipledMaterial {baseColor: red // 设置基础颜色为红色}opacity: 0.2 // 设置模型透明度visible: visualizeButton.checked importNode.status RuntimeLoader.Success // 根据条件显示模型position: helper.boundsCenterscale: Qt.vector3d(helper.boundsSize.x / 100,helper.boundsSize.y / 100,helper.boundsSize.z / 100)}//! [bounds]//! [status report] 状态报告Rectangle {id: messageBoxvisible: importNode.status ! RuntimeLoader.Success // 如果导入失败显示错误消息color: redwidth: parent.width * 0.8height: parent.height * 0.8anchors.centerIn: parentradius: Math.min(width, height) / 10opacity: 0.6Text {anchors.fill: parentfont.pixelSize: 36text: Status: importNode.errorString \nPress \Import...\ to import a model // 显示错误信息color: whitewrapMode: Text.WraphorizontalAlignment: Text.AlignHCenterverticalAlignment: Text.AlignVCenter}}//! [status report]}//! [camera control] 相机控制OrbitCameraController {id: orbitControllerorigin: orbitCameraNodecamera: orbitCameraenabled: helper.orbitControllerEnabled // 根据状态启用或禁用轨道控制器}WasdController {id: wasdControllercontrolledObject: wasdCameraenabled: !helper.orbitControllerEnabled // 根据状态启用或禁用WASD控制器}//! [camera control]// 界面控制面板Pane {width: parent.widthcontentHeight: controlsLayout.implicitHeightRowLayout {id: controlsLayoutButton {id: importButtontext: Import...onClicked: fileDialog.open() // 打开文件对话框focusPolicy: Qt.NoFocus}Button {id: resetButtontext: Reset viewonClicked: view3D.resetView() // 重置视图focusPolicy: Qt.NoFocus}Button {id: visualizeButtoncheckable: truetext: Visualize bounds // 显示场景边界focusPolicy: Qt.NoFocus}Button {id: instancingButtoncheckable: truetext: Instancing // 开启实例化focusPolicy: Qt.NoFocus}Button {id: gridButtontext: Show grid // 显示网格focusPolicy: Qt.NoFocuscheckable: truechecked: false}Button {id: controllerButtontext: helper.orbitControllerEnabled ? Orbit : WASD // 切换控制器onClicked: helper.switchController(!helper.orbitControllerEnabled)focusPolicy: Qt.NoFocus}RowLayout {Label {text: Material Override}ComboBox {id: materialOverrideComboBoxtextRole: textvalueRole: valueimplicitContentWidthPolicy: ComboBox.WidestTextonActivated: env.debugSettings.materialOverride currentValue // 选择材质覆盖model: [{ value: DebugSettings.None, text: None},{ value: DebugSettings.BaseColor, text: Base Color},{ value: DebugSettings.Roughness, text: Roughness},{ value: DebugSettings.Metalness, text: Metalness},{ value: DebugSettings.Diffuse, text: Diffuse},{ value: DebugSettings.Specular, text: Specular},{ value: DebugSettings.ShadowOcclusion, text: Shadow Occlusion},{ value: DebugSettings.Emission, text: Emission},{ value: DebugSettings.AmbientOcclusion, text: Ambient Occlusion},{ value: DebugSettings.Normals, text: Normals},{ value: DebugSettings.Tangents, text: Tangents},{ value: DebugSettings.Binormals, text: Binormals},{ value: DebugSettings.F0, text: F0}]}}CheckBox {text: Wireframe // 启用或禁用线框模式checked: env.debugSettings.wireframeEnabledonCheckedChanged: {env.debugSettings.wireframeEnabled checked}}}}// 文件对话框允许用户选择glTF模型文件FileDialog {id: fileDialognameFilters: [glTF files (*.gltf *.glb), All files (*)]onAccepted: importUrl file // 选择文件后导入Settings {id: fileDialogSettingscategory: QtQuick3D.Examples.RuntimeLoaderproperty alias folder: fileDialog.folder}}// 调试视图切换按钮Item {width: debugViewToggleText.implicitWidthheight: debugViewToggleText.implicitHeightanchors.right: parent.rightLabel {id: debugViewToggleTexttext: Click here (dbg.visible ? to hide DebugView : for DebugView)anchors.right: parent.rightanchors.top: parent.top}MouseArea {anchors.fill: parentonClicked: dbg.visible !dbg.visible // 切换调试视图可见性DebugView {y: debugViewToggleText.height * 2anchors.right: parent.rightsource: view3Did: dbgvisible: false}}} } 5.main.cpp // Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifdef HAS_MODULE_QT_WIDGETS # include QApplication #endif #include QGuiApplication #include QQmlApplicationEngine #include QQuickWindow #include QtQuick3D/qquick3d.hint main(int argc, char *argv[]) { #ifdef HAS_MODULE_QT_WIDGETSQApplication app(argc, argv); #elseQGuiApplication app(argc, argv); #endifapp.setOrganizationName(The Qt Company);app.setOrganizationDomain(qt.io);app.setApplicationName(Runtime Asset Loading Example);const auto importUrl argc 1 ? QUrl::fromLocalFile(argv[1]) : QUrl{};if (importUrl.isValid())qDebug() Importing importUrl;QSurfaceFormat::setDefaultFormat(QQuick3D::idealSurfaceFormat(4));QQmlApplicationEngine engine;const QUrl url(QStringLiteral(qrc:/main.qml));engine.load(url);if (engine.rootObjects().isEmpty()) {qWarning() Could not find root object in url;return -1;}QObject *topLevel engine.rootObjects().value(0);QQuickWindow *window qobject_castQQuickWindow *(topLevel);if (window)window-setProperty(importUrl, importUrl);return app.exec(); }6.CMakeLists.txt # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clausecmake_minimum_required(VERSION 3.16) project(runtimeloader LANGUAGES CXX)set(CMAKE_AUTOMOC ON)find_package(Qt6 REQUIRED COMPONENTS Core Gui Quick Quick3D Widgets)qt_add_executable(runtimeloadermain.cpp )set_target_properties(runtimeloader PROPERTIESWIN32_EXECUTABLE TRUEMACOSX_BUNDLE TRUE )target_link_libraries(runtimeloader PUBLICQt::CoreQt::GuiQt::QuickQt::Quick3D )if(TARGET Qt::Widgets)target_compile_definitions(runtimeloader PUBLICHAS_MODULE_QT_WIDGETS)target_link_libraries(runtimeloader PUBLICQt::Widgets) endif()qt_add_qml_module(runtimeloaderURI ExampleVERSION 1.0QML_FILES main.qmlNO_RESOURCE_TARGET_PATH )install(TARGETS runtimeloaderBUNDLE DESTINATION .RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} )qt_generate_deploy_qml_app_script(TARGET runtimeloaderOUTPUT_SCRIPT deploy_scriptMACOS_BUNDLE_POST_BUILDNO_UNSUPPORTED_PLATFORM_ERRORDEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM ) install(SCRIPT ${deploy_script})
http://www.hkea.cn/news/14384609/

相关文章:

  • 做网站销售怎么找客户免费网站后台管理系统模板下载
  • 网站界面风格房地产网站制作公司
  • 赵县网站建设货源网 wordpress 模板
  • 美食网站建设合同范例企业网站制作模板
  • 做铝材哪些网站招聘郸城建设银行网站
  • 建设网站服务器自媒体营销的方式有哪些
  • H5响应式网站数据网络规划设计师一本通
  • 手机网站关键网站开发软件
  • 企业网站优化推广安装完wordpress怎么打开
  • 化工网站建设价格营销型科技网站
  • 教育网站建设计划书name域名的网站
  • 请人做ppt的网站怎么制作自己的网址
  • 南京网站创建node 网站开发
  • 用返利网站做爆款android下载软件
  • 北京加盟网站建设电子商务网站建设 项目规划书
  • 在线网站建设者4线城市搞网站开发
  • 网络公司给别人做网站的cms是买的授权么手机网站焦点图代码
  • 爱做网站免费版东莞高埗网站建设
  • 网站 例一级a做爰片免播放器网站
  • 鄂州做网站的公司个人主页介绍文案
  • 网站建设和运维单位责任网站未备案会怎么样
  • 网站飘动国内做网站的公司有哪些
  • 网站销售系统怎么做石家庄模板建站代理
  • 梧州seo深圳网页设计公司搜行者seo
  • 网站被百度惩罚怎么办自己搭建网站怎么搭建
  • 做国内贸易的网站江都微信网站建设
  • .asp 网站中学生网站源码
  • 专业建设网站外包做视频网站需要什么证件
  • 保定免费网站建站模板广东民航机场建设有限公司网站
  • 网站怎么才能吸引人百度怎样可以搜到自己的网站