一种分布式系统及其渲染方法、客户机与流程

文档序号:19188274发布日期:2019-11-20 01:45阅读:159来源:国知局
一种分布式系统及其渲染方法、客户机与流程

本发明涉及全息投影领域,尤其涉及一种分布式系统及其渲染方法、客户机。



背景技术:

现有的沉浸式展示环境,不管是单屏包围式,还是多屏环绕式,都是采用一台主机,其上运行一个程序,这个程序根据投影屏幕的多少,创建相应数量的渲染窗口对各屏幕上投影的内容进行渲染。

传统的沉浸式展示环境所采用的系统架构,将所有的压力都集中在一台主机上,一台主机运行单个程序,单个程序启动多个渲染窗口是件很简单的事情,但多个窗口都以一个流畅的帧数进行画面渲染是非常困难的,因此,这种传统的系统架构只能满足对画质要求不高的渲染,特别是没有光线追踪的实时性要求。例如:多屏的渲染帧数能稳定在30帧/秒即可。

随着人们审美观的提高,对画质的要求也越来越高,传统的沉浸式展示环境所采用的系统架构已经无法再满足实际需求。



技术实现要素:

本发明的目的是提供一种分布式系统及其渲染方法、客户机,分摊了各客户机的渲染压力,能够实现对画面质量要求较高的沉浸式展示环境的渲染,大大提高了用户的使用体验。

本发明提供的技术方案如下:

一种分布式系统,包括:至少两台主机;担任服务器的主机通过网络让每台担任客户机的主机之间实现信息同步,且每台担任客户机的主机上连接有至少一台投影设备。

在上述技术方案中,通过多个客户机和服务器的连接架构,实现渲染压力的分摊,以实现对画面质量要求较高的沉浸式展示环境的渲染。

进一步,一台主机既担任所述服务器,又担任一台所述客户机。

在上述技术方案中,一台主机可同时承担服务器的功能和一台客户机的功能,可根据实际应用情况设置不同的主机(或者说终端设备)为服务器,提高分布式系统设置的灵活性。

进一步,所述服务器,用于接收各客户机发送的连接在所述客户机上的各投影设备的投影设备信息;以及,接收各所述投影设备信息对应的配置信息;以及,将各所述配置信息发送给对应的客户机;所述客户机,用于当接收到所述服务器发送的所述配置信息时,根据所述配置信息,启动渲染程序对相应的投影画面进行渲染。

在上述技术方案中,各投影设备的配置信息可由服务器派发,统一进行管理,保证了各投影设备渲染压力的合理分摊。

进一步,所述服务器,进一步用于保存并显示各所述投影设备信息;所述服务器,接收各所述投影设备信息对应的配置信息具体包括:所述服务器,接收用户根据显示的各所述投影设备信息设置的对应的配置信息。

在上述技术方案中,配置信息可由用户自行设置,满足不同实际情况的需求,适应性较好,提高了用户的使用体验。

进一步,所述客户机,根据所述配置信息,启动渲染程序对相应的投影画面进行渲染包括:所述客户机,获取所述配置信息对应的投影设备的分辨率;以及,根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;以及,根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

在上述技术方案中,窗口坐标、分辨率的获取,可保证投影画面的正确渲染。

进一步,当所述系统显示模式为非扩展模式(即只有一台显示设备)时,所述窗口坐标为初始坐标;当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

在上述技术方案中,公开了非扩展模式和扩展模式连接的投影设备获取窗口坐标的不同方式,保证了各投影设备渲染画面的正确性。

进一步,所述服务器,进一步用于当接收到一所述客户机发送的操作指令时,执行所述操作指令,得到所述操作指令对应的操作结果;以及,根据渲染需求,将相应的操作结果发送至相应的客户机进行同步;所述客户机,在渲染过程中,当接收到同步的所述操作结果时,根据同步的所述操作结果对投影画面进行渲染。

在上述技术方案中,服务器根据渲染需求同步各客户机上的操作结果,使各客户机上的投影设备渲染出来的投影画面一致性较好。

进一步,所述服务器,进一步用于获取用户的位置信息,并把所述位置信息发送给各所述客户机进行同步;所述客户机,在渲染过程中,当接收到所述位置信息时,根据上一次获取的位置信息和现在接收到的位置信息通过线性插值法进行插值,得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

在上述技术方案中,投影画面渲染时考虑了用户的位置信息,用户观看的内容会随着其位置的变化而变化,且投影画面变化时过渡流畅,大大提高了用户的观看体验。

本发明还提供一种客户机,应用于上述任一所述的分布式系统中,包括:发送模块,用于当与服务器通信连接建立后,将连接的各投影设备的投影设备信息发送给服务器;接收模块,用于接收所述服务器根据所述投影设备信息发送的配置信息;渲染模块,用于根据所述配置信息,启动相应的渲染程序对投影画面进行渲染。

进一步,所述接收模块,进一步用于获取所述配置信息对应的投影设备的分辨率;以及,根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;所述渲染模块,用于根据所述配置信息,启动渲染程序对相应的投影画面进行渲染具体包括:所述渲染模块,根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

进一步,当所述系统显示模式为非扩展模式时,所述窗口坐标为初始坐标;当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

进一步,所述发送模块,进一步用于当产生操作指令时,将所述操作指令发送至所述服务器。

