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的更多相关文章

  1. 面向未来的友好设计:Future Friendly

    一年前翻译了本文的一部分,最近终于翻译完成.虽然此设计思想的提出已经好几年了,但是还是觉得应该在国内推广一下,让大家知道“内容策略”,“移动优先”,“响应式设计”,“原子设计”等设计思想和技术的根源. ...

  2. 线程笔记:Future模式

    线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...

  3. 第二篇 Entity Framework Plus 之 Query Future

    从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...

  4. Eclipse调试Android App若选择“Use same device for future launches”就再也无法选择其他设备的问题

    在狂批了某供应商的多媒体控制App有多烂后,夸下海口自己要做一个也是分分钟的事.当然要做好不容易,要超过他们的烂软件还是有信心的.过程中遇到各种坑,其中之一如下 刚开始只使用一个平板进行调试,老是弹出 ...

  5. java Future 接口介绍

    (转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...

  6. java多线程系类:JUC线程池:06之Callable和Future(转)

    概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...

  7. 架构师养成记--9.future模式讲解

    什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成.假如 ...

  8. Future和Promise

    Future用于获取异步操作的结果,而Promise则比较抽象,无法直接猜测出其功能. Future Future最早来源于JDK的java.util.concurrent.Future,它用于代表异 ...

  9. Java--Callable与返回值future

    package com; import java.util.concurrent.*; /** * Created by yangyu on 16/11/28. */ /** * Callable a ...

随机推荐

  1. 项目导入之后报错:The import javax.servlet cannot be resolved

    项目导入之后报错:The import javax.servlet cannot be resolved 解决方法:在Eclipse中,右击项目,选择Build Path->configure ...

  2. Egret--设置全屏,控制浏览器全屏

    1, 手机浏览器打开的项目的时候,浏览器的虚拟按键/标题栏, 使得即便设置全屏也没有变成全屏(好像JS 中有方法向浏览器请求全屏) 2, 加载资源, 关闭后卸载, 再次进入游戏依然很快.不过登陆游戏的 ...

  3. 手把手教你安装nmon

    一.nmon简介 nmon是由IBM 提供.免费监控 AIX 系统与 Linux 系统资源的工具.该工具可帮助在一个屏幕上显示服务器系统资源耗用情况,并动态地对其进行更新.此外,他还可以利用 exce ...

  4. __x__(46)0910第六天__框架集

     框架集frameset 和 内联框架iframe 的作用类似: 在一个页面中,引入其他的外部html页面. 框架集可以同时引入多个页面. 在 html5 中,推荐使用框架集,而不推荐使用iframe ...

  5. Sum It Up---(DFS)

    Sum It Up Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  6. foreach next 操作数组指针移动问题

    2018年10月20日10:39:40 先说结论,foreach 维护的是一套属于自己的数组指针 会在操作数据的时候,分裂一套变量地址,即使你强制使用 & 取地址一样会分裂,不会引用同一套指针 ...

  7. fiddler4微信抓包教程

    使用fiddler来抓包: 需要先做一些简单的准备工作: 一台带有无线网卡的PC或者笔记本电脑,然后将电脑和手机连接到同一个Wi-Fi网络中,并且保证二者是在同一个ip网段内的: 在电脑上安装 Fid ...

  8. struct与class的区别

    C++中的struct是对C中struct的扩充,它已经不再只是一个包含不同数据类型的数据结构,因为其扩充了太多功能.总的来说,C++中struct和class极其相似,比如,struct能包含成员函 ...

  9. 【Solution】MySQL 5.8 this is incompatible with sql_mode=only_full_group_by

    [42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated colu ...

  10. 面试 Java 高级后端开发,要准备哪些知识点?

    其实公司肯花时间让你去面试,前提条件一定是通过你的简历,一定发现了你和公司的匹配点,也就是说,一定是有录用意向的. 在技术面试的时间段里(最长1个小时),你如果能展现你的优势那是最好的,但如果你做不到 ...