unity如何制作血条无线电波

  昨天去看了下unity的成都openday,还是有很多收获的,之前我对于这类的活动始终提不起来兴趣,不过看来日后还是要多参加下类似的活动长长见识。
  公司打算开发3d mmo手游,昨天好玩123恰好也分享了他们制作3d mmo优化的大概流程,当然只讲了模型和shader的优化,模型方面他们第一次始终了常规的方法,先建高模,中模,和低模,然后使用低模加高模导出的法线贴图,来达到一个不错的效果,不过他们并没有使用这种方法,主要因为建高模和中模太花费时间,这样一个模型完工需要将近一个月的时间;第二个方法,就是直接建低模,然后画贴图,再从贴图导出法线贴图,最后对于法线贴图进行手动的优化,来达到自己期望的效果,这样的话,一个模型需要的时间能降至10天左右(这对于美术的要求应该比较高)。shader的优化只是说了下没用shaderforge,而是使用了标准shader,这点目前还没啥好说的。
  回家之后就看了下unity3d官方demo angrybot的模型,之前想过研究下angrybot,不过它的代码杂糅了c#和js,也不是自己喜欢的风格,想想不如趁此机会将angrybot移植到自己的框架里,之前的框架只上传了assetbundle,没有上传模型也让我一直以来很困扰。
  言归正传再说下angrybot吧,angrybot在移动端的表现还是不错的(在我的mx2上很流畅),若想找一个模型的例子的话,图1-1显示的angrybot的player模型应该是一个不错的示范。
图1-1 angrybot player模型
  更详细的数据,不妨等我研究透了angrybot,边移植自己的框架,边测试,在做记录吧。
