微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按顶点数对 3D 对象进行排序 C++

如何解决按顶点数对 3D 对象进行排序 C++

“创建一个应用程序,对屏幕上显示的*静态网格物体进行可视化排序,按顶点数量。”

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

这是与挑战一起发送的视觉“指南”:

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

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

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

我的做法有错吗?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。