qt3d自定义生成mesh图形

Qt 3D 学习路径规划 Qt 3D 学习路径规划 3D 用来做什么? 什么是Qt 3D,什么时候选择Qt 3D Opengl入门及学习资料 官方实例 本系列文章只是记录本人学习Qt 3D的学习过程,其中很多都是借鉴网上搜寻的资料,其中有不对的,请积极指正。 文章目录Qt 3D 学习路径规划什么是3D,3D可以用来做什么什么是Qt 3DQt 3D 特性CPU核数Qt 3D 架构 什么是3D,3D可以用来做什么 3D是three-dimensional的缩写,在计算机里显示3d图形,就是说在平面里显示三维图形。不像现实世 阅读详情

qt中提供的基础的QMesh

  • 方形体 - Qt3DExtras::QConeMesh
  • 圆锥体 - Qt3DExtras::QCuboidMesh
  • 圆柱体 - Qt3DExtras::QCylinderMesh
  • 文本 - Qt3DExtras::QExtrudedTextMesh
  • 平面 - Qt3DExtras::QPlaneMesh
  • 球体 - Qt3DExtras::QSphereMesh
  • 圆环 - Qt3DExtras::QTorusMesh
  • 外部加载 - Qt3DRender::QMesh 从各种格式的外部文件加载网格数据。
    都继承于QGeometryRenderer类。而QGeometryRenderer继承于Qt3DCore::QComponent。很容易知道mesh网格数据是作为组件增加到渲染中的。

在这里插入图片描述
红色上面是qt自带绘制出来的3d模型。下面部分是自定义生成空心圆柱体的3d模型,涉及到重写这些类。

查看qt自带mesh分别怎么用的,和提供了什么

