Unity3D的坑(内附场景模型切割代码)

前言

其实我是写完后补的…

今天搞这个本地坐标系转世界坐标系,发现官方API有一行…

Description 描述
Transforms position from local space to world space.
变换位置从局部坐标到世界坐标。
Note that the returned position is affected by scale. Use Transform.TransformDirection if you are dealing with directions.
注意,返回位置受缩放影响。如果你是处理方向使用Transform.TransformDirection。

受缩放影响??
想了想矩阵坐标变换…没有头绪,随便调个gameobject的坐标试试看吧…
结果发现两个gameobject A B,A在B上面,重叠着的,结果Z轴坐标相差200多??
然后去3DSMAX重新导出,新人小白,不太懂,就随便试试。。
结果吧,整个场景都崩了。。如下。。

事后觉得,可能是环境问题,这台机器是新装2018的,跟以前2014的环境不太一样。

这篇没结构!

啊啊啊,真是气死我了,折腾了一下午,就这个模型,真的令人头秃。
模型是网上下的,经过裁剪之后,另存了一小块作为测试用。
在3DSMAX运行的好好的,是这样似的。

一导出FBX,再扔进Unity,就崩啦!崩啦!

上网查了好久的资料,最后求助于数媒专业的老哥,重置缩放、重置变换,重置所有能重置的,然后塌陷再导出…嗯…还是失败…
气死了,最后找出一个好像可以称之为环境的东西?
V-ray、3DSMAX升级包,都给装好了,重启,再导出一遍看看?
真是玄学,居然就好了,就好了!!!
气疯。。

当然那只是玄学,不是正经的注意事项…

重置所有能重置的真的是在导出场景前,很有必要的操作!!!

因为我今天在unity里发现一个诡异的事情…

在场景中,同一层的两个相邻gameobject,Z轴坐标值居然相差200多…基本上就是
A在B上面,但是Z轴坐标相差200多,一开始不是很懂…一通操作之后…大概是有什么变换重置掉了,所以现在坐标正常了…

重要的事情说三遍!

3DSMAX导出场景前,一定要重置变换!

3DSMAX导出场景前,一定要重置变换!

3DSMAX导出场景前,一定要重置变换!

可能有些需求不在意这些事

我这个或许是特例吧,需要通过世界坐标判断点是否在视野内…
需求是把视野内的场景扣下来,就是模型切割,然后导出。。
由于一些点,比如一部分在视野内,一部分在视野外,但是在视野边界线没有碰撞
这些点就没有办法去切割,所以嘛…
简单粗暴一点,把视野外的点,直接忽略,然后导出就完事了!
所以,非常需要点的坐标是正确的!

模型切割…就不放了…有点跑题…
不过有核心代码
链接: 视野场景切割并导出.

你可能感兴趣的:(Unity3D)