在3D绘制向量

该博客介绍了在3D游戏中如何通过将3D向量投射到2D视口来实现视觉调试。通过使用Camera的unproject_position()方法,可以在2D CanvasLayer上绘制3D向量,例如游戏对象的速度或位置。博客还提供了一个实现,包括一个DebugOverlay单例,允许从任何游戏对象轻松注册和显示调试向量。
摘要由CSDN通过智能技术生成

目录

在3D绘制向量

问题

解决方案

设置

从游戏对象轻松访问


在3D绘制向量

问题

您希望在3D游戏中获得视觉调试信息:一种查看表示速度,位置等的向量的方法。

解决方案

在2D中调试绘图是非常方便的。CanvasItem提供了_draw()回调中使用的基本绘图方法的范围。在3D中,事情就没那么简单了。一种解决方案是使用ImmediateGeometry手动创建网格,但这是非常麻烦和不方便的快速调试。

更好的解决方案是坚持使用CanvasItem绘制方法。为此,我们需要将3D空间中的位置投射到2D视口上。幸运的是,Camera可以使用它的unproject_position()方法为我们做到这一点。

设置

对于显示层,将包含Control的CanvasLayer添加到3D场景中,然后将脚本添加到Control中。

alt

举个例子,让我们

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Open3D是一个用于处理三维数据的开源库,它提供了许多有用的功能,包括可视化和处理点云、三维模型等。在Open3D中,我们可以使用以下步骤来画向量。 首先,我们需要导入Open3D库和其他必要的库,如下所示: ``` import open3d as o3d import numpy as np ``` 接下来,我们需要创建一个空的点云对象,用于存储我们要绘制向量。可以使用以下代码创建一个空的点云对象: ``` pcd = o3d.geometry.PointCloud() ``` 然后,我们可以定义一个起点和一个终点,来表示我们要绘制向量。这些点可以使用numpy数组来表示。例如,我们可以定义一个起点为[0, 0, 0],终点为[1, 1, 1]的向量,代码如下: ``` start_point = np.array([0, 0, 0]) end_point = np.array([1, 1, 1]) ``` 接下来,我们将起点和终点添加到点云对象中。可以使用以下代码将点添加到点云对象中: ``` pcd.points = o3d.utility.Vector3dVector(np.vstack((start_point, end_point))) ``` 然后,我们可以创建一个线段的集合对象,然后将点云对象添加到其中。代码如下: ``` lines = o3d.geometry.LineSet.create_from_point_cloud_correspondences(pcd, pcd) ``` 最后,我们可以创建一个可视化窗口,并将线段集合对象添加到其中,以便我们可以在窗口中看到向量。可以使用以下代码创建一个窗口并添加线段集合对象: ``` o3d.visualization.draw_geometries([lines]) ``` 通过运行上述代码,Open3D将会创建一个窗口,并在其中绘制我们定义的向量。 总之,通过使用Open3D库的点云对象和线段集合对象,我们可以方便地绘制向量并进行可视化。这样可以帮助我们更好地理解和分析三维数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值