SceneModifier::SceneModifier(Qt3DCore::QEntity *rootEntity)
    : m_rootEntity(rootEntity)
{
    // Torus shape data
    //! [0]
    m_torus = new Qt3DExtras::QTorusMesh();
    m_torus->setRadius(1.0f);
    m_torus->setMinorRadius(0.4f);
    m_torus->setRings(100);
    m_torus->setSlices(20);
    //! [0]

    // TorusMesh Transform
    //! [1]
    Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform();
    torusTransform->setScale(1.0f);
    torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 1.0f, 0.0f), 25.0f));
    torusTransform->setTranslation(QVector3D(5.0f, 4.0f, 0.0f));
    //! [1]

    //! [2]
    Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial();
    torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b)));
    //! [2]

    // Torus
    //! [3]
    m_torusEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_torusEntity->addComponent(m_torus);
    m_torusEntity->addComponent(torusMaterial);
    m_torusEntity->addComponent(torusTransform);
    Qt3DRender::QObjectPicker *pickerTorus = new Qt3DRender::QObjectPicker(m_torusEntity);
    m_torusEntity->addComponent(pickerTorus);
    connect(pickerTorus, &Qt3DRender::QObjectPicker::clicked, this, &SceneModifier::handlePickerClicked);
    //! [3]

    // Cone shape data
    Qt3DExtras::QConeMesh *cone = new Qt3DExtras::QConeMesh();
    cone->setTopRadius(0.5);
    cone->setBottomRadius(1);
    cone->setLength(3);
    cone->setRings(50);
    cone->setSlices(20);

    // ConeMesh Transform
    Qt3DCore::QTransform *coneTransform = new Qt3DCore::QTransform();
    coneTransform->setScale(1.5f);
    coneTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
    coneTransform->setTranslation(QVector3D(0.0f, 4.0f, -1.5));

    Qt3DExtras::QPhongMaterial *coneMaterial = new Qt3DExtras::QPhongMaterial();
    coneMaterial->setDiffuse(QColor(QRgb(0x928327)));

    // Cone
    m_coneEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_coneEntity->addComponent(cone);
    m_coneEntity->addComponent(coneMaterial);
    m_coneEntity->addComponent(coneTransform);

    // Cylinder shape data
    Qt3DExtras::QCylinderMesh *cylinder = new Qt3DExtras::QCylinderMesh();
    cylinder->setRadius(1);
    cylinder->setLength(3);
    cylinder->setRings(24);
    cylinder->setSlices(24);

    // CylinderMesh Transform
    Qt3DCore::QTransform *cylinderTransform = new Qt3DCore::QTransform();
    cylinderTransform->setScale(1.5f);
    cylinderTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
    cylinderTransform->setTranslation(QVector3D(-5.0f, 4.0f, -1.5));

    Qt3DExtras::QPhongMaterial *cylinderMaterial = new Qt3DExtras::QPhongMaterial();
    cylinderMaterial->setDiffuse(QColor(QRgb(0x928327)));

    // Cylinder
    m_cylinderEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_cylinderEntity->addComponent(cylinder);
    m_cylinderEntity->addComponent(cylinderMaterial);
    m_cylinderEntity->addComponent(cylinderTransform);

    // Cuboid shape data
    Qt3DExtras::QCuboidMesh *cuboid = new Qt3DExtras::QCuboidMesh();

    // CuboidMesh Transform
    Qt3DCore::QTransform *cuboidTransform = new Qt3DCore::QTransform();
    cuboidTransform->setScale(2.0f);
    cuboidTransform->setTranslation(QVector3D(5.0f, -4.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *cuboidMaterial = new Qt3DExtras::QPhongMaterial();
    cuboidMaterial->setDiffuse(QColor(QRgb(0x665423)));

    //Cuboid
    m_cuboidEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_cuboidEntity->addComponent(cuboid);
    m_cuboidEntity->addComponent(cuboidMaterial);
    m_cuboidEntity->addComponent(cuboidTransform);
    Qt3DRender::QObjectPicker *pickerCuboid = new Qt3DRender::QObjectPicker(m_cuboidEntity);
    m_cuboidEntity->addComponent(pickerCuboid);
    connect(pickerCuboid, &Qt3DRender::QObjectPicker::clicked, this, &SceneModifier::handlePickerClicked);

    // Plane shape data
    Qt3DExtras::QPlaneMesh *planeMesh = new Qt3DExtras::QPlaneMesh();
    planeMesh->setWidth(2);
    planeMesh->setHeight(2);

    // Plane mesh transform
    Qt3DCore::QTransform *planeTransform = new Qt3DCore::QTransform();
    planeTransform->setScale(1.3f);
    planeTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
    planeTransform->setTranslation(QVector3D(0.0f, -4.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *planeMaterial = new Qt3DExtras::QPhongMaterial();
    planeMaterial->setDiffuse(QColor(QRgb(0xa69929)));

    // Plane
    m_planeEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_planeEntity->addComponent(planeMesh);
    m_planeEntity->addComponent(planeMaterial);
    m_planeEntity->addComponent(planeTransform);

    // Sphere shape data
    Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh();
    sphereMesh->setRings(20);
    sphereMesh->setSlices(20);
    sphereMesh->setRadius(2);

    // Sphere mesh transform
    Qt3DCore::QTransform *sphereTransform = new Qt3DCore::QTransform();

    sphereTransform->setScale(1.3f);
    sphereTransform->setTranslation(QVector3D(-5.0f, -4.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *sphereMaterial = new Qt3DExtras::QPhongMaterial();
    sphereMaterial->setDiffuse(QColor(QRgb(0xa69929)));

    // Sphere
    m_sphereEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_sphereEntity->addComponent(sphereMesh);
    m_sphereEntity->addComponent(sphereMaterial);
    m_sphereEntity->addComponent(sphereTransform);

    //textMesh
    Qt3DExtras::QExtrudedTextMesh* textMesh = new Qt3DExtras::QExtrudedTextMesh();
    textMesh->setDepth(.1f);
    textMesh->setText("Qt3d自带的shapes");

    Qt3DCore::QTransform *textTransform = new Qt3DCore::QTransform();
    textTransform->setScale(1.5f);
    textTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
    textTransform->setTranslation(QVector3D(-6.0f, 8.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *textMaterial = new Qt3DExtras::QPhongMaterial();
    textMaterial->setDiffuse(QColor(QRgb(0x928327)));

    //
    Qt3DCore::QEntity* textEntity = new Qt3DCore::QEntity(m_rootEntity);
    textEntity->addComponent(textMesh);
    textEntity->addComponent(textMaterial);
    textEntity->addComponent(textTransform);

//==============================================================================
    //DHollowCylinderMesh 自定义空心圆柱mesh
    Qt3DExtras::DHollowCylinderMesh* dcylinder = new Qt3DExtras::DHollowCylinderMesh();
    dcylinder->setSlices(100);
    dcylinder->setRings(100);
    dcylinder->setLength(3);
    dcylinder->setOuterRadius(5);
    dcylinder->setInnerRadius(2.5f);

    Qt3DCore::QTransform *dcylinderTransform = new Qt3DCore::QTransform();
    dcylinderTransform->setScale(1.5f);
    dcylinderTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
    dcylinderTransform->setTranslation(QVector3D(0.0f, -15.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *dcylinderMaterial = new Qt3DExtras::QPhongMaterial();
    dcylinderMaterial->setDiffuse(QColor(QRgb(0x928327)));

    Qt3DCore::QEntity* dcylinderEntity = new Qt3DCore::QEntity(m_rootEntity);
    dcylinderEntity->addComponent(dcylinder);
    dcylinderEntity->addComponent(dcylinderMaterial);
    dcylinderEntity->addComponent(dcylinderTransform);
}

自定义图形 (空心圆柱体)

DHollowCylinderMesh.h

#ifndef DHOLLOWCYLINDERMESH_H
#define DHOLLOWCYLINDERMESH_H


#include <Qt3DExtras/qt3dextras_global.h>
#include <Qt3DRender/qgeometryrenderer.h>

QT_BEGIN_NAMESPACE
namespace Qt3DExtras {
class Q_3DEXTRASSHARED_EXPORT DHollowCylinderMesh : public Qt3DRender::QGeometryRenderer
{
    Q_OBJECT
    Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged)
    Q_PROPERTY(int slices READ slices WRITE setSlices NOTIFY slicesChanged)
    Q_PROPERTY(float outerRadius READ outerRadius WRITE setOuterRadius NOTIFY outerRadiusChanged);
    Q_PROPERTY(float innerRadius READ innerRadius WRITE setInnerRadius NOTIFY innerRadiusChanged);
    Q_PROPERTY(float length READ length WRITE setLength NOTIFY lengthChanged)
public:
    explicit DHollowCylinderMesh(Qt3DCore::QNode *parent = nullptr);
    ~DHollowCylinderMesh();
    int rings() const;
    int slices() const;
    float length() const;
    float outerRadius() const;
    float innerRadius() const;
public Q_SLOTS:
    void setRings(int rings);
    void setSlices(int slices);
    void setLength(float length);
    void setOuterRadius(float radius);
    void setInnerRadius(float radius);
Q_SIGNALS:
    void ringsChanged(int rings);
    void slicesChanged(int slices);
    void lengthChanged(float length);
    void outerRadiusChanged(float radius);
    void innerRadiusChanged(float radius);
private:
    // As this is a default provided geometry renderer, no one should be able
    // to modify the QGeometryRenderer's properties
    void setInstanceCount(int instanceCount);
    void setVertexCount(int vertexCount);
    void setIndexOffset(int indexOffset);
    void setFirstInstance(int firstInstance);
    void setRestartIndexValue(int index);
    void setPrimitiveRestartEnabled(bool enabled);
    void setGeometry(Qt3DRender::QGeometry *geometry);
    void setPrimitiveType(PrimitiveType primitiveType);
};
} // namespace Qt3DRender
QT_END_NAMESPACE

#endif // DHOLLOWCYLINDERMESH_H

DHollowCylinderMesh.cpp

#include "dhollowcylindermesh.h"
#include "dhollowcylindergeometry.h"


#ifndef _USE_MATH_DEFINES
# define _USE_MATH_DEFINES // For MSVC
#endif

#include <Qt3DRender/qbuffer.h>
#include <Qt3DRender/qbufferdatagenerator.h>
#include <Qt3DRender/qattribute.h>
#include <QtGui/QVector3D>
#include <qmath.h>


QT_BEGIN_NAMESPACE
using namespace Qt3DRender;
namespace Qt3DExtras {
/*!
 * \class Qt3DExtras::DHollowCylinderMesh
   \ingroup qt3d-extras-geometries
 * \inheaderfile Qt3DExtras/DHollowCylinderMesh
 * \inmodule Qt3DExtras
 *
 * \inherits Qt3DRender::QGeometryRenderer
 *
 * \brief A hollowCylinderMesh mesh.
 */
/*!
 * Constructs a new DHollowCylinderMesh with \a parent.
 */
DHollowCylinderMesh::DHollowCylinderMesh(QNode *parent)
    : QGeometryRenderer(parent)
{
    DHollowCylinderGeometry *geometry = new DHollowCylinderGeometry(this);
    QObject::connect(geometry, &DHollowCylinderGeometry::outerRadiusChanged, this, &DHollowCylinderMesh::outerRadiusChanged);
    QObject::connect(geometry, &DHollowCylinderGeometry::innerRadiusChanged, this, &DHollowCylinderMesh::innerRadiusChanged);
    QObject::connect(geometry, &DHollowCylinderGeometry::ringsChanged, this, &DHollowCylinderMesh::ringsChanged);
    QObject::connect(geometry, &DHollowCylinderGeometry::slicesChanged, this, &DHollowCylinderMesh::slicesChanged);
    QObject::connect(geometry, &DHollowCylinderGeometry::lengthChanged, this, &DHollowCylinderMesh::lengthChanged);
    QGeometryRenderer::setGeometry(geometry);
}

DHollowCylinderMesh::~DHollowCylinderMesh()
{
}
void DHollowCylinderMesh::setRings(int rings)
{
    static_cast<DHollowCylinderGeometry *>(geometry())->setRings(rings);
}
void DHollowCylinderMesh::setSlices(int slices)
{
    static_cast<DHollowCylinderGeometry *>(geometry())->setSlices(slices);
}

void DHollowCylinderMesh::setLength(float length)
{
    static_cast<DHollowCylinderGeometry *>(geometry())->setLength(length);
}
void DHollowCylinderMesh::setOuterRadius(float radius)
{
    static_cast<DHollowCylinderGeometry *>(geometry())->setOuterRadius(radius);
}
void DHollowCylinderMesh::setInnerRadius(float radius)
{
    static_cast<DHollowCylinderGeometry *>(geometry())->setInnerRadius(radius);
}

int DHollowCylinderMesh::rings() const
{
    return static_cast<DHollowCylinderGeometry *>(geometry())->rings();
}

int DHollowCylinderMesh::slices() const
{
    return static_cast<DHollowCylinderGeometry *>(geometry())->slices();
}

float DHollowCylinderMesh::length() const
{
    return static_cast<DHollowCylinderGeometry *>(geometry())->length();
}

float DHollowCylinderMesh::outerRadius() const
{
    return static_cast<DHollowCylinderGeometry *>(geometry())->outerRadius();
}

float DHollowCylinderMesh::innerRadius() const
{
    return static_cast<DHollowCylinderGeometry *>(geometry())->outerRadius();
}


} // namespace Qt3DExtras
QT_END_NAMESPACE

DHollowCylinderGeometry.h

#ifndef DHOLLOWCYLINDERGEOMETRY_H
#define DHOLLOWCYLINDERGEOMETRY_H

#include <Qt3DExtras/qt3dextras_global.h>
#include <Qt3DRender/qgeometry.h>

QT_BEGIN_NAMESPACE
namespace Qt3DRender {
class QAttribute;
class QBuffer;
} // namespace Qt3DRender
namespace Qt3DExtras {

class Q_3DEXTRASSHARED_EXPORT DHollowCylinderGeometry : public Qt3DRender::QGeometry
{
    Q_OBJECT
    Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged)
    Q_PROPERTY(int slices READ slices WRITE setSlices NOTIFY slicesChanged)
    Q_PROPERTY(float innerRadius READ innerRadius WRITE setInnerRadius NOTIFY innerRadiusChanged)
    Q_PROPERTY(float outerRadius READ outerRadius WRITE setOuterRadius NOTIFY outerRadiusChanged)
    Q_PROPERTY(float length READ length WRITE setLength NOTIFY lengthChanged)
    Q_PROPERTY(Qt3DRender::QAttribute *positionAttribute READ positionAttribute CONSTANT)
    Q_PROPERTY(Qt3DRender::QAttribute *normalAttribute READ normalAttribute CONSTANT)
    Q_PROPERTY(Qt3DRender::QAttribute *texCoordAttribute READ texCoordAttribute CONSTANT)
    Q_PROPERTY(Qt3DRender::QAttribute *indexAttribute READ indexAttribute CONSTANT)
public:
    explicit DHollowCylinderGeometry(QNode *parent = nullptr);
    ~DHollowCylinderGeometry();
    void updateVertices();
    void updateIndices();
    int rings() const;
    int slices() const;
    float innerRadius() const;
    float outerRadius() const;
    float length() const;
    Qt3DRender::QAttribute *positionAttribute() const;
    Qt3DRender::QAttribute *normalAttribute() const;
    Qt3DRender::QAttribute *texCoordAttribute() const;
    Qt3DRender::QAttribute *indexAttribute() const;
public Q_SLOTS:
    void setRings(int rings);
    void setSlices(int slices);
    void setLength(float length);
    void setOuterRadius(float radius);
    void setInnerRadius(float radius);

Q_SIGNALS:
    void radiusChanged(float radius);
    void ringsChanged(int rings);
    void slicesChanged(int slices);
    void lengthChanged(float length);
    void outerRadiusChanged(float radius);
    void innerRadiusChanged(float radius);

private:
    //Q_DECLARE_PRIVATE(QCylinderGeometry)
    void init();

    int m_rings;
    int m_slices;
    float m_length;
    float m_outerRadius;
    float m_innerRadius;

    Qt3DRender::QAttribute *m_positionAttribute;
    Qt3DRender::QAttribute *m_normalAttribute;
    Qt3DRender::QAttribute *m_texCoordAttribute;
    Qt3DRender::QAttribute *m_indexAttribute;
    Qt3DRender::QBuffer *m_vertexBuffer;
    Qt3DRender::QBuffer *m_indexBuffer;
};
} // Qt3DExtras
QT_END_NAMESPACE

#endif // DHOLLOWCYLINDERGEOMETRY_H

Learn OpenGL with Qt——加载3D模型 模型 现在是时候着手启用Assimp,并开始创建实际的加载和转换代码了。我们重新创建一个项目,回忆一下是否还能想起如何创建opengl窗口? ——创建新项目(ModelLoading) ——以QWidget为基类,取消勾选创建界面 ——修改Widget公有继承自QOpenGLWidget,QOpenGLExtraFunctions(注意引入头文件) ——实现三个虚函数 ——在initializeGL中初始化opengl ——在paintGL中清屏 ——在resizeGL中设置Viewpo.. 阅读详情

相关推荐

Coin3D与Qt的安装

参考博客:http://blog.sina.com.cn/s/blog_6167e9fc0100w9n6.html;http://blog.youkuaiyun.com/huybin_wang/article/details/3091377,http://blog.youkuaiyun.com/debugconsole/article/details/8230683非常感谢 前段时间,老师给了一篇论文Hierarc

会飞的小猪 3623

QMesh 获取 顶点数据

参考:Qt3D从QGeometry读取原始顶点数据 - VoidCC auto _mesh = new Qt3DRender::QMesh; QUrl url = QUrl::fromLocalFile(QString::fromLocal8Bit(_obj.path.c_str())); _mesh->setSource(url); connect(_mesh, &Qt3DRender::QMesh::statusChanged, this, [=](Qt3DRende

qq_23102033的博客 968

【AI辅助生成】QT 3D基础设施技术架构分析 为什么QT 3D技术栈如此复杂?

这篇博客使用AI技术辅助生成。 QT6 3D基础设施采用分层架构,涵盖QML集成、场景图渲染、ECS实体管理、材质管线、资源加载、动画骨骼、物理引擎、后期处理及性能调试等核心模块。通过统一抽象层实现跨平台3D渲染,优化多线程与批处理,为高级3D应用提供高效开发框架。

QT WIDGETS,QT QML,QT WEB、OpenCV 1004

qt QMesh加载obj不显示

qt 3D 加载obj文件

MrZhang748264946的博客 1565

Qt Quick 3D 6.11 模型加载实战:从 .obj 到 .mesh 的 3 步转换与 QML 集成

本文详细介绍了Qt Quick 3D 6.11中模型加载的实战技巧,重点讲解从.obj到.mesh的三步转换流程及其QML集成方法。通过Balsam工具的高效转换和优化策略,开发者可以显著提升3D应用的性能和开发效率,适用于游戏开发和可视化应用场景。

搜索 418

Qt之基于Graphics View实现Mesh网络拓扑图

Mesh是一种多节点、无中心、自组织的无线多跳通信网络,也就是网状结构网络。网络中所有的节点都互相连接,每个节点拥有多条连接通道,所有的节点之间形成一个整体的网络。

草上爬的博客 9327

将Blender中制作的模型导出为FBX并在QT中转化为QML可直接使用的mesh

在Blender中将模型导出为FBX格式,应先对模型应用位置、旋转和缩放,对模型添加三角化修改器,在导出时将路径模式切换为复制,并确认选中后方‘内嵌纹理’图标,将向前设置为Y向前,将向上设置为Z向上;使用QT自带的Balsam 资产导入工具处理Blender导出的FBX模型,生成QML和MESH文件,直接在QML中使用。

个人学习中的一些总结 2039

OpenGL 绘制Mesh数据(Qt)

OpenGL 绘制Mesh数据(Qt)

dayuhaitang1的博客 1272

QT 3D模块高级编程技巧

3D模块简介《QT 3D模块高级编程技巧》——3D模块简介在现代软件开发中,三维图形技术已经广泛应用于游戏开发、虚拟现实、计算机辅助设计等多个领域。QT作为一款跨平台的C++图形用户界面应用程序框架,不仅支持二维图形界面开发,还提供了强大的三维图形模块——QT 3D。QT 3D模块为开发者提供了一套完整的3D图形渲染、处理和动画机制,使得在QT应用程序中开发三维图形变得轻而易举。3D模块的核心组件QT 3D模块主要由以下几个核心组件构成,场景图(Scene Graph)

QT性能优化QT原理源码QT界面美化 1870

Qt实现网络拓扑图(附完整源码)

Qt实现网络拓扑图(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2021

QtMeshEditor.rar(多种网格模型格式转ogre的mesh模型格式)

QtMeshEditor.rar(多种网格模型格式转ogre的mesh模型格式)

Qt3D文档阅读笔记-Qt3D老版本知识点及使用新版本的运行

目录 前言 老版本 新版本 前言 使用Qt提供的API好处,无需知道3D架构方面的知识,以及OpenGL在桌面应用程序是如何跑起来的,及OpenGL中管道的使用。 官方推荐在写2D,3D混写程序的时候,使用Qt Quick框架,这样会简单(个人觉得原因就是Qt Quick框架就是基于OpenGL的) 官方给的这套教程全是基于QML语言的,里面无C++代码。这里还要部分O...

IT1995的博客 5307

python毕设 基于Web的中药材信息查询系统程序+论文

***(程序+源码+数据库+调试部署+开发环境)论文文档1,文末可获取,系统界面在最后面。****

m0_74825541的博客 1257

Qt 5.12--3D功能接口介绍

Qt 5.12学习笔记--3D功能接口介绍1 简介2 Qt3D 1.0版本(淘汰)3 Qt3D 2.0版本参考 1 简介 Qt 3D为Qt C ++和Qt Quick应用程序中的2D和3D渲染提供支持的近实时仿真系统功能。 Qt3D资料和官方的例程比较少,且API 接口的文档写得又比较简略,优快云等技术网站能搜到的资料太少,在google和stackoverflow 搜索相关问题也是。博主猜测在...

天道酬勤 4031

hive sql每个用户的累积访问次数

我们有如下的用户访问数据 userId visitDate visitCount u01 2017/1/21 5 u02 2017/1/23 6 u03 2017/1/22 8 u04 2017/1/20 3 u01 2017/1/23 6 u01 2017/2/21 8 U02 2017/1/23 6 U01 2017/2/22 4 要求使用SQL...

weixin_39150719的博客 3480

SAP与泛微OA集成(半导体行业)

本项目通过SAP PO中间件集成SAP与泛微OA在半导体行业的应用,由于行业特殊性,广泛深入应用了RSA加密等特性

集信通 1162

Qt Quick 3D简介

Qt Quick 3D简介

m0_73443478的博客 2075

开源 AHB不对称半桥反激电路设计(六)死区时间,谐振腔电流,谐振电感函数表达式

电流跌落可以使副边电流峰值和有效值降低,减小损耗,但如果开关管 S2 导通期间,谐振电流谐等于励磁电流,即副边电流A 点降至 0,会在原边变压器内形成环流,产生损耗,同时也不利于副边同步整流管驱动的正常工作,为了保证开关管 S2 导通期。在开关管 S1 和开关管 S2 均关断的死区时间内,谐振电流给原边开关管结电容和副边整流管结电容充放电,因此会引起开关 S1 关断瞬间电流跌落与开关 S2 关断瞬间电流震荡现象,受寄生参数影响原边谐振电流波形和副边电流波形如图。降到最低,变压器以最高效率向副边传递能量。

【Simon】的博客 1228

QT 3D模块与OpenGL的结合

3D模块简介QT 3D模块与OpenGL的结合3D模块简介Qt是一个跨平台的C++图形用户界面应用程序框架,它广泛应用于开发GUI应用程序,同时也可以用于开发非GUI程序,如控制台工具和服务器。Qt框架包含了一套丰富的模块,其中Qt 3D是用于开发3D应用程序的模块。Qt 3D模块提供了一套完整的3D图形API,使得开发者能够方便地创建3D场景、导入模型、添加动画和交互等功能。Qt 3D模块的主要特性Qt 3D模块提供了一系列用于3D图形渲染和处理的类和接口,主要包括以下几个方面,

QT性能优化QT原理源码QT界面美化 1923

RT-DETR改进策略【独家融合改进】| SPD-Conv+PPA 再次提升模型针对小目标的特征提取能力

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1153

电阻基础知识及应用电路仿真(Multisim)

本文围绕硬件工程师必备的电阻知识,从基础知识、实操、应用仿真三方面做系统讲解:基础上明确电阻的核心参数、分类、串并联计算及核心特性;实操中详解贴片/色环电阻的阻值读取、贴片封装换算,重点区分0Ω电阻(贴装跳线,实现功能选通/调试等)与磁珠(高频吸噪)的差异及选型;应用上介绍限流、分压、上拉/下拉、阻抗匹配、过压/过流保护五大典型电路的设计公式、选型原则和实操要点,同时给出电阻通用的选型、测量和布线设计规范,形成完整的电阻应用知识体系。

XU157303764的博客 2774

Qt Quick 3D 6.11 模型加载:从 .obj 到 .mesh 的 3 步转换与性能对比

本文详细介绍了Qt Quick 3D 6.11中模型加载的优化方法,重点讲解如何将.obj格式转换为.mesh格式的三步流程,并对比不同转换工具的性能差异。通过实际测试数据展示.mesh格式在加载速度和内存占用上的显著优势,为开发者提供3D模型加载的性能优化策略和高级技巧。

weixin_33957648的博客 381

打开电脑自动弹窗问题:无法为文件‘D:\Config.Msi\*.rbf‘设置文件安全。错误:5。请确认...如何解决?| 提供多种解决方案,亲测有效!

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2910

QT 3D模块性能优化

3D模块简介《QT 3D模块性能优化》正文3D模块简介QT 3D模块是QT框架的一个重要组成部分,它为开发者提供了一套完整的3D图形渲染和处理解决方案。QT 3D模块基于OpenGL、DirectX等底层图形API,通过提供一系列高级接口,使得开发者能够更加轻松地开发出具有高性能、高质量3D图形效果的应用程序。QT 3D模块主要包含以下几个方面的内容,场景管理(Scene Management),QT 3D提供了场景管理器,可以帮助开发者轻松地创建、管理和操作3D场景。

QT性能优化QT原理源码QT界面美化 1663

全网首发--Unet3+改进16:在不同位置添加RepLKBlock超大卷积核

本文提出了一种基于大核卷积的神经网络架构RepLKNet,旨在缩小CNN与ViTs之间的性能差距。通过重新审视CNN中的大核设计,研究证明使用少量大卷积核替代多个小核能获得更强大的性能。提出的RepLKNet采用31×31大卷积核,在ImageNet和下游任务上取得了与SwinTransformer相当或更好的结果,同时具有更低延迟。文章详细介绍了实现步骤:(1)创建RepLKBlock模块文件;(2)在模型层中添加注意力机制;(3)在UNet模型中集成RepLKBlock;(4)完成训练流程。该方法展现了

AIcurator的博客 614

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Qt Quick 3D学习:模型加载

(注意,开源版的 Qt Quick 3D 是狗都不用的 GPL 协议)Qt Quick 3D 模块提供了 Model 类型用于 3D 模型加载,通过设置 source 的资源路径来加载对应的 3D 模型。

龚建波 5116

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Linux随笔
下一篇: Qt3d中的材质--PBR材质
Simple_core
博客等级 码龄6年 929粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值