【rails项目源码】【libgo 源码】【phaserjs源码】帧同步 源码_帧同步源码

时间:2024-11-28 19:36:25 来源:网站banner 源码 分类:百科

1.针对cameralink相机,帧同如何在vivado工程中增加模拟的帧同
2.ET框架1:C#服务器 unity3d客户端 开源 github
3.hdl_graph_slam|后端优化|hdl_graph_slam_nodelet.cpp|源码解读(四)
4.设计一个用8250实现串口通信
5.vrp的应用范围
6.Android ViewRootImpl

帧同步 源码_帧同步源码

针对cameralink相机,如何在vivado工程中增加模拟的帧同

       本文详细阐述了如何在Vivado工程中增加模拟的帧同步,特别是步源针对CameraLink相机的应用。首先,码帧我们先了解两种实现CameraLink视频编解码的同步方法:一是使用专用的编解码芯片,如DSCR;另一种方法则是源码利用FPGA纯verilog实现,利用FPGA的帧同rails项目源码serdes资源来完成解串,这种方法的步源优点在于更合理地利用了FPGA的资源,但对FPGA操作的码帧难度稍大。

       本文提供了一个巧妙的同步设计方案,用于验证CameraLink解码模块和编码模块的源码正确性,无需实际的帧同CameraLink相机。方案如下:通过笔记本电脑模拟HDMI输入视频,步源并将视频解码为RGB数据,码帧然后将此数据输入到CameraLink编码模块中,同步生成CameraLink的源码LVDS差分视频信号。接着,将此信号通过CameraLink视频输出接口回环至输入接口,从而FPGA再次接收到CameraLink的LVDS差分视频信号。将该信号输入到CameraLink解码模块中,解码后生成RGB视频,最后通过HDMI编码模块输出至显示器显示。这个设计将输入和输出视频都设置为HDMI格式,却能够直观地验证CameraLink解码模块和编码模块的正确性。

       实现该方案的完整工程源码和技术支持可供获取,具体获取方式请查看文章末尾。此工程适用于在校学生进行毕业设计、研究生项目开发,以及在职工程师进行项目开发,特别适用于医疗、军工等行业的数字成像和图像传输领域。

       在此基础上,文章还提供了关于CameraLink协议的基础知识链接,以及作者已有的CameraLink接收与发送工程实例链接。设计方案包括了详细的视频输入、HDMI解码、CameraLink编码、CameraLink接口、CameraLink编码、HDMI编码流程。此外,文章还对CameraLink解码和编码模块进行了深入讲解,并提供了vivado工程的详细设计、综合后的工程代码架构以及FPGA资源消耗和功耗预估。

       最后,文章展示了FPGA板子及对应的CameraLink转接板接口的实物图,并附上了上板调试验证的libgo 源码结果。为方便大家获取工程代码,作者提供了一个网盘链接方式获取资料,确保大家能够顺利进行项目的开发。

ET框架1:C#服务器 unity3d客户端 开源 github

       ET框架是一个专门设计用于C#服务器和unity3d客户端的开源框架,极大节省了人力物力,使得多人游戏机制的开发变得简单高效。该框架最显著的特点如下:

       1. 使用ET框架,你能够同时进行C#服务器端与unity3d客户端的开发,这样前后端开发人员能够直接进行沟通,无需繁琐的沟通成本。

       2. 服务端采用组件式框架,实现了分布式服务器架构,使得服务器的扩展与维护变得更加灵活。

       3. ET框架通过提供清晰的文档与示例,帮助客户端开发人员更好地理解服务器逻辑,反之亦然,促进了团队间更高效的合作。

       在实际应用中,你将需要按照以下步骤进行安装与配置:

       1. 访问github源码地址:github.com/egametang/ET

       2. 随附的文档将指导你完成框架的安装与使用。

       3. 你可以通过斗地主Demo源码进一步了解框架的实际应用。

       如果你在安装与配置过程中遇到问题,可以加入QQ群:,随时与团队成员进行交流。

       以下是详细的运行指南:

       下载ET框架后,确保你的运行环境满足以下要求:

       1. 使用VS,需要安装以下组件:.net 桌面开发、visual studio tools for unity、.netcore2.0。

       2. 安装unity版本:.1.0p5到.1.2,其他版本可能不支持。

       3. 打开unity,选择Egametang/Unity文件夹,启动项目。

       4. 使用VS打开Egametang/Server/Server.sln并编译。

       5. 在Unity中,配置命令行工具以启动服务端。

       6. 启动web资源服务器。

       7. 运行Unity,输入账号,登录,查看日志以确认连接Gate成功。

       在开发过程中,需要注意以下常见问题:

       1. VS .4版本vstools可能存在bug,遇到Hotfix工程问题时,需要重新引用UnityEngine跟UnityEngineUI两个dll。phaserjs源码

       2. 中文目录问题也是常见的错误源。

       3. 确保已经安装了最新版本的VS tools。

       在测试帧同步功能时,需要完成以下步骤:

       1. 打开命令行配置,重启服务器。

       2. 使用打包工具,选择PC进行打包。

       3. 运行PC包,登录,进入大厅,进入场景。

       4. 启动web资源服务器。

       5. 运行PC包登录大厅,此时应能看到两个重叠的人物。

       6. 点击鼠标右键即可移动人物。

       完成以上步骤后,你便可以开始深入研究框架的代码。研究代码前,建议先详细阅读文档,对框架有一个大致的了解。在实践过程中,重构ET工程,将它融入自己的项目,是最快掌握框架精髓的关键。遇到问题时,随时在QQ群中寻求帮助,等到你的DEMO跑通后,再回顾文档,你会对框架有更清晰的认识。

