Qt3D 5.9 and future
- 2017-05
- http://blog.qt.io/blog/2017/05/24/qt3d/
- Qt3D future
- 5.9
- Use Qt Quick or QPainter to render into a texture
- Embed Qt Quick into Qt3D, including input handling
- Level of Detail support for meshes
- Text support - 2D and 3D
- Additional materials such as PBR materials
- others
- Generating and filling buffers out of QAbstractItemModels
- Billboards - camera facing entities
- Particle systems
- VR support
- new aspects:
- 碰撞检测
- 动画:关键帧动画;骨骼动画;Morph target animation; Removes animation workload from main thread
- 物理:刚体/柔体物理模拟
- AI:
- 三维位置音效:如喇叭,越近越响
- 工具
- 设计时工具:场景设计器
- Qt 3D Studio
- 编译时工具:资产状态监控
- More
- 贴图控制
- 可yizhi算法(OpenGL)
- 各种3d模型的加载
- 2d ui嵌入到 3d里面用Scene2D
- Scene2D {
- id: qmlTexture
- output: RenderTargetOutput {
- attachmentPoint: RenderTargetOutput.Color0
- texture: Texture2D { id: offscreenTexture }
- }
- entities: [ cube ]
- Item {
- id: customQtQuickStuff
- }
- }
- 纹理加载器
- TextureLoader {
- source: "qrc:/assets/textures/pbr-default/pbr-default-metallic.png"
- minificationFilter: Texture.LinearMipMapLinear
- magnificationFilter: Texture.Linear
- wrapMode {
- x: WrapMode.ClampToEdge
- y: WrapMode.ClampToEdge
- }
- generateMipMaps: true
- }
- 新增材质
- 粗糙金属材质
- MetalRoughMaterial
- 粗糙金属纹理材质
- TexturedMetalRoughMaterial {
- baseColor: TextureLoader {
- format: Texture.SRGB8_Alpha8
- source: "qrc:/assets/powerup/basecolor.png"
- }
- metalness: TextureLoader { source: "qrc:/assets/powerup/metalness.png" }
- roughness: TextureLoader { source: "qrc:/assets/powerup/roughness.png" }
- normal: TextureLoader { source: "qrc:/assets/powerup/normal.png" }
- ambientOcclusion: TextureLoader { source: "qrc:/assets/powerup/ambientocclusion.png" }
- }
- 新增环境光
- EnvironmentLight {
- id: envLight
- irradiance: TextureLoader {
- source: "qrc:/assets/envmaps/wobbly-bridge/wobbly_bridge_4k" + _envmapFormat + "_cube_irradiance.dds"
- minificationFilter: Texture.LinearMipMapLinear
- magnificationFilter: Texture.Linear
- wrapMode {
- x: WrapMode.ClampToEdge
- y: WrapMode.ClampToEdge
- }
- generateMipMaps: false
- }
- specular: TextureLoader {
- source: "qrc:/assets/envmaps/wobbly-bridge/wobbly_bridge_4k" + _envmapFormat + "_cube_specular.dds"
- minificationFilter: Texture.LinearMipMapLinear
- magnificationFilter: Texture.Linear
- wrapMode {
- x: WrapMode.ClampToEdge
- y: WrapMode.ClampToEdge
- }
- generateMipMaps: false
- }
- }
- 天空盒实体
- SkyboxEntity {
- baseName: "qrc:/assets/envmaps/wobbly-bridge/wobbly_bridge_4k" + _envmapFormat + "_cube_radiance"
- extension: ".dds"
- gammaCorrect: true
- }
- 相机增加曝光度属性
- Camera {
- id: mainCamera
- position: Qt.vector3d(-10, 0, 0)
- viewCenter: Qt.vector3d(0, 0, 0)
- exposure: 1.4 // 曝光度
- }
- 加载预设的动画
- import Qt3D.Animation 2.9
- ClipAnimator {
- id: animator
- loops: 3
- clip: AnimationClipLoader { source: "qrc:/jumpinganimation.json" }
- channelMapper: ChannelMapper {
- mappings: [
- ChannelMapping { channelName: "Location"; target: cubeTransform; property: "translation" },
- ChannelMapping { channelName: "Rotation"; target: cubeTransform; property: "rotation" },
- ChannelMapping { channelName: "Scale"; target: cubeTransform; property: "scale3D" }
- ]
- }
- }
- 对象选择器
- ObjectPicker { onClicked: animator.running = true;}
- 根据远近来动态调整场景(volumeOverride)
- LevelOfDetail
- Entity {
- components: [
- CylinderMesh {
- radius: 1
- length: 3
- rings: 2
- slices: sliceValues[lod.currentIndex]
- property var sliceValues: [20, 10, 6, 4]
- },
- Transform {
- rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45)
- },
- PhongMaterial {
- diffuse: "lightgreen"
- },
- LevelOfDetail {
- id: lod
- camera: camera
- thresholds: [1000, 600, 300, 180]
- thresholdType: LevelOfDetail.ProjectedScreenPixelSizeThreshold
- volumeOverride: lod.createBoundingSphere(Qt.vector3d(0, 0, 0), 2.0)
- }
- ]
- }
- LevelOfDetailSwitch
- Entity {
- components: [
- LevelOfDetailSwitch {
- camera: camera
- thresholds: [20, 35, 50]
- thresholdType: LevelOfDetail.DistanceToCameraThreshold
- }
- ]
- HighDetailEntity { enabled: false }
- MediumDetailEntity { enabled: false }
- LowDetailEntity { enabled: false }
- }
- LevelOfDetailLoader
- LevelOfDetailLoader {
- id: lodLoader
- camera: camera
- thresholds: [20, 35, 50]
- thresholdType: LevelOfDetail.DistanceToCameraThreshold
- volumeOverride: lodLoader.createBoundingSphere(Qt.vector3d(0, 0, 0), -1)
- sources: ["qrc:/HighDetailEntity.qml", "qrc:/MediumDetailEntity.qml", "qrc:/LowDetailEntity.qml"]
- }
- 渲染文本
- Text2DEntity
- Text2DEntity {
- id: text
- text: "Hello World"
- width: 20
- height: 10
- }
- ExtrudedTextMesh
- auto *text = new Qt3DCore::QEntity(root);
- auto *textTransform = new Qt3DCore::QTransform();
- auto *textMesh = new Qt3DExtras::QExtrudedTextMesh();
- textMesh->setDepth(.45f);
- QFont font(family, 32, -1, false);
- textMesh->setFont(font);
- textMesh->setText(QString(family));
- auto *textMaterial = new Qt3DExtras::QPhongMaterial(root);
- textMaterial->setDiffuse(QColor(111, 150, 255));
- text->addComponent(textTransform);
- text->addComponent(textMesh);
- text->addComponent(textMaterial);
Qt3D 5.9 and future的更多相关文章
- 面向未来的友好设计:Future Friendly
一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...
- 线程笔记:Future模式
线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...
- 第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...
- Eclipse调试Android App若选择“Use same device for future launches”就再也无法选择其他设备的问题
在狂批了某供应商的多媒体控制App有多烂后,夸下海口自己要做一个也是分分钟的事.当然要做好不容易,要超过他们的烂软件还是有信心的.过程中遇到各种坑,其中之一如下 刚开始只使用一个平板进行调试,老是弹出 ...
- java Future 接口介绍
(转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...
- java多线程系类:JUC线程池:06之Callable和Future(转)
概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...
- 架构师养成记--9.future模式讲解
什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成.假如 ...
- Future和Promise
Future用于获取异步操作的结果,而Promise则比较抽象,无法直接猜测出其功能. Future Future最早来源于JDK的java.util.concurrent.Future,它用于代表异 ...
- Java--Callable与返回值future
package com; import java.util.concurrent.*; /** * Created by yangyu on 16/11/28. */ /** * Callable a ...
随机推荐
- helm-chart6,子chart 和全局值
chart可以有称为子chart的依赖关系 关于子chart 1,子chart认为是"独立的",即子chart不能明确依赖于其父chart. 2,子chart无法访问其父项的值. ...
- IDEA_教你十分钟下载并破解IntelliJ IDEA(2017)(转)
之前都是用myeclipse,但是最近发现看的很多教学视频都是使用 IntelliJ IDEA,于是决定换个软件开始新的学习征程! 下面讲讲我是如何在十分钟之内安装并破解该软件. 1.首先,我找到了 ...
- (63)Wangdao.com第十天_预处理、预解析_函数 上下文对象、参数列表对象
预解析.预处理 1. 在全局代码执行之前,js 引擎 就会创建一个栈来存储管理所有的 执行上下文对象 2. 在 全局执行上下文 window 确定以后,进行压栈 3. 在 函数执行上下文对象 确定以后 ...
- Java常用类库 读书笔记 一
1.String Buffer 类 String 类所表示的字符串有一个局限就是字符串常量一旦声明则不可改变,只有内存地址的指向可以改变,如果要频繁修改字符串,需要使用String Buffer 类. ...
- python hashlib模块 md5加密 sha256加密 sha1加密 sha512加密 sha384加密 MD5加盐
python hashlib模块 hashlib hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, ...
- 【动态规划dp】青蛙的烦恼
青蛙的烦恼(frog) 原文:https://blog.csdn.net/xyc1719/article/details/79844952 [题目描述] 池塘中有 n 片荷叶恰好围成了一个凸多边形,有 ...
- Python 学习笔记6 变量-元组
我们在上一篇中了解了变量list(列表), 今天我们来介绍下元组.元组是由括号和逗号,组织起来的一个元素的集合.和list不同的是,它其中的元素是不能被修改的,和其他语言中的常量相类似. 需要注意的是 ...
- table-一列细分为多列(合并单元格)
这个是一个很常见的一个表格展示需求,其中最要的就两个属性 rowspan 和 colspan .他们分别就是合并行 与 合并列. 要做的效果是如图下面这个,联系电话就是合并了单元格.这个说法类似于ex ...
- 配置环境变量及jdk
1.配置虚拟机nat默认为yes:cd /etc/sysconfig/network-scripts/ ll(查看下面ifcfg文件名称) vim ifcfg-eno16777736(按 ...
- Redis可视化工具安装及常用操作操作
可视化操作工具:RedisDesktopManager 下载地址:http://www.pc6.com/mac/486661.html 直接安装(傻瓜式安装,直接下一步就可以了)(有Mac和windo ...