进一步,还包括:所述接收模块,进一步用于接收到所述服务器同步的操作结果;所述渲染模块,进一步用于在渲染过程中,根据同步的所述操作结果对投影画面进行渲染。

进一步,所述渲染模块,进一步用于当接收到所述服务器发送的位置信息时,在渲染过程中,根据上一次获取的位置信息和现在接收到的位置信息通过插值法进行插值,得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

本发明还提供一种分布式系统的渲染方法,包括以下步骤:当与服务器通信连接建立后,将连接的各投影设备的投影设备信息发送给所述服务器;接收所述服务器根据所述投影设备信息发送的配置信息;根据所述配置信息,启动渲染程序对相应的投影画面进行渲染。

进一步,还包括以下步骤:获取所述配置信息对应的投影设备的分辨率;根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;所述的根据所述配置信息,启动渲染程序对相应的投影画面进行渲染包括以下步骤:根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

进一步,当所述系统显示模式为非扩展模式时,所述窗口坐标为初始坐标;当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

进一步,还包括以下步骤:当产生操作指令时,将所述操作指令发送至所述服务器。

进一步,还包括以下步骤:当接收到所述服务器同步的操作结果时,在渲染过程中,根据同步的所述操作结果对投影画面进行渲染。

进一步,还包括以下步骤:当接收到所述服务器发送的进行同步的位置信息时,在渲染过程中,根据上一次获取的位置信息和现在接收到的位置信息通过插值法进行线性插值,得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

与现有技术相比,本发明的分布式系统及其渲染方法、客户机有益效果在于:

本发明分布式系统的架构使各客户机的渲染压力被分摊,能够实现对画面质量要求较高的沉浸式展示环境的渲染,且渲染效果具有较好的稳定性和流畅性。分布式系统里担任客户机的主机数量也可根据实际需求灵活增减,组建方便、快捷,应用广泛。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对一种分布式系统及其渲染方法、客户机的上述特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明分布式系统一个实施例的结构示意图;

图2是本发明客户机一个实施例的结构示意图;

图3是本发明分布式系统的渲染方法一个实施例的流程图;

图4是本发明ui显示一个客户机的投影设备信息一个实施例的示意图;

图5是本发明一面投影屏幕上位于正面的一个实施例的投影效果图;

图6是图5中同一面投影屏幕上位于左面的投影效果图;

图7是图5中同一面投影屏幕上位于右面的投影效果图。

附图标号说明:

1.服务器,2.客户机,21.发送模块,22.接收模块,23.渲染模块,3.投影设备。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

本发明的沉浸式展示环境主要应用于家装展示,可根据需要采用相应数量的投影屏幕。例如:展示厨房的装修环境,可采用五个投影屏幕,分别为:上、下、左、右、前;展示客厅的一面很长的装饰墙的装修效果,可仅采用一面投影屏幕。

每面投影屏幕对应的投影设备的数量可根据画质的要求决定,例如:每面投影屏幕对应一台投影设备,或者,三面投影屏幕各自对应一台投影设备、第四面投影屏幕对应两台投影设备。

下述分布式系统其实现的逻辑业务可应用现有的引擎实现,包括但不限于虚幻引擎4。

主机,为支持支持各种应用程序的终端设备,例如:手机、平板电脑、计算机、专用终端等。

在本发明的一个实施例中,一种分布式系统,包括:至少两台主机;担任服务器1的主机通过网络让每台担任客户机2的主机之间实现信息同步,且每台担任客户机2的主机上连接有至少一台投影设备3。

图1示出了一种分布式系统的实施例,有一台服务器1和两台客户机2,两台客户机2都和服务器通过tcp/ip与服务器1通信连接,每台客户机2上都连接有两台投影设备3。

具体的,客户机和服务器连接在同一个网络中,实现各客户机和服务器的通信连接,通过服务器进行信息的转发,实现各客户机之间的信息同步。

投影设备相当于一个显示设备,其可以通过与客户机的显卡接口实现连接,例如:投影设备通过hdmi/vga接口与一客户机进行连接。当沉浸式环境是基于4k投影设备实现时,通过hdmi2.1以上的接口与客户机连接。若一客户机连接有多个投影设备,此客户机需要有相应数量的显卡接口供各投影设备连接。

例如:一台客户机连接有三台投影设备,此客户机上至少要设有三个hdmi接口,一台投影设备对应一个hdmi接口,将这三台投影设备连接到此客户机上。

每台客户机承担与其连接的各投影设备的渲染压力。上述例子中,这台客户机上连接有三台投影设备,此客户机就会开三个渲染程序,每个渲染程序负责对应的投影设备的画面渲染。

若预算有限的情况下,可以让几台投影设备共用一台客户机。优选地,每台投影设备连接一台客户机,可实现良好的渲染压力的分散。

若有四个投影屏幕,每个投影屏幕对应一台投影设备,以此应用场景进行本发明的系统与传统的系统之间的对比举例:

传统的沉浸式展示环境所采用的系统架构,会将这四台投影设备都连接到同一个主机(相当于本发明的一台客户机)上,由这个主机运行一个渲染程序,开启四个渲染窗口(每个渲染窗口对应一台投影设备)进行画面的渲染,也就是说,所有的渲染压力都集中在这台主机上。

