需求:
我们现在在做的产品需要通过两个软件之间的互相的信息传递来达成一个AR的效果,分为server端软件和client端软件,client端的目的是为了通过leapmotion去进行定位和互动,server端则是用摄像头结合实景并同步显示client端定位和互动后的结果。要求是实现client(操作端)server(显示同步端兼AR算法端)的socket双向通信,要求无阻塞无粘包或断包。
具体技术要求:
一、Transform同步
Transform.localPosition
Transform.localRotation
Transform.localScale
Transform.parent
二、动画同步
1、骨骼动画(Animation)
Animation.clipName(动画名称)
Animation.time(动画时间)
Animation.speed(动画速度)
CrossFade|DirectPlay|Stop(融合动画、直接播放还是停止)
2、顶点动画(Mesh同步)
Mesh.vertices(网格顶点)
Mesh.normals(网格法线)
Mesh.triangles(三角面索引排列)
三、摄像机同步(Camera)
Camera.FieldOfView(视角)
Camera.ViewportRect(分屏框)
Camera.Depth(深度)
四、场景切换同步(SceneManager)
LevelName|LevelIndex(同步关卡名称还是关卡索引)
LevelValue
DirectLoad|AsynLoad(直接切换还是异步加载)
五、Renderer属性同步
Renderer.enabled(是否可见)
1、线条渲染LineRenderer
LineRenderer.positions(连接点数组)
LineRenderer.startWidth(起始宽度)
LineRenderer.endWidth(末尾宽度)
LineRenderer.startColor(起始颜色)
LineRenderer.endColor(末尾颜色)
LineRenderer.UseWorldSpace(连接点数组是采用世界坐标还是本地坐标)
2、轨迹渲染TrailRenderer
TrailRenderer.Time(拖尾时间)
TrailRenderer.StartWidth(起始宽度)
TrailRenderer.EndWidth(末尾宽度)
TrailRenderer.Colors(渐变色数组)
TrailRenderer.MinVertexDistance(断点最小距离)
TrailRenderer.Autodestruct(拖尾时间过后是否自动删除)
六、Material属性同步
propertyName(材质球同步属性名称)
Color|Float|Vector(传入颜色、数值还是四维数组)
propertyValue
七、GameObject同步
Active(是否可用)
SendMessage|BroadCastMessage|SendMessageUpwards(仅向自己发送消息、向包含自己在内的所有子物体发送消息还是向包含自己在内的所有上级物体发送消息?)
functionName(要接受消息的函数名)
parameters(接受消息的函数对应的传参字段)
方式:远程+见面对需求方式