没办法,为了能在寝室接着做这玩意只好又在电脑上装一个和实验室版本一样的unity了.虽然打开后UI界面还是一团糟,不过至少要的东西都在,又手动调了调UI界面.   然后把旋转视角功能加上了.鼠标右键按住移动就可以旋转.缩放视角就用鼠标滚轮好了.   之后打算把这两个物体分开,不过用的obj读入的代码是放到一个gameobj里的,所以看来还得自己修改才行.…
  添加了清空2d接触点的按钮,将输出的2d接触点的单位变成了像素,原点在图像的左下角.   对于obj文件的适配更加多样化了.…
转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出来,给学习duilib布局的朋友做个demo.现在编写的仿酷狗选项设置窗体和原酷狗的窗体不细看几乎看不出差别,控件的布局位置和原酷狗最多只有几个像素的位置差别. 先来看一下原酷狗的选项设置窗体的其中一个页面: 如果还不太会布局的朋友可以先看我前些日子写的关于duilib布局的博客<duilib各种布…
  今天就是看怎么把论文的python源码预测出来的smpl模型的姿势和形状参数弄到unity版本的smpl里,但是python版本的和unity版本的不一样.   先看看他的fit_3d.py:  里面的params参数,也就是输出到.pkl文件的内容,包含四个属性:cam_t.f.pose.betas,分别是相机位置.焦距.姿势和形状参数,前两个暂时先无视,先把后两个比较重要的参数弄好.   用cpickle(python2)看看这两个参数: with open(img_path,"r&qu…
  貌似每次让用户手动输入文件路径太不人道了,于是参考Unity 实用教程 之 调用系统窗口选择文件或路径增加了让用户浏览文件的功能,点击输入框旁边的+就可以找到文件并加载进来:   貌似调整位置再计算接触点是假的,原因应该是我计算用的点的坐标知识mesh原来的点的坐标,并没有考虑缩放.位移和旋转这些因素:   要想将变换应用到mesh.vertices上,可以参考Matrix4x4.TRS Creates a translation, rotation and scaling matrix  …
  今天想着在Windows平台上跑通那个代码,不过它的官网上写的支持平台不包括windows,但我还是想试试,因为看他的依赖好像和平台的关系不是特别大.   看了下它的py代码,不知道是py2还是py3,于是干脆py2和py3上都试下.它的py依赖都在requirements.txt文件中: numpy>=1.11.0 scipy>=0.17.1 chumpy opendr matplotlib   其它的直接用pip安装就好,就是这个opendr在Windows10上装的时候有问题: Ex…
  之前给老师看了看我的毕设,老师觉得操作太复杂了,要能像3ds max里那样可以拖动物体的轴进行平移,沿着显示的圆圈旋转以及缩放啥的.说白了就是在Unity3d的Game视图显示出Scene视图里的坐标轴等等.这些鬼操作要是自己动手实现估计能写个把月了,而且我也不知道咋写.   硬着头皮写了两天也就这幅挫样子:   不知道咋写没关系,可以上百度搜搜看看有没有现成的可以直接用的Unity包.费了九牛二虎之力在Unity3d的Asset Store里找到了一个看上去比较靠谱的,叫作runtime…
  昨天是实现了显示GameObject子GameObject的选项卡功能,今天就是要让statusPanel可以控制它们的位置.旋转和缩放了.   没什么难的,对应选项卡绑定上对应的物体或子物体即可.   删除操作的话只需要在删除当前选项卡之前递归地删除它的子孙选项卡和对应的模型即可,隐藏的话也是递归地将他们的active设置为false.   由于smpl模型只有一个skinnedMeshRenderer,然而网格的各个部分是绑定在它的子对象中的,如何获得各种变换后对应网格的顶点坐标呢?  …
  今天完成了修改按钮颜色,添加smpl模型到工具,以及可以显示物体子物体对应选项卡的功能.把之前的meshRenderer+meshFilter都改成了skinnedMeshRenderer,因为smpl模型用的是这个,所以统一一下好了.   这代码真是越写越难改.…
  为了使工具更人性化,我又在每个status的text上绑了个可以拖拽实现值改变的脚本,但是不知道为啥rotx那个值越过+-90范围后连续修改就会产生抖动的现象,试了很多方法也没能弄好,不过实际用起来问题应该不大.   不过拖拽时鼠标碰到屏幕边缘就动不了了,于是我想像unity那样可以让鼠标出现在屏幕的另一边,这样就拖拽起来就更加的方便.   关于如何实现该功能请看完下列教程:   1.unity中锁定鼠标移动&&隐藏鼠标&&强制是鼠标移动到某一位置   2.C# 鼠标光…
  因为ReferenceImage的锚点是固定的左下角,缩放时controller面板也会跟着动.为了使Scale的时候controller上的slider不会远离指针,于是把controller固定到了左下角.   在网上找了半天也没有找到好的在图像上画球的方法,没办法只好用image来当求了,放上球的照片即可.得把三维坐标转到UI坐标里,具体方法请看Unity3D 世界坐标上一个点对应UI上一个点.   于是具体的玩法就是先计算接触点,再把图片和三维物体对齐,点击Overlay按钮,就会生…
  今天看的时候发现其实www的方式是可以根据指定路径读取本地图片到Image中的.也就是昨天提到的第二种方式.   随便选了个图片做示范: 修改后的代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ButtonOkOnClick : MonoBehaviour { public InputField ima…
转载请说明原出处,谢谢~~ 中秋到了,出去玩了几天.今天把仿酷狗程序做了收尾,已经开发完成了,下一篇博客把完结的情况说一下.在这篇博客里说一下使用OLE为窗体增加文件拖拽的功能.使用播放器,我更喜欢直接拖动音乐文件添加到软件里,所以做这个功能很重要.做OLE拖拽之前学习了两篇文章: http://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra%E3%80%91 http://b…
转载请说明原出处,谢谢~~ 上篇日志说明了怎么让自定义控件响应右键消息.之后我给主窗体的标题栏增加右键响应,观察原酷狗后可以发现,在整个标题栏都是可以响应右键并弹出菜单的.应该的效果如下: 本以为像上一片博客那样,处理标题栏的布局的右键消息就可以了.后来发现在duilib的标题栏中无法像在客户区那样自如响应UIEVENT_CONTEXTMENU消息的.所以还得用另外的方法. 在非客户区处理右击消息对应的是WM_NCRBUTTONUP,WM_NCRBUTTONUP是和WM_NCHITTEST相辅相…
转载请说明原出处,谢谢~~ 整个仿酷狗工程的开发将近尾声,现在还差选项设置窗体的部分,显然在设置窗体里用的最多的就是OptionUI控件,我在写好大致的布局后去测试效果,发现Option控件的显示效果很不理想.在源码中可以知道(属性列表中列的不全面)Option提供了8种显示状态,分别为 <Attribute name="normalimage" default="" type="STRING" comment="普通状态图片&q…
以下内容节选自Heresy的博客:   彩色影像:1920 x 1080 @ 30 / 15 FPS(根据环境亮度) 深度影像:512 x 424 @ 30 FPS.16bit 距离值(mm).可侦测范围0.5 ~ 8 M 红外线影像:512 x 424 @ 30 FPS.16bit 强度值 声音资讯 根据上面的原始资料,则可以再透过软体,进行人体的追踪.骨架的辨识(0.5 ~ 4.5 M).在K4Wv2 下,最多六个人.每个人25 个关节点(右图),其中每个关节点都可以取得空间中的位置.以及方…
转载请说明原出处,谢谢~~ 虽然仿酷狗的各个菜单早就写好了,但是一直没有附加到程序里.今天把菜单和播放列表控件关联时发现了问题. 和播放列表相关的菜单有三个,分别是每个音乐项目控件相关的菜单.分组的菜单.音乐电台的菜单.应该的效果如下: 原本我想着只要给对应的控件设置menu属性,然后在代码里响应消息弹出菜单就可以了.但是实际测试发现,控件根本无法响应到menu消息,原因在于:音乐项目.电台项目这些控件都是靠许多子控件组合而成的,换句话就是他们上面覆盖了很多其他子控件,子控件挡住了音乐项目和电台…
  今天就是让背景图可以变大变小,变透明度,然后将3d的点投影到图片上,输出2d接触点信息:   可以看到输出了正确的接触点信息:   然后还把空物体的包围盒大小设置为边长为0.1的的正方体,点击选中关节点更加流畅,不过关节点并不一定在人物的网格中所以还是通过选项卡来选择更加准确.…
  添加背景图片后发现Runtime Transform Gizmo无法选中物体了:   于是改了一下EditorObjectSelection.cs中的WereAnyUIElementsHovered函数: private bool WereAnyUIElementsHovered() { if (EventSystem.current == null) return false; Vector2 inputDevPos; if (!InputDevice.Instance.GetPositi…
  在玩的时候遇到了一个python的问题: Traceback (most recent call last): File ".\convert.py", line 13, in <module> a=pickle.load(readFile) ImportError: No module named multiarray 如何解决请看python "No module named multiarray "的解决方法   改了一下它的代码,把它自带的渲…
  在vs2017里生成opencv时遇到了无法打开python27_d.lib的问题,具体解决请看这个,不过我用的是方法2,python37_d.lib找不到同理.   Windows下可以用的opendr…
  师姐说物体间不能有穿透,于是我试了下给物体加rigidbody和meshCollider   然后就报错:   说是用meshCollider要么去掉刚体要么就把刚体设置为iskinematic.说白了就是用meshCollider没法检测和别的物体的碰撞,于是就没加collider了.   然后就研究单幅图像如何生成人体模型比较方便,找到了一篇叫作Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Sin…
  今天的主要工作是把选中物体以及复制删除物体和右边三个面板联系起来,就是通过鼠标框选住物体,右边面板的对应项的颜色也会改变,而且通过右边面板也能控制物体的选中状态,被选中的物体成cyan青色,并且包围盒的角会有绿色线框表示.说起来好像挺简单的,不过还是搞了一天.   本来还可以支持undo/redo操作的,但是都是只能相应快捷键或者是拖动轴的那些操作,删除和复制物体也是支持的,但是直接改输入框里的值还是不支持的.虽然改一下半天时间应该能弄好,不过感觉这不是工作重点,要是以后需要的话再用吧,现在…
  smpl模型得是一个整体,于是我让子物体的选项卡的删除按钮消失,这样就不会删除不必要的东西然后产生奇怪现象:…
  增加了输出接触点信息到文件功能.…
  今天实现了tab效果,按tab键可以在status面板的各个输入框内来回切换,参考Unity3D - UGUI实现Tab键切换输入框.按钮(按Tab键切换高亮显示的UI)…
  今天又改进了一下算法,把生成出来的接触点按中心坐标拍了个序,再把中心坐标一样的坐标点合并,x,y,z每个维度都只保留大的值.然后来看看效果:   先是1倍的,只剩下4096个接触点了,2^12个,少了1w多个接触点,耗时也只需要46秒.   然后是3倍的,4026个接触点,耗时46秒.   最后是10倍的,4030个接触点,耗时55秒.…
  调了一上午才发现是把下面这个函数: private float DivideTriangle(int []triangle,out int []outTriangle,List<Vector3> vertices)//切割三角形 { float re = -1; int p = 0; for (int i = 0; i < 3; i++) { int a = triangle[i]; int b = triangle[(i + 1) % 3]; var len = (vertices…
  有时候拖动一个窗口的时候可能直接拖出去了那就再也拖不回来只能reset重新来过:   于是开了个类成员变量在start里记录了一下panel的位置: var lp = panel.GetComponent<RectTransform>().localPosition; localPosition = new Vector2(lp.x,lp.y);   在OnClick中将其复原: panel.GetComponent<RectTransform>().localPosition…