2021-03-19 3D界面GUI操作

3D界面的好处:增加了一个维度,可以塞下更多展示内容。也可以有更多的展示图层,便于组织信息。可以实现拖放 ,手动排序功能。

但是3D界面的操作更困难。如果是2D,只需要计算光标是否落入某个盒子,如果落入盒子则结合其他输入,进行选中、点击、拖动等动作。但是3D界面需要对于栅格化后的像素矩阵,反向查询每个像素属于透视关系的某个盒子,就像sketchup中做的一样。

尚未找到processing中的3D界面的插件, 用一些关键字在bing里搜索:“select object RayTracing”,“3D Object picking -processing” 得到的结果如下:


https://forum.processing.org/two/discussion/2631/how-to-pick-an-object-in-3d

How to pick an object in 3D?

http://www.3dkingdoms.com/selection.html

选择教程(3D编程)

https://ahbejarano.gitbook.io/lwjglgamedev/chapter23

3D对象拾取

https://blog.csdn.net/hmbxsy/article/details/80509876

计算机图形学——光线追踪(RayTracing)算法

https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation

Rasterization: a Practical Implementation

https://www.scratchapixel.com/lessons/3d-basic-rendering/rasterization-practical-implementation





找到了插件--GUI3D,可以检测鼠标指针在3D空间的一个平面内的位置,只能建立3D控件,不可移动,如下图




接下来的路有2条,一是自己开发processing 3D选中插件,二是仅仅用2D界面对3D界面操作。

自己开发processing 3D选中插件

1--从3d场景生成2D图片,并对图片上每个点分类,形成分区的2D图片,建立一个2维矩阵,矩阵的坐标是窗口大小,矩阵的内容是对应的3D物品(或者背景)

2--实时计算每个点对应的3D物品。知道了视点,光标坐标,就可以发射一束光,照射到某个3D物品或背景。这其实是计算机图形学——光线追踪(RayTracing)算法。

这些都需要一定的算力,也会拖慢刷新率,造成卡顿。

暂时不做。

用2D方法控制3D内容:见下篇文章

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容