aGlass 2 绘出射线的交点并用红色小球显示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using aGlassDKII;
using UnityEngine.SceneManagement; public class EyeGazeTracking : MonoBehaviour { //把eyetracking的x,y坐标给Vances上的小图片 public GameObject coursor; public GameObject lighter; private float x, y;//眼动的坐标 private int count; private List<GameObject> hitGObs; private GameObject eyeGaze; private GameObject findColor; //save the old color and objectsprivate Dictionary<string, Color> ObjectsColor;//获取场景中的物体private GameObject GOB;// Use this for initialization void Start () { aGlass.Instance.aGlassStart (); x = 0.0f; y = 0.0f; count = 0; eyeGaze = new GameObject(); eyeGaze = GameObject.Find ("EyeGaze");if (eyeGaze) {eyeGaze.GetComponent<MeshRenderer> ().enabled = false;} else {Debug.LogError ("cannot find object of EyeGaze");}hitGObs = new List<GameObject>(1); hitGObs.Clear (); //保存场景中物体的颜色和名称ObjectsColor = new Dictionary<string, Color> ();SaveObjectColor ();GOB = new GameObject ();} // Update is called once per frame void Update () { // 如果写为lighter是不行的,为什么没有想明白?GetPos (lighter.gameObject, ref x, ref y); coursor.transform.localPosition = new Vector2 ((x - 0.5f)*1512, (0.5f - y)*1680); print ("coursor.transform.localPosition" + coursor.transform.localPosition);//lighter.transform.LookAt (coursor.gameObject.transform); lighter.transform.LookAt (coursor.transform); RayDetect(); } void OnDestroy() { aGlass.Instance.aGlassStop (); } public void GetPos (GameObject c, ref float cx, ref float cy) { if (aGlass.Instance.GetEyeValid()) { count = 0; if (!c.activeSelf) { c.SetActive (true); } cx = aGlass.Instance.GetGazePoint().x; cy = aGlass.Instance.GetGazePoint().y; } else { count++; if (count > 10 && c.activeSelf) { c.SetActive (false); } } } void RayDetect() { RaycastHit hitInfo; Debug.DrawLine (this.transform.position, coursor.transform.position - this.transform.position,Color.red);print ("coursor.transform.position" + coursor.transform.position);if (Physics.Raycast(this.transform.position, coursor.transform.position - this.transform.position, out hitInfo)) { DrawGazeInGame (hitInfo.point); GameObject hitme = hitInfo.collider.gameObject; //hitInfo.point:碰撞点的位置; //hitInfo.normal:与碰撞点所在平面垂直的向量; //hitInfo.collider.gameobject:可以得到该物体上的所有信息了; if (hitme.name != "VideoStream" && hitme.name != "Table" && hitme.name != "EyeGaze") {hitme.GetComponent<MeshRenderer> ().material.color = Color.green; //put the hitting objects into the array:hitGObs,以便使其颜色能回到以前的状态 hitGObs.Add (hitme); } else {ResetOldColor (hitme);}} else { ResetOldColor ();}
// hit.transform.gameObject.GetComponent<Renderer>().material.color = Color.red;
// print("gameObject.name" + hit.transform.gameObject.name);
//
// if (hit.transform.gameObject.tag == "Box")
// {
// hit.transform.gameObject.GetComponent<Renderer>().material.color = Color.red;
// print(hit.transform.gameObject.name);
// } } void DrawGazeInGame (Vector3 point) { //render the position of sphereeyeGaze.GetComponent<MeshRenderer> ().enabled = true;eyeGaze.transform.position = point;} //save the whole objects and colorvoid SaveObjectColor(){findColor = GameObject.Find ("01_JiZuo");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("02_FangKuaiLuoMu");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("03_HuoDongQianShen");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("04_LuoGan");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("05_LuoDing");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("06_HuKouBan");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("07_LuoDing_1");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("07_LuoDing_2");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("07_LuoDing_3");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("07_LuoDing_4");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("08_LuoMu");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);findColor = GameObject.Find ("09_HuKouBan");ObjectsColor.Add (findColor.name,findColor.GetComponent<MeshRenderer>().material.color);}//有碰撞时物体颜色的还原void ResetOldColor(GameObject hitme){foreach (var item in hitGObs) { foreach (var item_color in ObjectsColor) {if (item_color.Key == item.name) {item.GetComponent<MeshRenderer> ().material.color = ObjectsColor[item_color.Key];}}}hitGObs.Clear ();}void ResetOldColor(){//这一句将决定小球从物体边界到无穷远处时小球是否会停留在物体边缘感觉不自然eyeGaze.GetComponent<MeshRenderer> ().enabled = false;foreach (var item in ObjectsColor) {GOB = GameObject.Find (item.Key);GOB.GetComponent<MeshRenderer>().material.color = ObjectsColor[item.Key];}}void OnDisable(){Destroy (GOB);}}
aGlass 2 绘出射线的交点并用红色小球显示相关推荐
- 使用Python爬虫获取豆瓣影评,并用词云显示
使用Python爬虫获取豆瓣影评,并用词云显示 Python语言流行到现在,目前最受开发者喜爱的功能莫过于它的爬虫功能,以至于很多人以为Python的英语发音也是"爬虫",其实它是 ...
- vue接收json数据_Vue之使用ajax获取json数据,并用v-for循环显示在表格中
运行的时候,出现了php跨域问题,解决办法是在php的头文件中添加了如下代码: header('Content-Type: application/json'); header('Content-Ty ...
- AD转换实验 编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值。(如:AD转换后的数字量为128,则
编写程序利用ADC0804 AD转换器采集电位器的模拟电压,将采集到的数字量在程序中换算成实际采集的模拟电压,并用数码管显示所采集的实际模拟电压值.(如:AD转换后的数字量为128,则数码管应该显示2 ...
- 【感兴区roi学习应用】OpenMv如何只识别左边屏幕里面的红色小球
思路应该就是给他一个区域,然后在区域里面找红色小球 拉到最后看结果,前面目前是死路-- 那么找小球代码 官网:http://book.openmv.cc/quick-starter.html impo ...
- 二十四进制 加法计数器 并用数码管显示
二十四进制 (BCD码)加法计数器 并用数码管显示 `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2020/1 ...
- 2017全国大学生电子设计竞赛板球控制系统摄像头寻红色小球代码
正点原子开发板,0V7670寻红色小球反馈坐标百度云盘免费代码: 链接:https://pan.baidu.com/s/17447YQ-82zv2O5MG1WbLPA 密码:x1zu 板球控制系统开发 ...
- CyberLink YouCam 新人求教一个绿色背景提取红色小球的问题
http://www.opencv.org.cn/forum.php?mod=viewthread&tid=36980&page=1 http://blog.csdn.net/chen ...
- 计算机的修订模式,如何删除WPS中的红色修订显示?如何退出修订模式?
停止胡说八道,直接进入话题. 1. WPS的"修订" 打开WPS并单击"查看": 找到"修订",然后在"修订"下拉列表中 ...
- 利用OpenGL渲染并用OpenCV输出显示二维图像
OpenGL所有渲染的结果都输出显示在窗口中,设置OpenCV的图像cv::Mat outimg,并使用OpenGL的glReadPixels从帧缓冲区中加载像素至内存: //use fast 4-b ...
- stm32接收OpenMv发送的数据,并用oled屏显示
自己备赛的过程中遇到了一些问题,网上找了很久才总结出来,openmv通过串口发送数据,stm32进行接收并显示在液晶屏上,亲测可用. 使用设备stm32f103zet6,液晶屏为四线 感谢拾牙慧者提供 ...
最新文章
- SAP WMSD集成之Copy WM Quantity – Copy WM qty as delivery qty into delivery
- 100W无线电耦合功率测试实验
- LeetCode 536. 从字符串生成二叉树(递归)
- 知方可补不足~sqlserver中使用ROW_NUMBER进行的快速分页
- Creating a Pager Control for ASP.NET以及Dino Esposito 分页组件的一个 Bug
- GaussDB数据dump实现完全同步
- 雷诺方程、脉动运动方程及雷诺应力输运方程的推导
- H.264 学习建议
- 解决github下载及访问不稳定问题
- html 左侧固定导航栏,前端布局-固定导航栏与侧边栏
- linux 如何清理垃圾文件,Linux系统怎样清理垃圾文件
- round函数与roundup函数
- 上楼梯(递归和迭代的对比)
- SpringBoot集成onlyoffice实现word文档编辑保存 [ 转载 ]
- vue 路由嵌套(二级路由)
- Phalanx HDU 【2859】
- 【练习记录】C语言实现正则表达式匹配
- mac版本的visual studio的快捷键修改_几款高效率的mac软件
- 什么是CRM?CRM定义/CRM适用于谁?/CRM系统有什么作用?
- 织梦后台内容模型使用教程
热门文章
- java如何获取scanner_java – 使用Scanner获取用户输入
- pane Java_ToolPane.java
- zk临时节点失效时间_dubbo学习(六)服务发布dubbo服务在zk的创建、订阅
- php编程风格规范,PHP 编码风格规范指南
- python相比于c语言更静态_Python的几种实现
- 字符串中索引位置是什么意思_女孩子左手中指戴戒指什么意思 不同位置各有不同...
- Google Calendar Sync_ 把 Microsoft Outlook 同步到 G...
- 一个很小的 截图 库。 只需要依赖 jQuery
- 苹果或弃用Java 称Java已经过时
- 200中国姓氏日语发音