zoukankan      html  css  js  c++  java
  • 3dContactPointAnnotationTool开发日志(二二)

      昨天是实现了显示GameObject子GameObject的选项卡功能,今天就是要让statusPanel可以控制它们的位置、旋转和缩放了。
      没什么难的,对应选项卡绑定上对应的物体或子物体即可。
      删除操作的话只需要在删除当前选项卡之前递归地删除它的子孙选项卡和对应的模型即可,隐藏的话也是递归地将他们的active设置为false。
      由于smpl模型只有一个skinnedMeshRenderer,然而网格的各个部分是绑定在它的子对象中的,如何获得各种变换后对应网格的顶点坐标呢?
      使用BakeMesh方法即可,用法是先new一个mesh作为容器,然后调用该方法就能把经过各种乱七八糟变换后的mesh的snapshot(快照,就是网格渲染的样子,也是Mesh类型)存入括号里的mesh。
      比如我的OnClick方法是这么写的,就是点击按钮后会在网格的每个顶点坐标生成一个半径为0.1的球:

    public void OnClick()
    {
        Mesh mesh= new Mesh();
        smr.BakeMesh(mesh);
        foreach(var item in mesh.vertices)
        {
            var a=GameObject.CreatePrimitive(PrimitiveType.Sphere);
            a.transform.position = item;
            a.transform.localScale = new Vector3(0.1f,0.1f,0.1f);
        }
    }
    
    

      变换前:
    1.png
      只旋转子对象:
    2.png
      点击按钮:
    3.png
      不过对最外层的变换貌似只响应scale变换,position和rotation的变换却没反应,但是对于直接导入的obj模型是这三类属性都不响应的,真奇怪。
      没办法,只能禁用最外层的scale编辑了...
      smpl模型也不能增加三角形数量,于是也把smpl模型三角形数量编辑给禁了。
      关节点的话只能编辑旋转,编辑position的话会产生很鬼畜的结果,所以把关节点的position和scale也禁了。总之哪里不对禁哪里。
    4.png
      也相应地把计算接触点那里改成适应skinnedMeshRenderer的版本,来看看效果吧:
      先调好人的姿势以及和椅子的位置:
    5.png
    6.png
      然后计算接触点:
    7.png
    8.png
      看上去还挺正常的。不过接触点貌似太黑了点,要是红红的就好看一些,应该是阴影的问题。
      于是加了这两行代码:

    //不产生阴影也不接收阴影
    mr.receiveShadows = false;
    mr.shadowCastingMode =UnityEngine.Rendering.ShadowCastingMode.Off;
    

      然而还是有些接触点是黑色的,这些都是卡在另一个模型里没有光线照射到的球:
    9.png
      应该能够用设置layer的方式来解决这个问题,给接触点设置为单独的层,然后新建light再设置light的culling mask,只照射接触点所在层就行了:
    10.png
      最后用一个哲♂学场景测一下效果:
    11.png
    12.png
    13.png
    14.png
    15.png
      可以发现所有接触点在光线的照射下熠熠生辉,我成功地驱逐了黑暗!

  • 相关阅读:
    前面的内容 也是要去掉白名单 和 8.8.8.8这种非问题IP的 高风险 么? (目前我们没有获取客户的中风险、低风险数据,可以处理掉高风险)
    大数据安全规范
    queue
    数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、
    软件架构的5种视图
    软件各种系统架构图
    为何要建数据仓库 大数据下的企业数据仓库建设
    choorme 升级到最新版 adobe flash提示过期解决方案
    PowerShell控制台快捷键
    [Azure] 使用 Visual Studio 2013 管理中国版 Azure 订阅
  • 原文地址:https://www.cnblogs.com/yaoling1997/p/10158614.html
Copyright © 2011-2022 走看看