Dust3D
josonton
这个作者很懒,什么都没留下…
展开
-
Dust3D开源项目分析——渲染与材质部分 | 材质预览 Part 2
2021SC@SDUSCmaterialpreviewsgenerator.cpp用于实现具体的材质预览方法。#include <QGuiApplication>#include <QElapsedTimer>#include "materialpreviewsgenerator.h"#include "meshgenerator.h"#include "snapshotxml.h"#include "ds3file.h"#include "texturege.原创 2021-12-27 23:46:02 · 387 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 材质预览 Part 1
2021SC@SDUSCmaterialpreviewsgenerator.h定义了材质预览生成器类,它是QObject的公有继承子类。#ifndef DUST3D_MATERIAL_PREVIEWS_GENERATOR_H#define DUST3D_MATERIAL_PREVIEWS_GENERATOR_H#include <QObject>#include <map>#include <QUuid>#include <vector>.原创 2021-12-27 23:44:55 · 522 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 顶点数据结构
2021SC@SDUSCshaderVertex.h定义了用于渲染的顶点(Vertex)数据结构,本文将分析一个ShaderVertex拥有的属性。#ifndef DUST3D_SHADER_VERTEX_H#define DUST3D_SHADER_VERTEX_H#include <QOpenGLFunctions>#pragma pack(push)#pragma pack(1)typedef struct{ GLfloat posX; GLflo.原创 2021-12-27 23:40:42 · 1836 阅读 · 0 评论 -
Dust3D开源项目分析——模型处理部分 | 三角化面片
2021SC@SDUSC针对四边面或者N-Gon,执行mesh三角化命令。头文件#ifndef DUST3D_TRIANGULATE_FACES_H#define DUST3D_TRIANGULATE_FACES_H#include <QVector3D>#include <vector>bool triangulateFacesWithoutKeepVertices(std::vector<QVector3D> &vertices, c.原创 2021-12-27 23:36:12 · 520 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | shadermesh绑定 Part 2
2021SC@SDUSCcpp文件。shadermesh绑定的具体实现。// This file follow the Stackoverflow content license: CC BY-SA 4.0,// since it's based on Prashanth N Udupa's work: https://stackoverflow.com/questions/35134270/how-to-use-qopenglframebufferobject-for-shadow-mapp.原创 2021-12-27 23:32:23 · 159 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | shadermesh绑定 Part 1
2021SC@SDUSC这一部分负责读取shader并完成shadermesh的绑定头文件// This file follow the Stackoverflow content license: CC BY-SA 4.0,// since it's based on Prashanth N Udupa's work: https://stackoverflow.com/questions/35134270/how-to-use-qopenglframebufferobject-for-.原创 2021-12-27 23:25:08 · 186 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 材质初始化
2021SC@SDUSC读取快照信息,并从快照中初始化材质纹理。头文件 material.h#ifndef DUST3D_MATERIAL_H#define DUST3D_MATERIAL_H#include <QImage>#include <QUuid>#include "texturetype.h"#include "snapshot.h"struct MaterialTextures{ const QImage *textureImag.原创 2021-12-10 13:59:25 · 257 阅读 · 0 评论 -
Dust3D开源项目分析——骨骼与动画部分 | 关节树
2021SC@SDUSC这一部分文件主要负责构建储存骨骼层级关系的数据结构,是骨骼动画的基础。头文件部分 jointnodetree.h#ifndef DUST3D_JOINT_NODE_TREE_H#define DUST3D_JOINT_NODE_TREE_H#include <QMatrix4x4>#include <vector>#include <QQuaternion>#include "rig.h"struct JointNo..原创 2021-12-10 13:55:38 · 723 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 纹理生成 Part5
2021SC@SDUSCauto drawBySolubility = [&](const QUuid &partId, size_t triangleIndex, size_t firstVertexIndex, size_t secondVertexIndex, const QUuid &neighborPartId) { const std::vector<QVector2D> &uv = triangleVe.原创 2021-12-10 13:41:19 · 298 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 纹理生成 Part4
2021SC@SDUSC for (const auto &it: partUvRects) { const auto &partId = it.first; const auto &rects = it.second; auto findSourceColorResult = partColorMap.find(partId); if (findSourceColorResult != partColorMa..原创 2021-12-10 13:37:42 · 1271 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 纹理生成 Part3
2021SC@SDUSC纹理生成函数generate(),函数相对复杂,主要负责纹理的生成功能。因为代码跨度较大,这里会分成几篇文章进行分析。void TextureGenerator::generate(){ m_resultMesh = new Model(*m_object); if (nullptr == m_object->triangleVertexUvs()) return; if (nullptr == m_object-&原创 2021-12-10 13:31:14 · 197 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 纹理生成 Part2
2021SC@SDUSC预处理函数prepare()。void TextureGenerator::prepare(){ if (nullptr == m_snapshot) return; std::map<QUuid, QUuid> updatedMaterialIdMap; std::map<QUuid, bool> updatedCountershadedMap; for (const auto &am..原创 2021-12-10 12:57:04 · 242 阅读 · 0 评论 -
Dust3D开源项目分析——渲染与材质部分 | 纹理生成 Part1
2021SC@SDUSC通过阅读源码文件和查阅相关资料,笔者发现Dust 3D使用的图形引擎是(基于Qt的)OpenGL,或者说QOpenGL。就Qt 5.0 而言,QOpenGL是建立在OpenGL ES(Embeded System)2.0规范上的,可以说是OpenGL ES 3.0的弱化版本。事实上OpenGL ES 2.0是2004年发布的一个相当古老的版本,并不支持部分相对先进的OpenGL方法、数据格式、快捷算法等功能。笔者认为之所以选用2.0版本,一方面是因为Dust ...原创 2021-10-17 23:11:27 · 310 阅读 · 0 评论 -
Dust3D开源项目分析
2021SC@SDUSCDust3D是一款跨平台的开源交互式三维辅助建模软件,可以辅助创作者快速制作无缝的三维模型,以加速游戏等产业的角色制作、3D打印等流程。本篇为软件工程创新与实践项目分析系列的综述篇。经过团队讨论,我们认为dust3D项目的核心部分是关节节点的交互式创建与管理、关节节点到具有合理拓扑结构的三维模型的转化、实时绘制节点和模型的渲染管线这三部分。团队将围绕这些核心功能展开项目代码分析。笔者负责的主要是一部分交互式节点建模内容和渲染管线中的shader部分。以这些核心功能为基础,软件原创 2021-09-30 23:54:25 · 1200 阅读 · 0 评论