【问题标题】:Sort 3D objects by their number of vertices C++按顶点数对 3D 对象进行排序 C++
【发布时间】:2021-05-13 04:35:44
【问题描述】:

“创建一个应用程序,对屏幕上呈现的*静态网格进行视觉排序,按顶点数。”

*静态网格只是一个 3D 模型(在虚幻引擎 4 中)

这是一个视觉“指南”,随挑战一起发送:

https://drive.google.com/file/d/1v0-3zEoDugelGWK-U9t4GEHkA0hAuLfk/view?usp=sharing

我知道我应该使用排序算法,但是例如,顶点的数量如何适合它

我不明白的是,我将如何根据静态网格体的顶点数(整数)对对象的位置(3D 矢量,XYZ)进行排序,以及两把椅子的平移有何不同(查看视频)如果它们具有相同数量的顶点,因为它们是完全相同的静态网格体。这是否意味着它们的目标位置不是设置而是选择的,这意味着它们的值是恒定的并且在排序之前存在?

我是不是把这一切都搞错了?

【问题讨论】:

  • 这只是一个想法;考虑一下。什么是我们为对象分配一个 ID 并使用它们来唯一标识它们,而不是浪费性能尝试对网格数据进行排序?如果网格相同,那么您认为我们可以唯一地识别它们(使用网格数据)吗?
  • 您是在告诉我们您知道两把椅子有相同的网眼吗?给你的插图暗示它们只是相似
  • @D-RAJ 我必须按照挑战所说的那样去做,这是一项要求。我认为这是对对象的位置进行排序而不是对静态网格本身进行排序,因为静态网格是附加到对象的组件,因此它会跟随其位置。
  • @DrewDormann 这些椅子是 UE4 入门内容附带的。我检查过,它们具有完全相同的“SM_Chair”静态网格。

标签: c++ sorting computer-science unreal-engine4 vertices


【解决方案1】:

选择一个靠近相机的起点(我们称之为 cameraPos,坐标为 x1、y1、z1)。选择朝向相机正在看的方向的一些点(lookAt with coords x2, y2, z2)。方向向量(我们称之为 dirVec)是 lookAt - cameraPos(x2-x1, y2 - y1, z2 - z1)。这是一个向量,表示相机的大致方向。您对您的 3d 对象进行排序,现在它们被排名 - 例如,具有最多顶点的对象排名为 1,第二个对象为 2,依此类推。现在像这样计算每个对象的位置:pos = cameraPos + dirVec * rank。在这里,您的对象现在可以直观地排序。如果你不知道如何加减向量或向量乘以数字或这些操作的含义,你应该先熟悉它。

【讨论】:

    猜你喜欢
    • 2021-09-16
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多