首页 > 其他分享 >LookAt原理

LookAt原理

时间:2023-02-23 01:00:11浏览次数:39  
标签:LookAt Vector3 Cross zero zaxis 原理 Gizmos

原理

就是两次Cross算出x轴、y轴,然后利用模型空间坐标轴得到变换矩阵,确切点说是旋转矩阵,LookAt只是把物体旋转了下,并不会涉及缩放和平移。

第1次Cross是根据y-z轴所在的平面求出x轴

第2次Cross是根据x-z轴所在平面求出y轴

 

验证

public class MyLookAtTest : MonoBehaviour
{

    void Start()
    {
        this.transform.LookAt(new Vector3(2, 2, 2));
    }

    static void MyLookAt(Vector3 from, Vector3 to, Vector3 upHint)
    {
        var zaxis = to - from;
        zaxis.Normalize();
        Gizmos.color = Color.blue;
        Gizmos.DrawLine(Vector3.zero, zaxis * 3);

        var xaxis = Vector3.Cross(upHint, zaxis); //upHint只是一个参考向量, 用于确定y-z轴所在平面的。x轴垂直于y-z轴所在平面
        xaxis.Normalize();
        Gizmos.color = Color.red;
        Gizmos.DrawLine(Vector3.zero, xaxis * 3);

        var yaxis = Vector3.Cross(zaxis, xaxis); //y轴垂直于x-z轴所在平面
        yaxis.Normalize();
        Gizmos.color = Color.green;
        Gizmos.DrawLine(Vector3.zero, yaxis * 3);
    }

    void OnDrawGizmosSelected()
    {
        MyLookAt(Vector3.zero, new Vector3(2, 2, 2), Vector3.up);
    }

}

没运行的时候,并没有LookAt圆球

运行后,LookAt圆球,我们的调试画的线也与模型空间的坐标轴是重合的

 

相关函数

Quaternion.LookRotation
Transform.LookAt
Matrix4x4.LookAt

 

标签:LookAt,Vector3,Cross,zero,zaxis,原理,Gizmos
From: https://www.cnblogs.com/sailJs/p/16382473.html

相关文章

  • 自学python-计算机基础原理-day02
    python学习第一课什么是python?python是一门编程语言什么是编程语言呢就是人与电脑交互的语言我们用python编写自己想要得软件而python把我们写的语言转化成计算机看......
  • Android 启动优化(二) - 有向无环图的原理以及解题思路
    Android启动优化(一)-有向无环图Android启动优化(二)-拓扑排序的原理以及解题思路Android启动优化(三)-AnchorTask使用说明Android启动优化(四)-手把手教你实现An......
  • 利用SpringBoot自动装配原理自定义starter
    在使用SpringBoot时候我们经常会碰到引入很多的starter的自动化配置,有了这些starter以后我们就可以很轻松的完成一个企业级的开发项目,很多小朋友就会对于starter很神奇,其实......
  • 响应式原理
    1.为什么要用响应式原理实现数据与视图的自动更新操作。2.响应式原理是什么?当我们修改一个变量时,会有某些操作可以自动执行3.怎么做?vue使用object.defineproperty更新......
  • 理论:第十二章:Dubbo的运行原理,支持什么协议,与SpringCould相比它为什么效率要高一些,Zook
    Dubbo简单的介绍一下Dubbo?(Dubbo是什么)dubbo就是个服务调用的东东。为什么怎么说呢?因为Dubbo是由阿里开源的一个RPC分布式框架那么RPC是什么呢?就是不同的应用部署到......
  • 《分布式技术原理与算法解析》学习笔记Day19
    分布式通信:消息队列什么是消息队列?队列是一种具有先进先出特点的数据结构,消息队列是基于队列实现的、存储具有特定格式的消息数据。消息以特定格式放入这个队列的尾部后......
  • stm32-屏幕-中英文显示原理
    显示中英文1、显示原理字符实际上是一个个独特的图形,计算机必须把字符编码转化成对应的字符图形人类才能正常识别,因此我们要给计算机提供字符的图形数据,这些数据就是字......
  • React Router有几种模式?实现原理?
    一、是什么在单页应用中,一个web项目只有一个html页面,一旦页面加载完成之后,就不用因为用户的操作而进行页面的重新加载或者跳转,其特性如下:改变url且不让浏览器像服务......
  • 计算机组成原理03
    一.总线的基本概念问题:为什么要用总线?回答:总线是各个部件的信息传输线,是各个部件共享的传输介质。1.1.总线上信息的传输1.串行:把要传输的数据以位为单位,一位一位使用......
  • SPA路由实现的基本原理
    1.SPA路由实现的基本原理前端单页应用实现路由的策略有两种,分别是基于hash和基于HistoryAPI基于hash通过将一个URLpath用#Hash符号拆分。—浏览器视作其......