hdl_graph_slam|后端优化|hdl_graph_slam_nodelet.cpp|源码解读(四)

       hdl_graph_slam源码解读(八):后端优化

       后端概率图构建核心:hdl_graph_slam_nodelet.cpp

       整体介绍

       这是整个系统建图的核心,综合所有信息进行优化。所有的信息都会发送到这个节点并加入概率图中。

       包含信息

       1)前端里程计传入的位姿和点云

       2)gps信息

       3)Imu信息

       4)平面拟合的参数信息

       处理信息步骤

       1)在对应的callback函数中接收信息,并放入相应的队列

       2)根据时间戳对队列中的信息进行顺序处理,加入概率图

       其他内容

       1)执行图优化,这是一个定时执行的函数,闭环检测也在这个函数里

       2)生成全局地图并定时发送,即把所有关键帧拼一起,得到全局点云地图,然后在一个定时函数里发送到rviz上去

       3)在rviz中显示顶点和边,如果运行程序,会看到rviz中把概率图可视化了

       关键帧同步与优化

       cloud_callback

       cloud_callback(const nav_msgs::OdometryConstPtr& odom_msg,const sensor_msgs::PointCloud2::ConstPtr& cloud_msg)

       该函数主要是odom信息与cloud信息的同步,同步之后检查关键帧是否更新。

       关键帧判断:这里主要看关键帧设置的这两个阈值keyframe_delta_trans、keyframe_delta_angle

       变成关键帧的spilit源码要求就是:/hdl_graph_slam/include/hdl_graph_slam/keyframe_updater.hpp

       优化函数

       optimization_timer_callback(const ros::TimerEvent& event)

       函数功能:将所有的位姿放在posegraph中开始优化

       loop detection 函数:主要就是将当前帧和历史帧遍历,寻找loop。

       闭环匹配与信息矩阵计算

       匹配与闭环检测

       潜在闭环完成匹配(matching 函数)

       不同loop的信息矩阵计算(hdl_graph_slam/information_matrix_calculator.cpp)

       gps对应的信息矩阵

       hdl_graph_slam/graph_slam.cpp

       添加地面约束

       使用add_se3_plane_edge函数的代码

       执行图优化

       优化函数optimization_timer_callback

       执行图优化,闭环检测检测闭环并加到了概率图中,优化前

       生成简化版关键帧,KeyFrameSnapshot用于地图拼接

       生成地图并定时发送

       生成地图:简化版关键帧拼接

       定时发送:src/hdl_graph_slam_nodelet.cpp文件中

       系统性能与扩展性

       hdl_graph_slam性能问题在于帧间匹配和闭环检测精度不足,系统代码设计好,模块化强,易于扩展多传感器数据融合。

       总结

       hdl_graph_slam后端优化是关键,涉及大量信息融合与概率图构建。系统设计清晰,扩展性强,但在性能上需改进。

