昨天是实现了显示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);
}
}

  变换前:



  只旋转子对象:



  点击按钮:



  不过对最外层的变换貌似只响应scale变换,position和rotation的变换却没反应,但是对于直接导入的obj模型是这三类属性都不响应的,真奇怪。

  没办法,只能禁用最外层的scale编辑了...

  smpl模型也不能增加三角形数量,于是也把smpl模型三角形数量编辑给禁了。

  关节点的话只能编辑旋转,编辑position的话会产生很鬼畜的结果,所以把关节点的position和scale也禁了。总之哪里不对禁哪里。



  也相应地把计算接触点那里改成适应skinnedMeshRenderer的版本,来看看效果吧:

  先调好人的姿势以及和椅子的位置:





  然后计算接触点:





  看上去还挺正常的。不过接触点貌似太黑了点,要是红红的就好看一些,应该是阴影的问题。

  于是加了这两行代码:

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

  然而还是有些接触点是黑色的,这些都是卡在另一个模型里没有光线照射到的球:



  应该能够用设置layer的方式来解决这个问题,给接触点设置为单独的层,然后新建light再设置light的culling mask,只照射接触点所在层就行了:



  最后用一个哲♂学场景测一下效果:











  可以发现所有接触点在光线的照射下熠熠生辉,我成功地驱逐了黑暗!

3dContactPointAnnotationTool开发日志(二二)的更多相关文章

  1. 3dContactPointAnnotationTool开发日志(二九)

      今天想着在Windows平台上跑通那个代码,不过它的官网上写的支持平台不包括windows,但我还是想试试,因为看他的依赖好像和平台的关系不是特别大.   看了下它的py代码,不知道是py2还是p ...

  2. 3dContactPointAnnotationTool开发日志(二六)

      之前给老师看了看我的毕设,老师觉得操作太复杂了,要能像3ds max里那样可以拖动物体的轴进行平移,沿着显示的圆圈旋转以及缩放啥的.说白了就是在Unity3d的Game视图显示出Scene视图里的 ...

  3. 3dContactPointAnnotationTool开发日志(二五)

    记录一下当前进度:

  4. 3dContactPointAnnotationTool开发日志(二四)

      添加了清空2d接触点的按钮,将输出的2d接触点的单位变成了像素,原点在图像的左下角.   对于obj文件的适配更加多样化了.

  5. 3dContactPointAnnotationTool开发日志(二一)

      今天完成了修改按钮颜色,添加smpl模型到工具,以及可以显示物体子物体对应选项卡的功能.把之前的meshRenderer+meshFilter都改成了skinnedMeshRenderer,因为s ...

  6. 3dContactPointAnnotationTool开发日志(二十)

      为了使工具更人性化,我又在每个status的text上绑了个可以拖拽实现值改变的脚本,但是不知道为啥rotx那个值越过+-90范围后连续修改就会产生抖动的现象,试了很多方法也没能弄好,不过实际用起 ...

  7. 3dContactPointAnnotationTool开发日志(二)

      今天看的时候发现其实www的方式是可以根据指定路径读取本地图片到Image中的.也就是昨天提到的第二种方式.   随便选了个图片做示范: 修改后的代码如下: using System.Collec ...

  8. 3dContactPointAnnotationTool开发日志(三二)

      今天就是看怎么把论文的python源码预测出来的smpl模型的姿势和形状参数弄到unity版本的smpl里,但是python版本的和unity版本的不一样.   先看看他的fit_3d.py:   ...

  9. 3dContactPointAnnotationTool开发日志(十二)

      因为ReferenceImage的锚点是固定的左下角,缩放时controller面板也会跟着动.为了使Scale的时候controller上的slider不会远离指针,于是把controller固 ...

随机推荐

  1. Django自定制分页功能

    URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...

  2. python3 练习题100例 (三)

    题目三:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? #!/usr/bin/env python3 # -*- coding: utf-8 -*- &qu ...

  3. PIE currently adds full or partial support to IE 6 through 8 for the following CSS3 features

    PIE stands for Progressive Internet Explorer. It is an IE attached behavior which, when applied to a ...

  4. OI生涯回忆录(二)

    (二)NOIP2016之后到HLOI2017 之后变得有点颓废,因为有的地方难度上来了,碰见不会的题我就会放挺.又或者有时候题水,改完了就不思进取了.到了过年前那几天连着考了几天试,好像是长春那边冬令 ...

  5. BZOJ1228: [SDOI2009]E&D(打表SG)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 983  Solved: 583[Submit][Status][Discuss] Descriptio ...

  6. 北京Uber优步司机奖励政策(9月14日~9月20日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. Dota2一直 正在登录服务器的解决办法

    然后:1: c:\Windows\System32\drivers\etc\ 2:双击hosts文件,用记事本方式打开3:复制以下并粘贴至以记事本方式打开的hosts最后面111.221.33.253 ...

  8. jmeter "you cannot switch bacause data cannot be converted to target Tab data,empty data to switch"报错

    jmeter "you cannot switch bacause data cannot be converted to target Tab data,empty data to swi ...

  9. 油田 (Oil Deposits UVA - 572)

    题目描述: 原题:https://vjudge.net/problem/UVA-572 题目思路: 1.图的DFS遍历 2.二重循环找到相邻的八个格子 AC代码: #include <iostr ...

  10. 【Python 开发】第三篇:python 实用小工具

    一.快速启动一个web下载服务器 官方文档:https://docs.python.org/2/library/simplehttpserver.html 1)web服务器:使用SimpleHTTPS ...