惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Proofpoint News Feed
量子位
K
Kaspersky official blog
S
SegmentFault 最新的问题
博客园 - 叶小钗
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
Hugging Face - Blog
Hugging Face - Blog
博客园 - Franky
F
Fortinet All Blogs
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
T
Tenable Blog
U
Unit 42
S
Schneier on Security
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
Visual Studio Blog
The Hacker News
The Hacker News
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
Intezer
Cyberwarzone
Cyberwarzone
Know Your Adversary
Know Your Adversary
V
Vulnerabilities – Threatpost
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
T
The Exploit Database - CXSecurity.com
V
V2EX
Help Net Security
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
www.infosecurity-magazine.com
www.infosecurity-magazine.com
PCI Perspectives
PCI Perspectives
腾讯CDC
Webroot Blog
Webroot Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News | PayPal Newsroom
Recorded Future
Recorded Future
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志
C
Check Point Blog

博客园 - surfsky

用阿里的 sketch 插件 FusionDesign 来快速设计中后台 用 Sketch 设计和输出响应式网页 百度、高德、腾讯、天地图、谷歌、必应瓦片图地图切图工具 MapCutter(旧名 MapTiler),支持超大图、高清切片、webgl、leaflet、maptalk、openlayers、cesium netcore 下的 Javascript 表达式求值 netcore 下的 C# 表达式求值 中标麒麟安装SQLServer 中标麒麟上开启MySql 在 MAC 下配置 Nginx Color Schema 配色随笔 .Net与 WebAssembly 随笔 关于Xamarin、Qml、数据绑定、MVC、MVVM 相关的散讲 用Nuget部署程序包 Qt3D Qt3D Shader Qt QML 2D shader LearnOpenGL FineUI 相关 EntityFramwork 七七八八 Qt qml 单例模式
Qt3D 5.9 and future
surfsky · 2017-06-08 · via 博客园 - surfsky
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);