使用blender3.4.1开发
新版存在个人不能接受的bug或改动,故停留在此版本
-
透视模式下: 吸附视图内所有可见点
-
非透视下: 只吸附视图内可见的点,即忽略背面的点
-
局部视图:
-
由于api(local_view_get)存在bug,大约两年前已发现并被确认,但至今仍未修复,故只能通过切换选择状态来获取局部视图内的物体。
偶然发现在插件中使用
[obj.name for obj in context.scene.objects if obj.visible_get()]
可以仅获取局部视图中的可见物体,可靠性未知,但个人更喜欢此方法,如有bug,欢迎提出脚本编辑器中仍会得到全部物体
-
利用ray_cast获取鼠标下的物体也存在问题,ray_cast会碰撞到局部视图之外的物体,故只能采取隐藏其他物体的方式规避。
-
-
网格太密的物体没有吸附的意义,故采取以下规则:
以鼠标下的面为基准,获取面在屏幕上的投影所占据的面积,目前忽略小于 60*60的面
目前只对mesh物体进行捕捉,其他类型待以后添加
目前的快捷键(测试用,核心代码并未监听任何快捷键):
按键 | 功能 |
---|---|
1 | 顶点 |
2 | 边中点 |
3 | 面中心 |
o | 物体原点 |