Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

photon连接HTC vive设备问题 #3

Open
bln159 opened this issue Nov 7, 2024 · 5 comments
Open

photon连接HTC vive设备问题 #3

bln159 opened this issue Nov 7, 2024 · 5 comments

Comments

@bln159
Copy link

bln159 commented Nov 7, 2024

您好,我最近在使用这个openRDW框架,发现使用photon实现多人重定向的时候,A用户的HTC vive设备没办法看到B用户的HTC vive设备的移动,没办法同步,找了很久也没发现问题在哪,想询问一下您问题所在,非常感谢!

@yaoling1997
Copy link
Owner

您好,我最近在使用这个openRDW框架,发现使用photon实现多人重定向的时候,A用户的HTC vive设备没办法看到B用户的HTC vive设备的移动,没办法同步,找了很久也没发现问题在哪,想询问一下您问题所在,非常感谢!

您好,多人行走的网络设置具体可以参考wiki上的内容:https://github.com/yaoling1997/OpenRDW/wiki/Network-Setting。请问网络可以连接成功吗?因为数据传输需要通过photon那边的服务器,一般网络通信正常的话是可以进行多人重定向的。您也可以提供更具体一些的问题描述(文字或截图),以帮助更好地定位到出问题的地方。

@bln159
Copy link
Author

bln159 commented Nov 8, 2024

您好,非常感谢您的回复,我再具体描述一下我的问题,目前是让两个用户进入一个photon的服务器房间,在两个用户使用键盘控制移动的时候,同步是正常的,在两个客户端都可以正常观察到两个用户的移动,我认为我的网络应该是成功连接的,通信正常,但是两个用户都使用头显设备控制的时候,当前用户的客户端就观察不到另一个用户的移动,只能看到这个用户在原地踏步,两个客户端都是这样。如果一个用户使用键盘控制,另一个用户使用头显控制,键盘端的用户可以看到头显端的移动,但是头显端无法看到键盘端的用户的移动,不知道问题在哪,在使用HMD控制的时候,是否还需要其他的配置,期待您的回复!

@yaoling1997
Copy link
Owner

您好,非常感谢您的回复,我再具体描述一下我的问题,目前是让两个用户进入一个photon的服务器房间,在两个用户使用键盘控制移动的时候,同步是正常的,在两个客户端都可以正常观察到两个用户的移动,我认为我的网络应该是成功连接的,通信正常,但是两个用户都使用头显设备控制的时候,当前用户的客户端就观察不到另一个用户的移动,只能看到这个用户在原地踏步,两个客户端都是这样。如果一个用户使用键盘控制,另一个用户使用头显控制,键盘端的用户可以看到头显端的移动,但是头显端无法看到键盘端的用户的移动,不知道问题在哪,在使用HMD控制的时候,是否还需要其他的配置,期待您的回复!

不应该呀,NetworkManager.cs脚本的逻辑会根据globalConfiguration.movementController的选择自动判断是仿真控制人物的头还是hmd控制的头,你可以检查一下globalConfiguration.movementController是否设置为了HMD。如果不行的话,可以进一步检查NetworkManager中的thisAvatarNetworkingTransform对象的transform是否发生了正常的变化。thisAvatarNetworkingTransform对象在成功加入房间后会被生成,用于网络同步虚拟人的位姿。
1.jpg

@bln159
Copy link
Author

bln159 commented Nov 11, 2024

您好,非常感谢您的回复!我发现我的etworkManager中的thisAvatarNetworkingTransform对象的transform没有发生变化,想再确认一下thisAvatarNetworkingTransform是指本地的用户还是另一个用户的信息。我目前的配置如下:A用户:
(1)设置为HMD:
1
(2)Network Manager的Avatar Id设置为了0:
2
(3)Avatar Networking Transform Prefab中的AvatarNetworkingTransform设置为Avatar Id为0:
3
(4)Network Manager脚本改变了PhotonNetwork.NickName = "user1" :
4
(5)CameraRig是否需要开启:
5
(6)在这种状态下A用户的thisAvatarNetworkingTransform没有发生改变:
(另外发现在两个用户都是键盘模式的时候,这个thisAvatarNetworkingTransform也没有发生变化,但是两个客户端都是正常的,可以观察到对方的移动)
6
(7)debug信息输出的位置:
7

B用户的设置如下:
(1)设置为HMD:
d
(2)Network Manager的Avatar Id设置为了1:
b
(3)Avatar Networking Transform Prefab中的AvatarNetworkingTransform设置为Avatar Id为0:
a
(4)Network Manager脚本改变了PhotonNetwork.NickName = "user2" :
c
(5)在B用户视角下,A用户移动的时候只能看到有移动的动作,并没有发生移动,视频如下:

default.mp4

我不清楚我的设置是否正确,麻烦您帮我看看问题出现在哪里,非常感谢!!!

@yaoling1997
Copy link
Owner

能否查看一下Redirected Avatar->Simulated Avatar->Head对象的Transform是否和Virtual对象的实时对齐?

thisAvatarNetworkingTransform是一个网络对象,如果你是拿两个头显在不同电脑上进行测试的话,应该可以看到两个thisAvatarNetworkingTransform,一个是自己创建的,一个是远程客户端创建的。

是自己客户端创建的话,其作用就是用于将自己avatar的虚拟和真实空间下的transform信息传递给其它客户端(通过它下面的“Virtual”和“Real”对象)。如果本地客户端的用户行走和网络同步没问题,那么“Virtual”和“Real”对象的Transform信息会实时变化。从你的截图中,我看到本地的“Virtual”和“Real”对象的Transform应该是正常变化的。

thisAvatarNetworkingTransform上面挂载了AvatarInfoForNetworking.cs脚本,用于网络同步。对于接收数据的情况(thisAvatarNetworkingTransform是由对方客户端创建的),该脚本会调用SynchronizedByNet.cs脚本中的UpdateTransform函数,将接收到的virtual Transform信息传递给虚拟人头部位姿表示(即Redirected Avatar->Simulated Avatar->Head对象),而Redirected Avatar->Body会根据HeadFollower.cs脚本通过UpdateManually函数控制实际看到的虚拟人跟随Head对象运动。

对于为什么虚拟人有行走动画而实际上没有移动,可能是Redirected Avatar->Body->avatarRoot上挂载的AvatarAnimatorController.cs脚本,收到的速度不为0导致的(walkSpeed>0.1)。说明在你移动的时候,redirectionManager.currPos变量(记录head 当前Transform)应该是会发生变化。至于为什么看到的情况下没有移动,建议输出一下该变量的具体数值进行观察。

如果redirected avatar是表示远程用户在本地的可视化,则不需要开启其对应的CameraRig,CameraRig用于接收头显的控制,只需对本地用户启用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants