unity有没有只需要普通摄像头的 捕捉和识别

 我来答
悲心世事空3
2017-04-30 · TA获得超过4229个赞
知道大有可为答主
回答量:4784
采纳率:0%
帮助的人:1182万
展开全部
有NPC在屏幕中跑动,在跑出屏幕外后会被删掉。
现在问题是,如何判断NPC不在摄像机视野中。
网上搜了一下,最多的一个回答是“unity 事件中 有相关的事件 可参考”,但是看不懂。
另有人说投影到屏幕坐标,这个没有试过。一会去试试不在视野中和在视野中的投影有什么区别。
谁能告诉我一种比较简单的方法来进行判断(比如unity中一个函数搞定O(∩_∩)O~)
了!

【补充】:
将楼下方法挂在NPC上,可以检测得到,但是经过测试,在NPC出屏且移动一定距离后可以检测得到。
我自己试了一种方法,用NPC映射到屏幕坐标来判断(和屏幕的宽和高比较)
camera.WorldToScreenPoint(enemy.transform.position)
Screen.width
Screen.height

如果映射后的坐标不在屏幕内,则出屏了O(∩_∩)O~

偶尔看到这个方法,但是还没试,先粘到这里。
判断物体是否在视野内的方法。其实实现很简单,一个API方法而已。这个方法就是OnWillRenderObject(),在Unity3D文档描述中,当游戏对象对摄像机来说是可见的话,这个方法就会被调用。
我们来测试这个方法的功能。首先新建一个场景,在场景中放入一个方块和一个球体,还有加入光源,便于观察,我使用的是Unity3D5.0beta版本,在新建场景时会团默认创建光源,其他版本要自己加入。接下来,给球体加入刚体组件。运行场景,我们会发现球体会受重力影响掉下去,方块还在原位。
新建一脚本,如下所示:
using UnityEngine;

public class DetectVision:MonoBehaviour{

//传入方块的引用,用作标识
public GameObject cube;
//标识球体是否在摄像机视野内
public bool isRendering=true;

private float lastTime=0;
private float curtTime=0;

void Update()
{
//对比时间记录,如果不等,说明还在摄像机视野中。
isRendering = curtTime != lastTime ? true : false;
if (isRendering)
{
//在视野中,方块为红色
cube.GetComponent().material.color = Color.red;
}
else {
//不在视野中,方块变为白色
cube.GetComponent().material.color = Color.white;

}

//将当前时间传入上一帧时间记录中
lastTime = curtTime;
}

//如果对象可见,调用此方法
void OnWillRenderObject()
{
//将当前帧开始时间记录
curtTime = Time.time;
}
}
将脚本拖到球体上,并将方块对象拖到脚本上。运行程序,我们发现,刚开始方块是红色的。

当球体掉出视野后,方块变成了白色,效果图如下:
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
美狐美颜sdk
2024-08-06 广告
美颜SDK推出多个版本的原因有以下几点:1. 满足不同平台的需求:美颜SDK的不同版本可以满足不同平台的运营需求。例如,对于直播平台,需要更多的美颜功能来吸引观众,而视频聊天平台则需要的是精简版的美颜功能。通过提供不同版本的美颜SDK,可以... 点击进入详情页
本回答由美狐美颜sdk提供
是照6K
2017-11-21
知道答主
回答量:6
采纳率:0%
帮助的人:4627
展开全部
我也在找寻答案,现在只看到用Kinect 2 类似的摄像头的,有动作捕捉和表情捕捉的插件 CinemaMoCap 和 Cinema Face Cap 。希望对你有帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式