前段花了不少时间在研究乳摇物理学(咳咳,严肃点),也就是“胸部物理”,其中故事非常曲折刺激。毕竟这技术,大部分男同志们都喜欢,但是实际怎么做,怎么做的又好又像,深度技术难点在哪等等,在网上翻,压根就没找到靠谱的。也没人敞开讨论(纯技术探讨)。所以只能自己召唤高中物理数学和高等数学的记忆。
等基本搞完了,想动手发文章到indie聊点心得,又老怕被锤了。毕竟前有LGBT政治正确,后有网站审稿。想想还是算了,写个数千字的详细技术文章到时候石头沉底也没意思。所以一直也就挂着。
——————————————————————————
过了物理学问题,就又碰到了模型变形混合(BlendShape)需要自定义的问题,毕竟这个问题是项目目前几个问题的交叉需求。
为了完成Scene视图下动态编辑BlendShape的需求。就需要整自定义Scene。自定义Scene,就要涉及Gizmos和Handles。都是新活。本着我强大的自学能力,Gizmos倒是不在话下,Handles这货,一看又是一没找到靠谱技术文章的。
在网上翻Unity.Handles的用法大半天,跟淘宝卖货一样,100个宝贝其实就两件货...
最后连Unity官方英文档也来回倒腾翻。结果最蛋疼的是unity官方的实例,居然还是用js语言的,可见这玩意多偏门。真是又晦涩抠搜又难懂还缺这缺那。整了大半天才明白,原来是涉及unity的GUI和Event。GUI这货非常底层,Event就更底层了。基本我也没太整明白。
最后说一下关键,到底要整明白什么。举个例子,下面这个API
public static void CubeHandleCap( int controlID, Vector3 position, Quaternion rotation, float size, EventType eventType );
这里面eventType官方就瞥了一句设计成适用于EventType.Layout和EventType.Repaint事件。
在 EventType.Layout 事件上,计算手柄到鼠标的距离并相应地调用 HandleUtility.AddControl。
在 EventType.Repaint 事件上,绘制手柄形状。
这我一下子就没整明白了。后来才知道这是对Event说的。也就是你只能填这两个。还得调用两次,一次是告诉GUI和Event制造响应,然后在EventType.Layout上面接住;另一次是图像绘制。真是晦涩。
网上看到的文章,都是在谈第二种。而已。
另外,这个controlID,则需要去GUIUtility.GetControlID()获得独立id,然后自己还要保存与控件的映射关系
最后,通过HandleUtility.nearestControl来获得你交互的控件,的id。
完毕。
暂无关于此日志的评论。