Halcon之设置三维对象模型的属性


主要讲解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轴对齐;
       中心和旋转是通过参数“姿势”设置的;
       此外,平面可以由多边形限制,该多边形由坐标为XExtentYExtent的点定义;
       三维对象模型的控制柄由参数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对象模型。
 球体由其中心(以XYZ表示)和半径(以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轴与圆柱体的主方向对齐。
此外,圆柱体的延伸由MinExtentMaxExtent给出。MinExtentMaxExtent表示圆柱体在旋转轴上的第一个点和最后一个点的z坐标。三维对象模型的控制柄由参数ObjectModel3D返回。

函数参数
Pose:输入圆柱体的位置和方向的姿势;
Radius:输入 圆柱体的半径;
MinExtent:输入 圆柱体在旋转轴的负方向上的长度;
MaxExtent:输入 圆柱体在旋转轴正方向上的长度;
ObjectModel3D:输出 3D对象模型句柄;

Halcon例程

rigid_trans_object_model_3d.hdev		将刚性变换应用于三维对象模型
gen_primitives_object_model_3d.hdev		创建基本三维对象模型,如平面、球体和长方体
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱凤的小光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值