iothua / magicloudsdk Goto Github PK
View Code? Open in Web Editor NEWKGUI、继承多种输入端、相关开发功能
License: Other
KGUI、继承多种输入端、相关开发功能
License: Other
优化药匙、镊子等脚本
药品抓取等问题
一、使用字体图集
将框架的tff字体库,做成图集,可以采用TextMeshPro,也可以采用其他方式,在KGUI提供KGUI_Text组件,使用默认图集。
二、尽量少用Outline、Shadow组件
因为Outline、Shadow会耗费很大的内存,所以尽量不要使用,如果特殊情况,可使用美术字体来做。
@LiiiiiWr
在KGUI新增涂鸦控件
用于涂鸦
在KGUI新增截屏控件
触发某个按钮,对当前屏幕进行截屏,然后可进行图片的放大缩小、以及移动(当图片放大时,可移动里面的图片)。
整理输入端
优化高亮功能
工具功能
工具功能包含画图、录制、截图。
画图:参照Drawline脚本,里面以及写好了,但是还不够完善,这个功能完善可跟孙翌峰那边沟通。还需要注意的时画图也就是输入端操作模式的Tool模式。
录制:录制视频,并且把麦克风的声音也要录制(可暂时缓一缓,开发完其他的后,在开发这个功能)。
截图:将图片保存到本地(如果时windows,保存到我的电脑-图片-magicloud-产品-实验文件夹下-时间为文件名)。如果时android,则在android的那个文件夹下(看以那个文件夹作为根目录会好一些,同样的格式为根目录-magicloud-产品-实验文件夹下-时间为文件名) @LiiiiiWr
框架整理
根据存储的操作限制
基于现有上传网络脚本进行优化
1、将MCServer融合到本地服务端中
2、本地服务端与客户端进行连接时,会出现偶尔数据传输不准确的情况
3、重构相关消息接收脚本,实现让继承Monbehaviour的方法能方便的接收和发送信息
4、完善实验通知,当本地服务端点击实验的时候,不隐藏此服务端窗口,但是启动客户端,当客户端加载服务端传递的实验信息后,并且发送一个加载完成通知,发送给服务端,此时服务端在隐藏窗口。
5、当设置配置信息时,能真正的设置这些信息,而不是测试Demo。
以上的这些功能,在2019/3/18下班前完成。
@LiiiiiWr
实验提供公用功能,分为三种模式:操作模式、观察模式、画图模式。
操作模式
1、可对物体进行操作,比如抓取、高亮等等操作
观察模式
观察模式分为旋转与缩放两个功能。
1、当点击旋转按钮时,此时在屏幕上会出现一个短暂的提示,告诉用户,握拳左右旋转可进行旋转整个场景。
2、当点击缩放时,此时屏幕会出现一个提示信息,告诉用户,握拳右移动则放大,左移缩小。根据移动的值进行速度的调整。
画图模式
画图模式有三个功能:画图、保存、清空。
1、当点击画图功能时,握拳可进行划线。
2、当点击保存时,可在此图片保存到本地路径下,默认路径在我的文档中
3、当点击清空时,可清空此图片的所有划线信息。
手势与性能是重中之重。
ButtonEvent消息中心重构
开发截屏,画图,保存图片等功能。
完善摄像机旋转缩放.
输入端问题:
1、旋转缩放会与抓取物体冲突。
2、当手势放下时,在抬起会出现跳的情形。
3、放下手识别这块,还是存在问题。
4、触摸输入端需要重新设计一套。
5、平台切换时的一些事件处理。
6、整理下各个事件处理。
Unity端
1、比如科学发布时,发布两种类型的文件,一种是项目Exe压缩包(也就是我们发布出来的程序)。第二种是实验相关资源(利用AssetBuild发布出来的)。 这两种文件都是压缩文件并且加密。
** 一定要注意实验之间的资源公用与独自实验预制物体的处理关系,以及项目Exe压缩包的关系。 如何实验最大化减少资源的冗余,你需要给出一套解决方案,我将实施到整个研发。**
本地平台端
2、本地服务端当点击科学按钮中的某个实验时,平台解析科学所在的压缩路径,启动该压缩包的exe程序,当启动过程中,科学Exe调用该实验的资源,并且解析这个资源,从而加载实验,当实验加载完成后,通知平台,此时平台取消loading,显示实验界面。
3、当从Unity端点击返回时,返回到平台端,这是平台端单击同一个项目下的另一个实验,则是平台不加载项目压缩文件,直接通知项目Exe程序,加载实验。实验加载完成后,通知平台加载完成。
以上的需求是开发完网络端后的下一个Demo,所有的东西务必在3月26号前,看到Demo并且测试没问题。 @LiiiiiWr
当添加KGUI Button时,根据RectTransform的宽高,设置BoxCollider的值,将Z轴值默认设置为0.1f。
@LiiiiiWr
语音需求
1、将文字转化为语音,播放出来。
2、将人的语音转化为文字,进行适当的一些操作。
语音SDK选择
1、选择讯飞SDK
2、选择腾讯Gvoice SDK
一、手势优化
二、输入端优化
三、各个事件优化
四、KGUI优化
五、动作管理器
设置数据
1、系统分辨率
2、性能(高、中、低)
3、音量
通过在平台内设置这些数据,在实验中相应的要改变这些数据(这个功能已经实现了,可参照物理、化学额设置功能)。
实验数据
1、实验返回命令
2、实验所属项目、所属实验名称、编号等(这个可在后面累加)
3、实验加载完毕通知(当实验加载完毕后,通知平台[平台要进行loading])
实验与平台置顶
1、当打开平台时,平台处于置顶,实验程序不置顶。
2、当实验程序打开时,实验程序置顶,平台置低。
3、当实验返回到平台界面时,平台置顶,实验置低。并且手势识别等操作关闭(手势停止操作这一步我来做)。
4、当平台程序关闭时,实验程序也要关闭。(这一步其实是平台程序实时检测,可查看任务管理器,进行实时监控)。 @LiiiiiWr
描述错误
当切换模块时,在点击按钮时,第一次执行OnClick会失灵。
选择性的判断是否执行初始交互动作
添加物体旋转功能
为新框架中的FeatureObjectController【物体操作类型】添加“物体旋转”功能,类似现在旧框架一样,只不过这个功能之前是集成在旋转缩放那里,现在抽离出来,做成类似MCCanGrab同级别的。
可在脚本MCObjectRotation下重构。
添加物体按钮功能
类似Button的Click一样,也是在“能抓取”状态那一块,新增“按钮式”状态,当选中这个状态后,物体不能移动,接收的是类似按钮功能,在物体按下释放时,执行某个事件。 @LiiiiiWr
可看MCCanGrab.cs、MOperarte,在处理时注意状态的设置和相关事件的处理。 可参照它写的,内部具体实现应该在自己脚本中实现,MOperate只是方法调用。
MOperate.cs
private IOperateObject HandleGrab(ObjectOperaType type)
{
switch (type)
{
case ObjectOperaType.无:
break;
case ObjectOperaType.能抓取:
//调用物体的抓取
var canGrab = operaObject.GetComponent<MCCanGrab>();
//直接返回
if (canGrab.HandStatus != MInputHandStatus.Idle) return null;
//不同的操作端具备不同的操作,所以应该让外部调用
if (OnGrab != null)
{
OnGrab(canGrab, InputHand.HandIndex);
}
return canGrab;
case ObjectOperaType.物体自身旋转:
var rotation = operaObject.GetComponent<MCObjectRatation>();
//如果物体不是闲置状态,则直接返回
if (rotation.HandStatus != MInputHandStatus.Idle) return null;
rotation.OnOpen();
return rotation;
case ObjectOperaType.自定义:
var customize = operaObject.GetComponent<MCustomize>();
if (customize.HandStatus != MInputHandStatus.Idle) return null;
customize.OnOpen(InputHand.HandIndex);
return customize;
default:
break;
}
return null;
}
开发瓶盖功能
1、开发一套公用,适合容器的瓶盖功能
描述错误
对bug的清晰简洁描述。
重现
重现行为的步骤:
预期的行为
清楚简洁地描述您期望发生的事情。
截图
如果适用,请添加屏幕截图以帮助解释您的问题。
桌面(请填写以下信息):
智能手机(请填写以下信息):
附加背景
在此添加有关此问题的任何其他上下文。
仪器修改器
整理框架以及其他公用的东西,并且编写
您的功能请求是否与问题有关? 请描述一下。
简明扼要地描述了问题所在。
描述您想要的解决方案
简明扼要地描述您想要发生的事情。
描述您考虑过的替代方案
对您考虑的任何替代解决方案或功能的简明扼要描述。
附加背景
在此处添加有关功能请求的任何其他上下文或屏幕截图。
在非运行状态下,Label标签会报错。
在不影响功能的情况下,优化掉它。 @LiiiiiWr
因鼠标端与触摸端处理不一致
1、结合鼠标端,开发触摸端
2、触摸端支持旋转、缩放等功能操作
一、简介
当要重新选择新的实验开发以及重新设计模型等功能时,需要留意以下:
二、美术
基于新的项目,重新建一个大文件夹、包含美术资源,将新的资源放入到指定文件夹下,旧的资源进行移植,删除等处理,减少资源的冗余,跟美术要谈清楚,资源分布一定要细致,每多一分资源发布的产品就会大一些。这一块一定要沟通清楚,落实到位。
三、程序
基于新的项目,重新建一个大的科学文件夹,新的命名空间等,把脚本都移植到指定文件夹下,如果是用到的公共框架,而可不用管,我之后会慢慢的整理公用的东西,包括力学、光学、宇宙、化学等等。
**以上工作都前期都非常重要,一方面是为了发布减少冗余,另一方面是为了查找 @hitzombire **
DistanceInteraction
交互位置并没有在距离范围内就执行了靠近
工具
** 开发瓶子**
旋转BUG
1、点击按钮时,依然可以旋转
2、背包取物体时,左右手都可抓取,先抓取的手的物体会脱离,后抓取的物体松手后会赋给先抓取的手。
3、抓取一个物体时,总会在某一个特定位置显示一下抓取物体(闪一下),在赋到手的位置
虚影优化
一、简介
由于平台是客户端,他会在平台中启动相应的实验(Unity程序),所以需要进行一些数据文件的传输,那么就要用到本地的Socket数据传输,然后平台在与服务器进行网络传输,而你要做的就是先开发本地socket数据传输,以便最后集成到框架中。
四、客户端
客户端则是unity程序,它主要是根据服务端的信息导入指定的实验资源、设置分辨率/性能、手势信息、以及调用公用功能等方式。并且在客户端将实验信息传输到本地服务端。
五、服务端与客户端传输的信息
移除框架的Sirenix
不是在科学项目去做这件事情,而是在框架项目将Sirenix移除掉,并且将一些框架用到此Sirenix开发Editor来实现,尽量保持与sirenix序列化出来的界面一致性。然后为后续倒入MCSciencePro做准备。
@LiiiiiWr
一、现在的输入端操作模式
在输入端中,有四种模式(Move、Rotate、Zoom、Tool),它位于MSwitchManager脚本,该脚本就是模式的初始化以及判断处理。然后在各个输入端(MouseController、KinectController)还有Drawline(画图)。则是根据这个枚举值来判断不同的操作捕捉。 比如当为Move值时,握拳抓武器就是移动,为Rotate时,握拳左移动右移动就是旋转、Tool时握拳就是画线。
二、优化后输入端模式
同样还是有Move、Rotate、Zoom、Tool。但是move、rotate、zoom三种模式可能会共存,tool模式开始后,这三个模式则不能进行操作了(比如抓物体、移动、缩放等)。
注意:操作输入端其实功能很好做,但是难的时它们之间的相互识别判断以及处理。如果处理不好,就会出现误判,比如人家只想抓物体,结果触发了旋转动作。在这一块上就需要花点心思了。然后还有就是把旋转缩放这方面的代码,也要优化下(有写过,但是背后有很多无用的代码,以及你看有没有更好的方式去实现)。 @LiiiiiWr
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.