Vuforia学习项目(二)——基于GroundPlane平面检测的家具放置软件(2024最新)

本文介绍了如何在Unity中利用VuforiaEngine的GroundPlane组件创建平面检测器,实现UI界面设计,并通过锚点功能放置模型,如家具,完成简单的单家具放置功能。
摘要由CSDN通过智能技术生成

GroundPlane用法以及界面制作

1.首先在Hierarchy视图下,创建一个VuforiaEngine中的GroundPlane中的GroundPlaneStage以及PlaceFinder,也就是我们的平面检测器,然后我们来了解一下里面各个组件的功能。如图所示。这里我们创建一个空节点,给它命名为PlaneManager,然后把两个组件挂载在它的下面。在这里插入图片描述
2.如图,PlaneFinder下有许多的组件,图里一一介绍。在这里插入图片描述因为我们的app用按钮来解决一切的交互放置问题,所以我们这些函数有些不需要,不需要的我们点击减号把他删除即可。注意此时的DuplicateStage的对勾也要勾掉,因为我们只需要一个平面。删完后将GroundPlaneStage拖到AnchorStage上。如图在这里插入图片描述
3。GroundPlaneStage下面的各个组件我们用不到,不用管。接下来创建我们的UI界面。首先在Store里或者别的地方整点模型资源。我这里就直接在Store里搜索免费的。.搜索Furniture,选择免费。看到第一个就不错,就它了!在这里插入图片描述
在Window-PackageManager里找到我们的模型,导入。在prefabs预制体文件夹下随便拖进来一个看看,还不错。在这里插入图片描述
4.接下来制作一下我们的UI界面,首先创建一个空节点,我们把它命名为MainUI。在该节点下创建一个Canvas画布,用来添加我们的各个组件。如图。这里需要在Game视图里修改好自己的手机分辨率,防止移植以后按钮偏出。我这里以竖屏软件为示例。
在这里插入图片描述
5.创建一个空节点,我们首先编写一个简单的脚本,运行后检查一下软件运行是否正常。我们命名为BTNManager。定义一个public类型的GameObject,承载我们的模型。因为我们这里要用到锚点指示器,所以我们还应创建一个PlaneFindBehavior组件。锚点就在这个类里面了。编写一个CreateFurniture函数,响应我们的创建按钮。如图
在这里插入图片描述
我们知道,只有在GroundPlaneStage下面的家具模型才会显示出来,而我们一开始Ground下级是空的,所以我们首先应该把exampleFur这个家具实例化到它的下级,而在这之前我们也要找到Ground在项目中的位置,这里我们可以挂载上PlaneManager组件,即可容易找到。我们把他实例化以后,放在锚点的位置。如图所示在这里插入图片描述
将该脚本挂载到我们的BTNManager组件上后,把两个object挂载到Inspector视图上。这里我就随便用hockey球桌了在这里插入图片描述
在Canvas里创建一个按钮,并设置他的响应事件为我们写好的脚本。如图在这里插入图片描述至此我们就可以运行了,激动的心颤抖的手,把模型缩小一下便于观察,我们直接准备好模拟平面的图,点击运行!在这里插入图片描述
可以看到,当检测到平面出现锚点后,点击create,球桌已经生成到我们的平面上了。至此,我们已经实现了简单的单家具放置了。现在大家把他导出apk在自己的手机上试试吧!点击file-buildsettings,注意一定要添加当前场景哦(add scene)!
在这里插入图片描述
题主测试效果图,直接在宿舍添加满了。。
期待下一篇。。

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个示例代码,演示了如何使用Vuforia的Background Plane Behaviour来控制背景平面的行为: ```csharp using UnityEngine; using Vuforia; public class BackgroundPlaneController : MonoBehaviour { private BackgroundPlaneBehaviour backgroundPlane; void Start() { // 获取Background Plane Behaviour组件 backgroundPlane = GetComponent<BackgroundPlaneBehaviour>(); // 检查是否成功获取Background Plane Behaviour组件 if (backgroundPlane != null) { // 设置背景平面的自动更新状态为开启 backgroundPlane.SetAutomaticUpdatesEnabled(true); } } public void EnableBackgroundPlane(bool enable) { // 启用或禁用背景平面 if (backgroundPlane != null) { backgroundPlane.enabled = enable; } } public void SetBackgroundPlaneTexture(Texture2D texture) { // 设置背景平面的纹理 if (backgroundPlane != null) { backgroundPlane.GetComponent<Renderer>().material.mainTexture = texture; } } } ``` 这个示例代码中的`BackgroundPlaneController`脚本可以添加到具有Vuforia背景平面的GameObject上。在`Start`方法中,它获取了`BackgroundPlaneBehaviour`组件,并将背景平面的自动更新状态设置为开启。通过`EnableBackgroundPlane`方法可以启用或禁用背景平面,通过`SetBackgroundPlaneTexture`方法可以设置背景平面的纹理。 请注意,为了使该代码正常工作,您需要确保已经正确设置了Vuforia并启用了背景平面功能。还需要将纹理赋值给背景平面的材质,并将其传递给`SetBackgroundPlaneTexture`方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值