而本发明的分布式系统,可采用多台客户机(相当于引入了多台主机),将这四台投影设备连接至这些客户机上,每台客户机只负责连接在其上的投影设备对应的画面的渲染,也就是说,这四台投影设备对应的画面渲染的压力会被分摊到各个客户机上。若预算足够,可直接采用四台客户机,每台客户机连接一台投影设备,这种连接方式使每台客户机只需要负责一台投影设备的渲染压力即可,和传统的一台主机承担四台投影设备的渲染压力相比,大大降低了客户机的渲染压力,从而可实现更高要求的画面渲染。当然,若预算有限,也可采用三台客户机,其中一台客户机连接两台投影设备,另外两台客户机分别连接一台投影设备;或者两台客户机,每台客户机连接两台投影设备,相比于传统的系统架构,都降低了客户机的渲染压力。

作为一种实施方式,可采用一台专用服务器(dedicatedserver)实现与各客户机的网络通信连接。

作为另一种实施方式,若应用于家装展示,其并不像游戏一样需要有大量的数据交互,可以不采用专用服务器,性价比较高的方式是采用listen服务器(listenserver),即增加相应的参数指定主机启动的是服务器客户端还是客户机的客户端。

例如:采用虚幻引擎4,指定各主机(例如:计算机、手机、平板电脑等终端设备)以listen模式启动客户端,若主机上设置的是客户机参数的客户端,则其启动后就相当于客户机;若主机上设置的是服务器参数的客户端,则其启动后就相当于一个服务器;若同一台主机上设置的客户端中既包含了客户机参数、又包含有服务器参数,启动这个客户端后,既执行服务器的功能,又执行客户机的功能。

需要注意的是,前述所说的渲染程序是具有客户机参数的客户端上执行与渲染相关业务逻辑的功能程序。

例子如下:

若有三台投影设备a、b、c和三台主机a’、b’、c’,摄影设备a连接至主机a’,摄影设备b连接至主机b’,摄影设备c连接至主机c’,主机b’和主机c’上设置的是客户机参数的客户端,两者启动后都执行客户机应该执行的业务逻辑,而主机a’上设置了(既有客户机参数、又有服务器参数)的listen参数的客户端,主机a’执行了这个客户端后,其既相当于一台服务器,又相当于一台客户机。

在实际应用时,为了让用户更好地观看沉浸式展示环境,可提供人机交互。例如:用户可通过交互打开展示的柜子、更换某一装饰物等。具体的实现方式有多种,例如:使客户机具有与用户交互的功能,或者,让服务器实现人机交互的功能等。

例如:投影屏幕为两面,分别为正面和左面,采用了三台投影设备,其中第一、二台投影设备负责正面的投影,第三台投影设备负责左面的投影,第一、二台投影设备连接到第一台客户机,第三台投影设备连接到第二台客户机,用户的手机作为服务器,与第一台客户机和第二台客户机通信连接。用户可通过在手机上操作,根据渲染需求,让手机将操作指令对应的操作结果在适当时候同步给第一台客户机和第二台客户机。当然,若第一台客户机和第二台客户也具有交互功能的话,也可由产生操作指令的客户机发送给作为服务器的手机,由手机执行操作指令后,根据各客户机的渲染需求,在适当时候将此操作指令对应的操作结果同步给另一台客户机。

在上述实施例中,分布式系统的架构使各客户机的渲染压力被分摊,既能实现多个屏幕同步运行一个场景的投影,又能应用于对画面质量要求较高的沉浸式展示环境的渲染,且渲染效果具有较好的稳定性和流畅性。分布式系统里客户机的数量也可根据实际需求灵活增减,组建方便、快捷,应用广泛。

基于应用于家装展示领域,数据相比于游戏来说较简单,可采用listenserver的方式组建分布式系统,成本低廉,且可根据需求灵活设置不同终端设备为服务器,具有较高的适应性。

基于上述分布式系统实施例的改进,除与上述相同的之外,还包括:服务器1,用于接收各客户机发送的连接在所述客户机上的各投影设备的投影设备信息;以及,接收各所述投影设备信息对应的配置信息;以及,将各所述配置信息发送给对应的客户机。

具体的,服务器1和客户机2之间可在建立长连接后,进行信息交互。两者可采用socket协议中的tcp连接、web-socket协议等协议进行长连接。一旦客户机2与服务器1连接成功,客户机2会自动将连接在其上的各投影设备的投影设备信息推送给服务器1。

例如:有两台客户机和一台服务器,第一台客户机上连接有一台投影设备a,第二台客户机上连接有两台投影设备b、c,当这两台客户机都与此台服务器建立长连接后,第一台客户机就把投影设备a的投影设备信息发送给服务器,第二台客户机就把投影设备b和投影设备c的投影设备信息发送服务器,从而让服务器接收到这三台投影设备的投影设备信息。

投影设备信息包括但不限于:投影设备的分辨率、投影设备与客户机的系统显示模式、投影设备的名称、投影设备的编号等。

作为一种实施方式,服务器在接收到各投影设备的投影设备信息后,可通过默认设置得到各投影设备信息对应的配置信息。

具体的,配置信息包括:负责投影的投影屏幕。

例如:服务器接收到了两个投影设备信息,默认设置为第一个投影设备信息的配置信息为投正面,第二个投影设备信息的配置信息为投右面。

若一个投影屏幕由几个投影设备负责,例子如下:正面的投影屏幕由两个投影设备负责,第一个投影设备信息的配置信息为投正面的左侧,第二个投影设备信息的配置信息为投正面的右侧。

作为另一种实施方式,服务器1,进一步用于保存并显示各所述投影设备信息;服务器1,接收各所述投影设备信息对应的配置信息具体包括:服务器1,接收用户根据显示的各所述投影设备信息设置的对应的配置信息。

具体的,服务器在接收到各客户机反馈的投影设备信息后,其可保存这些投影设备信息,并将保存的投影设备信息通过用户界面(userinterface,ui)反馈给操作用户,用户可对每个投影设备信息对应的投影设备进行配置信息的设置,从而让各客户机启动相应的渲染程序对投影画面进行渲染。

如图4所示,为服务器接收到的一台客户机发送的连接在此客户机上的两台投影设备的投影设备信息,并通过ui显示出来,用户设置第一个投影设备信息对应的配置信息为投正面,第二投影设备对应的配置信息为投左面。

当各投影设备信息都有其对应的配置信息后,会将各配置信息发送给对应的客户机,让其执行后续的操作。

例如:第一个投影设备信息对应的配置信息为投正面,第二个投影设备信息对应的配置信息为投左面,两个投影设备信息对应的投影设备都连接在同一个客户机上,服务器就将这两个配置信息发送给此客户机,让此客户机了解第一个投影设备信息对应的投影设备投正面,第二个投影设备信息对应的投影设备投左面。

客户机2,用于当接收到所述服务器发送的所述配置信息时,根据所述配置信息,启动渲染程序对相应的投影画面进行渲染。

具体的,各客户机根据服务器发送的配置信息,设置相应的参数运行渲染程序,承担相应投影画面的渲染。

例如:若一台客户机连了两台投影设备(分别为1号和2号),分别投正面和左面,那么当服务器将开启指令(开启指令的形式不作限定,可随着配置信息一起发送给客户机,也可直接将配置信息参杂在开启指令中)传到这台客户机的时候,会分别在对应的投影设备id处附带一个数据(即配置信息,1号摄影机的为front参数),当需要在1号投影机启动正面画面的时候,渲染程序会在启动时得到一个front参数,从而激活前向的虚拟摄像机,对正面画面进行渲染;同理,负责投影左面的客户机会通过left参数,激活相应的左面虚拟摄像机。同样地,此时如果另有一个客户机连了一台投影机需要投右面,那么服务器在通知它开启渲染程序的时候,会传给他带有right参数的配置信息。

需要注意的是,在实际使用时,当客户机接到一投影设备的配置信息后,其运行安装的客户端,设置此配置信息对应的启动参数(例如:front参数、窗口坐标等)调用渲染程序,激活相应位置的虚拟摄像机,从而实现对此位置的画面渲染。因此,配置信息不同,虽然调用同一个渲染程序,但设置的启动参数不同,可实现不同位置画面的渲染。当一台客户机上有多台投影设备时,会采用各自的配置信息调用渲染程序对不同的投影画面进行渲染,相当于游戏客户端不同账号的多开。

可选地,客户机2,根据所述配置信息,启动渲染程序对相应的投影画面进行渲染包括:

客户机2,获取所述配置信息对应的投影设备的分辨率;以及,根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;以及,根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

获取窗口坐标是为了确定投影设备渲染的投影画面的边框信息,即边框信息的左(left)、右(right)、上(top)、下(bottom)的信息,从而保证渲染后投影出来的画面位置正确,没有偏移、且大小正确。

例如:若投影设备的分辨率为2560x1440,知道左上点的坐标为(left=0,top=0),则可推算出左下点的坐标为(0,1440),右下点的坐标为(2560,1440),右上点的坐标为(2560,0)。

因此,窗口坐标直接获取任意一个边角点的坐标即可,为描述方便,本实施例中的窗口坐标选择为左上角的坐标。

可选地,当所述系统显示模式为非扩展模式(这里的非扩展模式理解为,一台客户机上仅连接了一台投影设备,那此台投影设备与客户机的系统显示模式就是非扩展模式)时,所述窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

具体的,窗口坐标为初始坐标,为方便计算,可将初始坐标设为(0,0)。

若一台客户机上连接有多台投影设备,这些投影设备都是以扩展模式与客户机连接,其中只有一台投影设备是客户机的主显示设备,其他投影设备都是客户机的非主显示设备,在客户机的操作系统中,各非主显示设备与主显示设备会有位置关系,例如:一非主显示设备位于主显示设备的左面、上面或右面(软件层面的方位)等。以扩展模式连接的投影设备的窗口坐标需要根据其与作为主显示设备的投影设备之间的位置关系和各投影设备的分辨率决定。

例如:两台投影设备连接在同一台客户机上,第一台投影设备(分辨率为1920x1080)与客户机的系统显示模式为扩展模式,为主显示设备,其配置信息为投正面的右侧,第二台投影设备与客户的系统显示模式为扩展模式,为非主显示设备,在客户机的系统设置中其位于主显示设备的左面,其配置信息为投正面的左侧,则第一台投影设备对应的窗口坐标为(0,0),第二投影设备对应的窗口坐标适应性的变为(-1920,0)。

