mirror of https://github.com/qt/qtdoc.git
110 lines
2.7 KiB
QML
110 lines
2.7 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
import QtQuick
|
|
import QtQuick3D
|
|
import QtQuick3D.Physics
|
|
import QtQuick3D.Helpers
|
|
|
|
Item {
|
|
id: item
|
|
property real settingGravity: 980.7
|
|
property real settingsStaticFriction: 0.5
|
|
property real settingsDynamicFriction: 0.5
|
|
property real settingsRestitution: 0.5
|
|
|
|
function spawnDice(numberOfDice, rollForce, diceWidth) {
|
|
diceSpawner.spawnDice(numberOfDice, physicsMaterial, rollForce, diceWidth)
|
|
}
|
|
|
|
function setDiceWidth(diceWidth) {
|
|
diceSpawner.setDiceWidth(diceWidth);
|
|
}
|
|
|
|
PhysicsWorld {
|
|
id: physicsWorld
|
|
running: true
|
|
enableCCD: true
|
|
scene: viewport.scene
|
|
gravity: Qt.vector3d(0, -settingGravity, 0)
|
|
typicalLength: 1
|
|
typicalSpeed: 1000
|
|
minimumTimestep: 15
|
|
maximumTimestep: 20
|
|
}
|
|
|
|
PhysicsMaterial {
|
|
id: physicsMaterial
|
|
staticFriction: settingsStaticFriction
|
|
dynamicFriction: settingsDynamicFriction
|
|
restitution: settingsRestitution
|
|
}
|
|
|
|
OrbitCameraController {
|
|
anchors.fill: parent
|
|
origin: originNode
|
|
camera: camera
|
|
}
|
|
|
|
View3D {
|
|
id: viewport
|
|
anchors.fill: parent
|
|
camera: camera
|
|
|
|
Node {
|
|
id: originNode
|
|
eulerRotation: Qt.vector3d(-14.2885, 410.287, 0)
|
|
PerspectiveCamera {
|
|
id: camera
|
|
position: Qt.vector3d(0, -20, 60)
|
|
clipFar: 1000
|
|
clipNear: 0.1
|
|
}
|
|
}
|
|
|
|
environment: SceneEnvironment {
|
|
clearColor: "white"
|
|
backgroundMode: SceneEnvironment.SkyBox
|
|
antialiasingMode: SceneEnvironment.MSAA
|
|
antialiasingQuality: SceneEnvironment.High
|
|
lightProbe: proceduralSky
|
|
}
|
|
|
|
Texture {
|
|
id: proceduralSky
|
|
textureData: ProceduralSkyTextureData {
|
|
sunLongitude: -115
|
|
}
|
|
}
|
|
|
|
Node {
|
|
id: scene
|
|
|
|
DirectionalLight {
|
|
eulerRotation: Qt.vector3d(-45, 25, 0)
|
|
castsShadow: true
|
|
brightness: 1
|
|
shadowMapQuality: Light.ShadowMapQualityVeryHigh
|
|
}
|
|
|
|
PhysicalTable {
|
|
id: table
|
|
}
|
|
|
|
DiceSpawner {
|
|
id: diceSpawner
|
|
}
|
|
|
|
Carpet {
|
|
position: Qt.vector3d(0, -50, 0)
|
|
}
|
|
|
|
// floor
|
|
StaticRigidBody {
|
|
position: Qt.vector3d(0, -50, 0)
|
|
eulerRotation: Qt.vector3d(-90, 0, 0)
|
|
collisionShapes: PlaneShape {}
|
|
}
|
|
}
|
|
}
|
|
}
|