中文
resource-icon
SSRDeviceMotion v1.0.0
类别
源码
作者
supersuraccoon
Creator版本要求
v3.1.1
支持平台
AndroidiOSHTML5
评分
售价
¥ 6.66 (个人)

介绍

0x01 About / 关于

SSRDeviceMotion 是一个简单的演示程序,它所包含的 设备体感控制 方案主要内容是:

  1. 使用移动设备 (目前版本只支持 iPhone 设备) 作为 遥控器
  2. 遥控器 采集体感数据 ( 基于 CoreMotion ) 发送至服务端
  3. 服务端将收到体感数据,发送至网页 即 设备端
  4. 设备端实际使用发来的数据,进行业务逻辑处理
  5. 演示程序中,使用数据对一个 iPhone 模型,进行模型旋转的同步演示

Attention / 注意

  • 当前版本,只支持 Creator v3.1.1 及以上版本,不支持 Creator v2.x 版本 (这是个 3D 应用项目)
  • 当前版本,只包含 iPhone 作为控制器的实现方案,Android 暂时不支持,具体情况请阅读后面的章节,或者直接加 QQ: 453951749 询问

0x02 Contents && 内容说明

下面,针对本项目包含的几个文件夹,进行一下说明。

MotionServer

服务器,负责 控制器设备 之间传输数据用,使用 WebSocket 进行数据传输。

MotionDevice

虚拟设备,通过 WebSocket 接收 控制器 经由 服务器 传来的数据,模拟 (同步) 控制器 的运动。

MotionController

控制器,就是我们的手机,通过 服务器 将运动数据传输给 虚拟设备,达到控制 虚拟设备 运动的目的。

MotionNative

这个文件夹中存放的是对引擎的一些修改,因为原引擎在底层对 iOSMotionCore 的一些值并没有上传至脚本层。

Android / 安卓平台对应修改 ( .java )

// 3d/engine-native/cocos/platform/android/java/src/com/cocos/lib/CocosSensorHandler.java

主要参考文档:

[SensorManager#getQuaternionFromVector](https://developer.android.com/reference/android/hardware/SensorManager#getQuaternionFromVector(float[], float[]))

注意

目前安卓回传到 虚拟设备 的数据是使用标准接口 getQuaternionFromVector 获取到的值。但是在 虚拟设备 端,想要和 iOS 一样同步 控制器 的动作,还存在问题,因此目前程序在 Android 设备上运行会存在问题。

iOS / 苹果平台对应修改 ( .mm )

// 3d/engine-native/cocos/platform/Device.h
// 3d/engine-native/cocos/platform/ios/Device-ios.mm

Binding / 绑定层对应修改

// 3d/engine-native/cocos/bindings/manual/jsb_cocos_manual.cpp

具体修改点,请参照 SSRDeviceMotion/MotionNative/README.md

0x03 Test Case && 测试用例

目前测试过的平台,设备,相关信息。

引擎版本

Creator v3.1.1

虚拟设备

2018 产

MacBook Pro (13-inch)

macOS Catalina 10.15.6

`Google Chrome 版本 85.0.4183.83(正式版本)(64 位)``

控制器

2017 产

iPhone X 13.3.1 MQA92CH/A

测试结果,可以点击视频查看: Video on BiliBili

0x04 How to Run && 运行方式

Server

python 3.6

进入 MotionServer 目录,修改 app.py 脚本,将服务器的 IP 端口 填入

然后 执行命令 python3 app.py 即可。

Device

CocosCreator v3.1.1

进入 MotionDevice 目录,修改 assets/scripts/Main.ts 脚本,将服务器的 IP 端口 填入

直接网页运行即可。

Controller

CocosCreator v3.1.1

进入 MotionController 目录, assets/scripts/Main.ts 脚本,将服务器的 IP 端口 填入

接着,请修改引擎的 iOS 以及 Binding 对应代码,详情请参见 SSRDeviceMotion/MotionNative/README.md

接着编译选择 iOS 后,在 iPhone 上直接运行即可。

0x05 Misc / 杂项

数据传输

目前的演示程序在 虚拟设备端 同步 控制器 的运动的还原是有一定的延迟的,当着首先这需要在网络条件良好的情况下,才能够更好的视线效果。

此外,可以其实还有多种不同的数据传输方式,指的尝试,来尝试寻找更好的方式,下面列出的是一些值得尝试的方向:

  1. Controller / Device (Client) Socket.io / Python (Server) socket.io

    控制器虚拟设备 都作为客户端,使用 Socket.io,数据通过 Python 传输

  2. Controller / Device (Client) Socket.io / python (Server) Websocket

    控制器虚拟设备 都作为客户端,使用 Websocket,数据通过 Python 传输

  3. Controller (WebsocketServer) / Device (Websocket Client)

    控制器,作为服务端,使用 WebsocketServer , 虚拟设备 客户端,使用 Websocket,连接到 控制器 后等待数据的接收

  4. Controller(WebBluetooth) / Device (CoreBluetooth)

    控制器虚拟设备 通过蓝牙模块连接,进行数据的传输

  5. Controller (MultipeerConnectivity) / Device (MultipeerConnectivity) ( iPhone 专用)

    控制器虚拟设备 通过 MultipeerConnectivity 模块进行连接以及数据的传输

  6. Controller (WebRTC) / Device (WebRTC)

    控制器虚拟设备 通过 WebRTC 进行连接以及数据的传输

0x06 Plans (Free Update) / 后续计划 (免费更新)

目前暂时没有特别的更新计划,比较可能的,是将 Android 部分的演示 Demo 给补上。


下面是作者的其他一些插件,如果有感兴趣的,可以支持一下,感谢 ~

01.SSRFBONodeComponent_Banner.png 02.SSRSVGComponent_Banner.png 03.SSRSVGWriterComponent_Banner.png 04.SSRShaderFXEditor_Banner.png 05.SSRLoSComponent_Banner.png 06.SSRFogOfWarComponent_Banner.png 07.SSRCreatorPluginAdaptor_Banner.png 08.SSRShaderFXTutorial_Banner.png 09.SSRDnDComponent_Banner.png 10.SSRShaderGallery_Banner.png 11.SSRDynamicMaterial_Banner.png 12.SSRBluePrintStarterKit_Banner.png 13.SSRPostProcessingFX_Banner.png 14.SSRDeviceMotion_Banner.png 15.SSRGridCCLContour_Banner.png 16.SSRWorkCollection_Banner.png 17.SSRScreenSplitFX_Banner.png 18.SSRShaderConverter_Banner.png

用户评分

平均评分
(0)
共有 0 位用户参与评分

评论

暂无评论

  • 1

2020 © Cocos.com版权所有

增值电信业务经营许可证:闽B2-20160169

闽ICP备14002653号-6

闽公网安备 35020302033941号