再比如:两台投影设备连接在同一台客户机上,第一台投影设备(分辨率为1920x1080)与客户机的系统显示模式为扩展模式,其配置信息为投正面,其为主显示设备,第二台投影设备与客户的系统显示模式为扩展模式,其配置信息为投右面,其位于主显示设备的右面,则第一台投影设备对应的窗口坐标为(0,0),第二投影设备对应的窗口坐标适应性的变为(1920,0)。

根据系统显示模式确定各投影设备的窗口坐标,保证了各投影设备对应的投影画面的正确渲染,使投影出来的画面能够和谐拼接,在沉浸式展示环境中用户可以得到更好的观看效果。

例如:如图5-7所示,通过三个投影设备投影同一面投影屏幕,它们的分辨率都为2560x1440,若这三个投影设备都连接在同一个客户机上,图5对应的投影设备a为主显示设备,图6对应的投影设备b和图7对应的投影设备c都为非主显示设备,投影设备b对应的位置信息在操作系统中位于主显示设备的左边,投影设备b对应的位置信息在操作系统中位于主显示设备的右边,投影设备a对应的窗口坐标为(0,0),投影设备b对应的窗口坐标为(-2560,0),投影设备c对应的窗口坐标为(2560,0)。

当然,操作系统中各投影设备的位置关系也可以为:投影设备b作为主显示设备,投影设备a位于投影设备b的右边,投影设备c位于投影设备a的右边;投影设备b对应的窗口坐标为(0,0),投影设备a对应的窗口坐标为(2560,0),投影设备c对应的窗口坐标为(5120,0)。

可选地,本实施例的分布式系统,服务器1,进一步用于当接收到一所述客户机发送的操作指令时,执行所述操作指令,得到所述操作指令对应的操作结果;以及,根据渲染需求,将相应的操作结果发送至相应的客户机进行同步;客户机2,在渲染过程中,当接收到同步的所述操作指令时,根据同步的各所述操作指令对投影画面进行渲染。

具体的,任意一个客户机上产生了用户的操作指令时,其会把操作指令发送至服务器,由服务器处理此操作指令,得到相应的操作结果后,根据各客户机的渲染需求,在适当的时机发送至其他客户机进行同步,渲染时各客户机会根据同步的操作结果进行投影画面的渲染。例如:服务器为用户手中拿的平板电脑,两个客户机,客户机a连接一台投影设备a’,负责投影正面,客户机b连接另一台投影设备b’,负责投影左面,当用户打开了正面投影屏幕上最左侧柜子的门时,此就是一个操作指令,客户机a根据用户的操作产生相应的操作指令后,将其发送至服务器,服务器将此操作指令执行后,将对应的操作结果保存,当发现客户机b要渲染的画面涉及到此操作结果时,将此操作结果发送给客户机b同步,客户机b也会知道正面的最左侧柜子的门被打开,渲染的投影画面在涉及到这个柜子时,也会把其渲染成打开的样子。

需要注意的是,同步操作结果更本质上是让负责不同投影画面而调用的渲染程序之间的同步。

例如:同一台客户机上,有两台投影设备,其中1号投影设备对应的投影画面是以配置信息为投左面、窗口坐标(0,0)、自己的分辨率为2560x1440调用的渲染程序对其需要投影的左面的投影画面进行渲染;2号投影设备对应的投影画面是以配置信息为投正面、窗口坐标(2560,0)、自己的分辨率为2560x1440调用的渲染程序对其需要投影的正面的投影画面进行渲染。当左面的一个柜子被打开时,此客户机会把此操作指令发送给服务器,服务器会把对应的操作结果,即左面的一个柜子是打开状态在适当时机发送给各客户机上,渲染正面的投影画面的渲染程序也会同步这个操作结果,保证画面的渲染同步。

操作指令的获取方式可采用现有技术实现,具体的方式不作限定。例如:用户在客户机a上输入操作指令。再比如,通过传感器检测用户的动作,自动识别操作指令。

作为另一种实施方式,用户可在服务器上输入操作指令,由服务器将操作指令对应的操作结果同步给所有的客户机。

例如:若服务器设置在用户可接触的地方,用户可通过服务器上的交互界面输入操作指令,由其执行后,将对应的操作结果同步至所有的客户机。

将各操作指令对应的操作结果在所有的客户机上同步,可保证各客户机上渲染出来的投影画面相同装饰物在各个角度的状态保持一致,让用户具有更好的观察效果。例如:一个柜子如果是打开的,正面投影出来的是打开的状态,侧面若涉及到这个柜子也是打开的状态。

在一个实施例中,客户机在渲染投影画面时,还会考虑用户站在沉浸式展示环境的相对位置,也可以理解为用户的位置信息,保证渲染出来的各投影画面符合实际场景中用户站在该位置看到的画面。

例如:实际场景中,若用户站在一台电视机的正前方,其看到的就是这台电视机的正面,侧面几乎看不到;若用户站到电视机的偏左侧,其看到的是这台电视机的左面、一部分正面。

同理,在渲染投影画面的过程中,考虑用户的位置信息,可使渲染并投影出来的画面更符合用户的视角,观看效果更好。

可选地,服务器1,进一步用于获取用户的位置信息,并把所述位置信息发送给各所述客户机进行同步;

