美文网首页
2020-07-06【Math】局部坐标转换为世界坐标

2020-07-06【Math】局部坐标转换为世界坐标

作者: 持刀的要迟到了 | 来源:发表于2020-07-06 00:25 被阅读0次

局部坐标依赖父物体的旋转方向,确定自己的坐标轴。
因此局部坐标转世界坐标需要依赖父物体的旋转量。
关键代码:

Vector3 child1Pos = parentPos + parentRot * child1LocalPos;
 child1LocalPos = Quaternion.Inverse(parentRot) * (child1Pos - parentPos);

实例:清空父物体旋转量,子物体世界坐标和旋转不变。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class test : MonoBehaviour
{

    public Transform parent;
    public Transform child1;

    public Transform targetR;


    // Start is called before the first frame update
    void Start()
    {
        Debug.Log(targetR.rotation);

        Vector3 parentPos = parent.position;
        Quaternion parentRot = parent.rotation;

        Vector3 child1LocalPos = child1.localPosition;      //获得子节点的局部坐标,计算它相对于父物体的世界坐标
        Quaternion child1LocalRot = child1.localRotation;   //旋转同理

        // 计算它应该存在的世界坐标&旋转
        Vector3 child1Pos = parentPos + parentRot * child1LocalPos;
        Quaternion child1Rot = parentRot * child1LocalRot;

        // 旋转父物体,重新获得父物体的世界坐标和旋转
        parent.rotation= targetR.rotation;
        // parentPos = parentPos;
        parentRot = parent.rotation;

        // 重新计算子物体想要的位置相对于父物体的局部坐标&旋转
        child1LocalPos = Quaternion.Inverse(parentRot) * (child1Pos - parentPos);
        child1LocalRot = child1Rot * Quaternion.Inverse(parentRot);

        // 通过设置局部坐标的方式重新设置子物体
        child1.localPosition = child1LocalPos;
        child1.localRotation = child1LocalRot;

    }
}

image.png
image.png

相关文章

  • 2020-07-06【Math】局部坐标转换为世界坐标

    局部坐标依赖父物体的旋转方向,确定自己的坐标轴。因此局部坐标转世界坐标需要依赖父物体的旋转量。关键代码: 实例:清...

  • untiy中的坐标系

    坐标系分为世界坐标和局部坐标 1.世界坐标即为物体与相机之间的相对位置2.局部相对坐标。如果有子物体的话,子物体的...

  • Unity坐标系

    一 坐标系简介 1 世界坐标系 可以用transform.position获取 2 局部坐标系 局部坐标系是...

  • Unity视口坐标和世界坐标转换

    Camera.main.WorldToViewportPoint 将一个物体的世界坐标转换为视口坐标,就是以摄像机...

  • OpenGL坐标系与几何变换流程

    局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。 下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于...

  • 局部坐标和世界坐标的转换

    转换公式:

  • OpenGL坐标系理解

    1.在OenGL中有5种坐标系 局部坐标系(物体的坐标系) 世界坐标系(-1 ~ 1之间) 观察空间 裁剪空间 屏...

  • 着色器

    数值(并行)计算 Vertex Shaders(顶点着色器): 1.将本地坐标转换为世界坐标 2.边缘过度 3.额...

  • 着色器

    数值(并行)计算 Vertex Shaders(顶点着色器): 遍历几何体的所有顶点 1.将本地坐标转换为世界坐标...

  • 坐标系转换的理解

    前言 在学习渲染管线的时候,一定会学习到坐标系装换, 局部坐标系->世界坐标系->相机坐标系->屏幕坐标系 可能你...

网友评论

      本文标题:2020-07-06【Math】局部坐标转换为世界坐标

      本文链接:https://www.haomeiwen.com/subject/ktliqktx.html