我正在 Qt 5.15 上试验 QtQuick3D。嵌入 QtQuick 的功能Item非常棒。我喜欢创建一个矩形(100 x 100 单位)并用Image(1000 x 1000 像素)填充它。
当我定义 aMaterial并分配它时效果很好(参见 Model okButCodeSpread,屏幕截图中的右矩形),但它更多的是代码。
定义 aNode和嵌入a 的时间要短得多Image。但是,在这种情况下,我很难控制纹理的大小。无论我尝试什么,它都是模糊的。请参阅屏幕截图中的模型doesNotWork和左侧矩形。
Image我通过放大和缩小找到了解决方法Node。请参阅屏幕截图中的模型okButUgly,中间矩形。
有什么想法可以为 Model 获得清晰的纹理doesNotWork吗?
另外,如何隐藏用于定义 2D 的图像Material?将可见属性设置为 false 会导致 3D 中的纹理为纯黑色...
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick3D 1.15
import QtQuick3D.Helpers 1.15
Window {
width: 640
height: 480
visible: true
Image {
id: image
layer.enabled: true
width: 1000
height: 1000
source: "test.png"
}
View3D {
id: view
width: 400
height: 400
renderMode: View3D.Inline
environment: SceneEnvironment {
clearColor: "dimgray"
backgroundMode: SceneEnvironment.Color
}
PerspectiveCamera {
id: cam
position: Qt.vector3d(0, 0, 350)
}
DirectionalLight {
}
WasdController {
controlledObject: cam
}
DefaultMaterial {
id: mat
diffuseMap: Texture {
sourceItem: image
}
}
Node {
id: doesNotWork
position: Qt.vector3d(-150, 0, 0)
Image {
layer.enabled: true
layer.textureSize: Qt.size(1000, 1000)
sourceSize: Qt.size(1000, 1000)
width: 100
height: 100
source: "test.png"
}
}
Node {
id: okButUgly
property real scaleFactor: 10
position: Qt.vector3d(0, 0, 0)
scale: Qt.vector3d(1/scaleFactor, 1/scaleFactor , 1/scaleFactor)
Image {
width: 100 * okButUgly.scaleFactor
height: 100 * okButUgly.scaleFactor
source: "test.png"
}
}
Model {
id: okButCodeSpread
position: Qt.vector3d(150, 0, 0)
source: "#Rectangle"
materials: mat
}
}
DebugView {
source: view
}
}
