我试图通过将三个ConeMeshes合并为一个实体来创建可自定义的Qt3D组件.用户必须能够与自定义实体进行交互,因此我已将ObjectPicker添加到文件中.通常,我会使用预定义的缩放.obj文件,但我的经理希望Qt直接绘制对象.
我要组合的两个网格是在一个单独的qml文件中定义的,所以我可以在我的Scene3D中调用它.
Entity {
ObjectPicker {
id: combinedPicker
}
ConeMesh {
id: conemesh1
...
}
ConeMesh {
id: conemesh2
...
}
Transform {
id: conetransform1
}
Transform {
id: conetransform2
}
Entity {
components: [conemesh1, conetransform1, conemesh2, conetransform2, combinedPicker]
}
}
Run Code Online (Sandbox Code Playgroud)
我将网格放在一起的方法是将它们作为组件包含在单独的实体范围中,如最后一行所示.但是这种方法只渲染组件数组中的最后一个条目.在上面,那将是锥2.
以前我尝试创建多个Entity实例,并将每个id传递给ObjectPicker,
Entity {
components: [conemesh1, conetransform1, combinedPicker]
}
Entity {
components: [conemesh2, conetransform2, combinedPicker]
}
Run Code Online (Sandbox Code Playgroud)
但是根据ObjectPicker的文档,对象选择器不是由多个组件共享的.
所以我的问题是:在Qml中将多个网格合并为一个网格时,有什么相关方法?
我正在测试 Qt3D 的当前状态。我非常喜欢 MetalRoughMaterial,但我似乎无法在 Qt3D 中处理这个简单的用例:我想使用重复的纹理来填充它们所在的面。
想要的结果:
我得到的是这个(见下面的代码):
如果你想知道,我制作了 2 个并排的立方体来制作第二张图片,但我不认为这是一个真正的解决方案......)
我一直在试验 WrapMode、Qtexture、textureScale,但还没有在 Qt3D 中找到解决方案。
我注意到当我更改 textureScale 时,这会在所有面上重复纹理。但是在小人脸上,我们得到的图像数量与长人脸中的图像数量相同。有没有办法对 x、y 和 z 进行不同的更改?
代码:
import Qt3D.Core 2.12
import Qt3D.Render 2.12
import Qt3D.Input 2.12
import Qt3D.Extras 2.12
Entity {
id: sceneRoot
components: [
RenderSettings {
activeFrameGraph: ForwardRenderer{
camera: camera
}
},
InputSettings { },
DirectionalLight {
worldDirection: Qt.vector3d(-1, -1, -1);
color: "white"
intensity: 2.0
}
]
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
aspectRatio: 800/600
nearPlane : 0.1
farPlane : 1000.0 …Run Code Online (Sandbox Code Playgroud) 我试图找到两个网格之间的偏差。例如,在 3d 空间中定义的两组点之间的差异,我计划使用一些 3d 可视化工具来可视化距离,例如 QT3d 或一些基于开放 gl 的库。
我有两组网格,基本上是两个 .stl 文件。我已经编程将它们作为输入读取。现在我需要计算相应网格之间的偏差。为此,我理解 Hausdorff 距离是一种可能的数学工具。是否有任何库可以计算两个网格之间的 Hausdorff 距离?
我设法找到了一段代码。但它或多或少本身就是一个程序。它叫做MESH我不想使用它,因为,1. 它是用 C 编写的,2. 我想开发我自己的应用程序(当然使用库)。
在这个论坛上提出的其他问题都指向数学算法,我不打算自己实现算法。
我正在使用 QT5 进行 msvc2010(32 位)编程。
此致
tdk。