unity 数学 不使用TransformPoint计算当前localPosition对应的worldpos

Posted sun_dust_shadow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 数学 不使用TransformPoint计算当前localPosition对应的worldpos相关的知识,希望对你有一定的参考价值。

求一个localPos的worldPos,如果能拿到parentTransform, 可以使用  

一 :Transform.TransformPoint 和 Transform.TransformDirection  获取worldPos和worldDir

二:还有一种Matrix的方式:https://answers.unity.com/questions/1273879/local-point-to-world-point-without-transformpoint.html

1.Matrix4x4 m = Matrix4x4.TRS(position, rotation, scale);获取parent的Matrix

2.Vector3 worldPos = m.MultiplyPoint3x4(localPos); 获取localPos的世界pos

3.Vector3 localPos = m.inverse.MultiplyPoint3x4(worldPos);根据子物体的worldpos获取子物体的localPos

 同理可以通过Matrix获取rotate和scale的计算。

如果roate和scale都是default值,则pos的计算可以直接:Vector3 worldPos = localPos + position;  

 

以上是关于unity 数学 不使用TransformPoint计算当前localPosition对应的worldpos的主要内容,如果未能解决你的问题,请参考以下文章

Unity Shader:相关数学基础

Unity游戏开发客户端面经——数学(初级)

Unity3D优化总结

Unity3d游戏开发Unity3D中的3D数学基础---向量

Unity 为 Time.DeltaTime 创建局部变量以进行数学计算

unity Mathf 数学运算汇总