unity3D HTC VIVE开发-物体高亮功能实现
在VR开发时,有时需要用到物体高亮的功能。这里使用Highlighting System v3.0.1.unitypackage插件实现。
Highlighting System v3.0.1的介绍访问看这里:
https://forum.unity3d.com/threads/highlighting-system-released.143043/
因为是VR环境下,所以也需要SteamVR Plugin.unitypackage插件。
实现步骤
step1: 导入插件
按照 Assets->Import Package->Custom Package导入就可以了。
step2:新建cube 和 VR环境
新建一个cube,删除已有的"Main Camera"对象,加入SteamVR下的“Camera Rig”, "Status"和“SteamVR”3个prefabs。
step3:给cube增加高亮脚本
新建脚本SpectrumController.cs 并挂在Cube对象下。
using UnityEngine;
using System.Collections;
public class SpectrumController : HighlighterController
{
public float speed = 200f;
private readonly int period = 1530;
private float counter = 0f;
//
new void Update()
{
base.Update();
h.On(Color.blue);
int val = (int)counter;
Color col = new Color(GetColorValue(1020, val), GetColorValue(0, val), GetColorValue(510, val), 1f);
h.ConstantOnImmediate(col);
counter += Time.deltaTime * speed;
counter %= period;
}
// Some color spectrum magic
float GetColorValue(int offset, int x)
{
int o = 0;
x = (x - offset) % period;
if (x < 0) { x += period; }
if (x < 255) { o = x; }
if (x >= 255 && x < 765) { o = 255; }
if (x >= 765 && x < 1020) { o = 1020 - x; }
return (float) o / 255f;
}
}
step4:给Camera Rig 下Camera(eye)增加脚本
Camera(eye) 增加“Highlighting Mobile”脚本。
step5: bug解决
到这里已经实现了基本功能,但是这个有个bug需要解决:在vive里面,高亮的轮廓在水平轴上是反向的。
各位试过就知道是怎么回事了。
修改:在HighlightingBase.cs文件下,Line 551开始修改
GL.PushMatrix();
GL.LoadOrtho();
mat1.SetPass(pass1);
GL.Begin(GL.QUADS);
// Unity uses a clockwise winding order for determining front-facing polygons. Important for stencil buffer!
GL.TexCoord2(0f, y1); GL.Vertex3(0f, 0f, z); // Bottom-Left
GL.TexCoord2(0f, y2); GL.Vertex3(0f, 1f, z); // Top-Left
GL.TexCoord2(1f, y2); GL.Vertex3(1f, 1f, z); // Top-Right
GL.TexCoord2(1f, y1); GL.Vertex3(1f, 0f, z); // Bottom-Right
GL.End();
mat2.SetPass(pass2);
GL.Begin(GL.QUADS);
//GL.TexCoord2(0f, 0f); GL.Vertex3(0f, 0f, z);
//GL.TexCoord2(0f, 1f); GL.Vertex3(0f, 1f, z);
//GL.TexCoord2(1f, 1f); GL.Vertex3(1f, 1f, z);
//GL.TexCoord2(1f, 0f); GL.Vertex3(1f, 0f, z);
GL.TexCoord2(0f, 1f); GL.Vertex3(0f, 0f, z);
GL.TexCoord2(0f, 0f); GL.Vertex3(0f, 1f, z);
GL.TexCoord2(1f, 0f); GL.Vertex3(1f, 1f, z);
GL.TexCoord2(1f, 1f); GL.Vertex3(1f, 0f, z);
GL.End();
GL.PopMatrix();
http://www.cnblogs.com/langzou/p/6012123.html
unity3D HTC VIVE开发-物体高亮功能实现的更多相关文章
- HTC Vive开发笔记之UI Guideline
本文转自HTC官方论坛,原址https://www.htcvive.com/cn/forum/chat.php?mod=viewthread&tid=1641&extra=page=1 ...
- HTC Vive开发笔记之手柄控制
怎么安装设备,配置环境我就不说了,自行百度,教程很多也很简单.接下来说下Vive手柄的控制. 手柄是HTC Vive的重要交互手段,我们通过第一个图片应该对其有一个直观的了解了,总共是九个按钮: 第一 ...
- HTC Vive开发笔记之SteamVR插件集成
重要组件 SteamVR_Camera VR摄像机,主要功能是将Unity摄像机的画面进行变化,形成Vive中的成像画面 使用方法: l 在任一个摄像机上增加脚本 l 点击Expand按钮 完成以上操 ...
- HTC vive开发:关于手柄按键
一.关于左右手柄的对应关系 两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个) 在场景 ...
- HTC Vive开发笔记之手柄震动
手柄震动的代码SteamVR_Controller脚本的最上面的注释里面就有说明,其实也很简单 // Example usage: //这个栗子是左手柄震动 右手震动只需把Leftmost换成Righ ...
- osgMulitiplerendertargets sample 中fbo使用【HTC VIVE开发中应用】
osgmultiplerendertargets.cpp ...................................... // now create the camera to do t ...
- Unity 5.4大赞:HTC Vive经典The lab渲染器开源
HTC Vive提供了一个不错的免费VR demo,最近1周仔细体验了一番. 仔细看了其安装文件,竟然是Unity 5.4beta版本(通过查log,知道Valve公司用的是最新的5.4.0b11版本 ...
- 用Unity开发HTC VIVE——手柄控制篇
写这篇文章的原因主要是因为现在虚拟现实非常的火爆但目前主流的虚拟现实设备(HTC VIVE)的教程却少的可怜,这个我深有体会.所以,我想将我平时开发中遇到的问题以及解决方法记录下来,分享给大家,若其中 ...
- HTC vive VR设备软硬件安装+运行unity开发的VR程序
总结在HTC vive VR开发过程中的HTC vive的安装调试 1.首先确保电脑的配置满足要求: 进入官网,测试电脑是否满足要求 链接:https://www.vive.com/us/produc ...
随机推荐
- 用vue写添加数据、删除数据、筛选数据表格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Head First 设计模式 第4章工厂模式
第4章 工厂模式 在介绍工厂模式之前,先让我们来看一个例子. 这里有一个Pizza类,用来生产pizza,并返回对象,具体代码如下: package com.ek.factory.simple; im ...
- [技术] OIer的C++标准库 : 字符串库<string>
引入 上次我在博客里介绍了OI中可能用到的STL中的功能, 今天我们接着来发掘C++标准库中能为OI所用的部分. 众所周知, OI中经常用到字符串相关的处理, 这时善用字符串库可以使一些操作更加简洁易 ...
- [算法题] Add Two Numbers
题目内容 题目来源:LeetCode You are given two non-empty linked lists representing two non-negative integers. ...
- css的一些问题
background-size ie8不支持怎么解决? background-size这个属性是css3,新增的属性,现在很多浏览器已经支持了,但是IE系列的浏览器却没有支持,比如IE8,下面介绍下如 ...
- 第一阶段项目(2 body)
body属性 <div class="H1"> <div class="top-nav"> <div class="tn ...
- 解决WebUploader在谷歌浏览器中反应缓慢迟钝
修改 初始化webuploader的 js accept: null/*{ title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeType ...
- Python下的OpenCV学习 01 —— 在Linux下安装OpenCV
一.OpenCV简要介绍 OpenCV是一个跨平台的计算机视觉库,可以运行在Windows.Linux.MacOS等操作系统上.OpenCV提供了众多语言的接口,其中就包含了Python,Python ...
- Razor语法问题(foreach里面嵌套if)
报错: @foreach (var item in ViewBag.TopList) { if (!string.IsNullOrWhiteSpace(item.LogoPic_Mobile)) &l ...
- vue2项目使用axios发送请求
前言:在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 目前主流的 Vue 项目,都选 ...