阅读(...) 评论()第三部分—利用硬件在环验证S模式信号解码算法
作者:Di Pu和Andrei Cozma
在MATLAB或Simulink(R)中实现信号处理算法之后,合乎逻辑的下一步是利用从实际要使用的SDR硬件平台获得的真实数据验证算法的功能。首先是利用从系统获得的不同输入数据集来验证算法。
这样做有助于验证算法的功能,但不能保证算法在其它环境条件下也能像预期那样工作,也不能确定对于SDR系统模拟前端和数字模块的不同设置,算法的行为和性能会如何。为了验证所有这些方面,如果能让算法在线运行以接收实时数据作为输入,并且调整SDR系统设置以实现最佳性能,将是非常有好处的。本系列文章的这一部分讨论ADI公司提供的软件工具,其支持MATLAB和Simulink模型与FMCOMMSx SDR平台直接互动;此外还会说明如何利用这些工具验证第二部分所述的ADS-B模型2。
MATLAB和Simulink IIO系统对象
ADI公司提供了完整的软件基础设施来支持MATLAB和Simulink模型与FMCOMMSx SDR平台(其连接到运行Linux的FPGA/SoC系统)实时互动。这之所以可能,有赖于IIO System Object(TM)3(系统对象),它设计用于通过TCP/IP与硬件系统交换数据,从而发送(接收)数据至(自)目标,控制目标的设置,并监测RSSI等不同目标参数。图1显示了该软件基础设施的基本架构以及系统组件之间的数据流。
图1. 软件基础设施框图
IIO系统对象基于MathWorks系统对象规范4,其公开了数据和控制接口,MATLAB/Simulink模型通过这些接口与基于IIO的系统通信。这些接口在一个配置文件中指定,配件文件将系统对象接口链接到IIO数据通道或IIO属性。这样便可实现通用型IIO系统对象,只需修改配置文件,它便能配合任何IIO平台工作。ADI GitHub库5提供了一些平台的配置文件和示例,包括AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ/AD-FMCOMMS4- EBZ/AD-FMCOMMS5-EBZ SDR板和高速数据采集板AD-FMCDAQ2-EBZ。IIO系统对象与目标之间的通信是通过libiio服务器/客户端基础设施来完成。服务器运行于Linux下的嵌入式目标上,管理目标与本地/远程客户端之间的实时数据交换。libiio库是硬件低层细节的抽象,提供了简单但完整的编程接口,可用于绑定各种语言(C、C++、C#、Python)的高级项目。
本文接下来将通过一些实际例子说明如何利用IIO系统对象来验证ADS-B MATLAB和Simulink模型。一个连接到ZedBoard7且运行Analog Devices Linux发行版的AD-FMCOMMS3-EBZ SDR平台6用作SDR硬件平台,以验证ADS-B信号检测与解码算法是否正常工作,如图2所示。
图2. ADS-B算法验证的硬件设置
利用IIO系统对象验证MATLAB ADS-B算法
为了利用从AD-FMCOMMS3-EBZ SDR平台获得的实时数据验证MATLAB ADS-B解码算法,开发了一个MATLAB脚本来执行如下操作:
根据用户输入计算地球带
创建并配置IIO系统对象
通过IIO系统对象配置AD-FMCOMMS3-EBZ模拟前端和数字模块
利用IIO系统对象从SDR平台接收数据帧
检测并解码ADS-B数据
显示解码的ADS-B信息
构建IIO系统对象之后,必须利用SDR系统的IP地址、目标设备名称、输入/输出通道的大小和数目对其进行配置。图3给出了一个创建并配置MATLAB IIO系统对象的例子。
图3. MATLAB IIO系统对象的创建和配置
然后,利用IIO系统对象设置AD9361属性并接收ADS-B信号。AD9361属性基于以下考量而设置:
图4. MATLAB libiio设置AD9361属性
利用基于AD9361的平台,采样速率相当容易确定。发送数据速率一般等于接收数据速率,最终取决于基带算法。本例中,解码算法是针对12.5 MSPS的采样速率而设计,AD9361采样速率据此设置。这样,接收到的样本便可直接应用于解码算法,无需其它抽取或插值操作。
RF带宽控制设置AD9361 RX模拟基带低通滤波器的带宽,以提供抗混叠和带外信号抑制。为了成功解调收到的信号,系统必须最大程度地提高信噪比 (SNR)。因此,在满足平坦度和带外抑制要求的同时,RF带宽必须设置得尽可能窄,以使带内噪声和杂散信号电平最小。如果RF带宽设置得较宽,ADC线性动态范围就会因为额外的噪声而缩小。同样,ADC无杂散动态范围也会因为较低的带外信号抑制而缩小,导致接收器的整体动态范围缩小。因此,将RF带宽设置为最优值对于接收所需的带内信号并抑制带外信号非常重要。通过观察接收信号的频谱,我们发现4 MHz是一个合适的RF带宽值。
除了通过RF带宽属性设置AD9361的模拟滤波器之外,我们还可以通过IIO系统对象使能AD9361的数字FIR滤波器以改善解码性能,如图5所示。根据ADS-B信号的频谱特性,我们设计一个数据速率为12.5 MSPS、通带频率为3.25 MHz、阻带频率为4 MHz的FIR滤波器。这样,我们就能进一步聚焦于目标带宽。
图5. 通过libiio使能AD9361的适当FIR滤波器
Adsb.ftr文件包含FIR滤波器的系数,该FIR滤波器利用ADI公司AD9361滤波器向导MATLAB应用程序设计8。此工具不仅能完成通用低通滤波器设计,还能为信号路径中的其它级提供幅度和相位均衡。
图6. 利用MATLAB AD9361滤波器向导设计的用于ADS-B信号的FIR滤波器
多功能且高度可配置的AD9361收发器具有多种增益控制模式,适合很多不同的应用。IIO系统对象的Gain Mode(增益模式)参数选择可用模式之一:manual、slow_attack、hybrid和fast_attack。最常用的模式是manual、slow_attack和fast_attack。Manual增益控制模式允许基带处理器 (BBP) 控制增益。Slow_attack模式主要用于慢速变化的信号,fast_attack模式主要用于"突发"开启和关闭的波形。增益模式在很大程度上取决于接收信号的强度。如果信号太强或太弱,建议使用manual或slow_attack模式。否则,fast_attack是不错的选择。ADS-B信号具有突发性,因此fast_ attack增益模式可实现最佳效果。这种波形要求使用fast_attack模式,因为其存在前同步码,并且AGC需要以足够快的速度响应以便捕捉第一位。没有信号时,启动时间(增益斜坡下降所需的时间)与衰减时间(提高增益所需的时间)存在差异。目标是快速调低增益,以便能在第一位看到一个有效的1,但不提高位时间之间的增益。
最后,根据您对TX_LO_FREQ和RX_LO_FREQ的设置,该模型有两种使用方式:使用预先捕捉的数据(RF回送)和使用从空中获得的实时数据。
预先捕捉数据
这种情况下,我们利用AD-FMCOMMS3-EBZ发送和接收预先捕捉到的一些ADS-B信号。这些信号保存在一个名为"newModeS"的变量中。
图7. 利用预先捕捉的ADS-B信号定义输入
这种情况要求TX_LO_FREQ = RX_LO_FREQ,它可以是AD-FMCOMMS3-EBZ支持的任意LO频率值。预先捕捉的数据中有大量ADS-B有效数据,因此,这是验证硬件设置是否合适的好方法。
这种情况下,我们接收空中的实时ADS-B信号,而不是AD-FMCOMMS3-EBZ发送的信号。根据ADS-B规范,它以1090 MHz的中心频率发送,因此,这种情况的要求是:
RX_LO_FREQ=1090 MHz,TX_LO_FREQ远离1090 MHz,以免产生干扰。
在接收侧使用一根适当的天线,它能覆盖1090 MHz频段,例如ADS-B双半波移动天线9;使用调谐不佳或制作不良的天线会导致空中雷达探测距离不够。
一切设置妥当之后,使用如下命令便可运行MATLAB模型:
[rssi1,rssi2]=ad9361_ModeS('ip','data source',channel);
其中,ip为FPGA板的IP地址,data source指定接收信号的数据源。目前,该模型支持"预先捕捉"的数据源和"实时"数据源。 Channel指定信号是利用AD-FMCOMMS3-EBZ的通道1还是通道2进行接收。
例如,发出以下命令时,系统将通过通道2接收预先捕捉的数据:
[rssi1,rssi2]=ad9361_ModeS('192.168.10.2','pre-captured',2);
在仿真结束时,您会得到两个通道的RSSI值以及下表所示的结果:
图8. 仿真结束时显示的结果表格
此结果表格显示了仿真期间出现的航空器信息。借助适当的天线,此模型利用AD-FMCOMMS3-EBZ能够捕捉并解码80英里范围内的航空器信号。S模式消息有两类(56 μs和112 μs),因此,某些消息包含的信息比其它消息要多。
利用实际ADS-B信号测试此模型时,解码能否成功,信号强度非常重要,务必把天线放在对准航空器的良好位置上。接收信号强度可通过查看两个通道的RSSI值来了解。例如,若通过通道2接收信号,通道2的RSSI应显著高于通道1的RSSI。通过查看频谱分析仪,可以判断是否存在有用数据。
RF信号质量
任何RF信号都需要一个质量指标。例如,对于QPSK等信号,我们有误差矢量幅度 (EVM)。对于ADS-B信号,查看分隔器输出还不足以获得正确消息,如图8所示。我们需要一个指标来定义ADS-B/脉冲位置调制的质量,以便判断哪种设置更好。
ModeS_BitDecode4.m函数中有一个变量diffVals,它就可以用作这样的指标。此变量是一个112 × 1矢量。对于一条S模式消息中的每个解码位,它都会显示该位距离阈值有多远。也就是说,每个解码位相对于正确判断有多少裕量。显而易见,一个位的裕量越大,解码结果的置信度就越高。另一方面,若裕量很小,则意味着判断处于边缘区,解码位很有可能是错误的。
下面两幅图比较了有和没有FIR滤波器两种情况下从ADS-B接收器获得的diffVals值。注意y轴,我们发现,使用FIR滤波器时,无论处于最高点、最低点还是平均值,diffVals都较大。然而,当没有FIR滤波器时,几个位的diffVals都非常接近0,意味着解码结果可能不正确。因此,我们可以得出结论,使用适当的FIR滤波器可改善解码的信号质量。
图9. 使用FIR滤波器时从ADS-B接收器获得的diffVals值
图10. 无FIR滤波器时从ADS-B接收器获得的diffVals值
采用IIO系统对象的MATLAB ADS-B算法可从ADI GitHub库下载10。
利用IIO系统对象验证Simulink ADS-B算法
Simulink模型基于本系列文章第二部分介绍的模型2。解码器和解码模块直接来自该模型,我们增加了Simulink IIO系统对象以开展信号接收和硬件在环仿真。
原始模型以采样时间 = 1且帧大小 = 1的设置工作。然而,Simulink IIO系统对象以缓冲模式工作,它会积累若干样本,然后进行处理。为了让原始模型配合系统对象工作,我们在其间增加了两个模块:解除缓冲以使帧大小 = 1,转换速率以使采样时间 = 1。这样,原始模型便可保持不变。
图11. Simulink模型捕捉和解码ADS-B信号
Simulink IIO系统对象设置如下。与MATLAB实例相同,它创建一个系统对象,然后定义与此系统对象相关的IP地址、设备名称、输入/输出通道数目和大小。
图12. Simulink IIO系统对象
与IIO系统对象相对应,此Simulink模块的输入输出端口通过对象模块的属性对话框以及目标ADI SDR平台特定的配置文件来定义。输入和输出端口按数据和控制端口分类。数据端口以帧处理模式发送(接收)连续数据缓冲至(自)目标系统,而控制端口则用于配置和监控不同的目标系统参数。数据端口的数目和大小通过该模块的配置对话框进行配置,而控制端口则在配置文件中定义。AD9361属性设置所依据的因素与MATLAB模型所述相同。MATLAB模型运用的所有理论和方法在这里都适用。
根据您对TX_LO_FREQ和RX_LO_FREQ的设置,Simulink模型有两种运行模式:使用预先捕捉的数据"DataIn"和使用实时数据。以预先捕捉的数据为例,在仿真结束时,我们可以在命令窗口中看到如下结果:
图13. 使用预先捕捉数据的仿真结束时在命令窗口中显示的结果
这里的结果以文本格式显示,而不像在MATLAB模型中以表格形式显示。
采用IIO系统对象的Simulink ADS-B模型可从ADI GitHub库下载11。11
本文讨论了利用ADI公司提供的libiio基础设施进行的硬件在环仿真。采用这种基础设施,便可利用实际信号和硬件验证MATLAB和Simulink ADS-B信号检测与解码算法。属性设置高度依赖于应用和波形,适合一个波形的设置并不一定适合另一个波形。这是关键的一步,可确保SDR系统的模拟前端和数字模块针对目标算法和波形调谐妥当,并且算法足够鲁棒,对于不同环境条件下获得的实际数据,它都能像预期的那样处理。有了经过验证的算法之后,便可开始下一步,即利用MathWorks代码自动生成工具将算法转换为HDL和C代码,并将此代码集成到实际SDR系统的可编程逻辑和软件当中。本系列文章的下一部分将说明如何生成代码并将其部署到生产硬件中,还会谈谈该平台在机场利用实际ADS-B信号运行所获得的结果。这样便介绍完了SDR系统从原型开发到生产的所有步骤。
1Andrei Cozma、Di Pu和Tom Hill。""。模拟对话,第49卷第3期,2015年。
2Mike Donovan、Andrei Cozma和Di Pu。"" 模拟对话,第49卷第3期,2015年。
3ADI公司。""。
4MathWorks。"?"
5ADI公司,""。GitHub库
6ADI公司。。
8ADI公司。。
Di Pu [di.]是ADI公司系统建模应用工程师,负责支持软件定义无线电平台和系统的设计与开发。她与MathWorks密切合作解决双方共同客户的难题。加入ADI公司之前,她于2007年获得南京理工大学 (NJUST) 电气工程学士学位,于2009年和2013年分别获得伍斯特理工学院 (WPI) 电气工程硕士学位和博士学位。她是WPI 2013年博士论文Sigma Xi研究奖获得者。
Andrei Cozma[andrei.]是ADI公司工程设计经理,负责支持系统级参考设计的设计与开发。他拥有工业自动化与信息技术学士学位及电子与电信博士学位。他参与过电机控制、工业自动化、软件定义无线电和电信等不同行业领域的项目设计与开发。
Imagination中文技术社区精彩导读
关于Imagination的发明创造
Xilinx推广
创新网赛灵思中文社区精彩导读
张国斌专栏
村田中文技术社区精彩导读
贸泽工程师社区精彩导读
ADI电机控制中文技术社区
19 小时 ago
19 小时 ago
19 小时 56 分钟 ago
22 小时 ago
22 小时 ago
22 小时 ago
22 小时 ago
1 天 14 小时 ago
1 天 18 小时 ago
1 天 18 小时 agoUnity3D背景制作(一)_图文_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity3D背景制作(一)
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩2页未读,
定制HR最喜欢的简历
你可能喜欢1. 将全景图片转换为6面的立方体
最初的原始图片
通过PTGui 软件将图片分解为6个部分
2. 通过Unity进行操作
创建3D项目工程
将之前的6张图片导入到Assets中
创建一个Metrial并且设置它的Shader如下,并且将6张图片与其前 后 左 右 上 下 分别对应
设置完成后,通过下方查看效果:
打开Windows/Lighting,使用上一步骤的材质球设置Scene , 这个时候右边的全景信息就被替换了(先忽略掉这2个反光物体,后面会讲)
但是当前的贴图还会有些缝隙,这是由于贴图的自循环导致的, 解决的方法如下:
在Assets中选中最原始的6张贴图,设置为不循环后点击Apply应用
3. 如何表现反射效果
创建一个球体Sphere和一个新的材质球Metrial,并且设置这个材质球的Shader如下:
创建一个Cubemap,它主要是用来表现反射的效果,
设置Cubemap,将之前的6张贴图也拖放进来
选中上一步创建的材质球,将Cubemap拖放到对应的位置
在将这个材质球直接拖到球体上,则球体就会出现反射的效果
阅读(...) 评论()Unity3D游戏开发入门教程
授课讲师:
软件版本:
Unity3D 4.2英文版
教程程度:
所需基础:
C语言基础或其他编程基础
交流提问:
适合人群:
游戏开发爱好者
相关素材:
课程光盘:
3637 472302 239318 342301 233422 163596 141088 157387 139452 107318 91720 69994 104353 136290 70458 60762 56974 53943 56666 53561 48666 51404 59870 45172 33079 33865 43178 48237 40126 42890
论坛最新主题
您可能感兴趣的课程
通过太空射击游戏等案例设计过程,使学员掌握程序设计技巧和方法。
塔防类3D游戏开发过程入手,学习资源整合,程序设计并最终发布游戏。
本课程将为大家详细的介绍UGUI的开发应用。
本套C#入门教程将从基础入手,教会您使用C#进行应用软件的开发。
赞助商链接
兴趣圈成员

我要回帖

更多关于 unity如何制作motion 的文章

 

随机推荐