所述客户机2,在渲染过程中,当接收到所述位置信息时,根据上一次获取的位置信息和现在接收到的位置信息通过插值法进行插值(优选地,进行线性插值,画面过度效果更好),得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

具体的,服务器可通过一定频率获取用户的位置信息,获取到后就发送给各客户机进行同步,让其在渲染过程中考虑用户的位置信息,使投影出来的画面更符合实际情况。

考虑到数据在网络中的传输速度,为了保证投影画面的平滑过度,各客户机需要在获取的先后两个位置信息之间进行必要的插值。需要注意的是,用户的位置信息是根据实际沉浸式展示环境建立的二维坐标表示,即用户在实际沉浸式展示环境中站立的位置。

例如:若位置信息的同步速度为2次/秒,每台客户机的渲染速度为60帧/秒,若在一秒内第一次同步的位置信息的坐标为(0,0),第二次同步的位置信息的坐标为(20,30),若客户机在一秒内不做插值处理的话,其一秒内只会渲染这两个位置看到的各方位的投影画面,即用户位于坐标为(0,0)时看到的投影画面和用户位于坐标为(20,30)时看到的投影画面,看到的是两个投影画面的直接跳转,转换较生硬,观察效果不好。

若在先后获取的两个位置信息之间进行必要的插值,得到若干个插值位置信息,并挨个进行投影画面的渲染,使投影时画面过渡更平滑、流畅,提高用户的观赏效果。

例如:若在一秒内第一次同步的位置信息的坐标为(0,0),第二次同步的位置信息的坐标为(20,30),两个之间进行插值,得到十九个插值位置信息(1,1.5)、(2,3)……若位于位置信息(0,0)对应的投影画面已经渲染好,则依次渲染位于坐标(1,1.5)、(2,3)……(20,30)的投影画面,逐个投影出来。

需要注意的是,具体的插值过程根据实际选用的插值法决定,在此不作限制。

本实施例中,各客户机可通过服务器进行信息的同步,使各客户机渲染的画面一致性较好,保证了良好的观看效果。

另外,可根据用户站立的不同位置进行投影画面的渲染,使用户可以不同位置看到不同角度的投影画面;且在位置变换时,可进行插值处理,使投影出来的画面过渡更平滑、流畅,进一步提高了用户的观看体验。

图2示出了本发明一种客户机2的实施例,包括:发送模块21,用于当与服务器通信连接建立后,将连接的各投影设备的投影设备信息发送给服务器。

具体的,服务器和客户机2之间可建立长连接后,进行信息交互。两者可采用socket协议中的tcp连接、web-socket协议等协议进行长连接。一旦客户机2与服务器连接成功,客户机2会自动将连接在其上的各投影设备的投影设备信息推送给服务器。

投影设备信息包括但不限于:投影设备的分辨率、投影设备与客户机的系统显示模式、投影设备的名称、投影设备的编号等。

接收模块22,用于接收所述服务器根据所述投影设备信息发送的配置信息。

渲染模块23,用于根据所述配置信息,启动渲染程序对相应的投影画面进行渲染。

具体的,配置信息包括:负责投影的投影屏幕。各客户机根据服务器发送的配置信息,以不同参数运行渲染程序,承担相应投影画面的渲染。

可选地,接收模块22,进一步用于获取所述配置信息对应的投影设备的分辨率;以及,根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;以及,

渲染模块23,根据所述配置信息,启动渲染程序对相应的投影画面进行渲染包括:渲染模块23,根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

具体的,获取配置信息对应的投影设备的分辨率是为了确定一个投影画面具体渲染的点的个数。

获取窗口坐标是为了确定投影设备渲染的投影画面的边框信息,即边框信息的左(left)、右(right)、上(top)、下(bottom)的信息,从而保证渲染后投影出来的画面位置正确,没有偏移、且大小正确。

具体的例子可参见分布式系统的第二个实施例,在此不再赘述。

因此,窗口坐标直接获取任意一个边角点的坐标即可,为描述方便,本实施例中的窗口坐标选择为左上角的坐标。

可选地,当所述系统显示模式为非扩展模式(这里的非扩展模式理解为,一台客户机上仅连接了一台投影设备,那此台投影设备与客户机的系统显示模式就是非扩展模式)时,所述窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

具体的,窗口坐标为初始坐标,为方便计算,可将初始坐标设为(0,0)。

若一台客户机上连接有多台投影设备,这些投影设备都是以扩展模式与客户机连接,其中只有一台投影设备是客户机的主显示设备,其他投影设备都是客户机的非主显示设备,在客户机的操作系统中,各非主显示设备与主显示设备会有位置关系,例如:一非主显示设备位于主显示设备的左面、上面或右面等。以扩展模式连接的投影设备的窗口坐标需要根据其与作为主显示设备的投影设备之间的位置关系和各投影设备的分辨率决定。具体的例子可参见分布式系统的第二个实施例,在此不再赘述。

根据系统显示模式确定各投影设备的窗口坐标,保证了各投影设备对应的投影画面的正确渲染,使投影出来的画面能够和谐拼接,在沉浸式展示环境中用户可以得到更好的观看效果。

可选地,发送模块21,进一步用于当产生操作指令时,将所述操作指令发送至所述服务器。

