gpt4 book ai didi

opengl - 在 3D View 中实现操纵 handle 的方法

转载 作者:行者123 更新时间:2023-12-02 11:31:58 26 4
gpt4 key购买 nike

我正在构建一个简单的实体建模应用程序。用户需要能够在正交 View 和透视 View 中操作对象。例如,当屏幕上有一个框并且用户单击它来选择它时,它需要在角落和中心获得“ handle ”,以便用户可以将鼠标移动到这样的 handle 上并将其拖动到放大或移动该框。

有什么策略可以做到这一点,哪一种是最好的?我可以想到两个明显的:

1) 将 handle 视为 3d 对象。 IE。对于盒子,将小盒子添加到“主”盒子角落的场景中。问题:这在透视 View 中不起作用,我需要确定相对于当前缩放级别的框的大小(无论用户放大/缩小多远, handle 都需要具有相同的大小)

2) 在渲染场景后添加 handle 。渲染到屏幕外缓冲区,以某种方式确定角点的 2d 位置,并使用常规 2d 绘图技术来绘制 handle 。问题:我将如何进行 HitTest ?我还需要进行两阶段的 HitTest 方法;如何在 3D 渲染图像上进行 2D 绘制?退回到 GDI?

这两种方法可能都存在更多问题。是否有行业标准的方法来解决这个问题?

我正在使用 OpenGL,如果这有什么不同的话。

最佳答案

我会将 handle 视为 3D 对象。这提供了许多优点 - 更一致、表现良好、 HitTest 很容易等等。

如果您希望 handle 大小恒定,您仍然可以将它们视为 3D 对象,但您必须根据到相机的距离适当缩放它们的大小。这有点麻烦,但由于通常只有几个句柄,而且这些通常都是小对象,因此性能应该很好。

但是,我实际上想说让 handle 随着场景缩放。只要您为 handle 选择一种使它们脱颖而出的渲染样式(即:明亮的橙色框等),透视效果(背景中较小的 handle )实际上可以在很多方面使最终用户更轻松地使用它们。从 3D 场景中获得深度感很困难 - handle 上的透视效果有助于提供更多视觉线索,了解 handle 在屏幕中的“深度”。

关于opengl - 在 3D View 中实现操纵 handle 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com