设计一个用实现串口通信

       数据接收存储技术革新是信号采集处理领域内的一个重要课题。利用这种技术,可以把信号的实时采集和精确处理在时间上分为两个阶段,有利于获得令人更满意的处理结果。在无线数传接收设备中应用数据接收存储方法时,除了要满足数据传输速率和差错控制方面的要求外,还需要考虑如何使设备易于携带、接口简单、使用方便。

       传统外设接口技术不但数据传输速率较低,独占中断、I/O地址、DMA通道等计算机系统关键资源,容易造成资源冲突问题,而且使用时繁杂的安装配置手续也给终端用户带来了诸多不便。近年来,USB接口技术迅速发展,新型计算机纷纷对其提供支持。USB2.0是USB技术发展的最新成果,利用USB2.0接口技术开发计算机外设,不但可以借用其差错控制机制[1][6]减轻开发人员的负担、获得高速数据传输能力(Mb/s),而且可以实现便捷的机箱外即插即用特性,方便终端用户的使用。

       1 无线数传接设备总体构成

       无线数传接收设备是某靶场测量系统的一个重要组成部分。如图1所示,该设备由遥测接收机利用天线接收经过调制的无线电波信号,解调后形成传输速率为4Mb/s的RS-电平差分串行数据流。以帧同步字打头的有效数据帧周期性地出现在这些串行数据中。数据转存系统从中提取出有效的数据帧,并在帧同步字后插入利用GPS接收机生成的本地时间信息,用于记录该帧数据被接收到的tilcon源码时间,然后送给主机硬件保存。

       在无线数传接收设备中,数据转存系统是实现数据接收存储的关键子系统。下面将详细介绍该系统的硬件实现及工作过程。

       2 数据转存系统基本构成及硬件实现

       数据转存系统主要由FPGA模块、DSP模块、USB2.0接口芯片构成,各个模块之间的相互关系如图2所示示。图中,4Mb/s的串行数据输入信号SDI已由RS-差分电平转换为CMOS电平。为突出重点,不太重要的信号连线未在图中绘出。下面分别介绍这几个模块的主要功能。

       2.1 FPGA模块实现及春功能

       FPGA模块在Altera公司ACEX系列的EP1KTI-2芯片中实现。其中主要的功能子模块有:位同步逻辑、帧同步逻辑、授时时钟和译码逻辑。位同步逻辑主要由数字锁相环构成,用于从串行数据输入信号SDI中恢复出位时钟信号。帧同步逻辑从位同步逻辑的输出信号提取帧同步脉冲。两者为DSP利用其同步串行口接收串行数据作好准备。这样,利用一对差分信号线就可以接收同步串行数据,简化了印制电路板的外部接口。授时时钟在DSP和GSP接收机的协助下生成精度为0.1ms的授时信息。译码逻辑用于实现系统互联。

       2.2 DSP模块实现及其功能

       DSP模块是数据转存系统的主控模块,在T1公司位定点DSP芯片TMSF[4]中实现。在DSP的外部数据空间还配置了KX的高速SRAM,可以缓存余帧数据,用于提高系统的差错控制能力。DSP利用同步串行口接收FPGA送来的同步串行数据,利用异步串口接收GPS接收机送来时间信息(用于初始化FPGA授时时钟),利用外部总线接口访问FPGA授时时钟、外部SRAM、ISP的片内寄存器。可以看出DSP模块主要用于完成数据帧的接收、重组以及转存调度等任务。

        ISP芯片是PHILIPS公司推出的高速USB2.0设备控制器,实现了USB2.0/1.1物理层、协议层,完全符合USB2.0规范,即支持高速(Mb/s)操作,又支持全速(Mb/s)操作。ISP没有内嵌微处理器,但对微处理器操作了灵活的接口。在上电时,通过配置BUS——CONF、DAO、MODE1、MODE0、DA1引脚电平可以适应绝大多数的微处理器接口类型。例如,通过BUS_CONF/DA0引脚,总线配置可以选择普通处理器模块(Generic Phocessor mode)中分割总线模式(Split Bus Mode);在普通处理器模式下,通过MODE0/DA1引脚可以选择读写选通为风格或者Motorola风格。

       在数据转存系统中,ISP用于处理主机的高速数据传输。它工作在普通处理器接口模式下,采用风格的读写选通信号,由DSP芯片TMSF控制。两者在选定工作方式下的信号连线如图3所示,图中未画出的信号引脚可以悬空,供电引脚的连接方式在参考资料[2]第页有简明描述。在FPGA译码逻辑的作用下,ISP的片内寄存器被映射在DSP的片外数据空间中。DSP通过8位地址线选择要访问的寄存器,在读写选通信号的控制下,利用位数据线与选定的寄存器交换数据。在访问ISP单字节寄存器时,数据总线高字节内容无关紧要。ISP通过中断引脚INT向DSP报告发生的总线事件,利用D+、D-引脚完成与主机的数据交换。

       3 数据转存系统的工作过程

       系统加电后,当FPGA配置过程结束时,如果有串行数据输入,位同步逻辑和帧同步逻辑便启动同步过程。同时,DSP片内FLASH中复位中断服务程序c_int0()[4]被立即执行,在建立好C语言的工作环境下,它会调用主函数main()。在main()中,需要安排好一系列有先后顺序的初始化工作。其中,ISP的初始化过程比较复杂,需要考虑设备采用的供电方式(这里为自供电[6]方式)、插接主机和系统上电的先后次序,并需要与USB总线枚举[1][6]过程相结合。

       在FPGA中的位同步逻辑和帧同步逻辑均进入同步状态,且DSP主控模块配合主机完成初始化任务后,即可启动数据的传输过程。下面介绍一下ISP的初始化过程及DSP控制的数据帧的接收机转存流程。

       3.1 ISP的初始化

       在初始化过程中,首先需要设置影响ISP自身工作方式的一些寄存器,然后与主机端USB系统配合进行,应答来自主机端的设备请求。当数据转存系统板作为USB 2.0设备通过连接器连到主机USB根集线器上的一个端口时,主机便可检测到这一连接,接着给该端口加电,检测设备并激活该端口,向USB设备发送复位信号。设备收到这一复位信号后,即进入缺省状态,此后就能够通过缺省通信通道响应主机端送来的设备请求。主机通过描述符请求(GET_DESCRIPTOR)获得设备端的详细信息,通过设置地址请求(SET_ADDRESS)设置设备地址,通过设置配置请求(SET_CONFIGURATION)选定合适的设备配置。在设备成功响应了这些设备请求之后,就可以与主机通信了。

        在响应主机请求的过程中,DSP需要配置ISP的端点以实现不同类型的传输通道。根据数据传输速率的要求,除了缺省的控制通道外,系统中实现了一个批传输(bulk)[1]类型的输入通道。这样,ISP就可以像FIFO一样方便地从数据转存系统向主机传输数据,而且具有差错控制能力,简化了设备端软件设计的复杂性。

       3.2 数据帧的接收转存过程

       系统正常工作时,需要与主机端程序相互配合。主要端需要开发者实现的程序包括设备驱动程序和应用程序。在Windows 操作系统下,USB设备驱动程序为WDM模型的驱动程序,开发环境DriverStudio为WDM型驱动程序提供了框架结构,使得驱动开发变得非常容易(参见参考文献[5]第八、九、十章)。驱动程序接收应用程序的请求,利用USB总线驱动程序(US-BD)和主机控制器驱动程序(HCD)通过主机控制器安排USB总线事务,设备端则根据这些事务调度相应的数据帧的传输。关于主机端口如何安排总线事务可以查阅参考文献[1]。以下着重介绍设备端数据的调度过程。

       数据帧的接收转存过程主要由DSP负责,DSP在外部SRAM中建立了一个数据帧的队列,如图4所示。系统主要工作在中断驱动模式下,与同步串行口相关的中断服务程序负责建立队列的尾部,对应于ISP中断引脚INT的中断服务程序负责建立队列的头部。

       当以帧同步字打头的一帧数据以串行位流的形式到来时,FPGA产生的帧同步脉冲可以直接启动DSP同步串行口接收数据,该同步脉冲同时以中断方式通知DSP为一帧数据的接收做好准备。DSP接到通知后,首先检查外部SRAM中是否有足够的空间容纳一帧数据。如果没有空间,则丢弃当前数据帧(根据设计,这种情况是很少见的);如果有空间,则为当前数据帧保留足够的空间。接着在帧起始位置填写帧步字,读取授时时钟的当前值并填写在帧同步字后。这样,一个新的数据帧(图4中数据帧F_N)就建立了,但是并没有加入到队列中,而是要等待来自同步串行口的后继数据嵌入该帧中后再加入到队列中。

       同步串行口的接收缓冲区在接收到若干字(由初始化时的设置决定)后,会向DSP提出中断请求。在中断服务程序中,DSP读取接收缓冲区中的内容,并将其填入上述新开辟的帧F_N中。在一帧数据接收完毕后,就将该帧添加到队列的尾部,表示该帧数据已经准备好(图4中数据帧F_R),可以通过ISP送给主机硬件保存。

        DSP在查询到队列中有已经准备好的数据帧存在时,就设置ISP的端点索引寄存器(Endpoint Index Register)使其指向初始化时配置的批传输输入端点,然后将队列首帧数据通过ISP的数据端口寄存器(Data Port Register)填写在端点缓冲区中。在端点缓冲区被填满后,它就自动生效。在不能填满端点缓冲区的情况下,可以通过设置控制功能寄存器(Control Function Register)的VENDP位[2]强制该端点缓冲区生效。端点缓冲区生效后,在USB总线上下一IN令牌到来时,该端点缓冲区中的数据就通过USB总线传输到主机中。主机成功接收到数据后,会给ISP以ACK应答。能够通过INT引脚报告给DSP,DSP就可以继续往端点中填写该帧其余数据。

       在队列首帧数据被成功转移到主机后,DSP就丢弃首帧数据。如果队列在还有数据帧,则将次首帧作为首帧,继续前述传输过程;如果没有要传输的数据帧,则为队列首帧指针Head_Ptr赋空值(NULL),等待新的数据帧的到来。

       USB2.0是计算机外设接口技术发展的最新成功,具有广阔的应用前景。本文介绍了PHILIPS公司USB2.0接口芯片ISP在无线数据接收设备中的应用。高性能、便携化的无线数据传接收设备。其在靶场实弹试验中受到了用户的好评。

       PC机的RS-C串行口是使用最多的接口之一。因此,4串口、8串口等以增加串口数量为目的的ISA总线卡产品大量问世。一般串口应用只是使用了RXD和TXD两条传输线和地线所构成的串口的最基本的应用条件,而本文介绍一个利用PC机的RS-串口加上若干电路来实现多串口需求的接口电路。

        1.PC机串口的RTS和DTR及扩展电路

        RTS和DTR是PC机中芯片的MODEM控制寄存器的两个输出引角D1和D0位,口地址为COM1的是3FCH,口地址为COM2的是2FCH。我们可以利用对MODEM控制寄存器3FCH或2FCH的写操作对其进行控制。从而利用该操作和扩展电路实现对TXD和RXD进行多线扩展,图1是其扩展电路。

        在图1所示的PC机串口扩展电路中,LS是二进制计数器,1脚是清0端,2脚是计数端,计数脉冲为负脉冲信号,是八选一双向数字/模拟电子开关电路,其中一片用于正向输出,一片用于反向输出。该扩展电路工作原理是通过控制PC机串口的DTR输出的高低电平来形成LS的P2脚计数端的负脉冲信号,使的输出端P(QA)、P(QB)、P(QC)、P(QD)脚依次在到十六个状态中变化,本电路仅使用了QA、QB、QC三个输出来形成对的ABC控制,最终使得(1)的输入端TXD依次通过与TX1~TX8导通而得到输出信号,(2)的输出端RXD与RX1~RX8依次导通形成输入信号。由于RXD和TXD的导通是一一对应的,因此串口通信就可以依次通过与多达8个带有三线基本串口的外部设备进行通信传输以实现数据传送。PC机端的电平转换电路是将RS电平转换为TTL电平,外设端的电平转换电路是将TTL电平转换为RS电平。由于这种转换有许多电路可以实现,因而,这里不再介绍。

        2.电路使用程序

        对PC机串口COM1的编程如下:

        ……

        … ;对COM1口的波特率等设置;

        MOV DX,3FCH

        MOV AL,XXXXXXB

        OUT DX,AL;D1生成RTS负脉冲,对LS输出端清0

        MOV AL,XXXXXXB;

        OUT DX,AL ;的RX1和TX1导通

        CALL COM ;调用通信子程序,与第一个外部设备通信;

        MOV CX,7 ;设置循环计数器;

        NEXT:MOV DX ,3FCH

        MOV AL,XXXXXXB

        OUT DX ,AL ;D0位生成DTR的负脉冲,形成的P2脚计数脉冲

        MOV AL,XXXXXXB

        OUT DX,AL ;RX2和TX2导通

        CALL COM ;调用通信子程序,与第二个外部设备通信

        LOOP NEXT ;循环与另外6个外部设备通信

        …

        … ;通信子程序略

        3.使用说明

        由于该扩展的多路接口在通信时共用一个子程序,因此在与某一路导通时,系统只能与这一路的外部设备进行通信联络。

        如果工作现场需要立即和某一路通信,则需要对3FCH的D1位执行两个写操作并在RTS脚形成负脉冲,以对I清0后,再连接执行若干次对DTR的两次写操作。例如想对第4路外设通信,则需要执行完成对LS清0后,再连续三次对3FCH的D0位进行两个写操作以形成DTR脚的负脉冲,然后即可调用通信子程序。

        如需使用PC机的COM2串口,只需将程序中的3F8H~3FDH全部换成2F8H~2FDH即可。

        如果使用十六选一双向数字/模拟电子开关电路,可将LS的QA、QB、QC、QD四个输出端接至电子开关的四个控制端A、B、C、D,这样就可以达到一个PC机的RS口与个带有串口的外设的数据通信。