接收模块22,进一步用于接收到所述服务器同步的操作结果;渲染模块23,进一步用于在渲染过程中,根据同步的所述操作结果对投影画面进行渲染。

具体的,任意一个客户机上产生了用户的操作指令时,其会把操作指令发送至服务器,由服务器处理此操作指令,得到相应的操作结果后,根据各客户机的渲染需求,在适当的时机发送至其他客户机进行同步,渲染时各客户机根据同步的操作结果进行投影画面的渲染。

例如:服务器为用户手中拿的平板电脑,两个客户机,客户机a连接一台投影设备a’,负责投影正面,客户机b连接另一台投影设备b’,负责投影左面,当用户打开了正面投影屏幕上最左侧柜子的门时,此就是一个操作指令,客户机a根据用户的操作产生相应的操作指令后,将其发送至服务器,服务器将此操作指令执行后,将对应的操作结果保存,当发现客户机b要渲染的画面涉及到此操作结果时,将此操作结果发送给客户机b同步,客户机b也会知道正面的最左侧柜子的门被打开,渲染的投影画面在涉及到这个柜子时,也会把其渲染成打开的样子。

需要注意的是,同步操作结果更本质上是让负责不同投影画面而调用的渲染程序之间的同步。

操作指令的获取方式可采用现有技术实现,具体的方式不作限定。例如:用户在客户机a上输入操作指令。再比如,通过传感器检测用户的动作,自动识别操作指令。

将各操作指令对应的操作结果在所有的客户机上同步,可保证各客户机上渲染出来的投影画面相同装饰物在各个角度的状态保持一致,让用户具有更好的、一致性的观察效果。例如:一个柜子如果是打开的,正面投影出来的是打开的状态,侧面若涉及到这个柜子也是打开的状态。

在另一个实施例中,除与本实施例相同的之外,客户机在渲染投影画面时,还会考虑用户站在沉浸式展示环境的相对位置,也可以理解为用户的位置信息,保证渲染出来的各投影画面符合实际场景中用户站在该位置看到的画面。

例如:实际场景中,若用户站在一台电视机的正前方,其看到的就是这台电视机的正面,侧面几乎看不到;若用户站到电视机的偏左侧,其看到的是这台电视机的左面、一部分正面。

同理,在渲染投影画面的过程中,考虑用户的位置信息,可使渲染并投影出来的画面更符合用户的视角,观看效果更好。

可选地,渲染模块23,进一步用于当接收到所述服务器发送的位置信息时,在渲染过程中,根据上一次获取的位置信息和现在接收到的位置信息通过插值法进行插值(优选地,进行线性插值,画面过度效果更好),得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

具体的,服务器可通过一定频率获取用户的位置信息,获取到后就发送给各客户机进行同步,让其在渲染过程中考虑用户的位置信息,使投影出来的画面更符合实际情况。

考虑到数据在网络中的传输速度,为了保证投影画面的平滑过度,各客户机需要在获取的先后两个位置信息之间进行必要的插值。需要注意的是,用户的位置信息是根据实际沉浸式展示环境建立的二维坐标表示,即用户在实际沉浸式展示环境中站立的位置。

若在先后获取的两个位置信息之间进行必要的插值,得到若干个插值位置信息,并挨个进行投影画面的渲染,使投影时画面过渡更平滑、流畅,提高用户的观赏效果。

需要注意的是,具体的插值过程根据实际选用的插值法决定,在此不作限制。另外,具体的例子请参见分布式系统的第二个实施例,在本实施例中不作赘述。

本实施例中,各客户机可通过服务器进行信息的同步,使各客户机渲染的画面一致性较好,保证了良好的观看效果。

另外,可根据用户站立的不同位置进行投影画面的渲染,使用户可以不同位置看到不同角度的投影画面;且在位置变换时,可进行插值处理,使投影出来的画面过渡更平滑、流畅,进一步提高了用户的观看体验。

图3示出了本发明的一个分布式系统的渲染方法的流程图,应用于客户机,包括以下步骤:

s301当与服务器通信连接建立后,将连接的各投影设备的投影设备信息发送给所述服务器。

具体的,服务器和客户机2之间可建立长连接后,进行信息交互。两者可采用socket协议中的tcp连接、web-socket协议等协议进行长连接。一旦客户机2与服务器连接成功,客户机2会自动将连接在其上的各投影设备的投影设备信息推送给服务器。

投影设备信息包括但不限于:投影设备的分辨率、投影设备与客户机的系统显示模式、投影设备的名称、投影设备的编号等。

s302接收所述服务器根据所述投影设备信息发送的配置信息;

s303根据所述配置信息,启动渲染程序对相应的投影画面进行渲染。

具体的,配置信息包括:负责投影的投影屏幕。各客户机根据服务器发送的配置信息,以不同参数运行的渲染程序,承担相应投影画面的渲染。

可选地,分布式系统的渲染方法还包括以下步骤:

s304获取所述配置信息对应的投影设备的分辨率;

s305根据所述配置信息对应的投影设备与所述客户机的系统显示模式,获取窗口坐标;

步骤s303中根据所述配置信息,启动相应的渲染程序对投影画面进行渲染包括以下步骤:

s313根据所述配置信息、所述分辨率和所述窗口坐标,启动渲染程序对相应的投影画面进行渲染。

具体的,获取配置信息对应的投影设备的分辨率是为了确定一个投影画面具体渲染的点的个数。

