求助unity如何调用kinect unity开发入门显示拍摄的画面

Kinect与Unity3D数据整合技术在体感游戏中的应用研究--《电脑开发与应用》2014年11期
Kinect与Unity3D数据整合技术在体感游戏中的应用研究
【摘要】:通过分析Kinect与Unity3D数据整合关键技术,从WPF与Unity 3D内部调用方式展开系统设计。设计分为Unity3D场景展示模块、Unity3D的接口模块和Kinect的数据获取三模块。其中Unity3D接口模块实现了的场景设置,骨骼绑定、镜像运动、近景模式、平滑处理功能;Kinect数据获取模块通过代码实现设备控制、骨骼绑定算法、设备图像获取。测试证明,通过C#对非托管的dll的管理方式,导入Kinect硬件的驱动程序,调用自定义的数据结构和算法,实现在unity 3D场景中,使用Kinect体感镜头控制场景中的人物模型运动,提高了体感游戏的开发效率,在体感游戏的开发和应用中有一定的社会推广价值。
【作者单位】:
【基金】:
【分类号】:TP391.41;TP317【正文快照】:
引言近年来,游戏在大众娱乐中所占的比例越来越大,市场调查发现,手机游戏占有很大部分,其次是电脑中的网络游戏和单机游戏。然而,这些游戏在创造了很多经济价值和社会价值的同时也出现很多不利的一面,在这些游戏中,多数的设计需要游戏者沉溺其中,并投入很多时间和金钱,这在很
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【参考文献】
中国期刊全文数据库
林海波;梅为林;张毅;罗元;;[J];计算机应用与软件;2013年02期
张毅;张烁;罗元;徐晓东;;[J];计算机应用研究;2012年09期
【共引文献】
中国期刊全文数据库
江晓庆;肖德琴;张波;陈剑;;[J];广东农业科学;2012年23期
石曼银;;[J];赤峰学院学报(自然科学版);2013年18期
黄陈;李建华;于汉超;刘军发;陈益强;沈疆海;;[J];长江大学学报(自科版);2013年31期
陈敬德;赵文丽;梁洪涛;王梓霖;张驰;毛晓波;;[J];电子设计工程;2014年10期
曹林;翁武毅;;[J];电子技术与软件工程;2014年06期
孙鹏;钱承山;李俊;丁金卉;;[J];电子器件;2014年02期
赵建敏;许晓伟;贾慧媛;;[J];传感器与微系统;2014年08期
李奇;李木子;;[J];电脑知识与技术;2014年27期
杨文璐;李唯杰;;[J];电子设计工程;2014年20期
闾国年;周良辰;盛业华;廖明;;[J];测绘科学技术学报;2013年04期
中国重要会议论文全文数据库
倪晨;邱鹏;张俊忠;曹慧;;[A];山东计算机学会2013学术年会论文集[C];2013年
中国硕士学位论文全文数据库
邓小园;[D];北京邮电大学;2013年
吴鑫;[D];沈阳农业大学;2013年
徐建元;[D];电子科技大学;2013年
石磊;[D];浙江大学;2013年
陈志辉;[D];合肥工业大学;2013年
杜钊君;[D];武汉科技大学;2013年
邹优嘉;[D];安徽理工大学;2013年
何云龙;[D];华中科技大学;2013年
胡焰;[D];华中科技大学;2013年
熊心雨;[D];厦门大学;2014年
【二级参考文献】
中国期刊全文数据库
刘伟;齐晓慧;;[J];兵工自动化;2008年12期
罗元;谢彧;张毅;;[J];机器人;2012年01期
&快捷付款方式
&订购知网充值卡
400-819-9993标签 - kinect-【游戏蛮牛】-ar增强现实,虚拟现实,unity3d,unity3d教程下载首选u3d,unity3d官网首先,你需要准备的东西
Windows 8以上系统的电脑,当然,配置不要太渣⊙︿⊙
Kinect for Windows开发套件
安装好Kinect for Windows SDK,这个应该属于开发套件里的吧╮(╯▽╰)╭
安装好了Unity5.X,并且确定可以使用
Kinect For Windows Wrapper。这是使用unity开发Kinect的中间插件,网上有很多种版本。但是基本都推荐卡耐基梅隆的,我这里也用的是卡耐基梅隆,版本是v2.9。2.7和2.8我都试过,但是使用总有一些问题没有在其他电脑上试过,不知道其他电脑可不可用。反正在这里推荐2.9,至少我用着没问题&( ̄︶ ̄)&。这里分享一个吧链接: /s/1dF7mIw5 密码: g4n2
上面如果都没有问题的话下面我们可以着手入门开发了
新建一个unity项目
导入Kinect For Windows Wrapper
导入之后可以运行一些Demo,看看我们可以拿这个Kinect做些什么
开发的第一步当然是看他的帮助文档,这里面讲述了使用的步骤
英文看不懂?我这里有一个翻译得非常粗糙的版本。。作为一个四级没过的能翻译成这样还要啥自行车
至此你可以把鼠标移到右上角点×关掉去看帮助文档了。懒癌患者可以继续往下浏览。但是这里我不打算讲太多,还是推荐去看文档,英文原版那个&( ̄︶ ̄)&。
好吧,继续。首先配置好你准备角色的Avatar。至于怎么配置我这里说不清楚,去看看这方面的教程,最好是视频的。下图是我在Asset Store里下载的一个角色模型。我们就用它了
把角色拖入场景,不要有Rigibody,不要有Collider,Animator里不要有Controller。因为这些可能会影响角色的动画,但我们需要角色的各个节点都能自由移动
然后把AvatarController脚本拖给角色
新建一个空物体,命名为KinectManager,然后把KinectManager脚本拖给他
然后你可以运行测试一下了,这个机器人将会同步你的动作。没错,就是这么简单(>﹏<)。至于具体的参数什么的还是去看文档。这里不多说。
上面我们已经能让模型反映真实人的动作了,下面来讲解一下动作识别
首先,需要把KinectGestures脚本添加到KinectManager这个物体上。
新建一个空物体,命名为GestureListener。
新建一个脚本MyGestureListener.cs。这个脚本需要继承MonoBehaviour类并且实现KinectGestures.GestureListenerInterface接口。
具体函数的功能什么的在帮助文档里面有。先看关于手势识别的帮助文档,然后在来看下面的代码
1 using UnityE
5 public class MyGestureListener : MonoBehaviour, KinectGestures.GestureListenerInterface
[Tooltip("GUI-Text to display gesture-listener messages and gesture information.")]
public GUIText gestureI
// private bool to track if progress message has been displayed
private bool progressD
private float progressGestureT
* 当识别到用户时调用该函数
public void UserDetected(long userId, int userIndex)
// as an example - detect these user specific gestures
KinectManager manager = KinectManager.I
//manager.DetectGesture(userId, KinectGestures.Gestures.Jump);
//manager.DetectGesture(userId, KinectGestures.Gestures.Squat);
//manager.DetectGesture(userId, KinectGestures.Gestures.LeanLeft);
//manager.DetectGesture(userId, KinectGestures.Gestures.LeanRight);
//manager.DetectGesture(userId, KinectGestures.Gestures.RaiseLeftHand);
//manager.DetectGesture(userId, KinectGestures.Gestures.RaiseRightHand);
manager.DetectGesture(userId, KinectGestures.Gestures.Run);
if (gestureInfo != null)
gestureInfo.GetComponent&GUIText&().text = "Swipe, Jump, Squat or Lean.";
Debug.Log("发现用户");
* 当失去用户时出发
public void UserLost(long userId, int userIndex)
if (gestureInfo != null)
gestureInfo.GetComponent&GUIText&().text = string.E
Debug.Log("失去用户");
/// &summary&
/// Invoked when a gesture is in progress.
/// &/summary&
/// &param name="userId"&被识别者的id&/param&
/// &param name="userIndex"&被识别者的序号&/param&
/// &param name="gesture"&手势类型&/param&
/// &param name="progress"&手势识别的进度,可以认为是相似度。范围是[0,1]&/param&
/// &param name="joint"&关节类型&/param&
/// &param name="screenPos"&视图坐标的单位向量&/param&
public void GestureInProgress(long userId, int userIndex, KinectGestures.Gestures gesture,
float progress, KinectInterop.JointType joint, Vector3 screenPos)
* 主要将一些需要动态监测的手势放在这个函数下
* 比如说缩放、滚轮都是依据你两手之间的距离来判断应该缩放或旋转多少度
//监测缩放,如果相似度大于50%
if ((gesture == KinectGestures.Gestures.ZoomOut || gesture == KinectGestures.Gestures.ZoomIn) && progress & <span style="color: #.5f)
if (gestureInfo != null)
string sGestureText = string.Format("{0} - {1:F0}%", gesture, screenPos.z * 100f);
gestureInfo.GetComponent&GUIText&().text = sGestureT
progressDisplayed = true;
progressGestureTime = Time.realtimeSinceS
else if ((gesture == KinectGestures.Gestures.Wheel || gesture == KinectGestures.Gestures.LeanLeft ||
gesture == KinectGestures.Gestures.LeanRight) && progress & <span style="color: #.5f)
if (gestureInfo != null)
string sGestureText = string.Format("{0} - {1:F0} degrees", gesture, screenPos.z);
gestureInfo.GetComponent&GUIText&().text = sGestureT
progressDisplayed = true;
progressGestureTime = Time.realtimeSinceS
else if (gesture == KinectGestures.Gestures.Run && progress & <span style="color: #.5f)
if (gestureInfo != null)
string sGestureText = string.Format("{0} - progress: {1:F0}%", gesture, progress * <span style="color: #0);
<span style="color: #0
gestureInfo.GetComponent&GUIText&().text = sGestureT
<span style="color: #1
<span style="color: #2
progressDisplayed = true;
<span style="color: #3
progressGestureTime = Time.realtimeSinceS
<span style="color: #4
<span style="color: #5
<span style="color: #6
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0
<span style="color: #1
/// &summary&
<span style="color: #2
/// 当一个手势识别完成后被调用
<span style="color: #3
/// &/summary&
<span style="color: #4
/// &returns&true&/returns&
<span style="color: #5
/// &c&false&/c&
<span style="color: #6
/// &param name="userId"&被识别者的ID&/param&
<span style="color: #7
/// &param name="userIndex"&被识别者的序号&/param&
<span style="color: #8
/// &param name="gesture"&被识别到的手势类型&/param&
<span style="color: #9
/// &param name="joint"&被识别到的关节类型&/param&
<span style="color: #0
/// &param name="screenPos"&视图坐标的单位向量&/param&
<span style="color: #1
public bool GestureCompleted(long userId, int userIndex, KinectGestures.Gestures gesture,
<span style="color: #2
KinectInterop.JointType joint, Vector3 screenPos)
<span style="color: #3
<span style="color: #4
if (progressDisplayed)
<span style="color: #5
return true;
<span style="color: #6
<span style="color: #7
string sGestureText = gesture + " detected";
<span style="color: #8
if (gestureInfo != null)
<span style="color: #9
<span style="color: #0
gestureInfo.GetComponent&GUIText&().text = sGestureT
<span style="color: #1
<span style="color: #2
<span style="color: #3
return true;
<span style="color: #4
<span style="color: #5
<span style="color: #6
<span style="color: #7
<span style="color: #8
//参数同上,在手势被取消的时候调用
<span style="color: #9
public bool GestureCancelled(long userId, int userIndex, KinectGestures.Gestures gesture,
<span style="color: #0
KinectInterop.JointType joint)
<span style="color: #1
<span style="color: #2
if (progressDisplayed)
<span style="color: #3
<span style="color: #4
progressDisplayed = false;
<span style="color: #5
<span style="color: #6
if (gestureInfo != null)
<span style="color: #7
<span style="color: #8
gestureInfo.GetComponent&GUIText&().text = String.E
<span style="color: #9
<span style="color: #0
<span style="color: #1
<span style="color: #2
return true;
<span style="color: #3
<span style="color: #4
<span style="color: #5
public void Update()
<span style="color: #6
<span style="color: #7
if (progressDisplayed && ((Time.realtimeSinceStartup - progressGestureTime) & 2f))
<span style="color: #8
<span style="color: #9
progressDisplayed = false;
<span style="color: #0
<span style="color: #1
if (gestureInfo != null)
<span style="color: #2
<span style="color: #3
gestureInfo.GetComponent&GUIText&().text = String.E
<span style="color: #4
<span style="color: #5
<span style="color: #6
Debug.Log("Forced progress to end.");
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0 }
这个代码我直接用的官方的实例修改的。为了显示出效果,可以新建一个空物体,添加上GUI Text组件,让他显示识别的效果
好了,你可以测试一下了
下面来讲关于手势识别的,上面讲的手势其实是Gesture的翻译,是全身的;下面讲的手势是针对于手的
好了,咋们。。。。︿( ̄︶ ̄)
首先要知道Kinect可以识别的手势。定义在KinectInterop.HandState这个枚举类型中
你可以通过KinectManager的GetRightHandState(long UserID)来获取用户的右手手势状态(别问我怎么获取左手→_→)
下面发一段给电脑玩剪刀石头布的代码。代码比较粗糙,不过作为学习还是阔仪滴
&( ̄︶ ̄)&
1 using UnityE
2 using UnityEngine.UI;
3 using System.C
7 public class MyGestureListener : MonoBehaviour, KinectGestures.GestureListenerInterface
public Text gestureI
private bool state = false;//识别状态,0表示未识别,1表示已识别
public float intervalTime = <span style="color: #.0f;
private bool intervalBegin = false;
private int quiet = <span style="color: #;
private float quiettime = <span style="color: #.0f;
public enum 手势
private 手势 RandomShoushi()
System.Random ran = new System.Random();
int randomnum = ran.Next(<span style="color: #, <span style="color: #);
return (手势)
private string getInfo(KinectInterop.HandState show, 手势 shoushi)
string info = string.E
switch (show)
case KinectInterop.HandState.Closed:info= "你出的是石头\n";
case KinectInterop.HandState.Lasso: info = "你出的是剪刀\n";
case KinectInterop.HandState.Open:info= "你出的是布\n";
default: info = "请出招...\n";
switch (shoushi)
case 手势.石头:
info += "电脑出的是石头\n";
case 手势.剪刀:
info += "电脑出的是剪刀\n";
case 手势.布:
info += "电脑出的是布\n";
int res = contrast(show, shoushi);
if (res == <span style="color: #)
info += "哈哈哈,你赢了\n";
else if (res == -<span style="color: #)
info += "哈哈哈,你输了\n";
}else if (res == <span style="color: #)
info += "哈哈哈,平手";
info += "你的手势未识别";
state = true;//识别完成
private int contrast(KinectInterop.HandState show,手势 shoushi)
int rssult = <span style="color: #;
switch (show)
case KinectInterop.HandState.Closed:
switch (shoushi)
case 手势.石头:rssult = <span style="color: #;
case 手势.剪刀:
rssult = <span style="color: #;
case 手势.布:
rssult = -<span style="color: #;
case KinectInterop.HandState.Lasso:
switch (shoushi)
<span style="color: #0
case 手势.石头:
<span style="color: #1
rssult = -<span style="color: #;
<span style="color: #2
<span style="color: #3
case 手势.剪刀:
<span style="color: #4
rssult = <span style="color: #;
<span style="color: #5
<span style="color: #6
case 手势.布:
<span style="color: #7
rssult = <span style="color: #;
<span style="color: #8
<span style="color: #9
<span style="color: #0
<span style="color: #1
case KinectInterop.HandState.Open:
<span style="color: #2
switch (shoushi)
<span style="color: #3
<span style="color: #4
case 手势.石头:
<span style="color: #5
rssult = <span style="color: #;
<span style="color: #6
<span style="color: #7
case 手势.剪刀:
<span style="color: #8
rssult = -<span style="color: #;
<span style="color: #9
<span style="color: #0
case 手势.布:
<span style="color: #1
rssult = <span style="color: #;
<span style="color: #2
<span style="color: #3
<span style="color: #4
<span style="color: #5
default:rssult = <span style="color: #;
<span style="color: #6
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0
void Update()
<span style="color: #1
<span style="color: #2
<span style="color: #3
if (intervalBegin)
<span style="color: #4
<span style="color: #5
if (intervalTime & <span style="color: #)
<span style="color: #6
<span style="color: #7
intervalTime -= Time.deltaT
<span style="color: #8
<span style="color: #9
<span style="color: #0
<span style="color: #1
intervalBegin = false;
<span style="color: #2
intervalTime = <span style="color: #.0f;
<span style="color: #3
state = false;
<span style="color: #4
<span style="color: #5
<span style="color: #6
<span style="color: #7
if (!state)
<span style="color: #8
<span style="color: #9
KinectManager _manager = KinectManager.I
<span style="color: #0
long userid = _manager.GetUserIdByIndex(<span style="color: #);
<span style="color: #1
gestureInfo.text=getInfo(_manager.GetRightHandState(userid), RandomShoushi());
<span style="color: #2
<span style="color: #3
if (quiet==<span style="color: #)
<span style="color: #4
<span style="color: #5
gestureInfo.text = "再右挥一次就不跟你玩了...";
<span style="color: #6
if (quiet == <span style="color: #)
<span style="color: #7
<span style="color: #8
Debug.Log("退出");
<span style="color: #9
Application.Quit();
<span style="color: #0
<span style="color: #1
<span style="color: #2
if (quiettime & <span style="color: #)
<span style="color: #3
<span style="color: #4
quiet = <span style="color: #;
<span style="color: #5
quiettime = <span style="color: #.0f;
<span style="color: #6
gestureInfo.text = "请出招...";
<span style="color: #7
<span style="color: #8
<span style="color: #9
<span style="color: #0
quiettime -= Time.deltaT
<span style="color: #1
<span style="color: #2
<span style="color: #3
<span style="color: #4
<span style="color: #5
public void UserDetected(long userId, int userIndex)
<span style="color: #6
<span style="color: #7
//throw new NotImplementedException();
<span style="color: #8
KinectManager manager = KinectManager.I
<span style="color: #9
manager.DetectGesture(userId, KinectGestures.Gestures.SwipeLeft);
<span style="color: #0
<span style="color: #1
<span style="color: #2
public void UserLost(long userId, int userIndex)
<span style="color: #3
<span style="color: #4
//throw new NotImplementedException();
<span style="color: #5
<span style="color: #6
<span style="color: #7
public void GestureInProgress(long userId, int userIndex, KinectGestures.Gestures gesture, float progress, KinectInterop.JointType joint, Vector3 screenPos)
<span style="color: #8
<span style="color: #9
//throw new NotImplementedException();
<span style="color: #0
<span style="color: #1
<span style="color: #2
public bool GestureCompleted(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint, Vector3 screenPos)
<span style="color: #3
<span style="color: #4
//throw new NotImplementedException();
<span style="color: #5
if (gesture== KinectGestures.Gestures.SwipeLeft)
<span style="color: #6
<span style="color: #7
intervalBegin = true;
<span style="color: #8
gestureInfo.text = "准备出招...";
<span style="color: #9
<span style="color: #0
if (gesture == KinectGestures.Gestures.SwipeRight)
<span style="color: #1
<span style="color: #2
<span style="color: #3
<span style="color: #4
return true;
<span style="color: #5
<span style="color: #6
<span style="color: #7
public bool GestureCancelled(long userId, int userIndex, KinectGestures.Gestures gesture, KinectInterop.JointType joint)
<span style="color: #8
<span style="color: #9
//throw new NotImplementedException();
<span style="color: #0
return true;
<span style="color: #1
<span style="color: #2 }
阅读(...) 评论()Kinect与Unity结合的人体骨骼控制方法
引言随着人机交互技术的不断发展,微软推出的Kinect体感设备并不断推广,体感游戏将会是一种越发深受广大玩家喜爱的创新型人机交互式游戏。与此同时,作为一款3D跨平台次世代游戏引擎,Unity3D由于自身独特的技术优势,在IT行业市场中也越来越受游戏开发商和开发人员的青睐。开发体感游戏就难免会遇上游戏设计与制作当中的人体骨骼控制问题,而Kinect和Unity3D两大技术的强强联手无疑会是一种不错的解决方案,突破传统的鼠标和键盘交互方式,直接通过人体骨骼追踪自然的交互,为3D人体骨骼控制引进了强大的技术支持,使其在各个领域的应用得到了广泛的拓展。kinect骨骼追踪Kinect是一款出自于微软公司的3D体感摄影机,Kinect有三个镜头,如图1所示,中间的镜头是RGB彩色摄像机,左右两边镜头则分别为红外线发射器(Projector)和红外线CMOS摄影机(IR)所构成的3D深度感应器,具有实时感应、动作捕捉、语音识别、骨骼追踪等功...&
(本文共2页)
权威出处:
微软Kinect的推出,使得体感交互发生了质的飞跃。在体感交互的开发中,Kinect和Unity3D两者结合可以实现人体骨骼数据的追踪完成自然的人体动作捕捉,使得困扰人们很久的3D人体骨骼控制的问题得到解决,这也为动态虚拟试衣方法的研究打下了良好的基础。本文借助微软Kinect获取人体深度图像及骨骼数据,通过深度图像提取人体轮廓作为基础对人体模型进行变形,并通过人体模型驱动服装模型变形。然后我们使用骨骼自动绑定技术将驱动骨架调整使之与变形后的人体模型匹配,最后结合Unity3D平台骨骼绑定技术将人体关节点与虚拟人体模型关节进行一一对应,使用Kinect骨骼追踪技术使虚拟人体模型动作与用户动作保持一致。人体模型用来驱动虚拟服装,经Unity3D物理布料仿真使衣物表现出动态的布料的效果,在展示时将人体模型隐藏只显示衣服,借助增强现实技术将服装模型和真实人体叠加,这种方式彰显了人物和场景的真实感。本文研究的动态虚拟试衣方法只用于展示衣...&
(本文共76页)
权威出处:
0引言核电厂内核燃料组件装卸、转运和贮存系统属于核辅助系统,包括新燃料组件入堆前的接收、检查、贮存,拆卸和装封反应堆,堆芯换料以及乏燃料组件的运输、贮存和发送等一系列工艺操作。装卸料机作岛内换料的关键设备,主要负责堆芯燃料组件的装换作业,是核电厂换料大修关键路径上的一个重要项目[1]。虽然装卸料机没有直接参与参与核电厂的日常运行与安全活动,但间接地影响核电厂的安全可靠性,是核电厂的重要设备之一[2]。根据世界核能协会的数据,截止2015年底,全球在运营核电数439座,在建及拟建总量184座。即便是每座仅有一个反应堆,那也有439个装卸料机,这就需要更多的核电专业人才。在国内,不少大众一说核电就觉得有污染有辐射,更有甚者,到核电厂闹事以阻碍核电正常运行。所以需要一个简单而接地气的方式,让普通大众去了解核电。1装卸料机仿真在核电站现场,采用了实际控制室环境高度逼真的培训模拟机,这样不仅可用来培训,亦可为后期优化做逻辑验证[3]。但是...&
(本文共4页)
权威出处:
Modicon M340可编程控制器集各种强劲功能和创新设计于一身,满足复杂设备制造商和中小型项目的要求,提供各种自动化功能的技术和高效、灵活、经济性的解决方案,成为Modicon Premium和Quantum系列产品线的最佳拓展。Modicon M340在拥有卓越的运算能力,大容量的程序空间及丰富的专用功能之外,采用独创的“即插即载”SD卡和全新的内存管理,使系统升级、维护更加便捷,无需使用备份电池。同时,也可作为外部存储设备,容量可达16MB,简单通过PC访问或FTP服务可存取任意格式的文件。内置标准网页,可进行系统诊断和参数调整,也可以定制人机界面,通过...&
(本文共1页)
权威出处:
1前言可编程控制器(PLC)是专为工业环境下应用而设计的工业控制计算机,已经成为控制系统中应用最广泛的核心位置,它不仅能实现复杂的逻辑控制,还能完成各种顺序或定时的闭环控制功能,并且抗干扰能力强、可靠性高、稳定性好、体积小,能在恶劣环境下长时间、不间断运行,且编程简单,维护方便,并配有各类通讯接口与模块处理,扩容方便。炼铁厂1、2号喷煤控制系统改造前,DCS系统采集模块精度低,不稳定,模块通用性差,串口数据传输速率慢。改造后,FO点数大约在500一600之间,采用了施奈德新一代自动化核心产品pnity,稳定可靠,CPU模块采用先进的65160,最大程序容量达到7M,支持PcMcIA卡,处理和扫描时间更短,效率更高,上位机监控软件采用iFix 4.0,画面编制功能强大而简单通俗,下位机软件采用Unity pm 2.4,采集快速,可以在线修改各类参数。2控制系统结构控制系统由3台工业PC机与PLC通过网络交换机(冗余配置)构成物理结...&
(本文共3页)
权威出处:
随着虚拟现实技术理论和硬件设备的急速发展,“VR+”被广泛地应用于各专业领域,如VR+军事、VR+医疗、VR+教育、VR+化工等等。虚拟现实技术正在推动着化工仿真领域地向前发展。借助Unity引擎自身的Shuriken粒子系统、物理系统、全局光照、导航网格寻路、Shader着色器、地形工具等功能,本文开发了一套球罐泄漏事故的再现和演化场景,用于化工事故的分析和人员培训。1厂区装置的建模3DSMax作为应用最广泛的建模软件,其明显的优势就是拥有强大的多线程运算能力,能够实现多样的建模类型以及强大的制作动画能力,拥有比较优秀的材质编辑系统。它已经成为国际营销最为广泛的三维建模、动画与渲染软件,广泛应用于游戏的开发[1]。对物体进行了实景拍摄和建筑图纸收集,并利用Photoshop对建筑物图片进行修整。以标准的Auto CAD图纸作为模型的设计依据,并将其导入到3DSMax中作为底图。根据计算的数据来确定挤出模型的高度,并添加Edit...&
(本文共3页)
权威出处:
1概述虚拟现实技术在当下拥有非常高的热度,Unity3D作为当今热门的游戏引擎,可以模拟真实场景漫游和实现友好的交互。场景设计贯穿整个虚拟现实的各个环节,只有场景设计得真实完美,该虚拟现实平台才能成功。本文从一个具体虚拟现实项目课题出发,对场景的设计思路和方法做出了分析研讨。2研究内容和方法笔者从工作实际出发,对场景设计及Unity3D引擎的技术做出研究和设计实现,其中着重对三维虚拟现实场景设计做了较深入研究。本文基于Unity3D平台完成场景设计搭建,主要工作涉及以下几个方面:场景地形的创建和编辑,模型的导入和设置,场景元素的整合,制作添加场景特效,场景音效和输出设置。调研现有的研究成果,分析其在场景设计中的使用方法和原理,进而针对项目课题涉及的问题进行重新思考和构想。不断学习相关课题前沿技术和理论,按计划有步骤地解决课题研究中遇到的问题。坚持理论联系实际,采集运用现实场景真实数据和网络资源,充分发挥团队力量,共同商讨分析研究...&
(本文共2页)
权威出处:
扩展阅读:
CNKI手机学问
有学问,才够权威!
出版:《中国学术期刊(光盘版)》电子杂志社有限公司
地址:北京清华大学 84-48信箱 大众知识服务
京ICP证040431号&
服务咨询:400-810--9993
订购咨询:400-819-9993
传真:010-

我要回帖

更多关于 kinect unity开发入门 的文章

 

随机推荐