vrp的应用范围

       VRP可广泛的应用于城市规划、室内设计、工业仿真、古迹复原、桥梁道路设计、房地产销售、旅游教学、水利电力、地质灾害等众多领域,为其提供切实可行的解决方案。 很久以来,在中国的虚拟现实技术领域,一直是引进国外的虚拟现实软件,中国在很长的一段时间内没有自己独立开发的虚拟现实仿真平台软件。泱泱大国,中国显然不能总是拾人牙慧,开发出中国自主知识产权的虚拟现实软件,才是王道。中视典数字科技一直致力于中国虚拟现实技术自有软件的开发和探索,终于研发除了具有完全自主知识产权的虚拟现实软件—Virtual Reallity Platform(通俗称为VRP)。

       VRP系列产品自问世以来,一举打破该领域被国外领域所垄断的局面,以极高的性价比获得国内广大客户的喜爱,已经成为目前中国国内市场占有率最高的一款国产虚拟现实仿真平台软件。 VRP虚拟现实仿真平台,经历了多年的研发与探索,已经在VRP引擎为核心的基础上,衍生出了九个相关三维产品的软件平台。

       å…¶ä¸­VRP-BUILDER虚拟现实编辑器和VRPIE3D互联网平台(又称VRPIE)软件已经成为目前国内应用最为广泛的VR和WEB3D制作工具,连续三年占据国内同行业的领导地位,用户数量始稳居于第一。

       ã€€ã€€

       ï¼ˆ1)VRP-BUILDER 虚拟现实编辑器

       VRP-BUILDER虚拟现实编辑器的软件用途、功能特点和客户群

       è½¯ä»¶ç”¨é€”:三维场景的模型导入、后期编辑、交互制作、特效制作、界面设计、打包发布的工具

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘三维内容制作公司

       åŠŸèƒ½ç‰¹ç‚¹ï¼š VRP-Builder所有操作都是以美工熟悉的方式进行,并且提供了大量的支持工具和辅助库以快速提高成品质量。如果使用者有一定的3DSMAX建模和渲染基础,只要对VR-Builder平台稍加学习,很快就可以制作出自己的虚拟现实场景。

       ï¼ˆ2)VRPIE-3D互联网平台

       VRPIE3D互联网平台(又称VRPIE) 是中视典数字科技有限公司自主研发的一款用于在互联网上进行三维互动浏览操作的软件,可将三维的虚拟现实技术成果用于互联网应用。

       åœ¨å®‰è£…了VRP-IE浏览器插件的基础上,用户可在任意一台连上互联网的电脑上,访问VRP-IE互联网平台网页,实现全三维场景的浏览和交互。

       VRPIE软件用途、功能特点和客户群

       è½¯ä»¶ç”¨é€”:将VRP-BUILDER的编辑成果发布到互联网,并可让客户通过互联网进行对三维场景的浏览与互动

       åŠŸèƒ½ç‰¹ç‚¹ï¼šVRP-IE 三维网络平台具备高度真实感画质,支持大场景动态调度,良好的低端硬件兼容性,高压缩比,多线程下载,支持高并发访问,支持视点优化的流式下载,支持高性能物理引擎,支持软件抗锯齿,支持脚本编程,支持无缝升级等等特性,为广大用户开发面向公众或集团用户的大型WEB3D 网站提供了强有力的技术支持和保障。

       å®¢æˆ·ç¾¤ï¼šç›´æŽ¥é¢å‘所有互联网用户

       ï¼ˆ3)VRP-PHYSICS 物理模拟系统

       VRP-PHYSICS物理模拟系统是中视典数字科技有限公司研发的一款物理引擎系统。系统赋予虚拟现实场景中的物体以物理属性,符合现实世界中的物理定律,是在虚拟现实场景中表现虚拟碰撞、惯性、加速度、破碎、倒塌、爆炸等物体交互式运动和物体力学特性的核心。

       VRP-PHYSICS物理模拟系统软件用途和客户群

       è½¯ä»¶ç”¨é€”:可逼真的模拟各种物理学运动,实现如碰撞、重力、摩擦、阻尼、陀螺、粒子等自然现象,在算法过程中严格符合牛顿定律、动量守恒、动能守恒等物理原理

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘院校和科研单位

       ï¼ˆ4)VRP-DIGICITY 数字城市平台

       VRP-DIGICITY数字城市平台的软件用途和客户群

       è½¯ä»¶ç”¨é€”:具备建筑设计和城市规划方面的专业功能,如数据库查询、实时测量、通视分析、高度调整、分层显示、动态导航、日照分析等

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘建筑设计、城市规划的相关研究和管理部门

       ï¼ˆ5)VRP-INDUSIM 工业仿真平台

       VRP-INDUSIM工业仿真平台的软件用途和客户群

       è½¯ä»¶ç”¨é€”:模型化,角色化,事件化的虚拟模拟,使演练更接近真实情况,降低演练和培训成本,降低演练风险。

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘石油、电力、机械、重工、船舶、钢铁、矿山、应急等行业

       ï¼ˆ6)VRP-TRAVEL 虚拟旅游平台

       VRP-TRAVEL虚拟旅游平台的软件用途和客户群

       è½¯ä»¶ç”¨é€”:激发学生学习兴趣,培养导游职业意识,培养学生创新思维,积累讲解专项知识,架起学生与社会联系的桥梁,全方位提升学生讲解能力,让单纯的考试变成互动教学与考核双模式。

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘导游、旅游规划

       ï¼ˆ7)VRP-MUSEUM 虚拟展馆

       VRP-MUSEUM虚拟展馆的软件用途和客户群

       è½¯ä»¶ç”¨é€”:是针对各类科博馆、体验中心、大型展会等行业,将其展馆、陈列品以及临时展品移植到互联网上进行展示、宣传与教育的三维互动体验解决方案。它将传统展馆与互联网和三维虚拟技术相结合,打破了时间与空间的限制、最大化地提升了现实展馆及展品的宣传效果与社会价值,使得公众通过互联网即能真实感受展馆及展品,并能在线参与各种互动体验,网络三维虚拟展馆将成为未来最具价值的展示手段。

       å®¢æˆ·ç¾¤ï¼šç§‘博馆、艺术馆、革命展馆、工业展馆、图书馆、旅游景区、企业体验中心以及各种园区

       ï¼ˆ8)VRP-SDK 系统开发包

       VRP-SDK系统开发包的软件用途和客户群

       è½¯ä»¶ç”¨é€”:提供C++源码级的开发函数库,用户可在此基础之上开发出自己所需要的高效仿真软件

       å®¢æˆ·ç¾¤ï¼šä¸»è¦é¢å‘水利电力、能源交通等工业仿真研究与设计单位

       ã€€ã€€

       ï¼ˆ9)VRP-STORY故事编辑器

       VRP-MYSTORY故事编辑器的特点

       æ“ä½œçµæ´»ã€ç•Œé¢å‹å¥½ã€ä½¿ç”¨æ–¹ä¾¿ï¼Œå°±åƒåœ¨çŽ©ç”µè„‘游戏一样简单

       æ˜“学易会、无需编程,也无需美术设计能力,就可以进行3D制作

       æˆæœ¬ä½Žã€é€Ÿåº¦å¿«ï¼Œèƒ½å¤Ÿå¸®åŠ©ç”¨æˆ·é«˜æ•ˆçŽ‡ã€ä½Žæˆæœ¬åœ°åšå‡ºæƒ³å¾—到的3D作品

       æ”¯æŒä¸ŽVRP平台所有软件模块的无缝接口,可以与以往所有软件模块结合使用,实现更炫、更丰富的交互功能。   

       ï¼ˆï¼‰VRP-3DNCS 三维网络交互平台

       VRP-3DNCS三维网络交互平台(英文全称Virtual Reality Platform 3D Net Communication System,简称VRP-3DNCS)提供了一个允许不同地区、不同行业、不同角色实时在同一场景下交互的平台。  用户可将VRP-MYSTORY下制作的应用,根据自身需求,使用SDK开发包,开发符合行业特性的专项策略,提供语音、文字等多种交流方式,实现各地用户身临同一场景的效果。 VRP高级模块主要包括VRP-多通道环幕模块、VRP-立体投影模块、VRP-多PC级联网络计算模块、VRP-游戏外设模块、VRP-多媒体插件模块等五个模块。

       ï¼ˆ1)VRP-多通道环幕模块

       å¤šé€šé“环幕模块由三部分组成:边缘融合模块、几何矫正模块、帧同步模块。

       å®ƒæ˜¯åŸºäºŽè½¯ä»¶å®žçŽ°å¯¹å›¾åƒçš„分屏、融合与矫正,是的一般用融合机来实现多通道环幕投影的过程基于一台PC机器即可全部实现。

       ï¼ˆ2)VRP-立体投影模块

       ç«‹ä½“投影模块是采用被动式立体原理,通过软件技术分离出图像的左、右眼信息。相比于主动式立体投影方式的显示刷新提高一倍以上,且运算能力比主动式立体投影方式更高。

       ï¼ˆ3)VRP-多PC级联网络计算模块

       é‡‡ç”¨å¤šä¸»æœºè”网方式,避免了多头显卡进行多通道计算的弊端,而且三维运算能力相比多头显卡方式提高了5倍以上,而PC机事件的延迟由不超过0.1毫秒。

       ï¼ˆ4)VRP-游戏外设模块

       Logitech方向盘、Xbox手柄、甚至数据头盔数据手套等都是虚拟现实的外围设备,通过VRP-游戏外设板块就可以轻松实现通过这些设备对场景进行浏览操作,并且该模块还能自定义扩展,可自由映射。

       ï¼ˆ5)VRP-多媒体插件模块

       VRP-多媒体插件模块可将制作好的VRP文件嵌入到Neobook、Director等多媒体软件中,能够极大地扩展虚拟现实的表现途径和传播方式。 VRP虚拟现实仿真平台自发布第一个版本至今已经历数年,经过中视典人不断的创新与改进。VRP.0于年5月日在北京国家会议中心正式对外发布。

       VRP.0作为中视典数字科技年推出的VRP仿真平台软件系列的最新版本,不尽完善和提高了VRP软件原有的一些功能,还新增了包括增强现实技术、VRP-MYSTORY故事编辑器等新功能。

       VRP.0新增功能

       ï¼ˆ1)集成了增强现实技术

       1.稳定高效的增强现实算法库:摄像机的自动标定、实时多mark跟踪、实时自然图片的跟踪、实时简单3D物体的跟踪、实时人脸面部跟踪。

       2.方便易用的AR-Builder编辑器:有好的界面编辑工具、快速定制个性化AR案例、支持3dMax和Maya导出动画。

       3.支持多种AR交互硬件:增强现实眼镜、头部跟踪器、骨骼跟踪器、红外传感系统、惯性传感系统、动作捕捉系统

       ï¼ˆ2)无缝结合VRP-MYSTORY故事编辑器

       1.提供大量的精美模型库、角色库、特效库

       2.对象化的模型操作,精美的实时渲染效果

       3.支持直接发布各种格式的图片

       ï¼ˆ3)支持工业格式数据

       1.支持模型直接从工业软件导入到VRP中进行编辑

       2.支持Maya、Pro/E、Catia、Solidworks等

       3.支持VRP模型导回到MAX及其他工业软件中再次修改

       ï¼ˆ4)全新编辑模式

       1.拖拽节点式的编辑模式,可编辑产生无限多种GPU-Shader材质效果

       2.材质编辑人员无需掌握GPU显示编程原理即可制作出所需的GPU-Shader效果

       3.支持材质库功能,包含大量的金属材质、建筑类材质、织物类材质、自然类材质,满足各种需求

       4.针对美术人员的设计流程优化,提高制作效率

       5.支持时间动态材质效果,极大提高VRP编辑器的渲染效果

       6.完全支持导出DirectX和OpenGL的GPU-Shader效果

       ï¼ˆ5)支持在线烘焙

       1.支持场景烘焙功能和贴图烘焙功能,一键更新烘焙全场景的光照贴图

       2. 支持基于GPU硬件的快速烘焙技术和基于CPU的光线跟踪烘焙技术

       3.离线渲染技术与实时渲染技术友好结合,支持VRP中的所有灯光类型

       4.丰富的采样技术:均匀采样、随机采样、抖动采样、多重采样及Hammersly采样

       ï¼ˆ6)支持多人协作

       1.基于事件驱动的场景制作方式,支持时间优先、主机优先的抢占式通讯模式

       2.相机数据自动同步,场景状态同步,支持画中画相机

       3.场景数据自动统一,无需任何额外操作,各用户登陆场景后的画面均可一致

       4.支持自定义标准,可以在场景中任意添加一个标注信息,并在网络上进行实时同步

       ï¼ˆ7)支持硬件交互

       1. 支持基于微软Kinect for Windows的动态手势识别及静态姿势识别

       2. 支持数据手套datalove,可控制三维虚拟手在场景中抓取物体,并进行交互操作

       3.支持反馈数据手套CyberGlove、CyberTouch和CyberGrasp,具有真实触感和力反馈效果

       4.支持Patriot和Liberty跟踪器,精确捕捉人体的位置和动作,并在场景中控制虚拟手的运动

       5.支持头戴式显示器,让人有高沉浸感的立体视觉感受 中视典数字科技有限公司,年于深圳高新技术园区正式注册成立,是专注于虚拟现实、增强现实与3D互联网领域的软硬件研发与推广的专业机构,是国际领先的虚拟现实技术、增强现实技术解决方案供应商和相关服务提供商,是中国虚拟现实、增强现实领域的领军企业。

       ä¸­è§†å…¸æ•°å­—科技有限公司,立志做中国自己的图形图像专家,自成立之初,一直致力于中国自主知识产权虚拟现实仿真平台的开发和探索。研发出了中国第一个完全独立自主知识产权的虚拟现实三维互动仿真平台VR-Platform(简称VRP),一举打破了中国虚拟现实领域被国外软件垄断的局面。

       ä¸­è§†å…¸æ•°å­—科技有限公司,是最专业的虚拟现实硬件设备(如VR-Platform CAVE“洞穴式”虚拟现实显示系统 )提供商以及相关解决方案的集成商。

       ä¸­è§†å…¸æ•°å­—科技有限公司,提供的虚拟现实解决方案涉及虚拟旅游教学、机械仿真、数字展馆、军事仿真、工业仿真等众多领域,在自主产权虚拟现实软件VRP的基础上为客户量身打造最专业的个性化解决方案。