获取窗口坐标是为了确定投影设备渲染的投影画面的边框信息,即边框信息的左(left)、右(right)、上(top)、下(bottom)的信息,从而保证渲染后投影出来的画面正确,没有偏移、且大小正确。

具体的例子可参见分布式系统的第二个实施例,在此不再赘述。

因此,窗口坐标直接获取任意一个边角点的坐标即可,为描述方便,本实施例中的窗口坐标选择为左上角的坐标。

可选地,当所述系统显示模式为非扩展模式(这里的非扩展模式理解为,一台客户机上仅连接了一台投影设备,那此台投影设备与客户机的系统显示模式就是非扩展模式)时,所述窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为主显示设备时,所述配置信息对应的投影设备的窗口坐标为初始坐标;

当所述系统显示模式为扩展模式、所述配置信息对应的投影设备为非主显示设备时,根据所述非主显示设备与主显示设备之间的位置关系和各所述投影设备的分辨率,决定所述配置信息对应的投影设备的所述窗口坐标。

具体的,窗口坐标为初始坐标,为方便计算,可将初始坐标设为(0,0)。

若一台客户机上连接有多台投影设备,这些投影设备都是以扩展模式与客户机连接,其中只有一台投影设备是客户机的主显示设备,其他投影设备都是此客户机的非主显示设备,在客户机的操作系统中,各非主显示设备与主显示设备会有位置关系,例如:一非主显示设备位于主显示设备的左面、上面或右面等。以扩展模式连接的投影设备的窗口坐标需要根据其与作为主显示设备的投影设备之间的位置关系和各投影设备的分辨率决定。具体的例子可参见分布式系统的第二个实施例,在此不再赘述。

根据系统显示模式确定各投影设备的窗口坐标,保证了各投影设备对应的投影画面的正确渲染,使投影出来的画面能够和谐拼接,在沉浸式展示环境中用户可以得到更好的观看效果。

可选地,分布式系统的渲染方法还包括以下步骤:

当产生操作指令时,将所述操作指令发送至所述服务器。

当接收到所述服务器同步的操作结果时,在渲染过程中,根据同步的所述操作结果对投影画面进行渲染。

具体的,任意一个客户机上产生了用户的操作指令时,其会把操作指令发送至服务器,由服务器处理此操作指令,得到相应的操作结果后,根据各客户机的渲染需求,在适当的时机发送至其他客户机进行同步,渲染时各客户机根据同步的操作结果进行投影画面的渲染。

操作指令的获取方式可采用现有技术实现,具体的方式不作限定。例如:用户在客户机a上输入操作指令。再比如,通过传感器检测用户的动作,自动识别操作指令。

将各操作指令对应的操作结果在所有的客户机上同步,可保证各客户机上渲染出来的投影画面相同装饰物在各个角度的状态保持一致,让用户具有更好的、一致性的观察效果。例如:一个柜子如果是打开的,正面投影出来的是打开的状态,侧面若涉及到这个柜子也是打开的状态。

在另一个实施例中,除与本实施例相同的之外,客户机在渲染投影画面时,还会考虑用户站在沉浸式展示环境的相对位置,也可以理解为用户的位置信息,保证渲染出来的各投影画面符合实际场景中用户站在该位置看到的画面。

例如:实际场景中,若用户站在一台电视机的正前方,其看到的就是这台电视机的正面,侧面几乎看不到;若用户站到电视机的偏左侧,其看到的是这台电视机的左面、一部分正面。

同理,在渲染投影画面的过程中,考虑用户的位置信息,可使渲染并投影出来的画面更符合用户的视角,观看效果更好。

可选地,分布式系统的渲染方法还包括以下步骤:

当接收到所述服务器发送的进行同步的位置信息时,在渲染过程中,根据上一次获取的位置信息和现在接收到的位置信息通过插值法进行插值(优选地,进行线性插值,画面过度效果更好),得到多个插值位置信息,分别渲染每个所述插值位置信息和现在接收到的位置信息对应的投影画面。

具体的,服务器可通过一定频率获取用户的位置信息,获取到后就发送给各客户机进行同步,让其在渲染过程中考虑用户的位置信息,使投影出来的画面更符合实际情况。

考虑到数据在网络中的传输速度,为了保证投影画面的平滑过度,各客户机需要在获取的先后两个位置信息之间进行必要的插值。需要注意的是,用户的位置信息是根据实际沉浸式展示环境建立的二维坐标表示,即用户在实际沉浸式展示环境中站立的位置。

若在先后获取的两个位置信息之间进行必要的插值,得到若干个插值位置信息,并挨个进行投影画面的渲染,使投影时画面过渡更平滑、流畅,提高用户的观赏效果。

需要注意的是,具体的插值过程根据实际选用的插值法决定,在此不作限制。另外,具体的例子请参见分布式系统的第二个实施例,在本实施例中不作赘述。

本实施例中,各客户机可通过服务器进行信息的同步,使各客户机渲染的画面一致性较好,保证了良好的观看效果。

另外,可根据用户站立的不同位置进行投影画面的渲染,使用户可以不同位置看到不同角度的投影画面;且在位置变换时,可进行插值处理,使投影出来的画面过渡更平滑、流畅,进一步提高了用户的观看体验。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1