文章目录
主要讲解halcon软件中set_object_model_3d_attrib.hdev例子
此示例程序描述如何在HALCON中使用
gen_plane_object_model_3d 创建表示平面的三维对象模型
gen_sphere_object_model_3d_center 创建表示X、Y、Z坐标球体的三维对象模型
gen_sphere_object_model_3d 创建表示球体的三维对象模型。
gen_cylinder_object_model_3d 创建表示圆柱体的三维对象模型
gen_box_object_model_3d 创建表示盒子的三维对象模型
在这个例子中,一个平面,两个球体,一个圆锥体和一个盒子。生成的3D对象模型的原始图形显示出来。
1.set_object_model_3d_attrib.hdev例子
dev_update_off () //暂停刷新
dev_close_window () //关闭窗体
dev_open_window (0, 0, 640, 480, 'black', WindowHandle) //打开新窗体
set_display_font (WindowHandle, 16, 'mono', 'true', 'false') //设置字体
PoseIn := [0.1,1.5,88,106,337,224,0]
gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, 6.28318, 'positive', 120) //创建一个圆形轮廓
get_contour_xld (ContCircle, Row, Column) //提取轮廓中心
X := 3 * Row / max([Row,Column]) - 2
Y := 3 * Column / max([Row,Column]) - 2
*
* 创建无限平面
gen_plane_object_model_3d ([0,0,0,0,0,0,0], [], [], ObjectModel3DPlane1)
* 创建一个有限的平面
gen_plane_object_model_3d ([1,1,1,0,50,30,0], X, Y, ObjectModel3DPlane2)
* 使用姿势创建球体
gen_sphere_object_model_3d ([0,0,3,0,0,0,0], 0.5, ObjectModel3DSphere1)
* 创建一个球体和其对应的位置
gen_sphere_object_model_3d_center (-1, 0, 1, 1, ObjectModel3DSphere2)
* 创建一个圆柱体
gen_cylinder_object_model_3d ([1,-1,2,0,0,60,0], 0.5, -1, 1, ObjectModel3DCylinder)
* 创建一个盒子
gen_box_object_model_3d ([-1,2,1,0,0,90,0], 1, 2, 1, ObjectModel3DBox)
*
* 显示生成的图元
Instructions[0] := '旋转: 鼠标左键'
Instructions[1] := '缩放: Shift + 鼠标左键'
Instructions[2] := '平移: Ctrl + 鼠标左键'
ObjectModels := [ObjectModel3DPlane1,ObjectModel3DCylinder,ObjectModel3DSphere1,ObjectModel3DSphere2,ObjectModel3DPlane2,ObjectModel3DBox]
Labels := ['平面1','圆柱体','球体1','球体2','平面2','盒子']
VisParamName := ['disp_pose_3','color_0','color_1','color_2','color_3','color_4','color_5','alpha_0']
VisParamValue := ['true','green','cyan','yellow','magenta','blue','white',0.5]
Title := ''
* 显示所有的3D模型
visualize_object_model_3d (WindowHandle, ObjectModels, [], PoseIn, VisParamName, VisParamValue, Title, Labels, Instructions, PoseOut)
*
* 清除所有的3D模型
clear_object_model_3d (ObjectModels)
1.1 gen_plane_object_model_3d()
gen_plane_object_model_3d( : : Pose, XExtent, YExtent : ObjectModel3D)
'函数说明
: 创建平面3D模型,即表示平面的3D对象模型。
平面由其中心和旋转来描述;
平面的法向量与旋转坐标系的z轴对齐;
中心和旋转是通过参数“姿势”设置的;
此外,平面可以由多边形限制,该多边形由坐标为XExtent
和YExtent
的点定义;
三维对象模型的控制柄由参数ObjectModel3D
返回。
函数参数
:
Pose:输入 平面的中心和旋转;元素数量: Pose == 7
XExtent:输入 指定平面范围的x坐标;
YExtent:输入 指定平面范围的y坐标;
ObjectModel3D:输出 3D对象模型句柄;
Halcon例程
set_object_model_3d_attrib.hdev 设置三维对象模型的属性
inspect_3d_surface_intersections.hdev 通过检查三维对象的平面交点来检查安装凸舌的角度和尺寸
gen_primitives_object_model_3d.hdev 创建基本三维对象模型,如平面、球体和长方体
find_deformable_surface_model.hdev 使用基于可变形曲面的匹配在三维场景中查找对象
1.2 gen_sphere_object_model_3d()
gen_sphere_object_model_3d( : : Pose, Radius : ObjectModel3D)
函数说明
: 创建球体形状的3D模型,即表示球体的3D对象模型。
球体由其在“姿势(Pose
)”中给定的中心和在“半径(Radius
)”中给出的 半径定义。如果创建了多个球形三维基本体,并且参数“半径”中的元素数为1,则所有球体都将使用相同的半径创建。
三维对象模型的控制柄由参数ObjectModel3D
返回。
函数参数
:
Pose:输入描述球体位置的姿势;
Radius:输入 球体半径;
ObjectModel3D:输出 3D对象模型句柄;
Halcon例程
gen_primitives_object_model_3d.hdev 创建基本三维对象模型,如平面、球体和长方体
1.3 gen_sphere_object_model_3d_center()
gen_sphere_object_model_3d_center( : : X, Y, Z, Radius : ObjectModel3D)
函数说明
: 创建球体形状的3D模型,即表示球体的3D对象模型。
球体由其中心(以X
、Y
和Z
表示)和半径(以Radius
表示)定义。如果创建了多个球形三维基本体,并且参数“半径”中的元素数为1,则所有球体都将使用相同的半径创建。三维对象模型的控制柄由参数ObjectModel3D
返回。
函数参数
:
X:输入 球体中心点的X坐标;
Y:输入 球体中心点的Y坐标;
Z:输入 球体中心点的Z坐标;
Radius:输入 球体半径;
ObjectModel3D:输出 3D对象模型句柄;
Halcon例程
gen_primitives_object_model_3d.hdev 创建基本三维对象模型,如平面、球体和长方体
1.4 gen_cylinder_object_model_3d()
gen_cylinder_object_model_3d( : : Pose, Radius, MinExtent, MaxExtent : ObjectModel3D)
函数说明
: 创建圆柱体形状的三维基本体,即表示圆柱体的三维对象模型。
圆柱体在“姿势”中由其中心和轴的方向描述,在“半径”中由半径描述。姿势的原点位于圆柱体的旋转轴上,并且定向为使z轴与圆柱体的主方向对齐。
此外,圆柱体的延伸由MinExtent
和MaxExtent
给出。MinExtent
和MaxExtent
表示圆柱体在旋转轴上的第一个点和最后一个点的z坐标。三维对象模型
的控制柄由参数ObjectModel3D
返回。
函数参数
:
Pose:输入圆柱体的位置和方向的姿势;
Radius:输入 圆柱体的半径;
MinExtent:输入 圆柱体在旋转轴的负方向上的长度;
MaxExtent:输入 圆柱体在旋转轴正方向上的长度;
ObjectModel3D:输出 3D对象模型句柄;
Halcon例程
rigid_trans_object_model_3d.hdev 将刚性变换应用于三维对象模型
gen_primitives_object_model_3d.hdev 创建基本三维对象模型,如平面、球体和长方体