Android ViewRootImpl

       æœ¬æ–‡ä¸»è¦åˆ†æžä¸¤ä¸ªé—®é¢˜ï¼š

        1、为什么View 的绘制流程是从 ViewRootImpl 的performTraversals()方法开始的?

        2、View 的invalidate方法是怎么触发到ViewRootImpl 的performTraversals()方法的。

        在阅读本文前,最好先了解window的添加过程,Android消息处理机制 和 View 的绘制流程。推荐先阅读以下文章:

        Android Window和WindowManager

        Android-消息机制

        Android View 的绘制流程

       android 源码注释的意思是:ViewRootImpl是视图层次结构的顶部,实现 View 和 WindowManager 之间所需的协议。是 WindowManager Global 的内部实现中重要的组成部分。

        View 的绘制流程是从 ViewRootImpl 的performTraversals()方法开始的,那到底是哪里调用了performTraversals()方法呢,下面我们分析一下:

        1.私有属性的performTraversals()方法肯定是在内部调用起来的,经过搜索找到是doTraversal()方法调用了。

        2.接着找到了,调用了doTraversal() 的TraversalRunnable ç±»

        3.内部只有一个地方实例化了TraversalRunnable 的实例mTraversalRunnable ,查到到两个方法内都调用了mTraversalRunnable ,明显 scheduleTraversals 是主动触发这个 Runnable 。这就表明调用了scheduleTraversals ()函数的地方都主动触发了view的刷新。

        4.接着我们看一下 mChoreographer.postCallback 做了什么

        可以看到,最后后走进了scheduleVsyncLocked()方法内。

        5.mDisplayEventReceiver 的类 是 FrameDisplayEventReceiver,继承自

        DisplayEventReceiver 。

        最后走到这里就没了,那么这个方法是做了什么呢,这个方法的注释是这个意思:安排在下一个显示帧开始时传送单个垂直同步脉冲。意思就是,调用了这个方法可以收到系统传送过来的垂直同步脉冲信号。Android系统每隔ms就会发送一个VSYNC信号(VSYNC:vertical synchronization 垂直同步,帧同步),触发对UI进行渲染。这个垂直同步信对于应用来说了,只有了订阅了监听,才能收到。而且是订阅一次,收到一次。

        6.既然是在这个类里面订阅垂直同步信号的,那回调也应该在这里。于是找到了以下方法。

        native code 调用到 onVsync,这个方法的注释解释如下:当接收到垂直同步脉冲时调用。接收者应该渲染一个帧,然后调用 { @link scheduleVsync} 来安排下一个垂直同步脉冲。

        这个方法的具体实现在前面分析到的FrameDisplayEventReceiver 类里面。

        这里可以看到,其实mHandler就是当前主线程的handler,当接收到onVsync信号的时候,将自己封装到Message中,等到Looper处理,最后Looper处理消息的时候就会调用run方法,这里是Handler的机制,不做解释。

        7.最后,如下图调用所示,最终从mCallbackQueues取回之前添加的任务再执行run方法,也就是TraservalRunnable的run方法。

        总结上面的分析,调用流程如下图所示如下:

        上面我们分析到只要调用了ViewRootImpl 的scheduleTraversals ()方法,最终就能调用了ViewRootImpl 的performTraversals()来开始绘制。那肯定是我们常调用的view刷新的接口,经过一系列的方法调用,最终调用了ViewRootImpl 的scheduleTraversals ()方法。下面我们分析一下常用的View 的 invalidate()接口是怎么调用到了ViewRootImpl 的scheduleTraversals ()方法。

        可以看出,invalidate有多个重载方法,但最终都会调用invalidateInternal方法,在这个方法内部,进行了一系列的判断,判断View是否需要重绘,接着为该View设置标记位,然后把需要重绘的区域传递给父容器,即调用父容器的invalidateChild方法。

        接着我们看ViewGroup#invalidateChild:

        由于不断向上调用父容器的方法,到最后会调用到ViewRootImpl的invalidateChildInParent方法,我们来看看它的源码,ViewRootImpl#invalidateChildInParent:

        最后调用了scheduleTraversals方法,触发View的工作流程。至此,我们已经完整地分析了一次调用View 的 invalidate()方法到触发ViewRootImpl 的scheduleTraversals()方法。